프로젝트

일반

사용자정보

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

hytos / DTI_PID / SPPIDConverter / DB / Project_DB.cs @ da1aeb27

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

1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
using System.Threading.Tasks;
6
using System.Globalization;
7
using System.Data.SQLite;
8
using System.Data;
9
using System.Data.SqlClient;
10
using Converter.SPPID;
11
using System.IO;
12
using Newtonsoft.Json;
13

    
14
namespace Converter.BaseModel
15
{
16
    public class Project_DB
17
    {
18
        const string SPPID_DB_INFO_TABLE = "T_SPPID_CONNECTION_INFO";
19
        const string SPPID_SYMBOL_MAPPING_TABLE = "T_SPPID_SYMBOL_MAPPING";
20
        const string SPPID_ATTRIBUTE_MAPPING_TABLE = "T_SPPID_ATTRIBUTE_MAPPING";
21
        const string SPPID_SETTING_TABLE = "T_SPPID_SETTING_TABLE";
22
        const string SPPID_LABEL_INFO_TABLE = "T_SPPID_LABEL_INFO";
23
        const string SPPID_DRAWING_INFO = "T_SPPID_DRAWING_INFO";
24
        const string SPPID_OPC_INFO = "T_SPPID_OPC_INFO";
25
        const string ID2_DRAWINGATTRIBUTE_TABLE = "T_ID2_DRAWINGATTRIBUTE";
26

    
27
        const string LineProperties_TABLE = "LineProperties";
28
        const string LineTypes_TABLE = "LineTypes";
29
        const string SymbolType_TABLE = "SymbolType";
30
        const string SymbolAttribute_TABLE = "SymbolAttribute";
31
        const string Symbol_TABLE = "Symbol";
32
        const string OPCRelations_TABLE = "OPCRelations";
33
        const string DrawingAttribute_Table = "TitleBlockProperties";
34

    
35
        private static SqlConnection GetSqlConnection()
36
        {
37
            Project_Info projectInfo = Project_Info.GetInstance();
38
            SqlConnection connection = null;
39
            try
40
            {
41
                connection = new SqlConnection(string.Format(CultureInfo.CurrentCulture,
42
                    @"Data Source = {0},{1}; Initial Catalog = {2}; User ID = {3}; Password = {4};",
43
                    projectInfo.ServerIP,
44
                    projectInfo.Port,
45
                    System.IO.Path.GetFileName(projectInfo.DefaultPath),
46
                    projectInfo.DBUser,
47
                    projectInfo.DBPassword));
48

    
49
                connection.Open();
50
            }
51
            catch (Exception ex)
52
            {
53
                Log.Write(ex.Message + "\r\n" + ex.StackTrace);
54
                if (connection != null)
55
                    connection.Dispose();
56
                connection = null;
57
            }
58

    
59
            return connection;
60
        }
61

    
62
        public static bool ConnTestAndCreateTable()
63
        {
64
            bool result = false;
65
            Project_Info projectInfo = Project_Info.GetInstance();
66
            if (projectInfo.DBType == ID2DB_Type.SQLite)
67
            {
68
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, @"Data Source = {0}", projectInfo.DBFilePath)))
69
                {
70
                    try
71
                    {
72
                        connection.Open();
73
                        if (connection.State == ConnectionState.Open)
74
                        {
75
                            using (SQLiteCommand cmd = connection.CreateCommand())
76
                            {
77
                                cmd.CommandText = "SELECT NAME FROM sqlite_master WHERE type='table'";
78
                                using (SQLiteDataReader dr = cmd.ExecuteReader())
79
                                using (DataTable dt = new DataTable())
80
                                {
81
                                    dt.Load(dr);
82

    
83
                                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_DB_INFO_TABLE)).Length == 0)
84
                                    {
85
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (JsonString TEXT)", SPPID_DB_INFO_TABLE);
86
                                        cmd.ExecuteNonQuery();
87
                                    }
88
                                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_SETTING_TABLE)).Length == 0)
89
                                    {
90
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (JsonString TEXT, SettingType TEXT)", SPPID_SETTING_TABLE);
91
                                        cmd.ExecuteNonQuery();
92
                                    }
93
                                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_SYMBOL_MAPPING_TABLE)).Length == 0)
94
                                    {
95
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (UID TEXT PRIMARY KEY, NAME TEXT, SPPID_SYMBOL_PATH TEXT, LEADERLINE BOOLEAN)", SPPID_SYMBOL_MAPPING_TABLE);
96
                                        cmd.ExecuteNonQuery();
97
                                    }
98
                                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_ATTRIBUTE_MAPPING_TABLE)).Length == 0)
99
                                    {
100
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (UID TEXT PRIMARY KEY, SPPID_ATTRIBUTE TEXT)", SPPID_ATTRIBUTE_MAPPING_TABLE);
101
                                        cmd.ExecuteNonQuery();
102
                                    }
103
                                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_LABEL_INFO_TABLE)).Length == 0)
104
                                    {
105
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (UID TEXT PRIMARY KEY, LOCATION INT DEFAULT 0, LEADERLINE BOOLEAN)", SPPID_LABEL_INFO_TABLE);
106
                                        cmd.ExecuteNonQuery();
107
                                    }
108
                                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_DRAWING_INFO)).Length == 0)
109
                                    {
110
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (ID2_DRAWING_UID Text PRIMARY KEY, PATH TEXT, DRAWINGNUMBER TEXT, DRAWINGNAME TEXT)", SPPID_DRAWING_INFO);
111
                                        cmd.ExecuteNonQuery();
112
                                    }
113
                                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_OPC_INFO)).Length == 0)
114
                                    {
115
                                        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);
116
                                        cmd.ExecuteNonQuery();
117
                                    }
118
                                    if (dt.Select(string.Format("NAME = '{0}'", ID2_DRAWINGATTRIBUTE_TABLE)).Length == 0)
119
                                    {
120
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (UID TEXT PRIMARY KEY, NAME TEXT)", ID2_DRAWINGATTRIBUTE_TABLE);
121
                                        cmd.ExecuteNonQuery();
122

    
123
                                        List<string> datas = new List<string>() { "Unit", "Rev No", "Drawing No" };
124
                                        foreach (var data in datas)
125
                                        {
126
                                            cmd.CommandText = string.Format("INSERT INTO {0} VALUES('{1}', '{1}')", ID2_DRAWINGATTRIBUTE_TABLE, data);
127
                                            cmd.ExecuteNonQuery();
128
                                        }
129
                                    }
130
                                }
131

    
132
                                #region Check Column 업데이트시 예비용
133
                                cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_ATTRIBUTE_MAPPING_TABLE);
134
                                using (SQLiteDataReader dr = cmd.ExecuteReader())
135
                                using (DataTable dt = new DataTable())
136
                                {
137
                                    dt.Load(dr);
138
                                    if (!dt.Columns.Contains("ISTEXT"))
139
                                    {
140
                                        cmd.CommandText = string.Format("ALTER TABLE {0} ADD COLUMN ISTEXT BOOLEAN", SPPID_ATTRIBUTE_MAPPING_TABLE);
141
                                        cmd.ExecuteNonQuery();
142
                                    }
143
                                }
144

    
145
                                cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_SYMBOL_MAPPING_TABLE);
146
                                using (SQLiteDataReader dr = cmd.ExecuteReader())
147
                                using (DataTable dt = new DataTable())
148
                                {
149
                                    dt.Load(dr);
150
                                    if (!dt.Columns.Contains("LEADERLINE"))
151
                                    {
152
                                        cmd.CommandText = string.Format("ALTER TABLE {0} ADD COLUMN LEADERLINE BOOLEAN", SPPID_SYMBOL_MAPPING_TABLE);
153
                                        cmd.ExecuteNonQuery();
154
                                    }
155
                                }
156

    
157
                                cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_SETTING_TABLE);
158
                                using (SQLiteDataReader dr = cmd.ExecuteReader())
159
                                using (DataTable dt = new DataTable())
160
                                {
161
                                    dt.Load(dr);
162
                                    if (!dt.Columns.Contains("SettingType"))
163
                                    {
164
                                        cmd.CommandText = string.Format("ALTER TABLE {0} ADD COLUMN SettingType Text", SPPID_SETTING_TABLE);
165
                                        cmd.ExecuteNonQuery();
166
                                    }
167
                                }
168

    
169
                                cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_DRAWING_INFO);
170
                                using (SQLiteDataReader dr = cmd.ExecuteReader())
171
                                using (DataTable dt = new DataTable())
172
                                {
173
                                    dt.Load(dr);
174
                                    if (dt.Columns.Contains("DOCUMENT"))
175
                                    {
176
                                        cmd.CommandText = string.Format("DROP TABLE {0}", SPPID_DRAWING_INFO);
177
                                        cmd.ExecuteNonQuery();
178

    
179
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (ID2_DRAWING_UID Text PRIMARY KEY, PATH TEXT, DRAWINGNUMBER TEXT, DRAWINGNAME TEXT)", SPPID_DRAWING_INFO);
180
                                        cmd.ExecuteNonQuery();
181
                                    }
182
                                }
183
                                #endregion
184
                            }
185
                            result = true;
186
                        }
187
                        connection.Close();
188
                    }
189
                    catch (Exception ex)
190
                    {
191
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
192
                    }
193
                    finally
194
                    {
195
                        connection.Dispose();
196
                    }
197
                }
198
            }
199
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
200
            {
201
                using (SqlConnection connection = GetSqlConnection())
202
                {
203
                    try
204
                    {
205
                        if (connection != null && connection.State == ConnectionState.Open)
206
                        {
207
                            using (SqlCommand cmd = connection.CreateCommand())
208
                            {
209
                                cmd.CommandText = "SELECT TABLE_NAME AS NAME FROM INFORMATION_SCHEMA.TABLES";
210
                                using (SqlDataReader dr = cmd.ExecuteReader())
211
                                using (DataTable dt = new DataTable())
212
                                {
213
                                    dt.Load(dr);
214

    
215
                                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_DB_INFO_TABLE)).Length == 0)
216
                                    {
217
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (JsonString varchar(MAX))", SPPID_DB_INFO_TABLE);
218
                                        cmd.ExecuteNonQuery();
219
                                    }
220
                                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_SETTING_TABLE)).Length == 0)
221
                                    {
222
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (JsonString varchar(MAX), SettingType varchar(MAX))", SPPID_SETTING_TABLE);
223
                                        cmd.ExecuteNonQuery();
224
                                    }
225
                                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_SYMBOL_MAPPING_TABLE)).Length == 0)
226
                                    {
227
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (UID varchar(255) PRIMARY KEY, NAME varchar(MAX), SPPID_SYMBOL_PATH varchar(MAX), LEADERLINE BIT)", SPPID_SYMBOL_MAPPING_TABLE);
228
                                        cmd.ExecuteNonQuery();
229
                                    }
230
                                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_ATTRIBUTE_MAPPING_TABLE)).Length == 0)
231
                                    {
232
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (UID varchar(255) PRIMARY KEY, SPPID_ATTRIBUTE varchar(MAX))", SPPID_ATTRIBUTE_MAPPING_TABLE);
233
                                        cmd.ExecuteNonQuery();
234
                                    }
235
                                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_LABEL_INFO_TABLE)).Length == 0)
236
                                    {
237
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (UID varchar(255) PRIMARY KEY, LOCATION INT DEFAULT 0, LEADERLINE BIT)", SPPID_LABEL_INFO_TABLE);
238
                                        cmd.ExecuteNonQuery();
239
                                    }
240
                                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_DRAWING_INFO)).Length == 0)
241
                                    {
242
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (ID2_DRAWING_UID varchar(255) PRIMARY KEY, PATH varchar(MAX), DRAWINGNUMBER varchar(MAX), DRAWINGNAME varchar(MAX))", SPPID_DRAWING_INFO);
243
                                        cmd.ExecuteNonQuery();
244
                                    }
245
                                    if (dt.Select(string.Format("NAME = '{0}'", SPPID_OPC_INFO)).Length == 0)
246
                                    {
247
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (ID2_OPC_UID varchar(255) PRIMARY KEY, SPPID_OPC_MODELITEM_ID varchar(MAX), ID2_DRAWING_UID varchar(MAX), ATTRIBUTES varchar(MAX), PAIRED BIT)", SPPID_OPC_INFO);
248
                                        cmd.ExecuteNonQuery();
249
                                    }
250
                                    if (dt.Select(string.Format("NAME = '{0}'", ID2_DRAWINGATTRIBUTE_TABLE)).Length == 0)
251
                                    {
252
                                        cmd.CommandText = string.Format("CREATE TABLE {0} (UID varchar(255) PRIMARY KEY, NAME varchar(255))", ID2_DRAWINGATTRIBUTE_TABLE);
253
                                        cmd.ExecuteNonQuery();
254

    
255
                                        List<string> datas = new List<string>() { "Unit", "Rev No", "Drawing No" };
256
                                        foreach (var data in datas)
257
                                        {
258
                                            cmd.CommandText = string.Format("INSERT INTO {0} VALUES('{1}', '{1}')", ID2_DRAWINGATTRIBUTE_TABLE, data);
259
                                            cmd.ExecuteNonQuery();
260
                                        }
261
                                    }
262
                                }
263

    
264
                                #region Check Column 업데이트시 예비용
265
                                cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_ATTRIBUTE_MAPPING_TABLE);
266
                                using (SqlDataReader dr = cmd.ExecuteReader())
267
                                using (DataTable dt = new DataTable())
268
                                {
269
                                    dt.Load(dr);
270
                                    if (!dt.Columns.Contains("ISTEXT"))
271
                                    {
272
                                        cmd.CommandText = string.Format("ALTER TABLE {0} ADD ISTEXT BIT", SPPID_ATTRIBUTE_MAPPING_TABLE);
273
                                        cmd.ExecuteNonQuery();
274
                                    }
275
                                }
276
                                #endregion
277
                            }
278
                            result = true;
279
                        }
280
                    }
281
                    catch (Exception ex)
282
                    {
283
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
284
                    }
285
                    finally
286
                    {
287
                        if (connection != null)
288
                            connection.Dispose();
289
                    }
290
                }
291
            }
292

    
293
            return result;
294
        }
295

    
296
        public static bool SaveSPPID_DB_INFO(string jsonString)
297
        {
298
            Project_Info projectInfo = Project_Info.GetInstance();
299
            if (projectInfo.DBType == ID2DB_Type.SQLite)
300
            {
301
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
302
                {
303

    
304
                    try
305
                    {
306
                        connection.Open();
307
                        using (SQLiteCommand cmd = connection.CreateCommand())
308
                        {
309
                            cmd.CommandText = string.Format("DELETE FROM {0}", SPPID_DB_INFO_TABLE);
310
                            cmd.ExecuteNonQuery();
311

    
312
                            cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@jsonString)", SPPID_DB_INFO_TABLE);
313
                            cmd.Parameters.AddWithValue("@jsonString", jsonString);
314
                            cmd.ExecuteNonQuery();
315
                        }
316
                        connection.Close();
317
                    }
318
                    catch (Exception ex)
319
                    {
320
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
321
                        return false;
322
                    }
323
                    finally
324
                    {
325
                        connection.Dispose();
326
                    }
327
                }
328
            }
329
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
330
            {
331
                using (SqlConnection connection = GetSqlConnection())
332
                {
333
                    try
334
                    {
335
                        if (connection != null && connection.State == ConnectionState.Open)
336
                        {
337
                            using (SqlCommand cmd = connection.CreateCommand())
338
                            {
339
                                cmd.CommandText = string.Format("DELETE FROM {0}", SPPID_DB_INFO_TABLE);
340
                                cmd.ExecuteNonQuery();
341

    
342
                                cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@jsonString)", SPPID_DB_INFO_TABLE);
343
                                cmd.Parameters.AddWithValue("@jsonString", jsonString);
344
                                cmd.ExecuteNonQuery();
345
                            }
346
                            connection.Close();
347
                        }
348
                        else
349
                        {
350
                            return false;
351
                        }
352
                    }
353
                    catch (Exception ex)
354
                    {
355
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
356
                        return false;
357
                    }
358
                    finally
359
                    {
360
                        if (connection != null)
361
                            connection.Dispose();
362
                    }
363
                }
364
            }
365

    
366

    
367
            return true;
368
        }
369

    
370
        public static DataTable SelectSPPID_DB_INFO()
371
        {
372
            DataTable dt = new DataTable();
373
            Project_Info projectInfo = Project_Info.GetInstance();
374
            if (projectInfo.DBType == ID2DB_Type.SQLite)
375
            {
376
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
377
                {
378
                    try
379
                    {
380
                        connection.Open();
381
                        using (SQLiteCommand cmd = connection.CreateCommand())
382
                        {
383
                            cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_DB_INFO_TABLE);
384
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
385
                                dt.Load(dr);
386
                        }
387
                        connection.Close();
388
                    }
389
                    catch (Exception ex)
390
                    {
391
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
392
                    }
393
                    finally
394
                    {
395
                        connection.Dispose();
396
                    }
397
                }
398
            }
399
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
400
            {
401
                using (SqlConnection connection = GetSqlConnection())
402
                {
403
                    try
404
                    {
405
                        if (connection != null && connection.State == ConnectionState.Open)
406
                        {
407
                            using (SqlCommand cmd = connection.CreateCommand())
408
                            {
409
                                cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_DB_INFO_TABLE);
410
                                using (SqlDataReader dr = cmd.ExecuteReader())
411
                                    dt.Load(dr);
412
                            }
413
                            connection.Close();
414
                        }
415
                    }
416
                    catch (Exception ex)
417
                    {
418
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
419
                    }
420
                    finally
421
                    {
422
                        if (connection != null)
423
                            connection.Dispose();
424
                    }
425
                }
426
            }
427

    
428
            return dt;
429
        }
430

    
431
        public static bool SaveETCSetting(Dictionary<string,string> dicSetting)
432
        {
433
            Project_Info projectInfo = Project_Info.GetInstance();
434
            if (projectInfo.DBType == ID2DB_Type.SQLite)
435
            {
436
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
437
                {
438

    
439
                    try
440
                    {
441
                        connection.Open();
442
                        using (SQLiteCommand cmd = connection.CreateCommand())
443
                        {
444
                            cmd.CommandText = string.Format("DELETE FROM {0}", SPPID_SETTING_TABLE);
445
                            cmd.ExecuteNonQuery();
446

    
447
                            foreach (var item in dicSetting)
448
                            {
449
                                cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@jsonString, @SettingType)", SPPID_SETTING_TABLE);
450
                                cmd.Parameters.Clear();
451
                                cmd.Parameters.AddWithValue("@jsonString", item.Value);
452
                                cmd.Parameters.AddWithValue("@SettingType", item.Key);
453
                                cmd.ExecuteNonQuery();
454
                            }
455
                        }
456
                        connection.Close();
457
                    }
458
                    catch (Exception ex)
459
                    {
460
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
461
                        return false;
462
                    }
463
                    finally
464
                    {
465
                        connection.Dispose();
466
                    }
467
                }
468
            }
469
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
470
            {
471
                using (SqlConnection connection = GetSqlConnection())
472
                {
473
                    try
474
                    {
475
                        if (connection != null && connection.State == ConnectionState.Open)
476
                        {
477
                            using (SqlCommand cmd = connection.CreateCommand())
478
                            {
479
                                cmd.CommandText = string.Format("DELETE FROM {0}", SPPID_SETTING_TABLE);
480
                                cmd.ExecuteNonQuery();
481

    
482
                                foreach (var item in dicSetting)
483
                                {
484
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@jsonString, @SettingType)", SPPID_SETTING_TABLE);
485
                                    cmd.Parameters.Clear();
486
                                    cmd.Parameters.AddWithValue("@jsonString", item.Value);
487
                                    cmd.Parameters.AddWithValue("@SettingType", item.Key);
488
                                    cmd.ExecuteNonQuery();
489
                                }
490
                            }
491
                            connection.Close();
492
                        }
493
                        else
494
                            return false;
495
                    }
496
                    catch (Exception ex)
497
                    {
498
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
499
                        return false;
500
                    }
501
                    finally
502
                    {
503
                        if (connection != null)
504
                            connection.Dispose();
505
                    }
506
                }
507
            }
508

    
509
            return true;
510
        }
511

    
512
        public static DataTable SelectSetting()
513
        {
514
            DataTable dt = new DataTable();
515
            Project_Info projectInfo = Project_Info.GetInstance();
516
            if (projectInfo.DBType == ID2DB_Type.SQLite)
517
            {
518
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
519
                {
520
                    try
521
                    {
522
                        connection.Open();
523
                        using (SQLiteCommand cmd = connection.CreateCommand())
524
                        {
525
                            cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_SETTING_TABLE);
526
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
527
                                dt.Load(dr);
528
                        }
529
                        connection.Close();
530
                    }
531
                    catch (Exception ex)
532
                    {
533
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
534
                    }
535
                    finally
536
                    {
537
                        connection.Dispose();
538
                    }
539
                }
540
            }
541
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
542
            {
543
                using (SqlConnection connection = GetSqlConnection())
544
                {
545
                    try
546
                    {
547
                        if (connection != null && connection.State == ConnectionState.Open)
548
                        {
549
                            using (SqlCommand cmd = connection.CreateCommand())
550
                            {
551
                                cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_SETTING_TABLE);
552
                                using (SqlDataReader dr = cmd.ExecuteReader())
553
                                    dt.Load(dr);
554
                            }
555
                            connection.Close();
556
                        }
557
                    }
558
                    catch (Exception ex)
559
                    {
560
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
561
                    }
562
                    finally
563
                    {
564
                        if (connection != null)
565
                            connection.Dispose();
566
                    }
567
                }
568
            }
569

    
570
            return dt;
571
        }
572

    
573
        public static DataTable SelectProjectSymbol()
574
        {
575
            DataTable dt = new DataTable();
576
            Project_Info projectInfo = Project_Info.GetInstance();
577
            if (projectInfo.DBType == ID2DB_Type.SQLite)
578
            {
579
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
580
                {
581
                    try
582
                    {
583
                        connection.Open();
584
                        using (SQLiteCommand cmd = connection.CreateCommand())
585
                        {
586
                            cmd.CommandText = string.Format(@"
587
                            SELECT s.UID, s.Name, st.Type, sp.SPPID_SYMBOL_PATH, sp.LEADERLINE FROM {1} as st, {0} as s 
588
                                LEFT OUTER JOIN {2} as sp 
589
                                    ON s.UID = SP.UID 
590
                            WHERE s.SymbolType_UID = st.UID 
591
                            ORDER BY st.TYPE ASC;", Symbol_TABLE, SymbolType_TABLE, SPPID_SYMBOL_MAPPING_TABLE);
592
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
593
                                dt.Load(dr);
594

    
595
                            DataTable dtClone = dt.Clone();
596
                            dtClone.Columns["UID"].DataType = typeof(string);
597
                            foreach (DataRow row in dt.Rows)
598
                            {
599
                                dtClone.ImportRow(row);
600
                            }
601
                            dt.Dispose();
602
                            dt = dtClone;
603
                        }
604
                        connection.Close();
605
                    }
606
                    catch (Exception ex)
607
                    {
608
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
609
                    }
610
                    finally
611
                    {
612
                        connection.Dispose();
613
                    }
614
                }
615
            }
616
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
617
            {
618
                using (SqlConnection connection = GetSqlConnection())
619
                {
620
                    try
621
                    {
622
                        if (connection != null && connection.State == ConnectionState.Open)
623
                        {
624
                            using (SqlCommand cmd = connection.CreateCommand())
625
                            {
626
                                cmd.CommandText = string.Format(@"
627
                            SELECT CONVERT(VARCHAR(255), s.UID) AS UID, s.Name, st.Type, sp.SPPID_SYMBOL_PATH, sp.LEADERLINE FROM {1} as st, {0} as s 
628
                                LEFT OUTER JOIN {2} as sp 
629
                                    ON CONVERT(VARCHAR(255), s.UID) = CONVERT(VARCHAR(255), SP.UID)
630
                            WHERE s.SymbolType_UID = st.UID 
631
                            ORDER BY st.TYPE ASC;", Symbol_TABLE, SymbolType_TABLE, SPPID_SYMBOL_MAPPING_TABLE);
632
                                using (SqlDataReader dr = cmd.ExecuteReader())
633
                                    dt.Load(dr);
634
                            }
635
                            connection.Close();
636
                        }
637
                    }
638
                    catch (Exception ex)
639
                    {
640
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
641
                    }
642
                    finally
643
                    {
644
                        if (connection != null)
645
                            connection.Dispose();
646
                    }
647
                }
648
            }
649

    
650
            return dt;
651
        }
652

    
653
        public static DataTable SelectProjectChildSymbol()
654
        {
655
            DataTable result = new DataTable();
656
            result.Columns.Add("UID");
657
            result.Columns.Add("Name");
658
            result.Columns.Add("Type");
659
            result.Columns.Add("SPPID_SYMBOL_PATH");
660
            
661
            Project_Info projectInfo = Project_Info.GetInstance();
662
            if (projectInfo.DBType == ID2DB_Type.SQLite)
663
            {
664
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
665
                using (DataTable dt = new DataTable())
666
                {
667
                    try
668
                    {
669
                        connection.Open();
670
                        using (SQLiteCommand cmd = connection.CreateCommand())
671
                        {
672
                            cmd.CommandText = string.Format(@"
673
                            SELECT AdditionalSymbol FROM Symbol");
674
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
675
                                dt.Load(dr);
676
                            List<string> childList = new List<string>();
677
                            foreach (DataRow row in dt.Rows)
678
                            {
679
                                if (row["AdditionalSymbol"] != null && !DBNull.Value.Equals(row["AdditionalSymbol"]) && !string.IsNullOrEmpty((string)row["AdditionalSymbol"]))
680
                                {
681
                                    string[] array = row["AdditionalSymbol"].ToString().Split(new char[] { '/' });
682
                                    foreach (var childString in array)
683
                                    {
684
                                        childList.Add(childString.Split(new char[] { ',' })[2]);
685
                                    }
686
                                }
687

    
688
                            }
689

    
690
                            dt.Clear();
691
                            cmd.Reset();
692
                            cmd.CommandText = string.Format(@"
693
                            SELECT * FROM {0}", SPPID_SYMBOL_MAPPING_TABLE);
694
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
695
                                dt.Load(dr);
696

    
697
                            childList = childList.Distinct().ToList();
698
                            foreach (var child in childList)
699
                            {
700
                                string mappingPath = string.Empty;
701
                                DataRow[] rows = dt.Select(string.Format("UID = '{0}'", child));
702
                                if (rows.Length == 1)
703
                                    mappingPath = !DBNull.Value.Equals(rows[0]["SPPID_SYMBOL_PATH"]) ? (string)rows[0]["SPPID_SYMBOL_PATH"] : null;
704

    
705
                                DataRow newRow = result.NewRow();
706
                                newRow["UID"] = child;
707
                                newRow["Name"] = child;
708
                                newRow["Type"] = "Child Symbol";
709
                                newRow["SPPID_SYMBOL_PATH"] = mappingPath;
710
                                result.Rows.Add(newRow);
711
                            }
712
                        }
713
                        connection.Close();
714
                    }
715
                    catch (Exception ex)
716
                    {
717
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
718
                    }
719
                    finally
720
                    {
721
                        connection.Dispose();
722
                    }
723
                }
724
            }
725
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
726
            {
727
                using (SqlConnection connection = GetSqlConnection())
728
                using (DataTable dt = new DataTable())
729
                {
730
                    try
731
                    {
732
                        if (connection != null && connection.State == ConnectionState.Open)
733
                        {
734
                            using (SqlCommand cmd = connection.CreateCommand())
735
                            {
736
                                cmd.CommandText = string.Format(@"
737
                            SELECT AdditionalSymbol FROM Symbol");
738
                                using (SqlDataReader dr = cmd.ExecuteReader())
739
                                    dt.Load(dr);
740
                                List<string> childList = new List<string>();
741
                                foreach (DataRow row in dt.Rows)
742
                                {
743
                                    if (row["AdditionalSymbol"] != null && !DBNull.Value.Equals(row["AdditionalSymbol"]) && !string.IsNullOrEmpty((string)row["AdditionalSymbol"]))
744
                                    {
745
                                        string[] array = row["AdditionalSymbol"].ToString().Split(new char[] { '/' });
746
                                        foreach (var childString in array)
747
                                        {
748
                                            childList.Add(childString.Split(new char[] { ',' })[2]);
749
                                        }
750
                                    }
751

    
752
                                }
753

    
754
                                dt.Clear();
755
                                cmd.CommandText = string.Format(@"
756
                            SELECT * FROM {0}", SPPID_SYMBOL_MAPPING_TABLE);
757
                                using (SqlDataReader dr = cmd.ExecuteReader())
758
                                    dt.Load(dr);
759

    
760
                                childList = childList.Distinct().ToList();
761
                                foreach (var child in childList)
762
                                {
763
                                    string mappingPath = string.Empty;
764
                                    DataRow[] rows = dt.Select(string.Format("UID = '{0}'", child));
765
                                    if (rows.Length == 1)
766
                                        mappingPath = !DBNull.Value.Equals(rows[0]["SPPID_SYMBOL_PATH"]) ? (string)rows[0]["SPPID_SYMBOL_PATH"] : null;
767

    
768
                                    DataRow newRow = result.NewRow();
769
                                    newRow["UID"] = child;
770
                                    newRow["Name"] = child;
771
                                    newRow["Type"] = "Child Symbol";
772
                                    newRow["SPPID_SYMBOL_PATH"] = mappingPath;
773
                                    result.Rows.Add(newRow);
774
                                }
775
                            }
776
                            connection.Close();
777
                        }
778
                    }
779
                    catch (Exception ex)
780
                    {
781
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
782
                    }
783
                    finally
784
                    {
785
                        if (connection != null)
786
                            connection.Dispose();
787
                    }
788
                }
789
            }
790
            return result;
791
        }
792

    
793
        public static DataTable SelectProjectLine()
794
        {
795
            DataTable dt = new DataTable();
796
            Project_Info projectInfo = Project_Info.GetInstance();
797
            if (projectInfo.DBType == ID2DB_Type.SQLite)
798
            {
799
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
800
                {
801
                    try
802
                    {
803
                        connection.Open();
804
                        using (SQLiteCommand cmd = connection.CreateCommand())
805
                        {
806
                            cmd.CommandText = string.Format(@"
807
                            SELECT l.UID, l.Name, sp.SPPID_SYMBOL_PATH FROM {0} as l 
808
                                LEFT OUTER JOIN {1} as sp 
809
                                    ON l.UID = SP.UID ;", LineTypes_TABLE, SPPID_SYMBOL_MAPPING_TABLE);
810
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
811
                                dt.Load(dr);
812
                        }
813
                        connection.Close();
814
                    }
815
                    catch (Exception ex)
816
                    {
817
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
818
                    }
819
                    finally
820
                    {
821
                        connection.Dispose();
822
                    }
823
                }
824
            }
825
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
826
            {
827
                using (SqlConnection connection = GetSqlConnection())
828
                {
829
                    try
830
                    {
831
                        if (connection != null && connection.State == ConnectionState.Open)
832
                        {
833
                            using (SqlCommand cmd = connection.CreateCommand())
834
                            {
835
                                cmd.CommandText = string.Format(@"
836
                            SELECT l.UID, l.Name, sp.SPPID_SYMBOL_PATH FROM {0} as l 
837
                                LEFT OUTER JOIN {1} as sp 
838
                                    ON l.UID = SP.UID ;", LineTypes_TABLE, SPPID_SYMBOL_MAPPING_TABLE);
839
                                using (SqlDataReader dr = cmd.ExecuteReader())
840
                                    dt.Load(dr);
841
                            }
842
                            connection.Close();
843
                        }
844
                    }
845
                    catch (Exception ex)
846
                    {
847
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
848
                    }
849
                    finally
850
                    {
851
                        if (connection != null)
852
                            connection.Dispose();
853
                    }
854
                }
855
            }
856

    
857
            return dt;
858
        }
859

    
860
        public static DataTable SelectProjectLineProperties()
861
        {
862
            DataTable dt = new DataTable();
863
            Project_Info projectInfo = Project_Info.GetInstance();
864
            if (projectInfo.DBType == ID2DB_Type.SQLite)
865
            {
866
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
867
                {
868
                    try
869
                    {
870
                        connection.Open();
871
                        using (SQLiteCommand cmd = connection.CreateCommand())
872
                        {
873
                            cmd.CommandText = string.Format(@"
874
                            SELECT lp.UID, lp.DisplayName, sp.SPPID_SYMBOL_PATH, spa.SPPID_ATTRIBUTE
875
                            FROM {0} as lp 
876
                                 LEFT OUTER JOIN {1} as sp 
877
                                      ON lp.UID = sp.UID
878
                                 LEFT OUTER JOIN {2} as spa 
879
                                      ON lp.UID = spa.UID;", LineProperties_TABLE, SPPID_SYMBOL_MAPPING_TABLE, SPPID_ATTRIBUTE_MAPPING_TABLE);
880
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
881
                                dt.Load(dr);
882
                        }
883
                        connection.Close();
884
                    }
885
                    catch (Exception ex)
886
                    {
887
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
888
                    }
889
                    finally
890
                    {
891
                        connection.Dispose();
892
                    }
893
                }
894
            }
895
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
896
            {
897
                using (SqlConnection connection = GetSqlConnection())
898
                {
899
                    try
900
                    {
901
                        if (connection != null && connection.State == ConnectionState.Open)
902
                        {
903
                            using (SqlCommand cmd = connection.CreateCommand())
904
                            {
905
                                cmd.CommandText = string.Format(@"
906
                            SELECT lp.UID, lp.DisplayName, sp.SPPID_SYMBOL_PATH, spa.SPPID_ATTRIBUTE
907
                            FROM {0} as lp 
908
                                 LEFT OUTER JOIN {1} as sp 
909
                                      ON lp.UID = sp.UID
910
                                 LEFT OUTER JOIN {2} as spa 
911
                                      ON lp.UID = spa.UID;", LineProperties_TABLE, SPPID_SYMBOL_MAPPING_TABLE, SPPID_ATTRIBUTE_MAPPING_TABLE);
912
                                using (SqlDataReader dr = cmd.ExecuteReader())
913
                                    dt.Load(dr);
914
                            }
915
                            connection.Close();
916
                        }
917
                    }
918
                    catch (Exception ex)
919
                    {
920
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
921
                    }
922
                    finally
923
                    {
924
                        if (connection != null)
925
                            connection.Dispose();
926
                    }
927
                }
928
            }
929

    
930
            return dt;
931
        }
932

    
933
        public static DataTable SelectProjectAttribute()
934
        {
935
            DataTable dt = new DataTable();
936
            Project_Info projectInfo = Project_Info.GetInstance();
937
            if (projectInfo.DBType == ID2DB_Type.SQLite)
938
            {
939
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
940
                {
941
                    try
942
                    {
943
                        connection.Open();
944
                        using (SQLiteCommand cmd = connection.CreateCommand())
945
                        {
946
                            cmd.CommandText = string.Format(@"
947
                            SELECT sa.UID, sa.DisplayAttribute, st.TYPE, spa.SPPID_ATTRIBUTE, sp.SPPID_SYMBOL_PATH, spa.ISTEXT, spl.LOCATION, spl.LEADERLINE, sa.Property
948
                            FROM {1} as sa, {0} as st 
949
                                 LEFT OUTER JOIN {2} as sp 
950
                                      ON sa.UID = SP.UID 
951
                                LEFT OUTER JOIN {3} as spa 
952
                                     ON sa.UID = spa.UID
953
                                LEFT OUTER JOIN {4} as spl 
954
                                     ON sa.UID = spl.UID
955
                            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);
956
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
957
                                dt.Load(dr);
958
                        }
959
                        connection.Close();
960
                    }
961
                    catch (Exception ex)
962
                    {
963
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
964
                    }
965
                    finally
966
                    {
967
                        connection.Dispose();
968
                    }
969
                }
970
            }
971
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
972
            {
973
                using (SqlConnection connection = GetSqlConnection())
974
                {
975
                    try
976
                    {
977
                        if (connection != null && connection.State == ConnectionState.Open)
978
                        {
979
                            using (SqlCommand cmd = connection.CreateCommand())
980
                            {
981
                                cmd.CommandText = string.Format(@"
982
                            SELECT sa.UID, sa.DisplayAttribute, st.Type, spa.SPPID_ATTRIBUTE, sp.SPPID_SYMBOL_PATH, spa.ISTEXT, spl.LOCATION, spl.LEADERLINE, sa.Property
983
                            FROM {1} as sa
984
                                 LEFT OUTER JOIN {2} as sp 
985
                                      ON sa.UID = SP.UID 
986
                                LEFT OUTER JOIN {3} as spa 
987
                                     ON sa.UID = spa.UID
988
                                LEFT OUTER JOIN {4} as spl 
989
                                     ON sa.UID = spl.UID
990
                                LEFT OUTER JOIN {0} as st 
991
                                     ON sa.SymbolType_UID = st.UID 
992
                            WHERE (sa.Property != 2 OR sa.Property IS NULL);", SymbolType_TABLE, SymbolAttribute_TABLE, SPPID_SYMBOL_MAPPING_TABLE, SPPID_ATTRIBUTE_MAPPING_TABLE, SPPID_LABEL_INFO_TABLE);
993
                                using (SqlDataReader dr = cmd.ExecuteReader())
994
                                    dt.Load(dr);
995
                            }
996
                            connection.Close();
997
                        }
998
                    }
999
                    catch (Exception ex)
1000
                    {
1001
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1002
                    }
1003
                    finally
1004
                    {
1005
                        if (connection != null)
1006
                            connection.Dispose();
1007
                    }
1008
                }
1009
            }
1010

    
1011

    
1012
            return dt;
1013
        }
1014

    
1015
        public static DataTable SelectDrawingProjectAttribute()
1016
        {
1017
            DataTable dt = new DataTable();
1018
            Project_Info projectInfo = Project_Info.GetInstance();
1019
            if (projectInfo.DBType == ID2DB_Type.SQLite)
1020
            {
1021
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
1022
                {
1023
                    try
1024
                    {
1025
                        connection.Open();
1026
                        using (SQLiteCommand cmd = connection.CreateCommand())
1027
                        {
1028
                            cmd.CommandText = string.Format(@"
1029
                            SELECT da.UID, da.NAME, sam.SPPID_ATTRIBUTE 
1030
                            FROM {0} as da 
1031
                                 LEFT OUTER JOIN {1} as sam 
1032
                                      ON da.UID = sam.UID;
1033
                            ", DrawingAttribute_Table, SPPID_ATTRIBUTE_MAPPING_TABLE);
1034
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
1035
                                dt.Load(dr);
1036
                        }
1037
                        connection.Close();
1038
                    }
1039
                    catch (Exception ex)
1040
                    {
1041
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1042
                    }
1043
                    finally
1044
                    {
1045
                        connection.Dispose();
1046
                    }
1047
                }
1048
            }
1049
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
1050
            {
1051
                using (SqlConnection connection = GetSqlConnection())
1052
                {
1053
                    try
1054
                    {
1055
                        if (connection != null && connection.State == ConnectionState.Open)
1056
                        {
1057
                            using (SqlCommand cmd = connection.CreateCommand())
1058
                            {
1059
                                cmd.CommandText = string.Format(@"
1060
                            SELECT da.UID, da.NAME, sam.SPPID_ATTRIBUTE 
1061
                            FROM {0} as da
1062
                                 LEFT OUTER JOIN {1} as sam 
1063
                                      ON da.UID = sam.UID;
1064
                            ", DrawingAttribute_Table, SPPID_ATTRIBUTE_MAPPING_TABLE);
1065
                                using (SqlDataReader dr = cmd.ExecuteReader())
1066
                                    dt.Load(dr);
1067
                            }
1068
                            connection.Close();
1069
                        }
1070
                    }
1071
                    catch (Exception ex)
1072
                    {
1073
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1074
                    }
1075
                    finally
1076
                    {
1077
                        if (connection != null)
1078
                            connection.Dispose();
1079
                    }
1080
                }
1081
            }
1082

    
1083
            dt.Merge(SelectDrawingProjectAttribute2());
1084

    
1085
            return dt;
1086
        }
1087

    
1088
        private static DataTable SelectDrawingProjectAttribute2()
1089
        {
1090
            DataTable dt = new DataTable();
1091
            Project_Info projectInfo = Project_Info.GetInstance();
1092
            if (projectInfo.DBType == ID2DB_Type.SQLite)
1093
            {
1094
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
1095
                {
1096
                    try
1097
                    {
1098
                        connection.Open();
1099
                        using (SQLiteCommand cmd = connection.CreateCommand())
1100
                        {
1101
                            cmd.CommandText = string.Format(@"
1102
                            SELECT da.UID, da.NAME, sam.SPPID_ATTRIBUTE 
1103
                            FROM {0} as da 
1104
                                 LEFT OUTER JOIN {1} as sam 
1105
                                      ON da.UID = sam.UID;
1106
                            ", ID2_DRAWINGATTRIBUTE_TABLE, SPPID_ATTRIBUTE_MAPPING_TABLE);
1107
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
1108
                                dt.Load(dr);
1109
                        }
1110
                        connection.Close();
1111
                    }
1112
                    catch (Exception ex)
1113
                    {
1114
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1115
                    }
1116
                    finally
1117
                    {
1118
                        connection.Dispose();
1119
                    }
1120
                }
1121
            }
1122
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
1123
            {
1124
                using (SqlConnection connection = GetSqlConnection())
1125
                {
1126
                    try
1127
                    {
1128
                        if (connection != null && connection.State == ConnectionState.Open)
1129
                        {
1130
                            using (SqlCommand cmd = connection.CreateCommand())
1131
                            {
1132
                                cmd.CommandText = string.Format(@"
1133
                            SELECT da.UID, da.NAME, sam.SPPID_ATTRIBUTE 
1134
                            FROM {0} as da
1135
                                 LEFT OUTER JOIN {1} as sam 
1136
                                      ON da.UID = sam.UID;
1137
                            ", ID2_DRAWINGATTRIBUTE_TABLE, SPPID_ATTRIBUTE_MAPPING_TABLE);
1138
                                using (SqlDataReader dr = cmd.ExecuteReader())
1139
                                    dt.Load(dr);
1140
                            }
1141
                            connection.Close();
1142
                        }
1143
                    }
1144
                    catch (Exception ex)
1145
                    {
1146
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1147
                    }
1148
                    finally
1149
                    {
1150
                        if (connection != null)
1151
                            connection.Dispose();
1152
                    }
1153
                }
1154
            }
1155

    
1156
            return dt;
1157
        }
1158

    
1159
        public static DataTable SelectID2SymbolTable()
1160
        {
1161
            DataTable dt = new DataTable();
1162
            Project_Info projectInfo = Project_Info.GetInstance();
1163
            if (projectInfo.DBType == ID2DB_Type.SQLite)
1164
            {
1165
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
1166
                {
1167
                    try
1168
                    {
1169
                        connection.Open();
1170
                        using (SQLiteCommand cmd = connection.CreateCommand())
1171
                        {
1172
                            cmd.CommandText = @"SELECT * FROM Symbol";
1173
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
1174
                                dt.Load(dr);
1175
                        }
1176
                        connection.Close();
1177
                    }
1178
                    catch (Exception ex)
1179
                    {
1180
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1181
                    }
1182
                    finally
1183
                    {
1184
                        connection.Dispose();
1185
                    }
1186
                }
1187
            }
1188
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
1189
            {
1190
                using (SqlConnection connection = GetSqlConnection())
1191
                {
1192
                    try
1193
                    {
1194
                        if (connection != null && connection.State == ConnectionState.Open)
1195
                        {
1196
                            using (SqlCommand cmd = connection.CreateCommand())
1197
                            {
1198
                                cmd.CommandText = @"SELECT * FROM Symbol";
1199
                                using (SqlDataReader dr = cmd.ExecuteReader())
1200
                                    dt.Load(dr);
1201
                            }
1202
                            connection.Close();
1203
                        }
1204
                    }
1205
                    catch (Exception ex)
1206
                    {
1207
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1208
                    }
1209
                    finally
1210
                    {
1211
                        if (connection != null)
1212
                            connection.Dispose();
1213
                    }
1214
                }
1215
            }
1216

    
1217
            return dt;
1218
        }
1219

    
1220
        public static DataTable SelectOPCRelations()
1221
        {
1222
            DataTable dt = new DataTable();
1223
            Project_Info projectInfo = Project_Info.GetInstance();
1224
            if (projectInfo.DBType == ID2DB_Type.SQLite)
1225
            {
1226
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
1227
                {
1228
                    try
1229
                    {
1230
                        connection.Open();
1231
                        using (SQLiteCommand cmd = connection.CreateCommand())
1232
                        {
1233
                            cmd.CommandText = string.Format("SELECT * FROM {0}", OPCRelations_TABLE);
1234
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
1235
                                dt.Load(dr);
1236
                        }
1237
                        connection.Close();
1238
                    }
1239
                    catch (Exception ex)
1240
                    {
1241
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1242
                    }
1243
                    finally
1244
                    {
1245
                        connection.Dispose();
1246
                    }
1247
                }
1248
            }
1249
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
1250
            {
1251
                using (SqlConnection connection = GetSqlConnection())
1252
                {
1253
                    try
1254
                    {
1255
                        if (connection != null && connection.State == ConnectionState.Open)
1256
                        {
1257
                            using (SqlCommand cmd = connection.CreateCommand())
1258
                            {
1259
                                cmd.CommandText = string.Format("SELECT * FROM {0}", OPCRelations_TABLE);
1260
                                using (SqlDataReader dr = cmd.ExecuteReader())
1261
                                    dt.Load(dr);
1262
                            }
1263
                            connection.Close();
1264
                        }
1265
                    }
1266
                    catch (Exception ex)
1267
                    {
1268
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1269
                    }
1270
                    finally
1271
                    {
1272
                        if (connection != null)
1273
                            connection.Dispose();
1274
                    }
1275
                }
1276
            }
1277

    
1278
            return dt;
1279
        }
1280

    
1281
        public static DataTable SelectDrawings()
1282
        {
1283
            DataTable dt = new DataTable();
1284
            Project_Info projectInfo = Project_Info.GetInstance();
1285
            if (projectInfo.DBType == ID2DB_Type.SQLite)
1286
            {
1287
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
1288
                {
1289
                    try
1290
                    {
1291
                        connection.Open();
1292
                        using (SQLiteCommand cmd = connection.CreateCommand())
1293
                        {
1294
                            cmd.CommandText = string.Format("SELECT * FROM {0}", "Drawings");
1295
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
1296
                                dt.Load(dr);
1297
                        }
1298
                        connection.Close();
1299
                    }
1300
                    catch (Exception ex)
1301
                    {
1302
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1303
                    }
1304
                    finally
1305
                    {
1306
                        connection.Dispose();
1307
                    }
1308
                }
1309
            }
1310
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
1311
            {
1312
                using (SqlConnection connection = GetSqlConnection())
1313
                {
1314
                    try
1315
                    {
1316
                        if (connection != null && connection.State == ConnectionState.Open)
1317
                        {
1318
                            using (SqlCommand cmd = connection.CreateCommand())
1319
                            {
1320
                                cmd.CommandText = string.Format("SELECT * FROM {0}", "Drawings");
1321
                                using (SqlDataReader dr = cmd.ExecuteReader())
1322
                                    dt.Load(dr);
1323
                            }
1324
                            connection.Close();
1325
                        }
1326
                    }
1327
                    catch (Exception ex)
1328
                    {
1329
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1330
                    }
1331
                    finally
1332
                    {
1333
                        if (connection != null)
1334
                            connection.Dispose();
1335
                    }
1336
                }
1337
            }
1338

    
1339
            return dt;
1340
        }
1341

    
1342
        public static DataTable SelectOPCInfo()
1343
        {
1344
            DataTable dt = new DataTable();
1345
            Project_Info projectInfo = Project_Info.GetInstance();
1346
            if (projectInfo.DBType == ID2DB_Type.SQLite)
1347
            {
1348
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
1349
                {
1350
                    try
1351
                    {
1352
                        connection.Open();
1353
                        using (SQLiteCommand cmd = connection.CreateCommand())
1354
                        {
1355
                            cmd.CommandText = string.Format("SELECT * FROM {0} WHERE SPPID_OPC_MODELITEM_ID IS NOT NULL AND PAIRED = False", SPPID_OPC_INFO);
1356
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
1357
                                dt.Load(dr);
1358
                        }
1359
                        connection.Close();
1360
                    }
1361
                    catch (Exception ex)
1362
                    {
1363
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1364
                    }
1365
                    finally
1366
                    {
1367
                        connection.Dispose();
1368
                    }
1369
                }
1370
            }
1371
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
1372
            {
1373
                using (SqlConnection connection = GetSqlConnection())
1374
                {
1375
                    try
1376
                    {
1377
                        if (connection != null && connection.State == ConnectionState.Open)
1378
                        {
1379
                            using (SqlCommand cmd = connection.CreateCommand())
1380
                            {
1381
                                cmd.CommandText = string.Format("SELECT * FROM {0} WHERE SPPID_OPC_MODELITEM_ID IS NOT NULL AND PAIRED = 0", SPPID_OPC_INFO);
1382
                                using (SqlDataReader dr = cmd.ExecuteReader())
1383
                                    dt.Load(dr);
1384
                            }
1385
                            connection.Close();
1386
                        }
1387
                    }
1388
                    catch (Exception ex)
1389
                    {
1390
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1391
                    }
1392
                    finally
1393
                    {
1394
                        if (connection != null)
1395
                            connection.Dispose();
1396
                    }
1397
                }
1398
            }
1399

    
1400
            return dt;
1401
        }
1402

    
1403
        public static DataTable SelectSymbolType()
1404
        {
1405
            DataTable dt = new DataTable();
1406
            Project_Info projectInfo = Project_Info.GetInstance();
1407
            if (projectInfo.DBType == ID2DB_Type.SQLite)
1408
            {
1409
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
1410
                {
1411
                    try
1412
                    {
1413
                        connection.Open();
1414
                        using (SQLiteCommand cmd = connection.CreateCommand())
1415
                        {
1416
                            cmd.CommandText = string.Format("SELECT * FROM {0}", SymbolType_TABLE);
1417
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
1418
                                dt.Load(dr);
1419
                        }
1420
                        connection.Close();
1421
                    }
1422
                    catch (Exception ex)
1423
                    {
1424
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1425
                    }
1426
                    finally
1427
                    {
1428
                        connection.Dispose();
1429
                    }
1430
                }
1431
            }
1432
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
1433
            {
1434
                using (SqlConnection connection = GetSqlConnection())
1435
                {
1436
                    try
1437
                    {
1438
                        if (connection != null && connection.State == ConnectionState.Open)
1439
                        {
1440
                            using (SqlCommand cmd = connection.CreateCommand())
1441
                            {
1442
                                cmd.CommandText = string.Format("SELECT * FROM {0}", SymbolType_TABLE);
1443
                                using (SqlDataReader dr = cmd.ExecuteReader())
1444
                                    dt.Load(dr);
1445
                            }
1446
                            connection.Close();
1447
                        }
1448
                    }
1449
                    catch (Exception ex)
1450
                    {
1451
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1452
                    }
1453
                    finally
1454
                    {
1455
                        if (connection != null)
1456
                            connection.Dispose();
1457
                    }
1458
                }
1459
            }
1460

    
1461
            return dt;
1462
        }
1463

    
1464
        public static DataTable SelectDrawingInfo()
1465
        {
1466
            DataTable dt = new DataTable();
1467
            Project_Info projectInfo = Project_Info.GetInstance();
1468
            if (projectInfo.DBType == ID2DB_Type.SQLite)
1469
            {
1470
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
1471
                {
1472
                    try
1473
                    {
1474
                        connection.Open();
1475
                        using (SQLiteCommand cmd = connection.CreateCommand())
1476
                        {
1477
                            cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_DRAWING_INFO);
1478
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
1479
                                dt.Load(dr);
1480
                        }
1481
                        connection.Close();
1482
                    }
1483
                    catch (Exception ex)
1484
                    {
1485
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1486
                    }
1487
                    finally
1488
                    {
1489
                        connection.Dispose();
1490
                    }
1491
                }
1492
            }
1493
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
1494
            {
1495
                using (SqlConnection connection = GetSqlConnection())
1496
                {
1497
                    try
1498
                    {
1499
                        if (connection != null && connection.State == ConnectionState.Open)
1500
                        {
1501
                            using (SqlCommand cmd = connection.CreateCommand())
1502
                            {
1503
                                cmd.CommandText = string.Format("SELECT * FROM {0}", SPPID_DRAWING_INFO);
1504
                                using (SqlDataReader dr = cmd.ExecuteReader())
1505
                                    dt.Load(dr);
1506
                            }
1507
                            connection.Close();
1508
                        }
1509
                    }
1510
                    catch (Exception ex)
1511
                    {
1512
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1513
                    }
1514
                    finally
1515
                    {
1516
                        if (connection != null)
1517
                            connection.Dispose();
1518
                    }
1519
                }
1520
            }
1521

    
1522
            return dt;
1523
        }
1524

    
1525
        public static bool InsertSymbolMapping(List<Tuple<string, string, string, bool>> datas)
1526
        {
1527
            Project_Info projectInfo = Project_Info.GetInstance();
1528
            if (projectInfo.DBType == ID2DB_Type.SQLite)
1529
            {
1530
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
1531
                {
1532
                    try
1533
                    {
1534
                        connection.Open();
1535
                        using (SQLiteTransaction transaction = connection.BeginTransaction())
1536
                        {
1537
                            try
1538
                            {
1539
                                using (SQLiteCommand cmd = connection.CreateCommand())
1540
                                {
1541
                                    foreach (var item in datas)
1542
                                    {
1543
                                        cmd.Parameters.Clear();
1544
                                        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);
1545
                                        cmd.Parameters.AddWithValue("@UID", item.Item1);
1546
                                        cmd.Parameters.AddWithValue("@NAME", item.Item2);
1547
                                        cmd.Parameters.AddWithValue("@SPPID_SYMBOL_PATH", item.Item3);
1548
                                        cmd.Parameters.AddWithValue("@LEADERLINE", item.Item4);
1549
                                        cmd.ExecuteNonQuery();
1550
                                    }
1551
                                }
1552
                                transaction.Commit();
1553
                                connection.Close();
1554
                            }
1555
                            catch (Exception ex)
1556
                            {
1557
                                Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1558
                                transaction.Rollback();
1559
                                return false;
1560
                            }
1561
                            finally
1562
                            {
1563
                                transaction.Dispose();
1564
                            }
1565
                        }
1566
                    }
1567
                    catch (Exception ex)
1568
                    {
1569
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1570
                        return false;
1571
                    }
1572
                    finally
1573
                    {
1574
                        connection.Dispose();
1575
                    }
1576
                }
1577
            }
1578
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
1579
            {
1580
                using (SqlConnection connection = GetSqlConnection())
1581
                {
1582
                    try
1583
                    {
1584
                        if (connection != null && connection.State == ConnectionState.Open)
1585
                        {
1586
                            using (SqlCommand cmd = connection.CreateCommand())
1587
                            {
1588
                                foreach (var item in datas)
1589
                                {
1590
                                    cmd.Parameters.Clear();
1591
                                    cmd.CommandText = string.Format(@"
1592
                                    IF EXISTS (SELECT * FROM {0} WHERE UID = '{1}')
1593
                                        UPDATE {0} SET NAME = @NAME, SPPID_SYMBOL_PATH = @SPPID_SYMBOL_PATH, LEADERLINE = @LEADERLINE WHERE UID = @UID
1594
                                    ELSE
1595
                                        INSERT INTO {0} (UID, NAME, SPPID_SYMBOL_PATH, LEADERLINE) VALUES (@UID, @NAME, @SPPID_SYMBOL_PATH, @LEADERLINE)", SPPID_SYMBOL_MAPPING_TABLE, item.Item1);
1596
                                    cmd.Parameters.AddWithValue("@UID", item.Item1);
1597
                                    if (string.IsNullOrEmpty(item.Item2))
1598
                                        cmd.Parameters.AddWithValue("@NAME", DBNull.Value);
1599
                                    else
1600
                                        cmd.Parameters.AddWithValue("@NAME", item.Item2);
1601
                                    if (string.IsNullOrEmpty(item.Item3))
1602
                                        cmd.Parameters.AddWithValue("@SPPID_SYMBOL_PATH", DBNull.Value);
1603
                                    else
1604
                                        cmd.Parameters.AddWithValue("@SPPID_SYMBOL_PATH", item.Item3);
1605
                                    cmd.Parameters.AddWithValue("@LEADERLINE", item.Item4);
1606
                                    cmd.ExecuteNonQuery();
1607
                                }
1608
                            }
1609
                            connection.Close();
1610
                        }
1611
                    }
1612
                    catch (Exception ex)
1613
                    {
1614
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1615
                        return false;
1616
                    }
1617
                    finally
1618
                    {
1619
                        if (connection != null)
1620
                            connection.Dispose();
1621
                    }
1622
                }
1623
            }
1624

    
1625
            return true;
1626
        }
1627

    
1628
        public static bool InsertAttributeMapping(List<Tuple<string, string, bool>> datas)
1629
        {
1630
            Project_Info projectInfo = Project_Info.GetInstance();
1631
            if (projectInfo.DBType == ID2DB_Type.SQLite)
1632
            {
1633
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
1634
                {
1635
                    try
1636
                    {
1637
                        connection.Open();
1638
                        using (SQLiteTransaction transaction = connection.BeginTransaction())
1639
                        {
1640
                            try
1641
                            {
1642
                                using (SQLiteCommand cmd = connection.CreateCommand())
1643
                                {
1644
                                    foreach (var item in datas)
1645
                                    {
1646
                                        cmd.Parameters.Clear();
1647
                                        cmd.CommandText = string.Format("INSERT OR REPLACE INTO {0} (UID, SPPID_ATTRIBUTE, ISTEXT) VALUES (@UID, @SPPID_ATTRIBUTE, @ISTEXT)", SPPID_ATTRIBUTE_MAPPING_TABLE);
1648
                                        cmd.Parameters.AddWithValue("@UID", item.Item1);
1649
                                        cmd.Parameters.AddWithValue("@SPPID_ATTRIBUTE", item.Item2);
1650
                                        cmd.Parameters.AddWithValue("@ISTEXT", item.Item3);
1651
                                        cmd.ExecuteNonQuery();
1652
                                    }
1653
                                }
1654
                                transaction.Commit();
1655
                                connection.Close();
1656
                            }
1657
                            catch (Exception ex)
1658
                            {
1659
                                Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1660
                                transaction.Rollback();
1661
                            }
1662
                            finally
1663
                            {
1664
                                transaction.Dispose();
1665
                            }
1666
                        }
1667
                    }
1668
                    catch (Exception ex)
1669
                    {
1670
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1671
                        return false;
1672
                    }
1673
                    finally
1674
                    {
1675
                        connection.Dispose();
1676
                    }
1677
                }
1678
            }
1679
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
1680
            {
1681
                using (SqlConnection connection = GetSqlConnection())
1682
                {
1683
                    try
1684
                    {
1685
                        if (connection != null && connection.State == ConnectionState.Open)
1686
                        {
1687
                            using (SqlCommand cmd = connection.CreateCommand())
1688
                            {
1689
                                foreach (var item in datas)
1690
                                {
1691
                                    cmd.Parameters.Clear();
1692
                                    cmd.CommandText = string.Format(@"
1693
                                    IF EXISTS (SELECT * FROM {0} WHERE UID = '{1}')
1694
                                        UPDATE {0} SET SPPID_ATTRIBUTE = @SPPID_ATTRIBUTE, ISTEXT = @ISTEXT WHERE UID = @UID
1695
                                    ELSE
1696
                                        INSERT INTO {0} (UID, SPPID_ATTRIBUTE, ISTEXT) VALUES (@UID, @SPPID_ATTRIBUTE, @ISTEXT)", SPPID_ATTRIBUTE_MAPPING_TABLE, item.Item1);
1697

    
1698
                                    cmd.Parameters.AddWithValue("@UID", item.Item1);
1699
                                    if (string.IsNullOrEmpty(item.Item2))
1700
                                        cmd.Parameters.AddWithValue("@SPPID_ATTRIBUTE", DBNull.Value);
1701
                                    else
1702
                                        cmd.Parameters.AddWithValue("@SPPID_ATTRIBUTE", item.Item2);
1703
                                    cmd.Parameters.AddWithValue("@ISTEXT", item.Item3);
1704
                                    cmd.ExecuteNonQuery();
1705
                                }
1706
                            }
1707
                            connection.Close();
1708
                        }
1709
                    }
1710
                    catch (Exception ex)
1711
                    {
1712
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1713
                        return false;
1714
                    }
1715
                    finally
1716
                    {
1717
                        if (connection != null)
1718
                            connection.Dispose();
1719
                    }
1720
                }
1721
            }
1722
            return true;
1723
        }
1724

    
1725
        public static bool InsertLabelInfoMapping(List<Tuple<string, int, bool>> datas)
1726
        {
1727
            Project_Info projectInfo = Project_Info.GetInstance();
1728
            if (projectInfo.DBType == ID2DB_Type.SQLite)
1729
            {
1730
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
1731
                {
1732
                    try
1733
                    {
1734
                        connection.Open();
1735
                        using (SQLiteTransaction transaction = connection.BeginTransaction())
1736
                        {
1737
                            try
1738
                            {
1739
                                using (SQLiteCommand cmd = connection.CreateCommand())
1740
                                {
1741
                                    foreach (var item in datas)
1742
                                    {
1743
                                        cmd.Parameters.Clear();
1744
                                        cmd.CommandText = string.Format("INSERT OR REPLACE INTO {0} (UID, LOCATION, LEADERLINE) VALUES (@UID, @LOCATION, @LEADERLINE)", SPPID_LABEL_INFO_TABLE);
1745
                                        cmd.Parameters.AddWithValue("@UID", item.Item1);
1746
                                        cmd.Parameters.AddWithValue("@LOCATION", item.Item2);
1747
                                        cmd.Parameters.AddWithValue("@LEADERLINE", item.Item3);
1748
                                        cmd.ExecuteNonQuery();
1749
                                    }
1750
                                }
1751
                                transaction.Commit();
1752
                                connection.Close();
1753
                            }
1754
                            catch (Exception ex)
1755
                            {
1756
                                Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1757
                                transaction.Rollback();
1758
                                return false;
1759
                            }
1760
                            finally
1761
                            {
1762
                                transaction.Dispose();
1763
                            }
1764
                        }
1765
                    }
1766
                    catch (Exception ex)
1767
                    {
1768
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1769
                        return false;
1770
                    }
1771
                    finally
1772
                    {
1773
                        connection.Dispose();
1774
                    }
1775
                }
1776
            }
1777
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
1778
            {
1779
                using (SqlConnection connection = GetSqlConnection())
1780
                {
1781
                    try
1782
                    {
1783
                        if (connection != null && connection.State == ConnectionState.Open)
1784
                        {
1785
                            using (SqlCommand cmd = connection.CreateCommand())
1786
                            {
1787
                                foreach (var item in datas)
1788
                                {
1789
                                    cmd.Parameters.Clear();
1790
                                    cmd.CommandText = string.Format(@"
1791
                                    IF EXISTS (SELECT * FROM {0} WHERE UID = '{1}')
1792
                                        UPDATE {0} SET LOCATION = @LOCATION, LEADERLINE = @LEADERLINE WHERE UID = @UID
1793
                                    ELSE
1794
                                        INSERT INTO {0} (UID, LOCATION, LEADERLINE) VALUES (@UID, @LOCATION, @LEADERLINE)", SPPID_LABEL_INFO_TABLE, item.Item1);
1795

    
1796
                                    cmd.Parameters.AddWithValue("@UID", item.Item1);
1797
                                    cmd.Parameters.AddWithValue("@LOCATION", item.Item2);
1798
                                    cmd.Parameters.AddWithValue("@LEADERLINE", item.Item3);
1799
                                    cmd.ExecuteNonQuery();
1800
                                }
1801
                            }
1802
                            connection.Close();
1803
                        }
1804
                    }
1805
                    catch (Exception ex)
1806
                    {
1807
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1808
                        return false;
1809
                    }
1810
                    finally
1811
                    {
1812
                        if (connection != null)
1813
                            connection.Dispose();
1814
                    }
1815
                }
1816
            }
1817
            return true;
1818
        }
1819

    
1820
        public static bool InsertDrawingInfoAndOPCInfo(string path, string drawingNumber, string drawingName, SPPID.Model.SPPID_Document document)
1821
        {
1822
            Project_Info projectInfo = Project_Info.GetInstance();
1823
            if (projectInfo.DBType == ID2DB_Type.SQLite)
1824
            {
1825
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
1826
                {
1827
                    try
1828
                    {
1829
                        connection.Open();
1830
                        using (SQLiteTransaction transaction = connection.BeginTransaction())
1831
                        {
1832
                            try
1833
                            {
1834
                                using (SQLiteCommand cmd = connection.CreateCommand())
1835
                                {
1836
                                    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);
1837
                                    cmd.Parameters.AddWithValue("@ID2_DRAWING_UID", document.UID);
1838
                                    cmd.Parameters.AddWithValue("@PATH", path);
1839
                                    cmd.Parameters.AddWithValue("@DRAWINGNUMBER", drawingNumber);
1840
                                    cmd.Parameters.AddWithValue("@DRAWINGNAME", drawingName);
1841
                                    cmd.ExecuteNonQuery();
1842
                                }
1843

    
1844
                                List<Symbol> OPCs = document.SYMBOLS.FindAll(x => x.TYPE == "Piping OPC's" || x.TYPE == "Instrument OPC's");
1845
                                foreach (var item in OPCs)
1846
                                {
1847
                                    using (SQLiteCommand cmd = connection.CreateCommand())
1848
                                    {
1849
                                        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);
1850
                                        cmd.Parameters.AddWithValue("@ID2_OPC_UID", item.UID);
1851
                                        cmd.Parameters.AddWithValue("@SPPID_OPC_MODELITEM_ID", item.SPPID.ModelItemID);
1852
                                        cmd.Parameters.AddWithValue("@ID2_DRAWING_UID", document.UID);
1853
                                        cmd.Parameters.AddWithValue("@ATTRIBUTES", JsonConvert.SerializeObject(item.SPPID.Attributes));
1854
                                        cmd.Parameters.AddWithValue("@PAIRED", false);
1855
                                        cmd.ExecuteNonQuery();
1856
                                    }
1857
                                }
1858

    
1859
                                transaction.Commit();
1860
                                connection.Close();
1861
                            }
1862
                            catch (Exception ex)
1863
                            {
1864
                                Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1865
                                transaction.Rollback();
1866
                                return false;
1867
                            }
1868
                            finally
1869
                            {
1870
                                transaction.Dispose();
1871
                            }
1872
                        }
1873
                    }
1874
                    catch (Exception ex)
1875
                    {
1876
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1877
                        return false;
1878
                    }
1879
                    finally
1880
                    {
1881
                        connection.Dispose();
1882
                    }
1883
                }
1884
            }
1885
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
1886
            {
1887
                using (SqlConnection connection = GetSqlConnection())
1888
                {
1889
                    try
1890
                    {
1891
                        if (connection != null && connection.State == ConnectionState.Open)
1892
                        {
1893
                            using (SqlCommand cmd = connection.CreateCommand())
1894
                            {
1895
                                cmd.Parameters.Clear();
1896
                                cmd.CommandText = string.Format(@"
1897
                                    IF EXISTS (SELECT * FROM {0} WHERE ID2_DRAWING_UID = '{1}')
1898
                                        UPDATE {0} SET PATH = @PATH, DRAWINGNUMBER = @DRAWINGNUMBER, DRAWINGNAME = @DRAWINGNAME WHERE ID2_DRAWING_UID = @ID2_DRAWING_UID
1899
                                    ELSE
1900
                                        INSERT INTO {0} (ID2_DRAWING_UID, PATH, DRAWINGNUMBER, DRAWINGNAME) VALUES (@ID2_DRAWING_UID, @PATH, @DRAWINGNUMBER, @DRAWINGNAME)", SPPID_DRAWING_INFO, document.UID);
1901

    
1902
                                cmd.Parameters.AddWithValue("@ID2_DRAWING_UID", document.UID);
1903
                                cmd.Parameters.AddWithValue("@PATH", path);
1904
                                cmd.Parameters.AddWithValue("@DRAWINGNUMBER", drawingNumber);
1905
                                cmd.Parameters.AddWithValue("@DRAWINGNAME", drawingName);
1906
                                cmd.ExecuteNonQuery();
1907
                            }
1908

    
1909
                            List<Symbol> OPCs = document.SYMBOLS.FindAll(x => x.TYPE == "Piping OPC's" || x.TYPE == "Instrument OPC's");
1910
                            foreach (var item in OPCs)
1911
                            {
1912
                                using (SqlCommand cmd = connection.CreateCommand())
1913
                                {
1914
                                    cmd.Parameters.Clear();
1915
                                    cmd.CommandText = string.Format(@"
1916
                                    IF EXISTS (SELECT * FROM {0} WHERE ID2_OPC_UID = '{1}')
1917
                                        UPDATE {0} SET SPPID_OPC_MODELITEM_ID = @SPPID_OPC_MODELITEM_ID, ID2_DRAWING_UID = @ID2_DRAWING_UID, ATTRIBUTES = @ATTRIBUTES, PAIRED = @PAIRED WHERE ID2_OPC_UID = @ID2_OPC_UID
1918
                                    ELSE
1919
                                        INSERT 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, item.UID);
1920

    
1921
                                    cmd.Parameters.AddWithValue("@ID2_OPC_UID", item.UID);
1922
                                    if (string.IsNullOrEmpty(item.SPPID.ModelItemID))
1923
                                        cmd.Parameters.AddWithValue("@SPPID_OPC_MODELITEM_ID", DBNull.Value);
1924
                                    else
1925
                                        cmd.Parameters.AddWithValue("@SPPID_OPC_MODELITEM_ID", item.SPPID.ModelItemID);
1926
                                    cmd.Parameters.AddWithValue("@ID2_DRAWING_UID", document.UID);
1927
                                    cmd.Parameters.AddWithValue("@ATTRIBUTES", JsonConvert.SerializeObject(item.SPPID.Attributes));
1928
                                    cmd.Parameters.AddWithValue("@PAIRED", false);
1929
                                    cmd.ExecuteNonQuery();
1930
                                }
1931
                            }
1932
                            connection.Close();
1933
                        }
1934
                    }
1935
                    catch (Exception ex)
1936
                    {
1937
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1938
                        return false;
1939
                    }
1940
                    finally
1941
                    {
1942
                        if (connection != null)
1943
                            connection.Dispose();
1944
                    }
1945
                }
1946
            }
1947
            return true;
1948
        }
1949

    
1950
        public static bool InsertLineNumberInfo(string path, string drawingNumber, string drawingName, SPPID.Model.SPPID_Document document)
1951
        {
1952
            bool result = false;
1953
            
1954
            return result;
1955
        }
1956
        public static bool InsertOPCInfo(string UID, string ModelItemID, string drawingUID, bool Paired)
1957
        {
1958
            Project_Info projectInfo = Project_Info.GetInstance();
1959
            if (projectInfo.DBType == ID2DB_Type.SQLite)
1960
            {
1961
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
1962
                {
1963
                    try
1964
                    {
1965
                        connection.Open();
1966
                        using (SQLiteTransaction transaction = connection.BeginTransaction())
1967
                        {
1968
                            try
1969
                            {
1970
                                using (SQLiteCommand cmd = connection.CreateCommand())
1971
                                {
1972
                                    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);
1973
                                    cmd.Parameters.AddWithValue("@ID2_OPC_UID", UID);
1974
                                    cmd.Parameters.AddWithValue("@SPPID_OPC_MODELITEM_ID", ModelItemID);
1975
                                    cmd.Parameters.AddWithValue("@ID2_DRAWING_UID", drawingUID);
1976
                                    cmd.Parameters.AddWithValue("@PAIRED", Paired);
1977
                                    cmd.ExecuteNonQuery();
1978
                                }
1979

    
1980
                                transaction.Commit();
1981
                                connection.Close();
1982
                            }
1983
                            catch (Exception ex)
1984
                            {
1985
                                Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1986
                                transaction.Rollback();
1987
                                return false;
1988
                            }
1989
                            finally
1990
                            {
1991
                                transaction.Dispose();
1992
                            }
1993
                        }
1994
                    }
1995
                    catch (Exception ex)
1996
                    {
1997
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1998
                        return false;
1999
                    }
2000
                    finally
2001
                    {
2002
                        connection.Dispose();
2003
                    }
2004
                }
2005
            }
2006
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
2007
            {
2008
                using (SqlConnection connection = GetSqlConnection())
2009
                {
2010
                    try
2011
                    {
2012
                        if (connection != null && connection.State == ConnectionState.Open)
2013
                        {
2014
                            using (SqlCommand cmd = connection.CreateCommand())
2015
                            {
2016
                                cmd.Parameters.Clear();
2017
                                cmd.CommandText = string.Format(@"
2018
                                    UPDATE {0} SET SPPID_OPC_MODELITEM_ID = @SPPID_OPC_MODELITEM_ID, ID2_DRAWING_UID = @ID2_DRAWING_UID, PAIRED = @PAIRED WHERE ID2_OPC_UID = @ID2_OPC_UID", SPPID_OPC_INFO);
2019
                                cmd.Parameters.AddWithValue("@ID2_OPC_UID", UID);
2020
                                if (string.IsNullOrEmpty(ModelItemID))
2021
                                    cmd.Parameters.AddWithValue("@SPPID_OPC_MODELITEM_ID", DBNull.Value);
2022
                                else
2023
                                    cmd.Parameters.AddWithValue("@SPPID_OPC_MODELITEM_ID", ModelItemID);
2024
                                cmd.Parameters.AddWithValue("@ID2_DRAWING_UID", drawingUID);
2025
                                cmd.Parameters.AddWithValue("@PAIRED", Paired);
2026
                                cmd.ExecuteNonQuery();
2027
                            }
2028
                            connection.Close();
2029
                        }
2030
                    }
2031
                    catch (Exception ex)
2032
                    {
2033
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
2034
                        return false;
2035
                    }
2036
                    finally
2037
                    {
2038
                        if (connection != null)
2039
                            connection.Dispose();
2040
                    }
2041
                }
2042
            }
2043
            return true;
2044
        }
2045

    
2046
        public static bool ExportMappingData()
2047
        {
2048
            bool result = true;
2049
            try
2050
            {
2051
                DataSet dataSet = new DataSet();
2052
                DataTable symbolMappingDT = GetTable(SPPID_SYMBOL_MAPPING_TABLE);
2053
                if (symbolMappingDT != null)
2054
                {
2055
                    symbolMappingDT.TableName = SPPID_SYMBOL_MAPPING_TABLE;
2056
                    dataSet.Tables.Add(symbolMappingDT);
2057
                }
2058
                else
2059
                    result = false;
2060

    
2061
                DataTable attributeMappingDT = GetTable(SPPID_ATTRIBUTE_MAPPING_TABLE);
2062
                if (attributeMappingDT != null)
2063
                {
2064
                    attributeMappingDT.TableName = SPPID_ATTRIBUTE_MAPPING_TABLE;
2065
                    dataSet.Tables.Add(attributeMappingDT);
2066
                }
2067
                else
2068
                    result = false;
2069

    
2070
                if (result)
2071
                {
2072
                    string text = JsonConvert.SerializeObject(dataSet);
2073
                    using (StreamWriter sw = new StreamWriter(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\ExportFile.mapf", false))
2074
                    {
2075
                        sw.Write(text);
2076
                        sw.Close();
2077
                        sw.Dispose();
2078
                    }
2079
                }
2080
            }
2081
            catch (Exception ex)
2082
            {
2083
                Log.Write(ex.Message + "\r\n" + ex.StackTrace);
2084
                result = false;
2085
            }
2086

    
2087
            return result;
2088
        }
2089

    
2090
        public static bool ImportMappingData()
2091
        {
2092
            bool result = true;
2093
            try
2094
            {
2095
                string sJson = string.Empty;
2096
                using (StreamReader sw = new StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + @"\ExportFile.mapf"))
2097
                {
2098
                    sJson = sw.ReadToEnd();
2099
                    sw.Close();
2100
                    sw.Dispose();
2101
                }
2102

    
2103
                DataSet dataSet = JsonConvert.DeserializeObject<DataSet>(sJson);
2104
                DataTable symbolMappingDT = dataSet.Tables[SPPID_SYMBOL_MAPPING_TABLE];
2105
                if (symbolMappingDT == null || !ImportSymbolMappingTable(symbolMappingDT))
2106
                    result = false;
2107

    
2108
                DataTable attributeMappingDT = dataSet.Tables[SPPID_ATTRIBUTE_MAPPING_TABLE];
2109
                if (attributeMappingDT == null || !ImportAttributeMappingTable(attributeMappingDT))
2110
                    result = false;
2111
            }
2112
            catch (Exception ex)
2113
            {
2114
                Log.Write(ex.Message + "\r\n" + ex.StackTrace);
2115
                result = false;
2116
            }
2117

    
2118
            return result;
2119
        }
2120

    
2121
        private static DataTable GetTable(string tableName)
2122
        {
2123
            DataTable dt = new DataTable();
2124
            Project_Info projectInfo = Project_Info.GetInstance();
2125
            if (projectInfo.DBType == ID2DB_Type.SQLite)
2126
            {
2127
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
2128
                {
2129
                    try
2130
                    {
2131
                        connection.Open();
2132
                        using (SQLiteCommand cmd = connection.CreateCommand())
2133
                        {
2134
                            cmd.CommandText = string.Format("SELECT * FROM {0}", tableName);
2135
                            using (SQLiteDataReader dr = cmd.ExecuteReader())
2136
                                dt.Load(dr);
2137
                        }
2138
                        connection.Close();
2139
                    }
2140
                    catch (Exception ex)
2141
                    {
2142
                        dt = null;
2143
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
2144
                    }
2145
                    finally
2146
                    {
2147
                        connection.Dispose();
2148
                    }
2149
                }
2150
            }
2151
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
2152
            {
2153
                using (SqlConnection connection = GetSqlConnection())
2154
                {
2155
                    try
2156
                    {
2157
                        if (connection != null && connection.State == ConnectionState.Open)
2158
                        {
2159
                            using (SqlCommand cmd = connection.CreateCommand())
2160
                            {
2161
                                cmd.CommandText = string.Format("SELECT * FROM {0}", tableName);
2162
                                using (SqlDataReader dr = cmd.ExecuteReader())
2163
                                    dt.Load(dr);
2164
                            }
2165
                            connection.Close();
2166
                        }
2167
                    }
2168
                    catch (Exception ex)
2169
                    {
2170
                        dt = null;
2171
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
2172
                    }
2173
                    finally
2174
                    {
2175
                        if (connection != null)
2176
                            connection.Dispose();
2177
                    }
2178
                }
2179
            }
2180

    
2181
            return dt;
2182
        }
2183

    
2184
        private static bool ImportSymbolMappingTable(DataTable dt)
2185
        {
2186
            bool result = false;
2187

    
2188
            Project_Info projectInfo = Project_Info.GetInstance();
2189
            if (projectInfo.DBType == ID2DB_Type.SQLite)
2190
            {
2191
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
2192
                {
2193
                    try
2194
                    {
2195
                        connection.Open();
2196
                        using (SQLiteTransaction transaction = connection.BeginTransaction())
2197
                        {
2198
                            try
2199
                            {
2200
                                using (SQLiteCommand cmd = connection.CreateCommand())
2201
                                {
2202
                                    foreach (DataRow item in dt.Rows)
2203
                                    {
2204
                                        string UID = DBNull.Value.Equals(item["UID"]) ? null : (string)item["UID"];
2205
                                        string NAME = DBNull.Value.Equals(item["NAME"]) ? null : (string)item["NAME"];
2206
                                        string SPPID_SYMBOL_PATH = DBNull.Value.Equals(item["SPPID_SYMBOL_PATH"]) ? null : (string)item["SPPID_SYMBOL_PATH"];
2207
                                        bool LEADERLINE = Convert.ToBoolean(item["LEADERLINE"]);
2208

    
2209
                                        cmd.Parameters.Clear();
2210
                                        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);
2211
                                        cmd.Parameters.AddWithValue("@UID", UID);
2212
                                        cmd.Parameters.AddWithValue("@NAME", NAME);
2213
                                        cmd.Parameters.AddWithValue("@SPPID_SYMBOL_PATH", SPPID_SYMBOL_PATH);
2214
                                        cmd.Parameters.AddWithValue("@LEADERLINE", LEADERLINE);
2215
                                        cmd.ExecuteNonQuery();
2216
                                    }
2217
                                }
2218
                                transaction.Commit();
2219
                                connection.Close();
2220
                                result = true;
2221
                            }
2222
                            catch (Exception ex)
2223
                            {
2224
                                Log.Write(ex.Message + "\r\n" + ex.StackTrace);
2225
                                transaction.Rollback();
2226
                            }
2227
                            finally
2228
                            {
2229
                                transaction.Dispose();
2230
                            }
2231
                        }
2232
                    }
2233
                    catch (Exception ex)
2234
                    {
2235
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
2236
                    }
2237
                    finally
2238
                    {
2239
                        connection.Dispose();
2240
                    }
2241
                }
2242
            }
2243
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
2244
            {
2245
                using (SqlConnection connection = GetSqlConnection())
2246
                {
2247
                    try
2248
                    {
2249
                        if (connection != null && connection.State == ConnectionState.Open)
2250
                        {
2251
                            using (SqlCommand cmd = connection.CreateCommand())
2252
                            {
2253
                                foreach (DataRow item in dt.Rows)
2254
                                {
2255
                                    string UID = DBNull.Value.Equals(item["UID"]) ? null : (string)item["UID"];
2256
                                    string NAME = DBNull.Value.Equals(item["NAME"]) ? null : (string)item["NAME"];
2257
                                    string SPPID_SYMBOL_PATH = DBNull.Value.Equals(item["SPPID_SYMBOL_PATH"]) ? null : (string)item["SPPID_SYMBOL_PATH"];
2258
                                    bool LEADERLINE = DBNull.Value.Equals(item["LEADERLINE"]) ? false : Convert.ToBoolean(item["LEADERLINE"]);
2259

    
2260
                                    cmd.Parameters.Clear();
2261
                                    cmd.CommandText = string.Format(@"
2262
                                    IF EXISTS (SELECT * FROM {0} WHERE UID = '{1}')
2263
                                        UPDATE {0} SET NAME = @NAME, SPPID_SYMBOL_PATH = @SPPID_SYMBOL_PATH, LEADERLINE = @LEADERLINE WHERE UID = @UID
2264
                                    ELSE
2265
                                        INSERT INTO {0} (UID, NAME, SPPID_SYMBOL_PATH, LEADERLINE) VALUES (@UID, @NAME, @SPPID_SYMBOL_PATH, @LEADERLINE)", SPPID_SYMBOL_MAPPING_TABLE, UID);
2266
                                    cmd.Parameters.AddWithValue("@UID", UID);
2267
                                    if (string.IsNullOrEmpty(NAME))
2268
                                        cmd.Parameters.AddWithValue("@NAME", DBNull.Value);
2269
                                    else
2270
                                        cmd.Parameters.AddWithValue("@NAME", NAME);
2271
                                    if (string.IsNullOrEmpty(SPPID_SYMBOL_PATH))
2272
                                        cmd.Parameters.AddWithValue("@SPPID_SYMBOL_PATH", DBNull.Value);
2273
                                    else
2274
                                        cmd.Parameters.AddWithValue("@SPPID_SYMBOL_PATH", SPPID_SYMBOL_PATH);
2275
                                    cmd.Parameters.AddWithValue("@LEADERLINE", LEADERLINE);
2276
                                    cmd.ExecuteNonQuery();
2277
                                }
2278
                            }
2279
                            connection.Close();
2280
                            result = true;
2281
                        }
2282
                    }
2283
                    catch (Exception ex)
2284
                    {
2285
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
2286
                    }
2287
                    finally
2288
                    {
2289
                        if (connection != null)
2290
                            connection.Dispose();
2291
                    }
2292
                }
2293
            }
2294

    
2295
            return result;
2296
        }
2297

    
2298
        private static bool ImportAttributeMappingTable(DataTable dt)
2299
        {
2300
            bool result = false;
2301

    
2302
            Project_Info projectInfo = Project_Info.GetInstance();
2303
            if (projectInfo.DBType == ID2DB_Type.SQLite)
2304
            {
2305
                using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", projectInfo.DBFilePath)))
2306
                {
2307
                    try
2308
                    {
2309
                        connection.Open();
2310
                        using (SQLiteTransaction transaction = connection.BeginTransaction())
2311
                        {
2312
                            try
2313
                            {
2314
                                using (SQLiteCommand cmd = connection.CreateCommand())
2315
                                {
2316
                                    foreach (DataRow item in dt.Rows)
2317
                                    {
2318
                                        string UID = DBNull.Value.Equals(item["UID"]) ? null : (string)item["UID"];
2319
                                        string SPPID_ATTRIBUTE = DBNull.Value.Equals(item["SPPID_ATTRIBUTE"]) ? null : (string)item["SPPID_ATTRIBUTE"];
2320

    
2321
                                        cmd.Parameters.Clear();
2322
                                        cmd.CommandText = string.Format("INSERT OR REPLACE INTO {0} (UID, SPPID_ATTRIBUTE) VALUES (@UID, @SPPID_ATTRIBUTE)", SPPID_ATTRIBUTE_MAPPING_TABLE);
2323
                                        cmd.Parameters.AddWithValue("@UID", UID);
2324
                                        cmd.Parameters.AddWithValue("@SPPID_ATTRIBUTE", SPPID_ATTRIBUTE);
2325
                                        cmd.ExecuteNonQuery();
2326
                                    }
2327
                                }
2328
                                transaction.Commit();
2329
                                connection.Close();
2330
                                result = true;
2331
                            }
2332
                            catch (Exception ex)
2333
                            {
2334
                                Log.Write(ex.Message + "\r\n" + ex.StackTrace);
2335
                                transaction.Rollback();
2336
                            }
2337
                            finally
2338
                            {
2339
                                transaction.Dispose();
2340
                            }
2341
                        }
2342
                    }
2343
                    catch (Exception ex)
2344
                    {
2345
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
2346
                    }
2347
                    finally
2348
                    {
2349
                        connection.Dispose();
2350
                    }
2351
                }
2352
            }
2353
            else if (projectInfo.DBType == ID2DB_Type.MSSQL)
2354
            {
2355
                using (SqlConnection connection = GetSqlConnection())
2356
                {
2357
                    try
2358
                    {
2359
                        if (connection != null && connection.State == ConnectionState.Open)
2360
                        {
2361
                            using (SqlCommand cmd = connection.CreateCommand())
2362
                            {
2363
                                foreach (DataRow item in dt.Rows)
2364
                                {
2365
                                    string UID = DBNull.Value.Equals(item["UID"]) ? null : (string)item["UID"];
2366
                                    string SPPID_ATTRIBUTE = DBNull.Value.Equals(item["SPPID_ATTRIBUTE"]) ? null : (string)item["SPPID_ATTRIBUTE"];
2367

    
2368
                                    cmd.Parameters.Clear();
2369
                                    cmd.CommandText = string.Format(@"
2370
                                    IF EXISTS (SELECT * FROM {0} WHERE UID = '{1}')
2371
                                        UPDATE {0} SET SPPID_ATTRIBUTE = @SPPID_ATTRIBUTE WHERE UID = @UID
2372
                                    ELSE
2373
                                        INSERT INTO {0} (UID, SPPID_ATTRIBUTE) VALUES (@UID, @SPPID_ATTRIBUTE)", SPPID_ATTRIBUTE_MAPPING_TABLE, UID);
2374

    
2375
                                    cmd.Parameters.AddWithValue("@UID", UID);
2376
                                    if (string.IsNullOrEmpty(SPPID_ATTRIBUTE))
2377
                                        cmd.Parameters.AddWithValue("@SPPID_ATTRIBUTE", DBNull.Value);
2378
                                    else
2379
                                        cmd.Parameters.AddWithValue("@SPPID_ATTRIBUTE", SPPID_ATTRIBUTE);
2380
                                    cmd.ExecuteNonQuery();
2381
                                }
2382
                            }
2383
                            connection.Close();
2384
                            result = true;
2385
                        }
2386
                    }
2387
                    catch (Exception ex)
2388
                    {
2389
                        Log.Write(ex.Message + "\r\n" + ex.StackTrace);
2390
                    }
2391
                    finally
2392
                    {
2393
                        if (connection != null)
2394
                            connection.Dispose();
2395
                    }
2396
                }
2397
            }
2398

    
2399

    
2400

    
2401
            return result;
2402
        }
2403
    }
2404
}
클립보드 이미지 추가 (최대 크기: 500 MB)