프로젝트

일반

사용자정보

개정판 5c248ee3

ID5c248ee33907d706392e8e86d7a57c124c8e7c13
상위 4c76a67a
하위 bcfe3202, 0491c447, 678760c6

gaqhf 이(가) 3년 이상 전에 추가함

dev issue #000 : dev

Change-Id: Ic71cc75fde98ca5133984da93be5f0e5c3acb030

차이점 보기:

DTI_PID/DTI_PID/AppDocData.py
3411 3411
                                                              sys.exc_info()[-1].tb_lineno)
3412 3412
                App.mainWnd().addMessage.emit(MessageType.Error, message)
3413 3413

  
3414
    def selectView(self):
3415
        """ get document name list """
3416
        result = []
3417

  
3418
        with self.project.database.connect() as conn:
3419
            try:
3420
                # Get a cursor object
3421
                cursor = conn.cursor()
3422

  
3423
                sql = "select * from T_PSN_VIEW"
3424
                cursor.execute(sql)
3425

  
3426
                rows = cursor.fetchall()
3427
                for row in rows:
3428
                    result.append(row['OID'])
3429

  
3430
                result.sort()
3431
            # Catch the exception
3432
            except Exception as ex:
3433
                print('error occurred({}) in {}:{}'.format(ex, sys.exc_info()[-1].tb_frame.f_code.co_filename,
3434
                                                          sys.exc_info()[-1].tb_lineno))
3435

  
3436
        return result
3437

  
3414 3438
    '''
3415 3439
        @brief      Set Common Code Data
3416 3440
        @author     kyouho
DTI_PID/DTI_PID/Commands/HighlightCommand.py
111 111
                param.setSelected(True)
112 112
                param.update()
113 113

  
114

  
115
    def executeForPSN(self, params):
116
        from EngineeringRunItem import QEngineeringRunItem
117
        from SymbolSvgItem import SymbolSvgItem
118
        from EngineeringNoteItem import QEngineeringNoteItem
119
        from EngineeringLineNoTextItem import QEngineeringLineNoTextItem
120

  
121
        self.isTreated = False
122
        FIT_WINDOW_SIZE = 500
123
        self.imageViewer.scene().clearSelection()
124

  
125
        if params is not None:
126
            for param in params:
127
                if type(param) is str:
128
                    items = [item for item in self.imageViewer.scene().items() if hasattr(item, 'uid') and str(item.uid) == param]
129
                    if items:
130
                        param = items[0]
131
                    else:
132
                        return
133

  
134
                if type(param) is QEngineeringRunItem:
135
                    rect = None
136
                    for item in param.items:
137
                        if not issubclass(type(item), SymbolSvgItem): continue
138
                        rect = item.sceneBoundingRect() if rect is None else rect.united(item.sceneBoundingRect())
139

  
140
                    if rect is not None:
141
                        self.imageViewer.centerOn(rect.center())
142

  
143
                        rect.translate(-FIT_WINDOW_SIZE, -FIT_WINDOW_SIZE)
144
                        rect.setWidth(rect.width() + FIT_WINDOW_SIZE * 2)
145
                        rect.setHeight(rect.height() + FIT_WINDOW_SIZE * 2)
146
                        topLeft = rect.topLeft()
147
                        bottomRight = rect.bottomRight()
148
                        self.imageViewer.updateViewer(QRectF(topLeft.x(), topLeft.y(), bottomRight.x() - topLeft.x(),
149
                                                             bottomRight.y() - topLeft.y()))
150

  
151
                        for item in param.items:
152
                            item.setSelected(True)
153
                            item.update()
154
                elif type(param) is list and type(param[0]) is QEngineeringNoteItem:
155
                    rect = None
156
                    for item in param:
157
                        _rect = item.symbol.sceneBoundingRect() if item.symbol else item.sceneBoundingRect()
158
                        rect = _rect if rect is None else rect.united(_rect)
159

  
160
                    if rect is not None:
161
                        self.imageViewer.centerOn(rect.center())
162

  
163
                        rect.translate(-FIT_WINDOW_SIZE, -FIT_WINDOW_SIZE)
164
                        rect.setWidth(rect.width() + FIT_WINDOW_SIZE * 2)
165
                        rect.setHeight(rect.height() + FIT_WINDOW_SIZE * 2)
166
                        topLeft = rect.topLeft()
167
                        bottomRight = rect.bottomRight()
168
                        self.imageViewer.updateViewer(QRectF(topLeft.x(), topLeft.y(), bottomRight.x() - topLeft.x(),
169
                                                             bottomRight.y() - topLeft.y()))
170

  
171
                        for item in param:
172
                            if item.symbol:
173
                                item.symbol.setSelected(True)
174
                                item.symbol.update()
175
                            else:
176
                                item.setSelected(True)
177
                                item.update()
178
                else:
179
                    rect = param.sceneBoundingRect()
180
                    self.imageViewer.centerOn(rect.center())
181

  
182
                    rect.translate(-FIT_WINDOW_SIZE, -FIT_WINDOW_SIZE)
183
                    rect.setWidth(rect.width() + FIT_WINDOW_SIZE*2)
184
                    rect.setHeight(rect.height() + FIT_WINDOW_SIZE*2)
185
                    topLeft = rect.topLeft()
186
                    bottomRight = rect.bottomRight()
187
                    self.imageViewer.updateViewer(QRectF(topLeft.x(), topLeft.y(), bottomRight.x() - topLeft.x(),
188
                                                         bottomRight.y() - topLeft.y()))
189

  
190
                    if type(param) is QEngineeringLineNoTextItem:
191
                        for run in param.runs:
192
                            for item in run.items:
193
                                item.setSelected(True)
194
                                item.update()
195

  
196
                    param.setSelected(True)
197
                    param.update()
198

  
199

  
114 200
    def undo(self):
115 201
        pass
116 202

  
DTI_PID/ID2PSN/DB.cs
23 23
        const string PSN_NOZZLE = "SPPIDNozzle";
24 24
        const string PSN_FLUIDCODE = "SPPIDFluidCode";
25 25
        const string PSN_PIPINGMATLCLASS = "SPPIDPipingMatClass";
26
        const string PSN_VIEW = "T_PSN_VIEW";
26 27
        public static bool ConnTestAndCreateTable()
27 28
        {
28 29
            bool result = false;
......
88 89
                                    cmd.CommandText = string.Format("CREATE TABLE {0} (UID TEXT, Priority TEXT, Code TEXT, Description TEXT, Condition TEXT, Remarks TEXT, GroundLevel TEXT)", PSN_PIPINGMATLCLASS);
89 90
                                    cmd.ExecuteNonQuery();
90 91
                                }
92
                                if (dt.Select(string.Format("NAME = '{0}'", PSN_VIEW)).Length == 0)
93
                                {
94
                                    cmd.CommandText = string.Format("CREATE TABLE {0} (OID TEXT)", PSN_VIEW);
95
                                    cmd.ExecuteNonQuery();
96
                                }
91 97
                            }
92 98
                        }
93 99
                        result = true;
......
469 475
            return dt;
470 476
        }
471 477

  
472
        public static bool SavePSNFluidCode(DataTable dt)
478
        public static bool SavePSNData(PSN item)
473 479
        {
474 480
            ID2Info id2Info = ID2Info.GetInstance();
475 481

  
......
486 492
                        {
487 493
                            using (SQLiteCommand cmd = connection.CreateCommand())
488 494
                            {
489
                                cmd.CommandText = string.Format("DELETE FROM {0}", PSN_FLUIDCODE);
495
                                // Path Items
496
                                cmd.CommandText = string.Format("DELETE FROM {0}", PSN_PATHITEMS);
490 497
                                cmd.ExecuteNonQuery();
498
                                foreach (DataRow row in item.PathItems.Rows)
499
                                {
500
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@OID, @SequenceData_OID, @TopologySet_OID, @BranchTopologySet_OID, @PipeLine_OID, @ITEMNAME, @ITEMTAG, @TYPE, @PIDNAME, @NPD, @PipeSystemNetwork_OID, @PipeRun_OID)", PSN_PATHITEMS);
501
                                    cmd.Parameters.Clear();
502
                                    cmd.Parameters.AddWithValue("@OID", row["OID"].ToString());
503
                                    cmd.Parameters.AddWithValue("@SequenceData_OID", row["SequenceData_OID"].ToString());
504
                                    cmd.Parameters.AddWithValue("@TopologySet_OID", row["TopologySet_OID"].ToString());
505
                                    cmd.Parameters.AddWithValue("@BranchTopologySet_OID", row["BranchTopologySet_OID"].ToString());
506
                                    cmd.Parameters.AddWithValue("@PipeLine_OID", row["PipeLine_OID"].ToString());
507
                                    cmd.Parameters.AddWithValue("@ITEMNAME", row["ITEMNAME"].ToString());
508
                                    cmd.Parameters.AddWithValue("@ITEMTAG", row["ITEMTAG"].ToString());
509
                                    cmd.Parameters.AddWithValue("@TYPE", row["TYPE"].ToString());
510
                                    cmd.Parameters.AddWithValue("@PIDNAME", row["PIDNAME"].ToString());
511
                                    cmd.Parameters.AddWithValue("@NPD", row["NPD"].ToString());
512
                                    cmd.Parameters.AddWithValue("@PipeSystemNetwork_OID", row["PipeSystemNetwork_OID"].ToString());
513
                                    cmd.Parameters.AddWithValue("@PipeRun_OID", row["PipeRun_OID"].ToString());
514
                                    cmd.ExecuteNonQuery();
515
                                }
491 516

  
492
                                foreach (DataRow row in dt.Rows)
517
                                // Sequence
518
                                cmd.CommandText = string.Format("DELETE FROM {0}", PSN_SEQUENCEDATA);
519
                                cmd.ExecuteNonQuery();
520
                                foreach (DataRow row in item.SequenceData.Rows)
493 521
                                {
494
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@UID, @Code, @Description, @Condition, @Remarks, @GroundLevel)", PSN_FLUIDCODE);
522
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@OID, @SERIALNUMBER, @PathItem_OID, @TopologySet_OID_Key)", PSN_SEQUENCEDATA);
495 523
                                    cmd.Parameters.Clear();
496
                                    cmd.Parameters.AddWithValue("@UID", row["UID"].ToString());
497
                                    cmd.Parameters.AddWithValue("@Code", row["Code"].ToString());
498
                                    cmd.Parameters.AddWithValue("@Description", row["Description"].ToString());
499
                                    cmd.Parameters.AddWithValue("@Condition", row["Condition"].ToString());
500
                                    cmd.Parameters.AddWithValue("@Remarks", row["Remarks"].ToString());
501
                                    cmd.Parameters.AddWithValue("@GroundLevel", row["GroundLevel"].ToString());
524
                                    cmd.Parameters.AddWithValue("@OID", row["OID"].ToString());
525
                                    cmd.Parameters.AddWithValue("@SERIALNUMBER", row["SERIALNUMBER"].ToString());
526
                                    cmd.Parameters.AddWithValue("@PathItem_OID", row["PathItem_OID"].ToString());
527
                                    cmd.Parameters.AddWithValue("@TopologySet_OID_Key", row["TopologySet_OID_Key"].ToString());
528
                                    cmd.ExecuteNonQuery();
529
                                }
530

  
531
                                // Nozzle
532
                                cmd.CommandText = string.Format("DELETE FROM {0}", PSN_NOZZLE);
533
                                cmd.ExecuteNonQuery();
534
                                foreach (DataRow row in item.Nozzle.Rows)
535
                                {
536
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@OID, @ITEMTAG, @XCOORDS, @YCOORDS, @Equipment_OID, @FLUID, @NPD, @ROTATION, @FlowDirection)", PSN_NOZZLE);
537
                                    cmd.Parameters.Clear();
538
                                    cmd.Parameters.AddWithValue("@OID", row["OID"].ToString());
539
                                    cmd.Parameters.AddWithValue("@ITEMTAG", row["ITEMTAG"].ToString());
540
                                    cmd.Parameters.AddWithValue("@XCOORDS", row["XCOORDS"].ToString());
541
                                    cmd.Parameters.AddWithValue("@YCOORDS", row["YCOORDS"].ToString());
542
                                    cmd.Parameters.AddWithValue("@Equipment_OID", row["Equipment_OID"].ToString());
543
                                    cmd.Parameters.AddWithValue("@FLUID", row["FLUID"].ToString());
544
                                    cmd.Parameters.AddWithValue("@NPD", row["NPD"].ToString());
545
                                    cmd.Parameters.AddWithValue("@ROTATION", row["ROTATION"].ToString());
546
                                    cmd.Parameters.AddWithValue("@FlowDirection", row["FlowDirection"].ToString());
547
                                    cmd.ExecuteNonQuery();
548
                                }
549

  
550
                                //Equipment
551
                                cmd.CommandText = string.Format("DELETE FROM {0}", PSN_EQUIPMENT);
552
                                cmd.ExecuteNonQuery();
553
                                foreach (DataRow row in item.Equipment.Rows)
554
                                {
555
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@OID, @ITEMTAG, @XCOORDS, @YCOORDS)", PSN_EQUIPMENT);
556
                                    cmd.Parameters.Clear();
557
                                    cmd.Parameters.AddWithValue("@OID", row["OID"].ToString());
558
                                    cmd.Parameters.AddWithValue("@ITEMTAG", row["ITEMTAG"].ToString());
559
                                    cmd.Parameters.AddWithValue("@XCOORDS", row["XCOORDS"].ToString());
560
                                    cmd.Parameters.AddWithValue("@YCOORDS", row["YCOORDS"].ToString());
561
                                    cmd.ExecuteNonQuery();
562
                                }
563

  
564
                                // PSN
565
                                cmd.CommandText = string.Format("DELETE FROM {0} WHERE PSNRevisionNumber = '{1}'", PSN_PIPESYSTEMNETWORK, string.Format("{0:D3}", item.Revision));
566
                                cmd.ExecuteNonQuery();
567
                                foreach (DataRow row in item.PipeSystemNetwork.Rows)
568
                                {
569
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@OID, @Type, @OrderNumber, @Pipeline_OID, @FROM_DATA, @TO_DATA, @TopologySet_OID_Key, @PSNRevisionNumber, @PathOID, @PBS, @PIDDrawings)", PSN_PIPESYSTEMNETWORK);
570
                                    cmd.Parameters.Clear();
571
                                    cmd.Parameters.AddWithValue("@OID", row["OID"].ToString());
572
                                    cmd.Parameters.AddWithValue("@Type", row["Type"].ToString());
573
                                    cmd.Parameters.AddWithValue("@OrderNumber", row["OrderNumber"].ToString());
574
                                    cmd.Parameters.AddWithValue("@Pipeline_OID", row["Pipeline_OID"].ToString());
575
                                    cmd.Parameters.AddWithValue("@FROM_DATA", row["FROM_DATA"].ToString());
576
                                    cmd.Parameters.AddWithValue("@TO_DATA", row["TO_DATA"].ToString());
577
                                    cmd.Parameters.AddWithValue("@TopologySet_OID_Key", row["TopologySet_OID_Key"].ToString());
578
                                    cmd.Parameters.AddWithValue("@PSNRevisionNumber", row["PSNRevisionNumber"].ToString());
579
                                    cmd.Parameters.AddWithValue("@PathOID", row["PathOID"].ToString());
580
                                    cmd.Parameters.AddWithValue("@PBS", row["PBS"].ToString());
581
                                    cmd.Parameters.AddWithValue("@PIDDrawings", row["PIDDrawings"].ToString());
502 582
                                    cmd.ExecuteNonQuery();
503 583
                                }
584

  
504 585
                            }
505 586
                            transaction.Commit();
506 587
                            connection.Close();
......
530 611
            return result;
531 612
        }
532 613

  
533
        public static bool SavePSNPMC(DataTable dt)
614
        public static bool SavePSNFluidCode(DataTable dt)
534 615
        {
535 616
            ID2Info id2Info = ID2Info.GetInstance();
536 617

  
......
547 628
                        {
548 629
                            using (SQLiteCommand cmd = connection.CreateCommand())
549 630
                            {
550
                                cmd.CommandText = string.Format("DELETE FROM {0}", PSN_PIPINGMATLCLASS);
631
                                cmd.CommandText = string.Format("DELETE FROM {0}", PSN_FLUIDCODE);
551 632
                                cmd.ExecuteNonQuery();
552 633

  
553 634
                                foreach (DataRow row in dt.Rows)
554 635
                                {
555
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@UID, @Priority, @Code, @Description, @Condition, @Remarks, @GroundLevel)", PSN_PIPINGMATLCLASS);
636
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@UID, @Code, @Description, @Condition, @Remarks, @GroundLevel)", PSN_FLUIDCODE);
556 637
                                    cmd.Parameters.Clear();
557 638
                                    cmd.Parameters.AddWithValue("@UID", row["UID"].ToString());
558
                                    cmd.Parameters.AddWithValue("@Priority", row["Priority"].ToString());
559 639
                                    cmd.Parameters.AddWithValue("@Code", row["Code"].ToString());
560 640
                                    cmd.Parameters.AddWithValue("@Description", row["Description"].ToString());
561 641
                                    cmd.Parameters.AddWithValue("@Condition", row["Condition"].ToString());
......
592 672
            return result;
593 673
        }
594 674

  
595
        public static bool SavePathItems(DataTable dt)
675
        public static bool SavePSNPMC(DataTable dt)
596 676
        {
597 677
            ID2Info id2Info = ID2Info.GetInstance();
598 678

  
......
609 689
                        {
610 690
                            using (SQLiteCommand cmd = connection.CreateCommand())
611 691
                            {
612
                                cmd.CommandText = string.Format("DELETE FROM {0}", PSN_PATHITEMS);
692
                                cmd.CommandText = string.Format("DELETE FROM {0}", PSN_PIPINGMATLCLASS);
613 693
                                cmd.ExecuteNonQuery();
614 694

  
615 695
                                foreach (DataRow row in dt.Rows)
616 696
                                {
617
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@OID, @SequenceData_OID, @TopologySet_OID, @BranchTopologySet_OID, @PipeLine_OID, @ITEMNAME, @ITEMTAG, @TYPE, @PIDNAME, @NPD, @PipeSystemNetwork_OID, @PipeRun_OID)", PSN_PATHITEMS);
697
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@UID, @Priority, @Code, @Description, @Condition, @Remarks, @GroundLevel)", PSN_PIPINGMATLCLASS);
618 698
                                    cmd.Parameters.Clear();
619
                                    cmd.Parameters.AddWithValue("@OID", row["OID"].ToString());
620
                                    cmd.Parameters.AddWithValue("@SequenceData_OID", row["SequenceData_OID"].ToString());
621
                                    cmd.Parameters.AddWithValue("@TopologySet_OID", row["TopologySet_OID"].ToString());
622
                                    cmd.Parameters.AddWithValue("@BranchTopologySet_OID", row["BranchTopologySet_OID"].ToString());
623
                                    cmd.Parameters.AddWithValue("@PipeLine_OID", row["PipeLine_OID"].ToString());
624
                                    cmd.Parameters.AddWithValue("@ITEMNAME", row["ITEMNAME"].ToString());
625
                                    cmd.Parameters.AddWithValue("@ITEMTAG", row["ITEMTAG"].ToString());
626
                                    cmd.Parameters.AddWithValue("@TYPE", row["TYPE"].ToString());
627
                                    cmd.Parameters.AddWithValue("@PIDNAME", row["PIDNAME"].ToString());
628
                                    cmd.Parameters.AddWithValue("@NPD", row["NPD"].ToString());
629
                                    cmd.Parameters.AddWithValue("@PipeSystemNetwork_OID", row["PipeSystemNetwork_OID"].ToString());
630
                                    cmd.Parameters.AddWithValue("@PipeRun_OID", row["PipeRun_OID"].ToString());
699
                                    cmd.Parameters.AddWithValue("@UID", row["UID"].ToString());
700
                                    cmd.Parameters.AddWithValue("@Priority", row["Priority"].ToString());
701
                                    cmd.Parameters.AddWithValue("@Code", row["Code"].ToString());
702
                                    cmd.Parameters.AddWithValue("@Description", row["Description"].ToString());
703
                                    cmd.Parameters.AddWithValue("@Condition", row["Condition"].ToString());
704
                                    cmd.Parameters.AddWithValue("@Remarks", row["Remarks"].ToString());
705
                                    cmd.Parameters.AddWithValue("@GroundLevel", row["GroundLevel"].ToString());
631 706
                                    cmd.ExecuteNonQuery();
632 707
                                }
633 708
                            }
......
659 734
            return result;
660 735
        }
661 736

  
662
        public static bool SaveSequenceData(DataTable dt)
737
        public static bool SaveView(List<string> values)
663 738
        {
664 739
            ID2Info id2Info = ID2Info.GetInstance();
665 740

  
......
676 751
                        {
677 752
                            using (SQLiteCommand cmd = connection.CreateCommand())
678 753
                            {
679
                                cmd.CommandText = string.Format("DELETE FROM {0}", PSN_SEQUENCEDATA);
754
                                cmd.CommandText = string.Format("DELETE FROM {0}", PSN_VIEW);
680 755
                                cmd.ExecuteNonQuery();
681 756

  
682
                                foreach (DataRow row in dt.Rows)
757
                                foreach (string value in values)
683 758
                                {
684
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@OID, @SERIALNUMBER, @PathItem_OID, @TopologySet_OID_Key)", PSN_SEQUENCEDATA);
759
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@OID)", PSN_VIEW);
685 760
                                    cmd.Parameters.Clear();
686
                                    cmd.Parameters.AddWithValue("@OID", row["OID"].ToString());
687
                                    cmd.Parameters.AddWithValue("@SERIALNUMBER", row["SERIALNUMBER"].ToString());
688
                                    cmd.Parameters.AddWithValue("@PathItem_OID", row["PathItem_OID"].ToString());
689
                                    cmd.Parameters.AddWithValue("@TopologySet_OID_Key", row["TopologySet_OID_Key"].ToString());
761
                                    cmd.Parameters.AddWithValue("@OID", value);
690 762
                                    cmd.ExecuteNonQuery();
691 763
                                }
692 764
                            }
......
717 789

  
718 790
            return result;
719 791
        }
720

  
721
        public static bool SavePipeSystemNetwork(DataTable dt, string revision)
792
        public static bool DeleteView()
722 793
        {
723 794
            ID2Info id2Info = ID2Info.GetInstance();
724 795

  
......
735 806
                        {
736 807
                            using (SQLiteCommand cmd = connection.CreateCommand())
737 808
                            {
738
                                cmd.CommandText = string.Format("DELETE FROM {0} WHERE PSNRevisionNumber = '{1}'", PSN_PIPESYSTEMNETWORK, revision);
809
                                cmd.CommandText = string.Format("DELETE FROM {0}", PSN_VIEW);
739 810
                                cmd.ExecuteNonQuery();
740

  
741
                                foreach (DataRow row in dt.Rows)
742
                                {
743
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@OID, @Type, @OrderNumber, @Pipeline_OID, @FROM_DATA, @TO_DATA, @TopologySet_OID_Key, @PSNRevisionNumber, @PathOID, @PBS, @PIDDrawings)", PSN_PIPESYSTEMNETWORK);
744
                                    cmd.Parameters.Clear();
745
                                    cmd.Parameters.AddWithValue("@OID", row["OID"].ToString());
746
                                    cmd.Parameters.AddWithValue("@Type", row["Type"].ToString());
747
                                    cmd.Parameters.AddWithValue("@OrderNumber", row["OrderNumber"].ToString());
748
                                    cmd.Parameters.AddWithValue("@Pipeline_OID", row["Pipeline_OID"].ToString());
749
                                    cmd.Parameters.AddWithValue("@FROM_DATA", row["FROM_DATA"].ToString());
750
                                    cmd.Parameters.AddWithValue("@TO_DATA", row["TO_DATA"].ToString());
751
                                    cmd.Parameters.AddWithValue("@TopologySet_OID_Key", row["TopologySet_OID_Key"].ToString());
752
                                    cmd.Parameters.AddWithValue("@PSNRevisionNumber", row["PSNRevisionNumber"].ToString());
753
                                    cmd.Parameters.AddWithValue("@PathOID", row["PathOID"].ToString());
754
                                    cmd.Parameters.AddWithValue("@PBS", row["PBS"].ToString());
755
                                    cmd.Parameters.AddWithValue("@PIDDrawings", row["PIDDrawings"].ToString());
756
                                    cmd.ExecuteNonQuery();
757
                                }
758 811
                            }
759 812
                            transaction.Commit();
760 813
                            connection.Close();
......
784 837
            return result;
785 838
        }
786 839

  
787
        public static bool SaveEquipment(DataTable dt)
840
        public static PSN GetDBPSN()
788 841
        {
842
            PSN result = new PSN();
789 843
            ID2Info id2Info = ID2Info.GetInstance();
790 844

  
791
            bool result = true;
792 845
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", id2Info.DBFilePath), true))
793 846
            {
794 847
                try
......
801 854
                        {
802 855
                            using (SQLiteCommand cmd = connection.CreateCommand())
803 856
                            {
804
                                cmd.CommandText = string.Format("DELETE FROM {0}", PSN_EQUIPMENT);
805
                                cmd.ExecuteNonQuery();
857
                                DataTable psnDT = new DataTable();
858
                                cmd.CommandText = string.Format("SELECT * FROM {0} WHERE PSNRevisionNumber = '{1}'", PSN_PIPESYSTEMNETWORK, string.Format("{0:D3}", GetRevision()));
859
                                using (SQLiteDataReader dr = cmd.ExecuteReader())
860
                                    psnDT.Load(dr);
861
                                result.PipeSystemNetwork = psnDT;
806 862

  
807
                                foreach (DataRow row in dt.Rows)
808
                                {
809
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@OID, @ITEMTAG, @XCOORDS, @YCOORDS)", PSN_EQUIPMENT);
810
                                    cmd.Parameters.Clear();
811
                                    cmd.Parameters.AddWithValue("@OID", row["OID"].ToString());
812
                                    cmd.Parameters.AddWithValue("@ITEMTAG", row["ITEMTAG"].ToString());
813
                                    cmd.Parameters.AddWithValue("@XCOORDS", row["XCOORDS"].ToString());
814
                                    cmd.Parameters.AddWithValue("@YCOORDS", row["YCOORDS"].ToString());
815
                                    cmd.ExecuteNonQuery();
816
                                }
817
                            }
818
                            transaction.Commit();
819
                            connection.Close();
820
                        }
821
                        catch (Exception ex)
822
                        {
823
                            transaction.Rollback();
824
                            result = false;
825
                        }
826
                        finally
827
                        {
828
                            transaction.Dispose();
829
                        }
830
                    }
831
                }
832
                catch (Exception ex)
833
                {
834
                    System.Windows.Forms.MessageBox.Show(ex.Message);
835
                    result = false;
836
                }
837
                finally
838
                {
839
                    connection.Dispose();
840
                }
841
            }
863
                                DataTable equipDT = new DataTable();
864
                                cmd.CommandText = string.Format("SELECT * FROM {0}", PSN_EQUIPMENT);
865
                                using (SQLiteDataReader dr = cmd.ExecuteReader())
866
                                    equipDT.Load(dr);
867
                                result.Equipment = equipDT;
842 868

  
843
            return result;
844
        }
869
                                DataTable nozzleDT = new DataTable();
870
                                cmd.CommandText = string.Format("SELECT * FROM {0}", PSN_NOZZLE);
871
                                using (SQLiteDataReader dr = cmd.ExecuteReader())
872
                                    nozzleDT.Load(dr);
873
                                result.Nozzle = nozzleDT;
845 874

  
846
        public static bool SaveNozzle(DataTable dt)
847
        {
848
            ID2Info id2Info = ID2Info.GetInstance();
849

  
850
            bool result = true;
851
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", id2Info.DBFilePath), true))
852
            {
853
                try
854
                {
855
                    connection.Open();
875
                                DataTable pathItemDT = new DataTable();
876
                                cmd.CommandText = string.Format("SELECT * FROM {0}", PSN_PATHITEMS);
877
                                using (SQLiteDataReader dr = cmd.ExecuteReader())
878
                                    pathItemDT.Load(dr);
879
                                result.PathItems = pathItemDT;
856 880

  
857
                    using (SQLiteTransaction transaction = connection.BeginTransaction())
858
                    {
859
                        try
860
                        {
861
                            using (SQLiteCommand cmd = connection.CreateCommand())
862
                            {
863
                                cmd.CommandText = string.Format("DELETE FROM {0}", PSN_NOZZLE);
864
                                cmd.ExecuteNonQuery();
881
                                DataTable seqDT = new DataTable();
882
                                cmd.CommandText = string.Format("SELECT * FROM {0}", PSN_SEQUENCEDATA);
883
                                using (SQLiteDataReader dr = cmd.ExecuteReader())
884
                                    seqDT.Load(dr);
885
                                result.SequenceData = seqDT;
865 886

  
866
                                foreach (DataRow row in dt.Rows)
867
                                {
868
                                    cmd.CommandText = string.Format("INSERT INTO {0} VALUES (@OID, @ITEMTAG, @XCOORDS, @YCOORDS, @Equipment_OID, @FLUID, @NPD, @ROTATION, @FlowDirection)", PSN_NOZZLE);
869
                                    cmd.Parameters.Clear();
870
                                    cmd.Parameters.AddWithValue("@OID", row["OID"].ToString());
871
                                    cmd.Parameters.AddWithValue("@ITEMTAG", row["ITEMTAG"].ToString());
872
                                    cmd.Parameters.AddWithValue("@XCOORDS", row["XCOORDS"].ToString());
873
                                    cmd.Parameters.AddWithValue("@YCOORDS", row["YCOORDS"].ToString());
874
                                    cmd.Parameters.AddWithValue("@Equipment_OID", row["Equipment_OID"].ToString());
875
                                    cmd.Parameters.AddWithValue("@FLUID", row["FLUID"].ToString());
876
                                    cmd.Parameters.AddWithValue("@NPD", row["NPD"].ToString());
877
                                    cmd.Parameters.AddWithValue("@ROTATION", row["ROTATION"].ToString());
878
                                    cmd.Parameters.AddWithValue("@FlowDirection", row["FlowDirection"].ToString());
879
                                    cmd.ExecuteNonQuery();
880
                                }
887
                                result.Revision = GetRevision();
881 888
                            }
882 889
                            transaction.Commit();
883 890
                            connection.Close();
......
885 892
                        catch (Exception ex)
886 893
                        {
887 894
                            transaction.Rollback();
888
                            result = false;
895
                            result = null;
889 896
                        }
890 897
                        finally
891 898
                        {
......
896 903
                catch (Exception ex)
897 904
                {
898 905
                    System.Windows.Forms.MessageBox.Show(ex.Message);
899
                    result = false;
906
                    result = null;
900 907
                }
901 908
                finally
902 909
                {
903 910
                    connection.Dispose();
904 911
                }
905 912
            }
906

  
907 913
            return result;
908 914
        }
909 915

  
......
929 935
                            if (result < revisionNumber)
930 936
                                result = revisionNumber;
931 937
                        }
932

  
933
                        result++;
934 938
                    }
935 939
                    connection.Close();
936 940
                }
......
1027 1031

  
1028 1032
            return dt;
1029 1033
        }
1034
        public static DataTable GetPathItem()
1035
        {
1036
            DataTable dt = new DataTable();
1037
            ID2Info id2Info = ID2Info.GetInstance();
1038
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", id2Info.DBFilePath), true))
1039
            {
1040
                try
1041
                {
1042
                    connection.Open();
1043
                    using (SQLiteCommand cmd = connection.CreateCommand())
1044
                    {
1045
                        cmd.CommandText = string.Format("SELECT * FROM {0}", PSN_PATHITEMS);
1046
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
1047
                            dt.Load(dr);
1048
                    }
1049
                    connection.Close();
1050
                }
1051
                catch (Exception ex)
1052
                {
1053
                    Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1054
                }
1055
                finally
1056
                {
1057
                    connection.Dispose();
1058
                }
1059
            }
1060
            return dt;
1061
        }
1062
        public static DataTable GetTopologySet_OID()
1063
        {
1064
            DataTable dt = new DataTable();
1065
            ID2Info id2Info = ID2Info.GetInstance();
1066
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", id2Info.DBFilePath), true))
1067
            {
1068
                try
1069
                {
1070
                    connection.Open();
1071
                    using (SQLiteCommand cmd = connection.CreateCommand())
1072
                    {
1073
                        cmd.CommandText = string.Format("SELECT DISTINCT(TopologySet_OID) FROM {0}", PSN_PATHITEMS);
1074
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
1075
                            dt.Load(dr);
1076
                    }
1077
                    connection.Close();
1078
                }
1079
                catch (Exception ex)
1080
                {
1081
                    Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1082
                }
1083
                finally
1084
                {
1085
                    connection.Dispose();
1086
                }
1087
            }
1088
            return dt;
1089
        }
1090
        public static DataTable GetPipeSystemNetwork()
1091
        {
1092
            DataTable dt = new DataTable();
1093
            ID2Info id2Info = ID2Info.GetInstance();
1094
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", id2Info.DBFilePath), true))
1095
            {
1096
                try
1097
                {
1098
                    connection.Open();
1099
                    using (SQLiteCommand cmd = connection.CreateCommand())
1100
                    {
1101
                        cmd.CommandText = string.Format("SELECT * FROM {0} WHERE PSNRevisionNumber = '{1}'", PSN_PIPESYSTEMNETWORK, string.Format("{0:D3}", GetRevision()));
1102
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
1103
                            dt.Load(dr);
1104
                    }
1105
                    connection.Close();
1106
                }
1107
                catch (Exception ex)
1108
                {
1109
                    Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1110
                }
1111
                finally
1112
                {
1113
                    connection.Dispose();
1114
                }
1115
            }
1116
            return dt;
1117
        }
1118
        public static DataTable GetSequenceData()
1119
        {
1120
            DataTable dt = new DataTable();
1121
            ID2Info id2Info = ID2Info.GetInstance();
1122
            using (SQLiteConnection connection = new SQLiteConnection(string.Format(CultureInfo.CurrentCulture, "Data Source = {0}", id2Info.DBFilePath), true))
1123
            {
1124
                try
1125
                {
1126
                    connection.Open();
1127
                    using (SQLiteCommand cmd = connection.CreateCommand())
1128
                    {
1129
                        cmd.CommandText = string.Format("SELECT * FROM {0}", PSN_SEQUENCEDATA);
1130
                        using (SQLiteDataReader dr = cmd.ExecuteReader())
1131
                            dt.Load(dr);
1132
                    }
1133
                    connection.Close();
1134
                }
1135
                catch (Exception ex)
1136
                {
1137
                    Log.Write(ex.Message + "\r\n" + ex.StackTrace);
1138
                }
1139
                finally
1140
                {
1141
                    connection.Dispose();
1142
                }
1143
            }
1144
            return dt;
1145
        }
1030 1146
    }
1031 1147
}
DTI_PID/ID2PSN/Form/MainForm.Designer.cs
40 40
            this.btnHeaderSetting = new DevExpress.XtraEditors.SimpleButton();
41 41
            this.xtraTabControl1 = new DevExpress.XtraTab.XtraTabControl();
42 42
            this.xtraTabPage1 = new DevExpress.XtraTab.XtraTabPage();
43
            this.gridControlPathItems = new DevExpress.XtraGrid.GridControl();
44
            this.gridViewPathItems = new DevExpress.XtraGrid.Views.Grid.GridView();
43
            this.gridControlTopologys = new DevExpress.XtraGrid.GridControl();
44
            this.gridViewTopologys = new DevExpress.XtraGrid.Views.Grid.GridView();
45 45
            this.xtraTabPage2 = new DevExpress.XtraTab.XtraTabPage();
46
            this.gridControlPSN = new DevExpress.XtraGrid.GridControl();
47
            this.gridViewPSN = new DevExpress.XtraGrid.Views.Grid.GridView();
46 48
            this.Root = new DevExpress.XtraLayout.LayoutControlGroup();
47 49
            this.layoutControlGroup1 = new DevExpress.XtraLayout.LayoutControlGroup();
48 50
            this.layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
......
60 62
            ((System.ComponentModel.ISupportInitialize)(this.xtraTabControl1)).BeginInit();
61 63
            this.xtraTabControl1.SuspendLayout();
62 64
            this.xtraTabPage1.SuspendLayout();
63
            ((System.ComponentModel.ISupportInitialize)(this.gridControlPathItems)).BeginInit();
64
            ((System.ComponentModel.ISupportInitialize)(this.gridViewPathItems)).BeginInit();
65
            ((System.ComponentModel.ISupportInitialize)(this.gridControlTopologys)).BeginInit();
66
            ((System.ComponentModel.ISupportInitialize)(this.gridViewTopologys)).BeginInit();
67
            this.xtraTabPage2.SuspendLayout();
68
            ((System.ComponentModel.ISupportInitialize)(this.gridControlPSN)).BeginInit();
69
            ((System.ComponentModel.ISupportInitialize)(this.gridViewPSN)).BeginInit();
65 70
            ((System.ComponentModel.ISupportInitialize)(this.Root)).BeginInit();
66 71
            ((System.ComponentModel.ISupportInitialize)(this.layoutControlGroup1)).BeginInit();
67 72
            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).BeginInit();
......
175 180
            // 
176 181
            // xtraTabPage1
177 182
            // 
178
            this.xtraTabPage1.Controls.Add(this.gridControlPathItems);
183
            this.xtraTabPage1.Controls.Add(this.gridControlTopologys);
179 184
            this.xtraTabPage1.Name = "xtraTabPage1";
180 185
            this.xtraTabPage1.Size = new System.Drawing.Size(1303, 801);
181
            this.xtraTabPage1.Text = "Path Items";
186
            this.xtraTabPage1.Text = "Topologys";
182 187
            // 
183
            // gridControlPathItems
188
            // gridControlTopologys
184 189
            // 
185
            this.gridControlPathItems.Dock = System.Windows.Forms.DockStyle.Fill;
186
            this.gridControlPathItems.Location = new System.Drawing.Point(0, 0);
187
            this.gridControlPathItems.MainView = this.gridViewPathItems;
188
            this.gridControlPathItems.MenuManager = this.ribbonControl;
189
            this.gridControlPathItems.Name = "gridControlPathItems";
190
            this.gridControlPathItems.Size = new System.Drawing.Size(1303, 801);
191
            this.gridControlPathItems.TabIndex = 0;
192
            this.gridControlPathItems.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
193
            this.gridViewPathItems});
190
            this.gridControlTopologys.Dock = System.Windows.Forms.DockStyle.Fill;
191
            this.gridControlTopologys.Location = new System.Drawing.Point(0, 0);
192
            this.gridControlTopologys.MainView = this.gridViewTopologys;
193
            this.gridControlTopologys.MenuManager = this.ribbonControl;
194
            this.gridControlTopologys.Name = "gridControlTopologys";
195
            this.gridControlTopologys.Size = new System.Drawing.Size(1303, 801);
196
            this.gridControlTopologys.TabIndex = 0;
197
            this.gridControlTopologys.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
198
            this.gridViewTopologys});
194 199
            // 
195
            // gridViewPathItems
200
            // gridViewTopologys
196 201
            // 
197
            this.gridViewPathItems.GridControl = this.gridControlPathItems;
198
            this.gridViewPathItems.Name = "gridViewPathItems";
199
            this.gridViewPathItems.OptionsView.ShowGroupPanel = false;
202
            this.gridViewTopologys.GridControl = this.gridControlTopologys;
203
            this.gridViewTopologys.Name = "gridViewTopologys";
204
            this.gridViewTopologys.OptionsView.ShowGroupPanel = false;
200 205
            // 
201 206
            // xtraTabPage2
202 207
            // 
208
            this.xtraTabPage2.Controls.Add(this.gridControlPSN);
203 209
            this.xtraTabPage2.Name = "xtraTabPage2";
204
            this.xtraTabPage2.Size = new System.Drawing.Size(893, 444);
205
            this.xtraTabPage2.Text = "Sequence Data Items";
210
            this.xtraTabPage2.Size = new System.Drawing.Size(1303, 801);
211
            this.xtraTabPage2.Text = "Pipe System Networks";
212
            // 
213
            // gridControlPSN
214
            // 
215
            this.gridControlPSN.Dock = System.Windows.Forms.DockStyle.Fill;
216
            this.gridControlPSN.Location = new System.Drawing.Point(0, 0);
217
            this.gridControlPSN.MainView = this.gridViewPSN;
218
            this.gridControlPSN.MenuManager = this.ribbonControl;
219
            this.gridControlPSN.Name = "gridControlPSN";
220
            this.gridControlPSN.Size = new System.Drawing.Size(1303, 801);
221
            this.gridControlPSN.TabIndex = 0;
222
            this.gridControlPSN.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
223
            this.gridViewPSN});
224
            // 
225
            // gridViewPSN
226
            // 
227
            this.gridViewPSN.GridControl = this.gridControlPSN;
228
            this.gridViewPSN.Name = "gridViewPSN";
229
            this.gridViewPSN.OptionsView.ShowGroupPanel = false;
230
            this.gridViewPSN.ValidatingEditor += new DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventHandler(this.gridViewPSN_ValidatingEditor);
206 231
            // 
207 232
            // Root
208 233
            // 
......
327 352
            ((System.ComponentModel.ISupportInitialize)(this.xtraTabControl1)).EndInit();
328 353
            this.xtraTabControl1.ResumeLayout(false);
329 354
            this.xtraTabPage1.ResumeLayout(false);
330
            ((System.ComponentModel.ISupportInitialize)(this.gridControlPathItems)).EndInit();
331
            ((System.ComponentModel.ISupportInitialize)(this.gridViewPathItems)).EndInit();
355
            ((System.ComponentModel.ISupportInitialize)(this.gridControlTopologys)).EndInit();
356
            ((System.ComponentModel.ISupportInitialize)(this.gridViewTopologys)).EndInit();
357
            this.xtraTabPage2.ResumeLayout(false);
358
            ((System.ComponentModel.ISupportInitialize)(this.gridControlPSN)).EndInit();
359
            ((System.ComponentModel.ISupportInitialize)(this.gridViewPSN)).EndInit();
332 360
            ((System.ComponentModel.ISupportInitialize)(this.Root)).EndInit();
333 361
            ((System.ComponentModel.ISupportInitialize)(this.layoutControlGroup1)).EndInit();
334 362
            ((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).EndInit();
......
366 394
        private DevExpress.XtraLayout.LayoutControlGroup layoutControlGroup2;
367 395
        private DevExpress.XtraEditors.SimpleButton btnPriority;
368 396
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem5;
369
        private DevExpress.XtraGrid.GridControl gridControlPathItems;
370
        private DevExpress.XtraGrid.Views.Grid.GridView gridViewPathItems;
397
        private DevExpress.XtraGrid.GridControl gridControlTopologys;
398
        private DevExpress.XtraGrid.Views.Grid.GridView gridViewTopologys;
371 399
        private DevExpress.XtraLayout.SplitterItem splitterItem1;
372 400
        private DevExpress.XtraEditors.SimpleButton btnSave;
373 401
        private DevExpress.XtraLayout.LayoutControlItem layoutControlItem6;
402
        private DevExpress.XtraGrid.GridControl gridControlPSN;
403
        private DevExpress.XtraGrid.Views.Grid.GridView gridViewPSN;
374 404
    }
375 405
}
376 406

  
DTI_PID/ID2PSN/Form/MainForm.cs
10 10
using System.Windows.Forms;
11 11
using System.Net.Sockets;
12 12
using DevExpress.XtraEditors.Repository;
13
using DevExpress.XtraEditors;
14
using DevExpress.XtraGrid;
15
using DevExpress.XtraGrid.Views.Grid;
16
using DevExpress.XtraGrid.Columns;
13 17

  
14 18
namespace ID2PSN
15 19
{
......
17 21
    {
18 22
        ID2Info ID2Info = ID2Info.GetInstance();
19 23
        PSN currentPSN = null;
24
        RepositoryItemButtonEdit btnShow;
20 25
        public MainForm()
21 26
        {
22 27
            InitializeComponent();
......
24 29

  
25 30
        private void MainForm_Load(object sender, EventArgs e)
26 31
        {
27
            RepositoryItemButtonEdit btnRemove = new RepositoryItemButtonEdit();
28
            btnRemove.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
29
            //btnRemove.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(removeTypeButton_Click);
30
            btnRemove.Buttons[0].Kind = DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph;
32
            btnShow = new RepositoryItemButtonEdit();
33
            btnShow.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
34
            btnShow.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(showButton_Click);
35
            btnShow.Buttons[0].Kind = DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph;
36
            btnShow.Buttons[0].ImageOptions.Image = ((Image)Properties.Resources.ResourceManager.GetObject("find_16x16", System.Globalization.CultureInfo.CurrentCulture));
37

  
38
            gridControlTopologys.RepositoryItems.Add(btnShow);
39

  
40
            InitGrid();
41
            
42
            SetDataTable(DB.GetTopologySet_OID(),
43
                DB.GetPathItem(),
44
                DB.GetPipeSystemNetwork());
45

  
46
            currentPSN = DB.GetDBPSN();
47
        }
48

  
49
        private void showButton_Click(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
50
        {
51

  
52
            ButtonEdit buttonEdit = sender as ButtonEdit;
53
            GridControl gridControl = buttonEdit.Parent as GridControl;
54
            GridView gridView = gridControl.DefaultView as GridView;
55
            DataTable dt = gridControl.DataSource as DataTable;
56
            List<string> oids = new List<string>();
57

  
58
            string value = gridView.GetFocusedRowCellValue("TopologySet_OID").ToString();
59
            DataRow[] rows = currentPSN.PathItems.Select(string.Format("TopologySet_OID = '{0}'", value));
60
            foreach (DataRow row in rows)
61
            {
62
                string[] split = row["OID"].ToString().Split(new char[] { '_' });
63
                if (!oids.Contains(split[0]))
64
                    oids.Add(split[0]);
65
            }
66

  
67
            DB.SaveView(oids);
68
            string drawingName = gridView.GetFocusedRowCellValue("PIDNAME").ToString();
69

  
70
            HightlightID2(drawingName);
31 71
        }
32 72

  
33 73
        private void btnHeaderSetting_Click(object sender, EventArgs e)
......
38 78

  
39 79
        private void btnTopologySetting_Click(object sender, EventArgs e)
40 80
        {
41
            //HightlightID2("TF1-2G43-0002-모형");
42
            //return;
43 81
            TopologyRuleForm form = new TopologyRuleForm();
44 82
            form.ShowDialog();
45 83
        }
......
58 96
            int revisionNumber = DB.GetRevision();
59 97
            if (revisionNumber < 0)
60 98
                return;
61
            
99
            revisionNumber++;
100

  
62 101
            PSN psn = new PSN(documents, revisionNumber);
63 102
            psn.SetPSNData();
64 103
            currentPSN = psn;
65 104

  
66
            gridControlPathItems.DataSource = psn.PathItems;
105
            SetDataTableByCurrentPSN();
67 106
        }
68 107

  
69 108
        private void btnPriority_Click(object sender, EventArgs e)
......
74 113

  
75 114
        private void HightlightID2(string drawingName)
76 115
        {
77
            TcpClient tcpClient = new TcpClient("localhost", 2549);
78
            byte[] message = Encoding.UTF8.GetBytes(drawingName);
116
            try
117
            {
118
                TcpClient tcpClient = new TcpClient();
119
                tcpClient.SendTimeout = 500;
120
                tcpClient.Connect("localhost", 2549);
121

  
122
                byte[] message = Encoding.UTF8.GetBytes(drawingName);
79 123

  
80
            NetworkStream networkStream = tcpClient.GetStream();
81
            networkStream.Write(message, 0, message.Length);
124
                NetworkStream networkStream = tcpClient.GetStream();
125
                networkStream.Write(message, 0, message.Length);
82 126

  
83
            byte[] outbuf = new byte[1024];
84
            int nbytes = networkStream.Read(outbuf, 0, outbuf.Length);
85
            string output = Encoding.UTF8.GetString(outbuf, 0, nbytes);
127
                byte[] outbuf = new byte[1024];
128
                int nbytes = networkStream.Read(outbuf, 0, outbuf.Length);
129
                string output = Encoding.UTF8.GetString(outbuf, 0, nbytes);
86 130

  
87
            // (5) 스트림과 TcpClient 객체 닫기
88
            networkStream.Close();
89
            tcpClient.Close();
90
            MessageBox.Show(output);
131
                // (5) 스트림과 TcpClient 객체 닫기
132
                networkStream.Close();
133
                tcpClient.Close();
134
                MessageBox.Show(output);
135
            }
136
            catch (Exception ex)
137
            {
138
                MessageBox.Show("Failed to open ID2 drawing.", "ID2 PSN", MessageBoxButtons.OK, MessageBoxIcon.Error);
139
            }
91 140
        }
92 141

  
93 142
        private void btnSave_Click(object sender, EventArgs e)
......
98 147
                return;
99 148
            }
100 149

  
101
            if (DB.SavePathItems(currentPSN.PathItems) &&
102
                DB.SaveSequenceData(currentPSN.SequenceData) &&
103
                DB.SavePipeSystemNetwork(currentPSN.PipeSystemNetwork, string.Format("{0:D3}", currentPSN.Revision)) &&
104
                DB.SaveEquipment(currentPSN.Equipment) &&
105
                DB.SaveNozzle(currentPSN.Nozzle))
106
                MessageBox.Show("Save was successful", "ID2 PSN", MessageBoxButtons.OK, MessageBoxIcon.Information);
150
            CheckEquipment();
151

  
152
            if (DB.SavePSNData(currentPSN))
153
                MessageBox.Show("Save was successful.", "ID2 PSN", MessageBoxButtons.OK, MessageBoxIcon.Information);
107 154
            else
108
                MessageBox.Show("Failed to save", "ID2 PSN", MessageBoxButtons.OK, MessageBoxIcon.Warning);
155
                MessageBox.Show("Failed to save.", "ID2 PSN", MessageBoxButtons.OK, MessageBoxIcon.Error);
156

  
157
            void CheckEquipment()
158
            {
159
                DataTable psnDT = currentPSN.PipeSystemNetwork;
160
            }
161
        }
162

  
163
        private void InitGrid()
164
        {
165
            gridControlPSN.BeginUpdate();
166
            gridControlTopologys.BeginUpdate();
167

  
168
            DataTable topologyDT = new DataTable();
169
            topologyDT.Columns.Add("TopologySet_OID", typeof(string));
170
            topologyDT.Columns.Add("Type", typeof(string));
171
            topologyDT.Columns.Add("SubType", typeof(string));
172
            topologyDT.Columns.Add("Head", typeof(string));
173
            topologyDT.Columns.Add("Tail", typeof(string));
174
            topologyDT.Columns.Add("PIDNAME", typeof(string));
175
            topologyDT.Columns.Add("Show", typeof(string));
176

  
177
            gridControlTopologys.DataSource = topologyDT;
178
            gridViewTopologys.Columns["TopologySet_OID"].Caption = "Topology ID";
179
            gridViewTopologys.Columns["SubType"].Caption = "Sub-Type";
180
            gridViewTopologys.Columns["Head"].Caption = "Head Side ItemTag";
181
            gridViewTopologys.Columns["Tail"].Caption = "Tail Side ItemTag";
182
            gridViewTopologys.Columns["PIDNAME"].Caption = "Drawings";
183
            gridViewTopologys.Columns["Show"].Caption = " ";
184

  
185

  
186
            DataTable PSNPageDT = new DataTable();
187
            PSNPageDT.Columns.Add("OID", typeof(string));
188
            PSNPageDT.Columns.Add("Type", typeof(string));
189
            PSNPageDT.Columns.Add("OrderNumber", typeof(string));
190
            PSNPageDT.Columns.Add("Pipeline_OID", typeof(string));
191
            PSNPageDT.Columns.Add("FROM_DATA", typeof(string));
192
            PSNPageDT.Columns.Add("TO_DATA", typeof(string));
193
            PSNPageDT.Columns.Add("TopologySet_OID_Key", typeof(string));
194
            PSNPageDT.Columns.Add("PSNRevisionNumber", typeof(string));
195

  
196
            gridControlPSN.DataSource = PSNPageDT;
197
            gridViewPSN.Columns["OID"].Caption = "PSN ID";
198
            gridViewPSN.Columns["OrderNumber"].Caption = "Order #";
199
            gridViewPSN.Columns["Pipeline_OID"].Caption = "PipeLine ID";
200
            gridViewPSN.Columns["FROM_DATA"].Caption = "From";
201
            gridViewPSN.Columns["TO_DATA"].Caption = "To";
202
            gridViewPSN.Columns["TopologySet_OID_Key"].Caption = "SeqData ID";
203
            gridViewPSN.Columns["PSNRevisionNumber"].Caption = "Rivision";
204

  
205

  
206

  
207
            if (gridViewTopologys.Columns["Show"].ColumnEdit == null)
208
            {
209
                gridViewTopologys.Columns["Show"].ColumnEdit = btnShow;
210
                gridViewTopologys.Columns["Show"].MaxWidth = 16;
211
            }
212

  
213

  
214

  
215

  
216

  
217
            gridControlPSN.EndUpdate();
218
            gridControlTopologys.EndUpdate();
219
        }
220

  
221
        private void SetDataTable(DataTable topologySetDT, DataTable pathItemDT, DataTable psnDT)
222
        {
223
            gridControlPSN.BeginUpdate();
224
            gridControlTopologys.BeginUpdate();
225

  
226
            DataTable topologyDT = gridControlTopologys.DataSource as DataTable;
227
            DataTable PSNPageDT = gridControlPSN.DataSource as DataTable;
228

  
229
            topologyDT.Rows.Clear();
230
            PSNPageDT.Rows.Clear();
231

  
232
            // topology table
233
            foreach (DataRow row in topologySetDT.Rows)
234
            {
235
                string key = row["TopologySet_OID"].ToString();
236
                DataRow[] rows = pathItemDT.Select(string.Format("TopologySet_OID = '{0}'", key));
237

  
238
                int startIndex = int.MaxValue;
239
                int endIndex = int.MinValue;
240
                DataRow startRow = null;
241
                DataRow endRow = null;
242
                foreach (DataRow loopRow in rows)
243
                {
244
                    int index = Convert.ToInt32(loopRow["SequenceData_OID"].ToString().Split(new char[] { '_' })[1]);
245
                    if (index < startIndex)
246
                    {
247
                        startIndex = index;
248
                        startRow = loopRow;
249
                    }
250

  
251
                    if (index > endIndex)
252
                    {
253
                        endIndex = index;
254
                        endRow = loopRow;
255
                    }
256
                }
257

  
258
                DataRow newRow = topologyDT.NewRow();
259
                newRow["TopologySet_OID"] = key;
260
                newRow["Type"] = key.Split(new char[] { '-' }).Last().StartsWith("M") ? "Main" : "Branch";
261
                newRow["SubType"] = null;
262
                newRow["Head"] = startRow["ITEMTAG"].ToString();
263
                newRow["Tail"] = endRow["ITEMTAG"].ToString();
264
                newRow["PIDNAME"] = startRow["PIDNAME"].ToString();
265

  
266
                topologyDT.Rows.Add(newRow);
267
            }
268

  
269
            foreach (DataRow row in psnDT.Rows)
270
            {
271
                DataRow newRow = PSNPageDT.NewRow();
272
                newRow["OID"] = row["OID"].ToString();
273
                newRow["Type"] = row["Type"].ToString();
274
                newRow["OrderNumber"] = row["OrderNumber"].ToString();
275
                newRow["Pipeline_OID"] = row["Pipeline_OID"].ToString();
276
                newRow["FROM_DATA"] = row["FROM_DATA"].ToString();
277
                newRow["TO_DATA"] = row["TO_DATA"].ToString();
278
                newRow["TopologySet_OID_Key"] = row["TopologySet_OID_Key"].ToString();
279
                newRow["PSNRevisionNumber"] = row["PSNRevisionNumber"].ToString();
280

  
281
                PSNPageDT.Rows.Add(newRow);
282
            }
283

  
284

  
285

  
286

  
287
            gridControlPSN.EndUpdate();
288
            gridControlTopologys.EndUpdate();
289
        }
290
        private void SetDataTableByCurrentPSN()
291
        {
292
            DataTable topologySetDT = new DataTable();
293
            topologySetDT.Columns.Add("TopologySet_OID", typeof(string));
294
            foreach (DataRow row in currentPSN.PathItems.Rows)
295
            {
296
                if (topologySetDT.Select(string.Format("TopologySet_OID = '{0}'", row["TopologySet_OID"].ToString())).Length == 0)
297
                    topologySetDT.Rows.Add(row["TopologySet_OID"].ToString());
298
            }
299

  
300
            SetDataTable(topologySetDT,
301
                currentPSN.PathItems,
302
                currentPSN.PipeSystemNetwork);
303
        }
304

  
305
        private void gridViewPSN_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e)
306
        {
307
            GridColumn column = gridViewPSN.FocusedColumn;
308
            if (column.FieldName == "TO_DATA" || column.FieldName == "FROM_DATA")
309
            {
310
                string value = gridViewPSN.GetFocusedRowCellDisplayText(column);
311
                DataRow[] fromRows = currentPSN.Equipment.Select(string.Format("ITEMTAG = '{0}'", value));
312
                DataRow[] toRows = currentPSN.Equipment.Select(string.Format("ITEMTAG = '{0}'", e.Value));
313
                if (fromRows.Length == 0 || toRows.Length == 0)
314
                {
315
                    e.Valid = false;
316
                }
317
                else
318
                {
319
                    if (fromRows.First() != toRows.First())
320
                    {
321
                        string oid = gridViewPSN.GetFocusedRowCellDisplayText("OID");
322
                        
323
                        // PSN Table
324
                        DataRow[] psnRows = currentPSN.PipeSystemNetwork.Select(string.Format("OID = '{0}'", oid));
325
                        foreach (DataRow row in psnRows)
326
                            row[column.FieldName] = e.Value;
327

  
328
                        // nozzle
329
                        DataRow[] nozzleRows = currentPSN.Nozzle.Select(string.Format("Equipment_OID = '{0}'", toRows.First()["OID"]));
330
                        int nozzleMaxNumber = 100;
331
                        foreach (DataRow nozzleRow in nozzleRows)
332
                        {
333
                            int tempNumber = Convert.ToInt32(nozzleRow["ITEMTAG"].ToString().Split(new char[] { '-' })[1]);
334
                            if (nozzleMaxNumber < tempNumber)
335
                                nozzleMaxNumber = tempNumber;
336
                        }
337
                        nozzleMaxNumber++;
338
                        string newNozzleTag = string.Format("N-{0}", string.Format("{0:D3}", nozzleMaxNumber));
339

  
340
                        // Path Table
341
                        DataRow[] pathRows = currentPSN.PathItems.Select(string.Format("PipeSystemNetwork_OID = '{0}'", oid));
342
                        DataRow pathRow = null;
343
                        if (column.FieldName == "FROM_DATA")
344
                            pathRow = pathRows.First();
345
                        else if (column.FieldName == "TO_DATA")
346
                            pathRow = pathRows.Last();
347

  
348

  
349
                        // data 
350
                        pathRow["ITEMTAG"] = newNozzleTag;
351
                        DataRow newNozzleRow = currentPSN.Nozzle.Select(string.Format("OID = '{0}'", pathRow["OID"])).First();
352
                        newNozzleRow["ITEMTAG"] = newNozzleTag;
353
                        newNozzleRow["Equipment_OID"] = toRows.First()["OID"].ToString();
354

  
355
                        SetDataTableByCurrentPSN();
356
                    }
357
                }
358
            }
109 359
        }
110 360
    }
111 361
}
DTI_PID/ID2PSN/Form/PriorityForm.cs
138 138
            gridViewPipingMaterialsClass.Columns["UID"].Visible = false;
139 139
            gridViewPipingMaterialsClass.Columns["Code"].OptionsColumn.AllowEdit = false;
140 140
            gridViewPipingMaterialsClass.Columns["Description"].OptionsColumn.AllowEdit = false;
141
            gridViewPipingMaterialsClass.Columns["Priority"].Visible = false;
142 141
            gridViewPipingMaterialsClass.Columns["GroundLevel"].ColumnEdit = groundLevelCB;
143 142
            gridViewPipingMaterialsClass.Columns["Condition"].ColumnEdit = conditionPMC;
144 143
            gridViewPipingMaterialsClass.OptionsCustomization.AllowSort = false;
DTI_PID/ID2PSN/Form/TopologyRuleForm.cs
23 23
        {
24 24
            DataTable attrDT = DB.SelectLineProperties();
25 25
            DataRow row = attrDT.NewRow();
26
            row["UID"] = "-";
27
            row["NAME"] = "-";
28
            row["DisplayName"] = "-";
29
            attrDT.Rows.Add(row);
26
            //row["UID"] = "-";
27
            //row["NAME"] = "-";
28
            //row["DisplayName"] = "-";
29
            //attrDT.Rows.Add(row);
30 30

  
31 31
            DataTable dt = new DataTable();
32 32
            dt.Columns.Add("TYPE", typeof(string));
......
70 70
        private void btnSave_Click(object sender, EventArgs e)
71 71
        {
72 72
            DataTable dt = gridControlRule.DataSource as DataTable;
73
            int count = dt.Rows.Count - 1;
74

  
75
            dt = dt.Copy();
76
            for (int i = 1; i <= count; i++)
77
            {
78
                int index = i * 2 - 1;
79
                DataRow newRow = dt.NewRow();
80
                newRow["NAME"] = "-";
81
                dt.Rows.InsertAt(newRow, index);
82
            }
83

  
73 84
            if (DB.SaveTopologyRule(dt))
74 85
                MessageBox.Show("Save was successful", "ID2 PSN", MessageBoxButtons.OK, MessageBoxIcon.Information);
75 86
            else
DTI_PID/ID2PSN/ID2PSN.csproj
152 152
  <ItemGroup>
153 153
    <None Include="Resources\cancel_16x16.png" />
154 154
  </ItemGroup>
155
  <ItemGroup>
156
    <None Include="Resources\find_16x16.png" />
157
  </ItemGroup>
155 158
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
156 159
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
157 160
    <PropertyGroup>
DTI_PID/ID2PSN/PSN.cs
41 41
        const string FluidPriorityType = "FLUIDCODE";
42 42
        const string PipingMaterialsPriorityType = "PIPINGMATERIALSCLASS";
43 43

  
44
        public PSN()
45
        {
46
            
47
        }
48

  
44 49
        public PSN(List<Document> documents, int Revision)
45 50
        {
46 51
            Documents = documents;
......
528 533
            pathItemsDT.Columns.Add("NPD", typeof(string));
529 534
            pathItemsDT.Columns.Add("PipeSystemNetwork_OID", typeof(string));
530 535
            pathItemsDT.Columns.Add("PipeRun_OID", typeof(string));
531
            pathItemsDT.Columns.Add(" ", typeof(string));
536
            pathItemsDT.Columns.Add("Show", typeof(string));
532 537

  
533 538
            DataTable sequenceDataDT = new DataTable();
534 539
            sequenceDataDT.Columns.Add("OID", typeof(string));
......
549 554
            pipeSystemNetworkDT.Columns.Add("PBS", typeof(string));
550 555
            pipeSystemNetworkDT.Columns.Add("PIDDrawings", typeof(string));
551 556

  
557
            // key = 미입력 branch
558
            Dictionary<Item, Item> startBranchDic = new Dictionary<Item, Item>();
559
            Dictionary<Item, Item> endBranchDic = new Dictionary<Item, Item>();
552 560
            foreach (PSNItem PSNItem in PSNItems)
553 561
            {
554 562
                int psnOrder = 0;
......
567 575
                        }
568 576
                        else
569 577
                        {
570
                            CreatePathItemsDataRow(item.UID + "-L1", item.Type);
571
                            CreateSequenceDataDataRow(item.UID + "-L1");
578
                            CreatePathItemsDataRow(item.UID + "_L1", item.Type);
579
                            CreateSequenceDataDataRow(item.UID + "_L1");
572 580
                            index++;
573 581
                            for (int i = 0; i < item.BranchItems.Count; i++)
574 582
                            {
575
                                CreatePathItemsDataRow(string.Format(item.UID + "-B{0}", i + 1), "Branch", item.BranchItems[i].Topology.FullName);
576
                                CreateSequenceDataDataRow(string.Format(item.UID + "-B{0}", i + 1));
583
                                CreatePathItemsDataRow(string.Format(item.UID + "_B{0}", i + 1), "Branch", item.BranchItems[i].Topology.FullName);
584
                                CreateSequenceDataDataRow(string.Format(item.UID + "_B{0}", i + 1));
577 585
                                index++;
578 586

  
579
                                CreatePathItemsDataRow(string.Format(item.UID + "-L{0}", i + 2), item.Type);
580
                                CreateSequenceDataDataRow(string.Format(item.UID + "-L{0}", i + 2));
587
                                CreatePathItemsDataRow(string.Format(item.UID + "_L{0}", i + 2), item.Type);
588
                                CreateSequenceDataDataRow(string.Format(item.UID + "_L{0}", i + 2));
581 589
                                index++;
590

  
591
                                if (item.BranchItems[i].Relations[0].Item != null && item.BranchItems[i].Relations[0].Item == item)
592
                                    startBranchDic.Add(item.BranchItems[i], item);
593
                                else if (item.BranchItems[i].Relations[1].Item != null && item.BranchItems[i].Relations[1].Item == item)
594
                                    endBranchDic.Add(item.BranchItems[i], item);
582 595
                            }
583 596
                        }
584 597

  
......
685 698
                }
686 699
            }
687 700

  
701
            foreach (var item in startBranchDic)
702
            {
703
                string uid = item.Key.UID;
704
                string topologyName = item.Value.Topology.FullName;
705
                DataRow[] rows = pathItemsDT.Select(string.Format("OID LIKE '{0}%'", uid));
706
                if (rows.Length == 1)
707
                    rows.First()["BranchTopologySet_OID"] = topologyName;
708
                else if (rows.Length > 1)
709
                {
710
                    DataRow targetRow = null;
711
                    int index = int.MaxValue;
712
                    foreach (DataRow row in rows)
713
                    {
714
                        string split = row["OID"].ToString().Split(new char[] { '_' })[1];
715
                        if (split.StartsWith("L"))
716
                        {
717
                            int num = Convert.ToInt32(split.Remove(0, 1));
718
                            if (index > num)
719
                            {
720
                                index = num;
721
                                targetRow = row;
722
                            }
723
                        }
724
                    }
725

  
726
                    if (targetRow != null)
727
                        targetRow["BranchTopologySet_OID"] = topologyName;
728
                }
729
            }
730
            foreach (var item in endBranchDic)
731
            {
732
                string uid = item.Key.UID;
733
                string topologyName = item.Value.Topology.FullName;
734
                DataRow[] rows = pathItemsDT.Select(string.Format("OID LIKE '{0}%'", uid));
735
                if (rows.Length == 1)
736
                    rows.First()["BranchTopologySet_OID"] = topologyName;
737
                else if (rows.Length > 1)
738
                {
739
                    DataRow targetRow = null;
740
                    int index = int.MinValue;
741
                    foreach (DataRow row in rows)
742
                    {
743
                        string split = row["OID"].ToString().Split(new char[] { '_' })[1];
744
                        if (split.StartsWith("L"))
745
                        {
746
                            int num = Convert.ToInt32(split.Remove(0, 1));
747
                            if (index < num)
748
                            {
749
                                index = num;
750
                                targetRow = row;
751
                            }
752
                        }
753
                    }
754

  
755
                    if (targetRow != null)
756
                        targetRow["BranchTopologySet_OID"] = topologyName;
757
                }
758
            }
759

  
688 760
            PathItems = pathItemsDT;
689 761
            SequenceData = sequenceDataDT;
690 762
            PipeSystemNetwork = pipeSystemNetworkDT;
DTI_PID/ID2PSN/Properties/Resources.Designer.cs
69 69
                return ((System.Drawing.Bitmap)(obj));
70 70
            }
71 71
        }
72
        
73
        /// <summary>
74
        ///   System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
75
        /// </summary>
76
        internal static System.Drawing.Bitmap find_16x16 {
77
            get {
78
                object obj = ResourceManager.GetObject("find_16x16", resourceCulture);
79
                return ((System.Drawing.Bitmap)(obj));
80
            }
81
        }
72 82
    }
73 83
}
DTI_PID/ID2PSN/Properties/Resources.resx
121 121
  <data name="cancel_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
122 122
    <value>..\Resources\cancel_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
123 123
  </data>
124
  <data name="find_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
125
    <value>..\Resources\find_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
126
  </data>
124 127
</root>

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)