프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

hytos / DTI_PID / SPPIDConverter / DB / Project_DB.cs @ 29392b1a

이력 | 보기 | 이력해설 | 다운로드 (37.4 KB)

1 b18dc619 gaqhf
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using System.Threading.Tasks;
6 fab4f207 gaqhf
using System.Globalization;
7
using System.Data.SQLite;
8
using System.Data;
9 224535bb gaqhf
using Newtonsoft.Json;
10 b18dc619 gaqhf
11 171142c5 gaqhf
namespace Converter.BaseModel
12 b18dc619 gaqhf
{
13 171142c5 gaqhf
    public class Project_DB
14 b18dc619 gaqhf
    {
15 bca86986 gaqhf
        const string SPPID_DB_INFO_TABLE = "T_SPPID_CONNECTION_INFO";
16
        const string SPPID_SYMBOL_MAPPING_TABLE = "T_SPPID_SYMBOL_MAPPING";
17
        const string SPPID_ATTRIBUTE_MAPPING_TABLE = "T_SPPID_ATTRIBUTE_MAPPING";
18 7cbb1038 gaqhf
        const string SPPID_SETTING_TABLE = "T_SPPID_SETTING_TABLE";
19 b8bd98aa gaqhf
        const string SPPID_LABEL_INFO_TABLE = "T_SPPID_LABEL_INFO";
20 e8536f2b gaqhf
        const string SPPID_DRAWING_INFO = "T_SPPID_DRAWING_INFO";
21 154d8f43 gaqhf
        const string SPPID_OPC_INFO = "T_SPPID_OPC_INFO";
22 171142c5 gaqhf
23 bca86986 gaqhf
        const string LineProperties_TABLE = "LineProperties";
24
        const string LineTypes_TABLE = "LineTypes";
25
        const string SymbolType_TABLE = "SymbolType";
26
        const string SymbolAttribute_TABLE = "SymbolAttribute";
27
        const string Symbol_TABLE = "Symbol";
28 154d8f43 gaqhf
        const string OPCRelations_TABLE = "OPCRelations";
29 171142c5 gaqhf
30 fab4f207 gaqhf
        public static bool ConnTestAndCreateTable()
31
        {
32
            bool result = false;
33
            Project_Info projectInfo = Project_Info.GetInstance();
34
            SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, @"Data Source = {0}", projectInfo.DBFilePath));
35
            try
36
            {
37
                connection.Open();
38
                if (connection.State == ConnectionState.Open)
39
                {
40
                    CreateTable(connection);
41
                    result = true;
42
                }
43
                connection.Close();
44
            }
45
            catch (Exception ex)
46
            {
47
48
            }
49
            finally
50
            {
51
                connection.Dispose();
52
            }
53
54
            return result;
55
        }
56
57
        public static bool SaveSPPID_DB_INFO(string jsonString)
58
        {
59
            Project_Info projectInfo = Project_Info.GetInstance();
60
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
61
            {
62 1421f1d6 gaqhf
63 fab4f207 gaqhf
                try
64
                {
65
                    connection.Open();
66
                    using (SQLiteCommand cmd = connection.CreateCommand())
67
                    {
68
                        cmd.CommandText = string.Format("DELETE FROM {0}", SPPID_DB_INFO_TABLE);
69
                        cmd.ExecuteNonQuery();
70
71
                        cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@jsonString)", SPPID_DB_INFO_TABLE);
72
                        cmd.Parameters.AddWithValue("@jsonString", jsonString);
73
                        cmd.ExecuteNonQuery();
74
                    }
75
                    connection.Close();
76
                }
77
                catch (Exception ex)
78
                {
79
                    return false;
80
                }
81
                finally
82
                {
83
                    connection.Dispose();
84
                }
85
            }
86
87
            return true;
88
        }
89
90
        public static DataTable SelectSPPID_DB_INFO()
91
        {
92
            DataTable dt = new DataTable();
93
            Project_Info projectInfo = Project_Info.GetInstance();
94
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
95
            {
96
                try
97
                {
98
                    connection.Open();
99
                    using (SQLiteCommand cmd = connection.CreateCommand())
100
                    {
101
                        cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_DB_INFO_TABLE);
102
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
103
                            dt.Load(dr);
104
                    }
105
                    connection.Close();
106
                }
107
                catch (Exception ex)
108
                {
109
110
                }
111
                finally
112
                {
113
                    connection.Dispose();
114
                }
115
            }
116
117
            return dt;
118
        }
119
120 7cbb1038 gaqhf
        public static bool SaveETCSetting(Dictionary<string,string> dicSetting)
121 e00e891d gaqhf
        {
122
            Project_Info projectInfo = Project_Info.GetInstance();
123
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
124
            {
125
126
                try
127
                {
128
                    connection.Open();
129
                    using (SQLiteCommand cmd = connection.CreateCommand())
130
                    {
131 7cbb1038 gaqhf
                        cmd.CommandText = string.Format("DELETE FROM {0}", SPPID_SETTING_TABLE);
132 e00e891d gaqhf
                        cmd.ExecuteNonQuery();
133
134 7cbb1038 gaqhf
                        foreach (var item in dicSetting)
135
                        {
136
                            cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@jsonString, @SettingType)", SPPID_SETTING_TABLE);
137
                            cmd.Parameters.AddWithValue("@jsonString", item.Value);
138
                            cmd.Parameters.AddWithValue("@SettingType", item.Key);
139
                            cmd.ExecuteNonQuery();
140
                        }
141 e00e891d gaqhf
                    }
142
                    connection.Close();
143
                }
144
                catch (Exception ex)
145
                {
146
                    return false;
147
                }
148
                finally
149
                {
150
                    connection.Dispose();
151
                }
152
            }
153
154
            return true;
155
        }
156
157 7cbb1038 gaqhf
        public static DataTable SelectSetting()
158 e00e891d gaqhf
        {
159
            DataTable dt = new DataTable();
160
            Project_Info projectInfo = Project_Info.GetInstance();
161
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
162
            {
163
                try
164
                {
165
                    connection.Open();
166
                    using (SQLiteCommand cmd = connection.CreateCommand())
167
                    {
168 7cbb1038 gaqhf
                        cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_SETTING_TABLE);
169 e00e891d gaqhf
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
170
                            dt.Load(dr);
171
                    }
172
                    connection.Close();
173
                }
174
                catch (Exception ex)
175
                {
176
177
                }
178
                finally
179
                {
180
                    connection.Dispose();
181
                }
182
            }
183
184
            return dt;
185
        }
186
187 fab4f207 gaqhf
        private static void CreateTable(SQLiteConnection connection)
188
        {
189
            using (SQLiteCommand cmd = connection.CreateCommand())
190
            {
191
                cmd.CommandText = "SELECT NAME FROM sqlite_master WHERE type='table'";
192
                using (SQLiteDataReader dr = cmd.ExecuteReader())
193
                using (DataTable dt = new DataTable())
194
                {
195
                    dt.Load(dr);
196
197
                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_DB_INFO_TABLE)).Length == 0)
198
                    {
199
                        cmd.CommandText = string.Format("CREATE TABLE {0} (JsonString TEXT)", SPPID_DB_INFO_TABLE);
200
                        cmd.ExecuteNonQuery();
201
                    }
202 7cbb1038 gaqhf
                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_SETTING_TABLE)).Length == 0)
203 e00e891d gaqhf
                    {
204 7cbb1038 gaqhf
                        cmd.CommandText = string.Format("CREATE TABLE {0} (JsonString TEXT, SettingType TEXT)", SPPID_SETTING_TABLE);
205 e00e891d gaqhf
                        cmd.ExecuteNonQuery();
206
                    }
207 bca86986 gaqhf
                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_SYMBOL_MAPPING_TABLE)).Length == 0)
208
                    {
209 cf924377 gaqhf
                        cmd.CommandText = string.Format("CREATE TABLE {0} (UID TEXT PRIMARY KEY, NAME TEXT, SPPID_SYMBOL_PATH TEXT, LEADERLINE BOOLEAN)", SPPID_SYMBOL_MAPPING_TABLE);
210 bca86986 gaqhf
                        cmd.ExecuteNonQuery();
211
                    }
212
                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_ATTRIBUTE_MAPPING_TABLE)).Length == 0)
213
                    {
214
                        cmd.CommandText = string.Format("CREATE TABLE {0} (UID TEXT PRIMARY KEY, SPPID_ATTRIBUTE TEXT)", SPPID_ATTRIBUTE_MAPPING_TABLE);
215
                        cmd.ExecuteNonQuery();
216
                    }
217 b8bd98aa gaqhf
                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_LABEL_INFO_TABLE)).Length == 0)
218 1a3a74a8 gaqhf
                    {
219 b8bd98aa gaqhf
                        cmd.CommandText = string.Format("CREATE TABLE {0} (UID TEXT PRIMARY KEY, LOCATION INT DEFAULT 0, LEADERLINE BOOLEAN)", SPPID_LABEL_INFO_TABLE);
220 1a3a74a8 gaqhf
                        cmd.ExecuteNonQuery();
221
                    }
222 e8536f2b gaqhf
                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_DRAWING_INFO)).Length == 0)
223
                    {
224 154d8f43 gaqhf
                        cmd.CommandText = string.Format("CREATE TABLE {0} (ID2_DRAWING_UID Text PRIMARY KEY, PATH TEXT, DRAWINGNUMBER TEXT, DRAWINGNAME TEXT)", SPPID_DRAWING_INFO);
225
                        cmd.ExecuteNonQuery();
226
                    }
227
                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_OPC_INFO)).Length == 0)
228
                    {
229 b7a29053 gaqhf
                        cmd.CommandText = string.Format("CREATE TABLE {0} (ID2_OPC_UID TEXT PRIMARY KEY, SPPID_OPC_MODELITEM_ID TEXT, ID2_DRAWING_UID TEXT, ATTRIBUTES TEXT, PAIRED BOOL)", SPPID_OPC_INFO);
230 e8536f2b gaqhf
                        cmd.ExecuteNonQuery();
231
                    }
232 fab4f207 gaqhf
                }
233 cf924377 gaqhf
234
                #region Check Column 업데이트시 예비용
235
                cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_SYMBOL_MAPPING_TABLE);
236
                using (SQLiteDataReader dr = cmd.ExecuteReader())
237
                using (DataTable dt = new DataTable())
238
                {
239
                    dt.Load(dr);
240
                    if (!dt.Columns.Contains("LEADERLINE"))
241
                    {
242
                        cmd.CommandText = string.Format("ALTER TABLE {0} ADD COLUMN LEADERLINE BOOLEAN", SPPID_SYMBOL_MAPPING_TABLE);
243
                        cmd.ExecuteNonQuery();
244
                    }
245
                }
246 7cbb1038 gaqhf
247
                cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_SETTING_TABLE);
248
                using (SQLiteDataReader dr = cmd.ExecuteReader())
249
                using (DataTable dt = new DataTable())
250
                {
251
                    dt.Load(dr);
252
                    if (!dt.Columns.Contains("SettingType"))
253
                    {
254
                        cmd.CommandText = string.Format("ALTER TABLE {0} ADD COLUMN SettingType Text", SPPID_SETTING_TABLE);
255
                        cmd.ExecuteNonQuery();
256
                    }
257
                }
258 224535bb gaqhf
259
                cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_DRAWING_INFO);
260
                using (SQLiteDataReader dr = cmd.ExecuteReader())
261
                using (DataTable dt = new DataTable())
262
                {
263
                    dt.Load(dr);
264 154d8f43 gaqhf
                    if (dt.Columns.Contains("DOCUMENT"))
265 224535bb gaqhf
                    {
266 154d8f43 gaqhf
                        cmd.CommandText = string.Format("DROP TABLE {0}", SPPID_DRAWING_INFO);
267
                        cmd.ExecuteNonQuery();
268
269
                        cmd.CommandText = string.Format("CREATE TABLE {0} (ID2_DRAWING_UID Text PRIMARY KEY, PATH TEXT, DRAWINGNUMBER TEXT, DRAWINGNAME TEXT)", SPPID_DRAWING_INFO);
270 224535bb gaqhf
                        cmd.ExecuteNonQuery();
271
                    }
272
                }
273 cf924377 gaqhf
                #endregion
274 fab4f207 gaqhf
            }
275
        }
276 bca86986 gaqhf
277
        public static DataTable SelectProjectSymbol()
278
        {
279
            DataTable dt = new DataTable();
280
            Project_Info projectInfo = Project_Info.GetInstance();
281
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
282
            {
283
                try
284
                {
285
                    connection.Open();
286
                    using (SQLiteCommand cmd = connection.CreateCommand())
287
                    {
288
                        cmd.CommandText = string.Format(@"
289 cf924377 gaqhf
                            SELECT s.UID, s.Name, st.Type, sp.SPPID_SYMBOL_PATH, sp.LEADERLINE FROM {1} as st, {0} as s 
290 bca86986 gaqhf
                                LEFT OUTER JOIN {2} as sp 
291
                                    ON s.UID = SP.UID 
292
                            WHERE s.SymbolType_UID = st.UID 
293
                            ORDER BY st.TYPE ASC;", Symbol_TABLE, SymbolType_TABLE, SPPID_SYMBOL_MAPPING_TABLE);
294
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
295
                            dt.Load(dr);
296 310aeb31 gaqhf
297
                        DataTable dtClone = dt.Clone();
298
                        dtClone.Columns["UID"].DataType = typeof(string);
299
                        foreach (DataRow row in dt.Rows)
300
                        {
301
                            dtClone.ImportRow(row);
302
                        }
303
                        dt.Dispose();
304
                        dt = dtClone;
305 bca86986 gaqhf
                    }
306
                    connection.Close();
307
                }
308
                catch (Exception ex)
309
                {
310
311
                }
312
                finally
313
                {
314
                    connection.Dispose();
315
                }
316
            }
317
318
            return dt;
319
        }
320
321 4b4dbca9 gaqhf
        public static DataTable SelectProjectChildSymbol()
322
        {
323
            DataTable result = new DataTable();
324
            result.Columns.Add("UID");
325
            result.Columns.Add("Name");
326
            result.Columns.Add("Type");
327
            result.Columns.Add("SPPID_SYMBOL_PATH");
328
            
329
            Project_Info projectInfo = Project_Info.GetInstance();
330
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
331
            using (DataTable dt = new DataTable())
332
            {
333
                try
334
                {
335
                    connection.Open();
336
                    using (SQLiteCommand cmd = connection.CreateCommand())
337
                    {
338
                        cmd.CommandText = string.Format(@"
339
                            SELECT AdditionalSymbol FROM Symbol");
340
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
341
                            dt.Load(dr);
342
                        List<string> childList = new List<string>();
343
                        foreach (DataRow row in dt.Rows)
344 8829d0c5 gaqhf
                        { 
345 e248c69e gaqhf
                            if (row["AdditionalSymbol"] != null && !DBNull.Value.Equals(row["AdditionalSymbol"]) && !string.IsNullOrEmpty((string)row["AdditionalSymbol"]))
346 4b4dbca9 gaqhf
                            {
347
                                string[] array = row["AdditionalSymbol"].ToString().Split(new char[] { '/' });
348
                                foreach (var childString in array)
349
                                {
350
                                    childList.Add(childString.Split(new char[] { ',' })[2]);
351
                                }
352
                            }
353
354
                        }
355
356
                        dt.Clear();
357
                        cmd.Reset();
358
                        cmd.CommandText = string.Format(@"
359
                            SELECT * FROM {0}", SPPID_SYMBOL_MAPPING_TABLE);
360
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
361
                            dt.Load(dr);
362
363
                        childList = childList.Distinct().ToList();
364
                        foreach (var child in childList)
365
                        {
366
                            string mappingPath = string.Empty;
367
                            DataRow[] rows = dt.Select(string.Format("UID = '{0}'", child));
368
                            if (rows.Length == 1)
369
                                mappingPath = !DBNull.Value.Equals(rows[0]["SPPID_SYMBOL_PATH"]) ? (string)rows[0]["SPPID_SYMBOL_PATH"] : null;
370
371
                            DataRow newRow = result.NewRow();
372
                            newRow["UID"] = child;
373
                            newRow["Name"] = child;
374
                            newRow["Type"] = "Child Symbol";
375
                            newRow["SPPID_SYMBOL_PATH"] = mappingPath;
376
                            result.Rows.Add(newRow);
377
                        }
378
                    }
379
                    connection.Close();
380
                }
381
                catch (Exception ex)
382
                {
383
384
                }
385
                finally
386
                {
387
                    connection.Dispose();
388
                }
389
            }
390
391
            return result;
392
        }
393
394 bca86986 gaqhf
        public static DataTable SelectProjectLine()
395
        {
396
            DataTable dt = new DataTable();
397
            Project_Info projectInfo = Project_Info.GetInstance();
398
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
399
            {
400
                try
401
                {
402
                    connection.Open();
403
                    using (SQLiteCommand cmd = connection.CreateCommand())
404
                    {
405
                        cmd.CommandText = string.Format(@"
406
                            SELECT l.UID, l.Name, sp.SPPID_SYMBOL_PATH FROM {0} as l 
407
                                LEFT OUTER JOIN {1} as sp 
408
                                    ON l.UID = SP.UID ;", LineTypes_TABLE, SPPID_SYMBOL_MAPPING_TABLE);
409
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
410
                            dt.Load(dr);
411
                    }
412
                    connection.Close();
413
                }
414
                catch (Exception ex)
415
                {
416
417
                }
418
                finally
419
                {
420
                    connection.Dispose();
421
                }
422
            }
423
424
            return dt;
425
        }
426
427
        public static DataTable SelectProjectLineProperties()
428
        {
429
            DataTable dt = new DataTable();
430
            Project_Info projectInfo = Project_Info.GetInstance();
431
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
432
            {
433
                try
434
                {
435
                    connection.Open();
436
                    using (SQLiteCommand cmd = connection.CreateCommand())
437
                    {
438
                        cmd.CommandText = string.Format(@"
439
                            SELECT lp.UID, lp.DisplayName, sp.SPPID_SYMBOL_PATH, spa.SPPID_ATTRIBUTE
440
                            FROM {0} as lp 
441
                                 LEFT OUTER JOIN {1} as sp 
442
                                      ON lp.UID = sp.UID
443
                                 LEFT OUTER JOIN {2} as spa 
444
                                      ON lp.UID = spa.UID;", LineProperties_TABLE, SPPID_SYMBOL_MAPPING_TABLE, SPPID_ATTRIBUTE_MAPPING_TABLE);
445
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
446
                            dt.Load(dr);
447
                    }
448
                    connection.Close();
449
                }
450
                catch (Exception ex)
451
                {
452
453
                }
454
                finally
455
                {
456
                    connection.Dispose();
457
                }
458
            }
459
460
            return dt;
461
        }
462
463 1efc25a3 gaqhf
        public static DataTable SelectProjectAttribute()
464 bca86986 gaqhf
        {
465
            DataTable dt = new DataTable();
466
            Project_Info projectInfo = Project_Info.GetInstance();
467
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
468
            {
469
                try
470
                {
471
                    connection.Open();
472
                    using (SQLiteCommand cmd = connection.CreateCommand())
473
                    {
474
                        cmd.CommandText = string.Format(@"
475 401efcff gaqhf
                            SELECT sa.UID, sa.DisplayAttribute, st.TYPE, spa.SPPID_ATTRIBUTE, sp.SPPID_SYMBOL_PATH, spl.LOCATION, spl.LEADERLINE, sa.Property
476 bca86986 gaqhf
                            FROM {1} as sa, {0} as st 
477
                                 LEFT OUTER JOIN {2} as sp 
478
                                      ON sa.UID = SP.UID 
479
                                LEFT OUTER JOIN {3} as spa 
480
                                     ON sa.UID = spa.UID
481 1a3a74a8 gaqhf
                                LEFT OUTER JOIN {4} as spl 
482
                                     ON sa.UID = spl.UID
483 401efcff gaqhf
                            WHERE sa.SymbolType_UID = st.UID AND (sa.Property != 2 OR sa.Property IS NULL);", SymbolType_TABLE, SymbolAttribute_TABLE, SPPID_SYMBOL_MAPPING_TABLE, SPPID_ATTRIBUTE_MAPPING_TABLE, SPPID_LABEL_INFO_TABLE);
484 bca86986 gaqhf
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
485
                            dt.Load(dr);
486
                    }
487
                    connection.Close();
488
                }
489
                catch (Exception ex)
490
                {
491
492
                }
493
                finally
494
                {
495
                    connection.Dispose();
496
                }
497
            }
498
499
            return dt;
500
        }
501
502 4d2571ab gaqhf
        public static DataTable SelectID2SymbolTable()
503
        {
504
            DataTable dt = new DataTable();
505
            Project_Info projectInfo = Project_Info.GetInstance();
506
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
507
            {
508
                try
509
                {
510
                    connection.Open();
511
                    using (SQLiteCommand cmd = connection.CreateCommand())
512
                    {
513 ebe81079 gaqhf
                        cmd.CommandText = @"SELECT * FROM Symbol";
514 4d2571ab gaqhf
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
515
                            dt.Load(dr);
516
                    }
517
                    connection.Close();
518
                }
519
                catch (Exception ex)
520
                {
521
522
                }
523
                finally
524
                {
525
                    connection.Dispose();
526
                }
527
            }
528
529
            return dt;
530
        }
531
532 154d8f43 gaqhf
        public static DataTable SelectOPCRelations()
533
        {
534
            DataTable dt = new DataTable();
535
            Project_Info projectInfo = Project_Info.GetInstance();
536
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
537
            {
538
                try
539
                {
540
                    connection.Open();
541
                    using (SQLiteCommand cmd = connection.CreateCommand())
542
                    {
543
                        cmd.CommandText = string.Format("SELECT * FROM {0}", OPCRelations_TABLE);
544
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
545
                            dt.Load(dr);
546
                    }
547
                    connection.Close();
548
                }
549
                catch (Exception ex)
550
                {
551
552
                }
553
                finally
554
                {
555
                    connection.Dispose();
556
                }
557
            }
558
559
            return dt;
560
        }
561
562
        public static DataTable SelectDrawings()
563
        {
564
            DataTable dt = new DataTable();
565
            Project_Info projectInfo = Project_Info.GetInstance();
566
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
567
            {
568
                try
569
                {
570
                    connection.Open();
571
                    using (SQLiteCommand cmd = connection.CreateCommand())
572
                    {
573
                        cmd.CommandText = string.Format("SELECT * FROM {0}", "Drawings");
574
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
575
                            dt.Load(dr);
576
                    }
577
                    connection.Close();
578
                }
579
                catch (Exception ex)
580
                {
581
582
                }
583
                finally
584
                {
585
                    connection.Dispose();
586
                }
587
            }
588
589
            return dt;
590
        }
591
592
        public static DataTable SelectOPCInfo()
593
        {
594
            DataTable dt = new DataTable();
595
            Project_Info projectInfo = Project_Info.GetInstance();
596
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
597
            {
598
                try
599
                {
600
                    connection.Open();
601
                    using (SQLiteCommand cmd = connection.CreateCommand())
602
                    {
603
                        cmd.CommandText = string.Format("SELECT * FROM {0} WHERE SPPID_OPC_MODELITEM_ID IS NOT NULL AND PAIRED = False", SPPID_OPC_INFO);
604
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
605
                            dt.Load(dr);
606
                    }
607
                    connection.Close();
608
                }
609
                catch (Exception ex)
610
                {
611
612
                }
613
                finally
614
                {
615
                    connection.Dispose();
616
                }
617
            }
618
619
            return dt;
620
        }
621 4fb0f8d5 gaqhf
        public static DataTable SelectDrawingInfo()
622
        {
623 154d8f43 gaqhf
            DataTable dt = new DataTable();
624 4fb0f8d5 gaqhf
            Project_Info projectInfo = Project_Info.GetInstance();
625
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
626
            {
627
                try
628
                {
629
                    connection.Open();
630
                    using (SQLiteCommand cmd = connection.CreateCommand())
631
                    {
632 154d8f43 gaqhf
                        cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_DRAWING_INFO);
633 4fb0f8d5 gaqhf
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
634 154d8f43 gaqhf
                            dt.Load(dr);
635 4fb0f8d5 gaqhf
                    }
636
                    connection.Close();
637
                }
638
                catch (Exception ex)
639
                {
640
641
                }
642
                finally
643
                {
644
                    connection.Dispose();
645
                }
646
            }
647
648
            return dt;
649
        }
650
651 cf924377 gaqhf
        public static bool InsertSymbolMapping(List<Tuple<string, string, string, bool>> datas)
652 bca86986 gaqhf
        {
653
            Project_Info projectInfo = Project_Info.GetInstance();
654
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
655
            {
656
                try
657
                {
658
                    connection.Open();
659 1421f1d6 gaqhf
                    using (SQLiteTransaction transaction = connection.BeginTransaction())
660 bca86986 gaqhf
                    {
661 1421f1d6 gaqhf
                        try
662
                        {
663
                            using (SQLiteCommand cmd = connection.CreateCommand())
664
                            {
665
                                foreach (var item in datas)
666
                                {
667
                                    cmd.Parameters.Clear();
668 cf924377 gaqhf
                                    cmd.CommandText = string.Format("INSERT OR REPLACE INTO {0} (UID, NAME, SPPID_SYMBOL_PATH, LEADERLINE) VALUES (@UID, @NAME, @SPPID_SYMBOL_PATH, @LEADERLINE)", SPPID_SYMBOL_MAPPING_TABLE);
669 1421f1d6 gaqhf
                                    cmd.Parameters.AddWithValue("@UID", item.Item1);
670
                                    cmd.Parameters.AddWithValue("@NAME", item.Item2);
671
                                    cmd.Parameters.AddWithValue("@SPPID_SYMBOL_PATH", item.Item3);
672 cf924377 gaqhf
                                    cmd.Parameters.AddWithValue("@LEADERLINE", item.Item4);
673 1421f1d6 gaqhf
                                    cmd.ExecuteNonQuery();
674
                                }
675
                            }
676
                            transaction.Commit();
677
                            connection.Close();
678
                        }
679
                        catch (Exception ex)
680 bca86986 gaqhf
                        {
681 1421f1d6 gaqhf
                            transaction.Rollback();
682
                        }
683
                        finally
684
                        {
685
                            transaction.Dispose();
686 bca86986 gaqhf
                        }
687
                    }
688
                }
689
                catch (Exception ex)
690
                {
691
                    return false;
692
                }
693
                finally
694
                {
695
                    connection.Dispose();
696
                }
697
            }
698
699
            return true;
700
        }
701
702
        public static bool InsertAttributeMapping(List<Tuple<string, string>> datas)
703
        {
704
            Project_Info projectInfo = Project_Info.GetInstance();
705
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
706
            {
707
                try
708
                {
709
                    connection.Open();
710 1421f1d6 gaqhf
                    using (SQLiteTransaction transaction = connection.BeginTransaction())
711 bca86986 gaqhf
                    {
712 1421f1d6 gaqhf
                        try
713
                        {
714
                            using (SQLiteCommand cmd = connection.CreateCommand())
715
                            {
716
                                foreach (var item in datas)
717
                                {
718
                                    cmd.Parameters.Clear();
719
                                    cmd.CommandText = string.Format("INSERT OR REPLACE INTO {0} (UID, SPPID_ATTRIBUTE) VALUES (@UID, @SPPID_ATTRIBUTE)", SPPID_ATTRIBUTE_MAPPING_TABLE);
720
                                    cmd.Parameters.AddWithValue("@UID", item.Item1);
721
                                    cmd.Parameters.AddWithValue("@SPPID_ATTRIBUTE", item.Item2);
722
                                    cmd.ExecuteNonQuery();
723
                                }
724
                            }
725
                            transaction.Commit();
726
                            connection.Close();
727
                        }
728
                        catch (Exception ex)
729 bca86986 gaqhf
                        {
730 1421f1d6 gaqhf
                            transaction.Rollback();
731
                        }
732
                        finally
733
                        {
734
                            transaction.Dispose();
735 bca86986 gaqhf
                        }
736
                    }
737
                }
738
                catch (Exception ex)
739
                {
740
                    return false;
741
                }
742
                finally
743
                {
744
                    connection.Dispose();
745
                }
746
            }
747
            return true;
748
        }
749 1a3a74a8 gaqhf
750 cf924377 gaqhf
        public static bool InsertLabelInfoMapping(List<Tuple<string, int, bool>> datas)
751 1a3a74a8 gaqhf
        {
752
            Project_Info projectInfo = Project_Info.GetInstance();
753
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
754
            {
755
                try
756
                {
757
                    connection.Open();
758
                    using (SQLiteTransaction transaction = connection.BeginTransaction())
759
                    {
760
                        try
761
                        {
762
                            using (SQLiteCommand cmd = connection.CreateCommand())
763
                            {
764
                                foreach (var item in datas)
765
                                {
766
                                    cmd.Parameters.Clear();
767 b8bd98aa gaqhf
                                    cmd.CommandText = string.Format("INSERT OR REPLACE INTO {0} (UID, LOCATION, LEADERLINE) VALUES (@UID, @LOCATION, @LEADERLINE)", SPPID_LABEL_INFO_TABLE);
768 1a3a74a8 gaqhf
                                    cmd.Parameters.AddWithValue("@UID", item.Item1);
769
                                    cmd.Parameters.AddWithValue("@LOCATION", item.Item2);
770 b8bd98aa gaqhf
                                    cmd.Parameters.AddWithValue("@LEADERLINE", item.Item3);
771 1a3a74a8 gaqhf
                                    cmd.ExecuteNonQuery();
772
                                }
773
                            }
774
                            transaction.Commit();
775
                            connection.Close();
776
                        }
777
                        catch (Exception ex)
778
                        {
779
                            transaction.Rollback();
780
                        }
781
                        finally
782
                        {
783
                            transaction.Dispose();
784
                        }
785
                    }
786
                }
787
                catch (Exception ex)
788
                {
789
                    return false;
790
                }
791
                finally
792
                {
793
                    connection.Dispose();
794
                }
795
            }
796
            return true;
797
        }
798 69b7387a gaqhf
799 154d8f43 gaqhf
        public static bool InsertDrawingInfoAndOPCInfo(string path, string drawingNumber, string drawingName, SPPID.Model.SPPID_Document document)
800 69b7387a gaqhf
        {
801
            Project_Info projectInfo = Project_Info.GetInstance();
802
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
803
            {
804
                try
805
                {
806
                    connection.Open();
807
                    using (SQLiteTransaction transaction = connection.BeginTransaction())
808
                    {
809
                        try
810
                        {
811 e8536f2b gaqhf
                            using (SQLiteCommand cmd = connection.CreateCommand())
812
                            {
813 154d8f43 gaqhf
                                cmd.CommandText = string.Format("INSERT OR REPLACE INTO {0} (ID2_DRAWING_UID, PATH, DRAWINGNUMBER, DRAWINGNAME) VALUES (@ID2_DRAWING_UID, @PATH, @DRAWINGNUMBER, @DRAWINGNAME)", SPPID_DRAWING_INFO);
814
                                cmd.Parameters.AddWithValue("@ID2_DRAWING_UID", document.UID);
815 e8536f2b gaqhf
                                cmd.Parameters.AddWithValue("@PATH", path);
816
                                cmd.Parameters.AddWithValue("@DRAWINGNUMBER", drawingNumber);
817
                                cmd.Parameters.AddWithValue("@DRAWINGNAME", drawingName);
818
                                cmd.ExecuteNonQuery();
819
                            }
820 154d8f43 gaqhf
821
                            List<Symbol> OPCs = document.SYMBOLS.FindAll(x => x.TYPE == "Piping OPC's" || x.TYPE == "Instrument OPC's");
822
                            foreach (var item in OPCs)
823
                            {
824
                                using (SQLiteCommand cmd = connection.CreateCommand())
825
                                {
826 b7a29053 gaqhf
                                    cmd.CommandText = string.Format("INSERT OR REPLACE INTO {0} (ID2_OPC_UID, SPPID_OPC_MODELITEM_ID, ID2_DRAWING_UID, ATTRIBUTES, PAIRED) VALUES (@ID2_OPC_UID, @SPPID_OPC_MODELITEM_ID, @ID2_DRAWING_UID, @ATTRIBUTES, @PAIRED)", SPPID_OPC_INFO);
827 154d8f43 gaqhf
                                    cmd.Parameters.AddWithValue("@ID2_OPC_UID", item.UID);
828
                                    cmd.Parameters.AddWithValue("@SPPID_OPC_MODELITEM_ID", item.SPPID.ModelItemID);
829
                                    cmd.Parameters.AddWithValue("@ID2_DRAWING_UID", document.UID);
830 b7a29053 gaqhf
                                    cmd.Parameters.AddWithValue("@ATTRIBUTES", JsonConvert.SerializeObject(item.SPPID.Attributes));
831 154d8f43 gaqhf
                                    cmd.Parameters.AddWithValue("@PAIRED", false);
832
                                    cmd.ExecuteNonQuery();
833
                                }
834
                            }
835
836
                            transaction.Commit();
837
                            connection.Close();
838
                        }
839
                        catch (Exception ex)
840
                        {
841
                            transaction.Rollback();
842
                        }
843
                        finally
844
                        {
845
                            transaction.Dispose();
846
                        }
847
                    }
848
                }
849
                catch (Exception ex)
850
                {
851
                    return false;
852
                }
853
                finally
854
                {
855
                    connection.Dispose();
856
                }
857
            }
858
            return true;
859
        }
860
861
        public static bool InsertOPCInfo(string UID, string ModelItemID, string drawingUID, bool Paired)
862
        {
863
            Project_Info projectInfo = Project_Info.GetInstance();
864
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
865
            {
866
                try
867
                {
868
                    connection.Open();
869
                    using (SQLiteTransaction transaction = connection.BeginTransaction())
870
                    {
871
                        try
872
                        {
873
                            using (SQLiteCommand cmd = connection.CreateCommand())
874
                            {
875
                                cmd.CommandText = string.Format("INSERT OR REPLACE INTO {0} (ID2_OPC_UID, SPPID_OPC_MODELITEM_ID, ID2_DRAWING_UID, PAIRED) VALUES (@ID2_OPC_UID, @SPPID_OPC_MODELITEM_ID, @ID2_DRAWING_UID, @PAIRED)", SPPID_OPC_INFO);
876
                                cmd.Parameters.AddWithValue("@ID2_OPC_UID", UID);
877
                                cmd.Parameters.AddWithValue("@SPPID_OPC_MODELITEM_ID", ModelItemID);
878
                                cmd.Parameters.AddWithValue("@ID2_DRAWING_UID", drawingUID);
879
                                cmd.Parameters.AddWithValue("@PAIRED", Paired);
880
                                cmd.ExecuteNonQuery();
881
                            }
882
883 e8536f2b gaqhf
                            transaction.Commit();
884
                            connection.Close();
885 69b7387a gaqhf
                        }
886
                        catch (Exception ex)
887
                        {
888
                            transaction.Rollback();
889
                        }
890
                        finally
891
                        {
892
                            transaction.Dispose();
893
                        }
894
                    }
895
                }
896
                catch (Exception ex)
897
                {
898
                    return false;
899
                }
900
                finally
901
                {
902
                    connection.Dispose();
903
                }
904
            }
905
            return true;
906
        }
907 b18dc619 gaqhf
    }
908
}
클립보드 이미지 추가 (최대 크기: 500 MB)