_Data.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Collections;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Windows.Forms;
  7. using Janus.Windows.EditControls;
  8. using System.Drawing;
  9. using System.Data.SqlClient;
  10. using System.IO;
  11. using System.Data;
  12. using System.Media;
  13. using System.Timers;
  14. namespace IControls_FireManager
  15. {
  16. // 전역 변수 및 함수는 여기 클래스에서 전담한다
  17. public static class _Data
  18. {
  19. // Program
  20. public static string Program_Version;
  21. // Project
  22. public static string Project_Name;
  23. public static string Project_Path;
  24. public static string Project_ExcelOpenCheck; // 1 : 체크함, 0 : 체크안함
  25. public static string Project_MapGroupIDTypeNumber; // cyim 2016.04.01 : 6자리 혹은 4자리로 맵아이디와 그룹아이디 지정할수 있도록함
  26. // Korea
  27. public static string Language;
  28. // Database
  29. public static string DB_IP;
  30. public static string DB_ID;
  31. public static string DB_PassWord;
  32. public static string DB_FullPath;
  33. // STYLE
  34. public static Janus.Windows.UI.Dock.PanelVisualStyle Style_PanelVisualStyle;
  35. public static Janus.Windows.UI.VisualStyle Style_VisualStyle;
  36. public static Janus.Windows.Ribbon.Office2007ColorScheme Style_Office2007ColorScheme;
  37. // 데이타베이스 접속상태
  38. public static bool DB_Connection_Open_Ok = false;
  39. public static bool DB_Connection_FailLogOnce = false;
  40. // HashTable
  41. // 수신기 정보 해쉬테이블
  42. public static Hashtable HASH_RECEIVER = new Hashtable();
  43. // 수신기 정보 해쉬테이블 키 리스트
  44. public static ArrayList LIST_RECEIVER_ID = new ArrayList();
  45. // 맵디자이너중 리스트뷰의 아이템 패널(기기타입)에 아이콘을 추가하기 위해서 사용되는 해쉬테이블
  46. public static Hashtable HASH_XMLDEVTYPE = new Hashtable();
  47. // 맵디자이너중 리스트뷰의 아이템 패널(기기타입)에 아이콘을 추가하기 위해서 사용되는 해쉬테이블 키 리스트
  48. public static ArrayList LIST_XMLDEVTYPE_ID = new ArrayList();
  49. // _Receiver.xml 제거 : cyim 2012.8.29 -> 복구 2013.5.27
  50. //// Read Receiver Xml 전용 해쉬테이블
  51. //public static Hashtable HASH_XMLRECEIVER = new Hashtable();
  52. //// Read Receiver Xml 전용 해쉬테이블 키 리스트
  53. public static ArrayList LIST_XMLRECEIVER_ID = new ArrayList();
  54. // 엑셀에서 포인트 정보를 읽은 결과를 저장하는 리스트
  55. public static ArrayList List_ExcelPoint = new ArrayList();
  56. // 엑셀에서 연동 그룹 정보를 읽은 결과를 저장하는 리스트
  57. public static ArrayList List_ExcelGroup = new ArrayList();
  58. // 엑셀에서 연동 맵 정보를 읽은 결과를 저장하는 리스트
  59. public static ArrayList List_ExcelMap = new ArrayList();
  60. // 엑셀에서 읽은 정보를 토대로 재생성되는 위치 정보, 디바이스 타입, IO 보드, 이벤트 타입 클래스
  61. public static Hashtable HASH_CodePosition = new Hashtable();
  62. public static ArrayList LIST_CodePosition_NAME = new ArrayList();
  63. public static ArrayList LIST_CodeDeviceType = new ArrayList();
  64. public static ArrayList LIST_CodeIOBoard = new ArrayList();
  65. public static ArrayList LIST_CodeEventType = new ArrayList();
  66. public static ArrayList LIST_CodeAnalogLevel_Smoke = new ArrayList(); // cyim 2016.07.27 : 아날로그 감지기 레벨 감지기 타입별 설정 기능
  67. public static ArrayList LIST_CodeAnalogLevel_Heat = new ArrayList();
  68. public static ArrayList LIST_CodeFireDayTime = new ArrayList();
  69. // XML 데이타를 저장하였는지 최종 확인 (저장직전 해당 수신기 아이디가 리스트 형태로 저장됨)
  70. public static ArrayList LIST_XmlDBNotSave_Receiver = new ArrayList();
  71. // 프로젝트 저장하였는지 최종 확인
  72. public static bool ProJect_Save_Complete = true;
  73. // 진행바 팝업창 마지막 문구
  74. public static string Result_Text = _Text.CompleteInform;
  75. // 메뉴를 클릭하여 활성화된 폼
  76. public static Form MenuActivedForm = null;
  77. // 특별히 엑티브 레포트 뷰어는 메뉴 혹은 다른 형태로 생성될 가능성이 많으므로 여러개를 띄우지 않도록 처리
  78. public static bool ActiveReportViewer_Enable = false;
  79. // 디바이스 입출력 포인트 출력용 해쉬테이블 (입력 및 출력 포인트 모두 저장 : 키는 수신기 아이디)
  80. public static Hashtable Hash_ImportPoint = new Hashtable();
  81. // 1회성 데이타 (이전 데이타 저장용)
  82. public static string Temp_DeviceName = null;
  83. public static string Temp_Position = null;
  84. public static string Temp_GroupName = null;
  85. // 엑셀 연동과 같이 속도가 오래걸리는 경우 버튼을 2번눌러서 문제가 발생할수가 있다.
  86. public static bool Enable_Button = true;
  87. // 화면 캡쳐 진행중
  88. public static bool Enable_Capture = false; // true : 캡쳐진행중
  89. // 수신기 ID
  90. public static int INIT_RECEIVER_ID = 1;
  91. // 정렬 인터페이스
  92. public static _Sort.StringNumbering Sort_StringNumbering = new _Sort.StringNumbering();
  93. public static _Sort.CircuitStringNumbering Sort_CircuitNo = new _Sort.CircuitStringNumbering(); // cyim 2016.04.01 : 입력 및 출력회로 정렬 기능
  94. // cyim 2016.12.05 : 만약 프로젝트를 열다가 중간에 예외 처리 및 강제 저장 옵션이 발동되었다면 경고 폼 출력
  95. public static bool Receiver_Model_TempSetting = false; // 강제로 임시 모델 셋팅을 했다고 알려주는 체크 변수
  96. // cyim 2016.12.15 : 모바일앱용 사용자 관리
  97. // 시스템사용자 정보 해쉬테이블
  98. public static Hashtable HASH_USER = new Hashtable();
  99. // 시스템사용자 정보 해쉬테이블 키 리스트
  100. public static ArrayList LIST_USER_KEY = new ArrayList();
  101. // 수신기 ID 생성
  102. public static int CREATE_RECEIVER_ID()
  103. {
  104. // 리스트에서 조회해서 없는 값으로 대체
  105. // if (LIST_RECEIVER_ID.Contains(RECEIVER_ID.ToString()) == false)
  106. // {
  107. // RECEIVER_ID++;
  108. // }
  109. // else
  110. // {
  111. while (LIST_RECEIVER_ID.Contains(INIT_RECEIVER_ID.ToString()) == true)
  112. {
  113. INIT_RECEIVER_ID++;
  114. }
  115. // }
  116. return INIT_RECEIVER_ID;
  117. }
  118. // 페이지 ID 생성
  119. public static string CREATE_PAGE_ID(string RECEIVER_ID, string Page_Name)
  120. {
  121. return RECEIVER_ID + _Text.Minus + Page_Name;
  122. }
  123. // 해당 수신기아이디에 페이지 이름이 있는지 없는지 조회 (NodeText)
  124. public static bool Check_Receiver_In_PageName(string RECEIVER_ID, string Page_Name)
  125. {
  126. foreach (string PAGE_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).LIST_PAGE_ID)
  127. {
  128. if (((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).Receiver_ID == RECEIVER_ID
  129. && ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).NodeText == Page_Name
  130. )
  131. return true;
  132. }
  133. return false;
  134. }
  135. // Device 사용
  136. // GridEX_GroupList의 레코드를 선택했을 때, Group_ID를 저장
  137. public static string Group_ID = null;
  138. // GridEX_MapList의 레코드를 선택했을 때, Map_ID를 저장
  139. public static string Map_No = null;
  140. // 데이타베이스 경로 재지정 (null 이면 temp 폴더에 DB 이며, 수신기 아이디가 있다면 해당 DB 이다)
  141. public static void DataBaseFilePath_Set(string RECEIVER_ID)
  142. {
  143. if (RECEIVER_ID != null)
  144. {
  145. // 수신기 폴더명
  146. string ReiceiverFolderName = _Text.DEFAULT_FOLDER_RECEIVER_PREFIX + RECEIVER_ID;
  147. _Data.DB_FullPath = _Data.Project_Path + "\\" + _Data.Project_Name + "\\" + ReiceiverFolderName + "\\" + _Text.DEFAULT_FOLDER_DB + "\\" + _Text.DEFAULT_DB_FILENAME;
  148. }
  149. else
  150. {
  151. _Data.DB_FullPath = _Data.Project_Path + "\\" + _Data.Project_Name + "\\" + _Text.DEFALUT_FOLDER_TEMP + "\\" + _Text.DEFAULT_DB_FILENAME;
  152. }
  153. }
  154. // 데이타베이스 경로 얻기 (null 이면 temp 폴더에 DB 이며, 수신기 아이디가 있다면 해당 DB 이다)
  155. public static string DataBaseFilePath_Get(string RECEIVER_ID)
  156. {
  157. if (RECEIVER_ID != null)
  158. {
  159. // 수신기 폴더명
  160. string ReiceiverFolderName = _Text.DEFAULT_FOLDER_RECEIVER_PREFIX + RECEIVER_ID;
  161. return _Data.Project_Path + "\\" + _Data.Project_Name + "\\" + ReiceiverFolderName + "\\" + _Text.DEFAULT_FOLDER_DB + "\\" + _Text.DEFAULT_DB_FILENAME;
  162. }
  163. else
  164. {
  165. return _Data.DB_FullPath = _Data.Project_Path + "\\" + _Data.Project_Name + "\\" + _Text.DEFALUT_FOLDER_TEMP + "\\" + _Text.DEFAULT_DB_FILENAME;
  166. }
  167. }
  168. // 점프필드에는 널값이 들어가면 수신기UI 가 에러처리됨 - 2013.6.18
  169. // 또한 디바이스 아이콘의 정보가 널값이라면 디바이스 조회창 색상을 바꾼다
  170. public static string Get_Verify_ID(string ID)
  171. {
  172. if (ID == null || ID.Trim().Length == 0 || ID == _Text.None)
  173. return "0";
  174. return ID;
  175. }
  176. // TB_EVENT_TYPE 내용이 없다면 에러처리됨 - 2013.8.12
  177. public static bool Check_Verify_EVENT_TYPE()
  178. {
  179. DataRowCollection DB_TABLE_EVENT_TYPE = _Db.ExecuteRead_SqlDataAdapter(_Sql.Get_TableRecordCount("TB_EVENT_TYPE"));
  180. if (DB_TABLE_EVENT_TYPE != null)
  181. {
  182. foreach (DataRow Record in DB_TABLE_EVENT_TYPE)
  183. if (Int32.Parse(Record[0].ToString()) > 0)
  184. return true;
  185. }
  186. return false;
  187. }
  188. // 소방설정프로그램에서는 LOOP 대신 채널 및 계통이라는 용어를 사용한다
  189. // LOOP 0 -> CH1 , LOOP 1 -> CH2
  190. public static string UI_CH_TO_LOOP(string Data)
  191. {
  192. string TempCh = null;
  193. if (Data == "CH1") TempCh = "0";
  194. else if (Data == "CH2") TempCh = "1";
  195. else if (Data == "CH3") TempCh = "2";
  196. else if (Data == "CH4") TempCh = "3";
  197. else TempCh = "";
  198. return TempCh;
  199. }
  200. }
  201. }