Пример #1
0
        public void writeElements()
        {
            Console.Write("inserting element table ");

            conn.Open();
            recreateElementTable();

            ArtifactXmlReader  atfReader = new ArtifactXmlReader(this.projectDir);
            IList <ArtifactVO> artifacts = ArtifactsXmlReader.readArtifactList(this.projectDir, ProjectSetting.getVO().artifactsFile);

            string target_dir = null;

            target_dir = ConfigurationManager.AppSettings["artifact_dir"];

            elementRecCount = 0;

            foreach (ArtifactVO atf in artifacts)
            {
                // 成果物パッケージ別のXMLファイル読み込み
                List <ElementVO> elements = atfReader.readAllElements(atf, null);

                // 読み込んだ成果物情報を元に読み込み
                readElementsInArtifact(atf, elements);
            }

            transaction.Commit();
            Console.WriteLine(".  done(" + elementRecCount + "records)");

            conn.Close();
        }
Пример #2
0
        private void addElementLabels(ElementVO elem)
        {
            int rowIndex = 0;

            string            artifactsDir = ProjectSetting.getVO().projectPath + "\\" + ProjectSetting.getVO().artifactsPath;
            ArtifactXmlReader reader       = new ArtifactXmlReader(artifactsDir);

            tableLayoutPanel1.RowCount = elem.attributes.Count + elem.methods.Count + elem.taggedValues.Count;

            foreach (AttributeVO attr in elem.attributes)
            {
                addAttributeBox(rowIndex, reader, attr);
                rowIndex++;
            }

            foreach (MethodVO mth in elem.methods)
            {
                addMethodBox(rowIndex, reader, mth);
                rowIndex++;
            }

            foreach (TaggedValueVO tgv in elem.taggedValues)
            {
                addTaggedValueBox(rowIndex, reader, tgv);
                rowIndex++;
            }
        }
        public void exportBehaviorText()
        {
            // 出力フォルダはプロジェクトファイルの配置パスとする
            string outputDir = ProjectSetting.getVO().projectPath;

            // 全成果物リストの読み込み
            string      artifactDir  = ProjectSetting.getVO().projectPath + "\\" + ProjectSetting.getVO().artifactsPath;
            ArtifactsVO allArtifacts = ArtifactsXmlReader.readAllArtifacts(artifactDir);

            // 成果物パッケージXMLファイル読み込み
            ArtifactXmlReader atfReader = new ArtifactXmlReader(artifactDir, true);

            for (int i = 0; i < allArtifacts.artifactList.Count; i++)
            {
                ArtifactVO atf = allArtifacts.artifactList[i];

                // 成果物VOのPathNameより出力が必要と判断された場合
                if (artifactPathNameIsValid(atf.pathName))
                {
                    // ルールに従い、GUIDから成果物ファイルの名称を取得
                    string artifactFileName = "atf_" + atf.guid.Substring(1, 36) + ".xml";
                    // 成果物ファイル名と出力フォルダを渡し、ふるまいテキストを出力させる
                    outputIndexedBehaviorText(atfReader, artifactFileName, outputDir);

                    Console.WriteLine("{0}:テキスト出力中 {1}", i + 1, artifactFileName);
                }
            }
        }
        /// <summary>
        /// 比較して差異があったメソッドに対して左右それぞれのオリジナル情報を出力し、ピンポイントの比較ができるようにする
        /// </summary>
        /// <param name="tagVal">該当メソッド</param>
        /// <param name="leftRight"> "L" もしくは "R" を指定する(出力ファイル名のサフィックスになる)</param>
        private void outputOriginalTaggedValueFile(TaggedValueVO tagVal, string leftRight)
        {
            XmlDocument xmlDocument = new XmlDocument();

            string xmlDir = null;

            if ("L".Equals(leftRight))
            {
                xmlDir = this.fromArtifactDir;
            }
            else
            {
                xmlDir = this.toArtifactDir;
            }
            ArtifactXmlReader atfReader = new ArtifactXmlReader(xmlDir);

            // 現在処理中の成果物のGUID、およびメソッドのGUIDから(左もしくは右の)XMLノードを取得
            XmlNode taggedValueNode = atfReader.readTaggedValueNode(procArtifact.guid, tagVal.guid);

            // 成果物のGUID, メソッドのGUIDから読み取ったメソッドNodeがNULLだったらスキップ
            if (taggedValueNode != null)
            {
                // 新しいrootノードを、成果物XMLからインポートする形で作成
                XmlNode root = xmlDocument.ImportNode(taggedValueNode, true);

                // ルート配下に引数のドキュメントを追加
                xmlDocument.AppendChild(root);

                // この内容で操作の詳細に記録する
                xmlDocument.Save(this.outputDir + "\\detail\\#taggedValue_" + tagVal.guid.Substring(1, 36) + "_" + leftRight + ".xml");
            }
        }
Пример #5
0
        private static string outputArtifactAsciidoc(ArtifactXmlReader atfReader, string artifactFile, string asciidocDir)
        {
            //
            ArtifactVO artifact = atfReader.readArtifactFile(artifactFile);

            ArtifactAsciidocWriter aaWriter = new ArtifactAsciidocWriter(artifact);
            string plainFileName            = Path.GetFileNameWithoutExtension(artifactFile);

            string partGuid         = artifact.guid.Substring(1, 8);
            string artifactFileName = "atf_" + filterSpecialChar(artifact.name) + "_" + partGuid + ".adoc";

            aaWriter.writeFile(asciidocDir + "\\" + artifactFileName);

            return(artifactFileName);
        }
        /// <summary>
        /// プロジェクト内の全成果物の読み込み
        ///  ALL_Artifacts.xml → atf_xxxx.xml ファイルを読み、全ての成果物パッケージの内容をメモリに読み込む
        /// </summary>
        /// <param name="projectDir_"></param>
        /// <returns>全成果物のリスト</returns>
        private List <ArtifactVO> readAllArtifacts(string projectDir_)
        {
            List <ArtifactVO> retList   = ArtifactsXmlReader.readArtifactList(projectDir_);
            ArtifactXmlReader atfReader = new ArtifactXmlReader(projectDir_);

            foreach (ArtifactVO atf in retList)
            {
                // 成果物パッケージ別のXMLファイル読み込み
                atfReader.readArtifactDesc(atf);
            }

            // 成果物リストをソートする。 ソートキー=GUID(自然順序付け)see: BehaviorDevelop.vo.ArtifactVO#compareTo
            retList.Sort();
            return(retList);
        }
        /// <summary>
        /// プロジェクト内の全成果物の読み込み
        ///  AllArtifacts.xml → atf_xxxx.xml ファイルを読み、全ての成果物パッケージの内容をメモリに読み込む
        /// </summary>
        /// <param name="projectDir"></param>
        /// <returns>全成果物のリスト</returns>
        private List <ArtifactVO> readAllArtifacts(string artifactsDir)
        {
            List <ArtifactVO> retList   = ArtifactsXmlReader.readArtifactList(artifactsDir, ProjectSetting.getVO().artifactsFile);
            ArtifactXmlReader atfReader = new ArtifactXmlReader(artifactsDir);

            foreach (ArtifactVO atf in retList)
            {
                // 成果物パッケージ別のXMLファイル読み込み
                atfReader.readArtifactDesc(atf);

                // 成果物配下の子ノードをGUIDでソート
                atf.sortChildNodesGuid();
            }

            // 成果物リストをソートする。 ソートキー=GUID(自然順序付け)see: BehaviorDevelop.vo.ArtifactVO#compareTo
            retList.Sort();
            return(retList);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="atfReader"></param>
        /// <param name="artifactFile"></param>
        /// <param name="outputDir"></param>
        private void outputIndexedBehaviorText(ArtifactXmlReader atfReader, string artifactFile, string outputDir)
        {
            // 成果物XMLファイルの読み込み
            ArtifactVO artifact     = atfReader.readArtifactFile(artifactFile);
            string     textFileName = "BehaviorText";

            List <ElementVO> elements = artifact.getOwnElements();

            foreach (ElementVO elem in elements)
            {
                if (elementPathNameIsValid(elem.elementPath))
                {
                    if (elem.eaType == "Class" || elem.eaType == "Interface" || elem.eaType == "Enumeration" || elem.eaType == "Notes")
                    {
                        outputBehaviorTextFile(elem, outputDir + "\\" + textFileName);
                    }
                }
            }

            return;
        }
Пример #9
0
        static void Main(string[] args)
        {
            if (args.Length >= 1)
            {
                string projectFile = args[0];
                //string artifactFile = args[1];
                //string adocFile = args[2];

                // .bdprjファイルの読み込み
                ProjectSetting.load(projectFile);

                // 出力フォルダの存在チェック&無ければ作成
                string asciidocDir = ProjectSetting.getVO().projectPath + "\\" + "asciidocs";
                makeAsciidocDirIfNotExist(asciidocDir);

                // 成果物パッケージXMLファイル読み込み
                string            artifactDir = ProjectSetting.getVO().projectPath + "\\" + ProjectSetting.getVO().artifactsPath;
                ArtifactXmlReader atfReader   = new ArtifactXmlReader(artifactDir, true);

                // 成果物読み込み先の artifacts フォルダが存在する場合
                if (Directory.Exists(artifactDir))
                {
                    // その配下の成果物ファイルを取得
                    string[] atfFiles = Directory.GetFiles(artifactDir, "atf_*.xml");
                    Console.WriteLine("成果物Path=" + artifactDir);

                    for (var i = 0; i < atfFiles.Length; i++)
                    {
                        string adocfile = outputArtifactAsciidoc(atfReader, Path.GetFileName(atfFiles[i]), asciidocDir);

                        Console.WriteLine("({0}/{1})ドキュメント出力: {2}", i + 1, atfFiles.Length, adocfile);
                    }
                }
            }
            else
            {
                Console.WriteLine("引数が足りません: ");
                Console.WriteLine("Usage: AsciidocGenerator <.bdprj file> <artifactFile(.xml)> <outputFile(.adoc)>");
            }
        }
Пример #10
0
        /// <summary>
        /// 成果物XMLを全て読み込み、結果のArtifactsVOを返却する
        /// </summary>
        /// <param name="artifactDir"></param>
        /// <returns></returns>
        private static ArtifactsVO readAllArtifacts(string artifactDir)
        {
            // AllArtifacts.xml を読み込み、成果物の内容が未セット状態のartifactListを設定する
            ArtifactsVO allArtifacts = ArtifactsXmlReader.readAllArtifacts(artifactDir);

            // 成果物パッケージXMLファイル読み込み用のReaderを生成する
            ArtifactXmlReader atfReader = new ArtifactXmlReader(artifactDir, true);

            for (int i = 0; i < allArtifacts.artifactList.Count; i++)
            {
                ArtifactVO atf = allArtifacts.artifactList[i];

                // 成果物XMLファイルの読み込み
                string     artifactFileName = "atf_" + atf.guid.Substring(1, 36) + ".xml";
                ArtifactVO artifact         = atfReader.readArtifactFile(artifactFileName);

                // 読み込んだ結果の成果物VOでListの中身を置き換える
                allArtifacts.artifactList[i] = artifact;
            }

            return(allArtifacts);
        }
        /// <summary>
        /// 比較して差異があったメソッドに対して左右それぞれのオリジナル情報を出力し、ピンポイントの比較ができるようにする
        /// </summary>
        /// <param name="mth">該当メソッド</param>
        /// <param name="leftRight"> "L" もしくは "R" を指定する(出力ファイル名のサフィックスになる)</param>
        private void outputOriginalMethodFile(MethodVO mth, string leftRight)
        {
            XmlDocument xmlDocument = new XmlDocument();

            //	' XML宣言部分生成
            //  Set head = xmlDocument.createProcessingInstruction("xml", "version='1.0'")
            //			XmlProcessingInstruction head = xmlDocument.CreateProcessingInstruction("xml", "version='1.0'");

            //' XML宣言部分設定
            // xmlDocument.AppendChild(head);

            string xmlDir = null;

            if ("L".Equals(leftRight))
            {
                xmlDir = this.fromArtifactDir;
            }
            else
            {
                xmlDir = this.toArtifactDir;
            }
            ArtifactXmlReader atfReader = new ArtifactXmlReader(xmlDir);

            // 現在処理中の成果物のGUID、およびメソッドのGUIDから(左もしくは右の)XMLノードを取得
            XmlNode methodNode = atfReader.readMethodNode(procArtifact.guid, mth.guid);

            // 成果物のGUID, メソッドのGUIDから読み取ったメソッドNodeがNULLだったらスキップ
            if (methodNode != null)
            {
                // 新しいrootノードを、成果物XMLからインポートする形で作成
                XmlNode root = xmlDocument.ImportNode(methodNode, true);

                // ルート配下に引数のドキュメントを追加
                xmlDocument.AppendChild(root);

                // この内容で操作の詳細に記録する
                xmlDocument.Save(this.outputDir + "\\detail\\#method_" + mth.guid.Substring(1, 36) + "_" + leftRight + ".xml");
            }
        }
        /// <summary>
        /// 比較して差異があった属性に対して左右それぞれのオリジナル情報を出力し、ピンポイントの比較ができるようにする
        /// </summary>
        /// <param name="attr">該当属性</param>
        /// <param name="leftRight"> "L" もしくは "R" を指定する(出力ファイル名のサフィックスになる)</param>
        private void outputOriginalAttributeFile(AttributeVO attr, string leftRight)
        {
            XmlDocument xmlDocument = new XmlDocument();
            //	' XML宣言部分生成
            //  Set head = xmlDocument.createProcessingInstruction("xml", "version='1.0'")
            XmlProcessingInstruction head = xmlDocument.CreateProcessingInstruction("xml", "version='1.0'");

            //' XML宣言部分設定
            xmlDocument.AppendChild(head);

            string xmlDir = null;

            if ("L".Equals(leftRight))
            {
                xmlDir = this.fromArtifactDir;
            }
            else
            {
                xmlDir = this.toArtifactDir;
            }
            ArtifactXmlReader atfReader = new ArtifactXmlReader(xmlDir);

            // 現在処理中の成果物のGUID、および属性のGUIDから(左もしくは右の)XMLノードを取得
            XmlNode attrNode = atfReader.readAttributeNode(procArtifact.guid, attr.guid);

            // 成果物のGUID,属性のGUIDから取得した属性NodeがNullなら出力をスキップする
            if (attrNode != null)
            {
                // 新しいrootノードを、成果物XMLからインポートする形で作成
                XmlNode root = xmlDocument.ImportNode(attrNode, true);

                // ルート配下に引数のドキュメントを追加
                xmlDocument.AppendChild(root);

                // この内容で操作の詳細に記録する
                xmlDocument.Save(outputDir + "\\detail\\#attribute_" + attr.guid.Substring(1, 36) + "_" + leftRight + ".xml");
            }
        }
Пример #13
0
        /// <summary>
        /// 成果物パネルのアクティベート。
        /// 主にパッケージツリーで成果物PKGを選択した時に呼び出され、新たに成果物情報をファイルから読んで成果物パネルを表示する。
        /// あるいは既に成果物パネルの開いているタブ内で表示されている場合はそのタブをアクティベートして終了する。
        /// </summary>
        /// <param name="atf"></param>
        /// <returns></returns>
        public ArtifactVO activateArtifactPanel(ArtifactVO atf)
        {
            // 既にタブページで対象の成果物を開いていないかをチェックする
            foreach (TabPage page in tabControl1.TabPages)
            {
                // 開こうとしている成果物のGUIDとページで記憶しているGUIDが一致したら
                string guid = (string)(page.Tag);
                if (atf.guid.Equals(guid))
                {
                    // 該当のタブページを選択状態にし、終了
                    tabControl1.SelectedTab = page;
                    return(atf);
                }
            }

            string artifactDir = ProjectSetting.getVO().projectPath + "\\" + ProjectSetting.getVO().artifactsPath;

            ArtifactXmlReader atfReader = new ArtifactXmlReader(artifactDir, true);

            // 成果物パッケージ別のXMLファイル読み込み
            atfReader.readArtifactDesc(atf);

            // 新しく開くアーティファクト内のフォルダツリーを作成
            TreeView folderTree = new TreeView();

            folderTree.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                                                                      | System.Windows.Forms.AnchorStyles.Right)));

            folderTree.ImageIndex = 0;
            folderTree.ImageList  = this.imageList1;
            folderTree.Nodes.Add(makePackageNode(null, atf.package, true));
            folderTree.ExpandAll();

            // アーティファクト内の要素リストを作成
            FlowLayoutPanel elemPanel = new FlowLayoutPanel();

            elemPanel.Anchor = ((System.Windows.Forms.AnchorStyles)
                                    ((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                                       | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right)));
            elemPanel.AutoSizeMode  = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
            elemPanel.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
            elemPanel.WrapContents  = false;
            elemPanel.AutoScroll    = true;
            makeElementsPanelContents(elemPanel, atf.package);

            TabPage atfPage = new TabPage();

            atfPage.Controls.Add(elemPanel);

//			atfPage.Text = ((atf.package.stereoType != null) ? "<<" + atf.package.stereoType + ">> " : "" ) + atf.name ;
            atfPage.Text = atf.name;
            atfPage.Tag  = atf.guid;
            // タブクローズ用のコンテキストメニューをTabPageに登録
            atfPage.ContextMenuStrip = tabContextMenuStrip;

            // 作成したタブページをタブコントロールに追加し、そのタブを選択状態にする
            tabControl1.TabPages.Add(atfPage);
            tabControl1.SelectedTab = atfPage;

            return(atf);
        }
Пример #14
0
        private void addTaggedValueBox(int rowIndex, ArtifactXmlReader reader, TaggedValueVO tgv)
        {
            int           longerLine;
            TaggedValueVO leftTgv   = tgv;
            TaggedValueVO rightTgv  = tgv;
            string        leftText  = "";
            string        rightText = "";
            ListBox       listL     = makeNewListBox();
            ListBox       listR     = makeNewListBox();

            switch (tgv.changed)
            {
            case 'U':
                leftTgv  = reader.readTaggedValueDiffDetail(tgv.guid, "L");
                rightTgv = reader.readTaggedValueDiffDetail(tgv.guid, "R");
                DiffPresenter.getDisagreedTaggedValueDesc(leftTgv, rightTgv, ref leftText, ref rightText);

                leftDiffBuffer  = new StringBuilder();
                rightDiffBuffer = new StringBuilder();
                var simpleDiff = new SimpleDiff <string>(leftText.Split('\n'), rightText.Split('\n'));
                simpleDiff.LineUpdate += new EventHandler <DiffEventArgs <string> >(ElementDiff_LineUpdate);
                simpleDiff.RunDiff();

                leftText  = leftDiffBuffer.ToString();
                rightText = rightDiffBuffer.ToString();

                selectedTag = rightTgv;
                leftDiffBuffer.Clear();
                rightDiffBuffer.Clear();
                break;

            case 'C':
                rightTgv = reader.readTaggedValueDiffDetail(tgv.guid, "R");
                DiffPresenter.getMonoTaggedValueDesc(rightTgv, ref rightText);

                selectedTag = rightTgv;
                break;

            case 'D':
                leftTgv = reader.readTaggedValueDiffDetail(tgv.guid, "L");
                DiffPresenter.getMonoTaggedValueDesc(leftTgv, ref leftText);

                selectedTag = leftTgv;
                break;

            default:
                break;
            }

            longerLine = getLongerLine(leftText, rightText);

            setListItems(listL, leftText);
            setListItems(listR, rightText);
            setListBoxSize(listL, leftText, longerLine);
            setListBoxSize(listR, rightText, longerLine);

            if (tgv.changed == 'D' || tgv.changed == 'U')
            {
                listL.Tag = leftTgv;
                listL.ContextMenuStrip = contextMenuStrip1;
                listL.Click           += new System.EventHandler(this.TaggedValueListClick);
                //					listL.Click += new System.EventHandler(this.MethodTextClick);
            }

            if (tgv.changed == 'C' || tgv.changed == 'U')
            {
                listR.Tag = rightTgv;
                listR.ContextMenuStrip = contextMenuStrip1;
                listR.Click           += new System.EventHandler(this.TaggedValueListClick);
                //					listR.Click += new System.EventHandler(this.MethodTextClick);
            }

            tableLayoutPanel1.Controls.Add(listL, 0, rowIndex);
            tableLayoutPanel1.Controls.Add(listR, 1, rowIndex);

            return;
        }
Пример #15
0
        private void addAttributeBox(int rowIndex, ArtifactXmlReader reader, AttributeVO attr)
        {
            int         longerLine;
            AttributeVO leftAttr  = attr;
            AttributeVO rightAttr = attr;
            string      leftText  = "";
            string      rightText = "";
            ListBox     listL     = makeNewListBox();
            ListBox     listR     = makeNewListBox();

            switch (attr.changed)
            {
            case 'U':
                leftAttr  = reader.readAttributeDiffDetail(attr.guid, "L");
                rightAttr = reader.readAttributeDiffDetail(attr.guid, "R");
                DiffPresenter.getDisagreedAttributeDesc(leftAttr, rightAttr, ref leftText, ref rightText);
                selectedAttribute = rightAttr;
                break;

            case 'C':
                rightAttr = reader.readAttributeDiffDetail(attr.guid, "R");
                DiffPresenter.getMonoAttributeDesc(rightAttr, ref rightText);
                selectedAttribute = rightAttr;
                break;

            case 'D':
                leftAttr = reader.readAttributeDiffDetail(attr.guid, "L");
                DiffPresenter.getMonoAttributeDesc(leftAttr, ref leftText);
                selectedAttribute = leftAttr;
                break;

            default:
                break;
            }

            longerLine = getLongerLine(leftText, rightText);

            setListItems(listL, leftText);
            setListItems(listR, rightText);
            setListBoxSize(listL, leftText, longerLine);
            setListBoxSize(listR, rightText, longerLine);

            if (attr.changed == 'D' || attr.changed == 'U')
            {
                listL.Tag = leftAttr;
                listL.ContextMenuStrip = contextMenuStrip1;
                listL.Click           += new System.EventHandler(this.AttributeListClick);
                //					listL.Click += new System.EventHandler(this.AttributeTextClick);
            }

            if (attr.changed == 'C' || attr.changed == 'U')
            {
                listR.Tag = rightAttr;
                listR.ContextMenuStrip = contextMenuStrip1;
                listR.Click           += new System.EventHandler(this.AttributeListClick);
                //					listR.Click += new System.EventHandler(this.AttributeTextClick);
            }

            tableLayoutPanel1.Controls.Add(listL, 0, rowIndex);
            tableLayoutPanel1.Controls.Add(listR, 1, rowIndex);

            return;
        }
Пример #16
0
        public void CloseOnLoadComplete(string projectPath, string dbfile)
        {
            if (!this.loaded)
            {
                Int32 count;
                for (count = 0; count < 1000; count++)
                {
                    if (this.loaded)
                    {
                        break;
                    }
                    else
                    {
                        System.Threading.Thread.Sleep(100);
                    }
                }
            }

            // このプログラム(.exe)が置かれたフォルダを取得
            //string currentDir = System.Windows.Forms.Application.StartupPath ;

            //ファイルを開いて終わるまで待機する
            // Process p = Process.Start( currentDir + "\\ElementIndexer.exe", projectPath + " " + dbfile );
            //					MessageBox.Show("内部データベースを構築します。\n構築処理が完了後、OKボタンを押してください");

            try
            {
                ProjectSetting.load(projectPath + "\\project.bdprj");

                // 全成果物のリストを読み込み
                string            artifactsDir = projectPath + "\\" + ProjectSetting.getVO().artifactsPath;
                List <ArtifactVO> artifacts    = ArtifactsXmlReader.readArtifactList(artifactsDir, ProjectSetting.getVO().artifactsFile);

                // 全成果物リストの内容を成果物XMLファイルで埋める
                ArtifactXmlReader atfReader = new ArtifactXmlReader(artifactsDir);
                foreach (ArtifactVO atf in artifacts)
                {
                    // 成果物別のXMLファイルの内容読み込み
                    atfReader.readArtifactDesc(atf);
                }

                ArtifactsVO allArtifacts = new ArtifactsVO();
                allArtifacts.artifactList = artifacts;

                ConnectorXmlReader connReader    = new ConnectorXmlReader(projectPath);
                List <ConnectorVO> allConnectors = connReader.readConnectorAll();

                IndexDbWriter dbWriter = new IndexDbWriter(projectPath, ProjectSetting.getVO().dbName);

                // 全接続情報をDBに登録
                dbWriter.writeAllConnector(allConnectors);
                // 全要素情報をDBに登録
                dbWriter.writeAllElements(allArtifacts);
                // 全ふるまい情報をDBに登録
                dbWriter.writeAllBehaviors(allArtifacts);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


            // サブプロセスが終了後、必要なくなったところでCLOSE
//            p.WaitForExit();

            this.Close();
        }
Пример #17
0
        private void addElementLabels(ElementVO elem)
        {
            int         rowIndex = 0;
            string      leftText, rightText;
            int         longerLine;
            AttributeVO leftAttr, rightAttr;
            MethodVO    leftMth, rightMth;

            string            artifactsDir = ProjectSetting.getVO().projectPath + "\\" + ProjectSetting.getVO().artifactsPath;
            ArtifactXmlReader reader       = new ArtifactXmlReader(artifactsDir);

            tableLayoutPanel1.RowCount = elem.attributes.Count + elem.methods.Count;

            foreach (AttributeVO a in elem.attributes)
            {
                leftAttr  = a;
                rightAttr = a;
                leftText  = "";
                rightText = "";

//				TextBox txtL = new TextBox();
//	            txtL.BackColor = Color.LightCyan;
//
//				TextBox txtR = new TextBox();
//	            txtR.BackColor = Color.LightYellow;

                ListBox listL = new ListBox();
                listL.DrawMode = DrawMode.OwnerDrawFixed;
                // EventHandlerの追加
                listL.DrawItem += new DrawItemEventHandler(ListBox_DrawItem);

                ListBox listR = new ListBox();
                listR.DrawMode = DrawMode.OwnerDrawFixed;
                // EventHandlerの追加
                listR.DrawItem += new DrawItemEventHandler(ListBox_DrawItem);

                switch (a.changed)
                {
                case 'U':
                    leftAttr  = reader.readAttributeDiffDetail(a.guid, "L");
                    rightAttr = reader.readAttributeDiffDetail(a.guid, "R");
                    getDisagreedAttributeDesc(leftAttr, rightAttr, ref leftText, ref rightText);

                    break;

                case 'C':
                    rightAttr = reader.readAttributeDiffDetail(a.guid, "R");
                    getMonoAttributeDesc(rightAttr, ref rightText);
                    break;

                case 'D':
                    leftAttr = reader.readAttributeDiffDetail(a.guid, "L");
                    getMonoAttributeDesc(leftAttr, ref leftText);
                    break;

                default:
                    break;
                }

                longerLine = getLongerLine(leftText, rightText);

                setListItems(listL, leftText);
                setListItems(listR, rightText);
                setListBoxSize(listL, leftText, longerLine);
                setListBoxSize(listR, rightText, longerLine);

//				txtR.Text = rightText;
//				txtL.Text = leftText;
//	            setTextBoxSize(txtL, leftText, longerLine);
//				setTextBoxSize(txtR, rightText, longerLine);

                if (a.changed == 'D' || a.changed == 'U')
                {
                    listL.Tag = leftAttr;
                    listL.ContextMenuStrip = contextMenuStrip1;
                    listL.Click           += new System.EventHandler(this.AttributeListClick);
//					listL.Click += new System.EventHandler(this.AttributeTextClick);
                }

                if (a.changed == 'C' || a.changed == 'U')
                {
                    listR.Tag = rightAttr;
                    listR.ContextMenuStrip = contextMenuStrip1;
                    listR.Click           += new System.EventHandler(this.AttributeListClick);
//					listR.Click += new System.EventHandler(this.AttributeTextClick);
                }

                tableLayoutPanel1.Controls.Add(listL, 0, rowIndex);
                tableLayoutPanel1.Controls.Add(listR, 1, rowIndex);

                rowIndex++;
            }


            foreach (MethodVO m in elem.methods)
            {
                leftMth  = m;
                rightMth = m;

                leftText  = "";
                rightText = "";

//				TextBox txtL = new TextBox();
//	            txtL.BackColor = Color.White;
//
//				TextBox txtR = new TextBox();
//	            txtR.BackColor = Color.White;

                ListBox listL = new ListBox();
                listL.DrawMode = DrawMode.OwnerDrawFixed;
                // EventHandlerの追加
                listL.DrawItem += new DrawItemEventHandler(ListBox_DrawItem);

                ListBox listR = new ListBox();
                listR.DrawMode = DrawMode.OwnerDrawFixed;
                // EventHandlerの追加
                listR.DrawItem += new DrawItemEventHandler(ListBox_DrawItem);


                switch (m.changed)
                {
                case 'U':
                    leftMth  = reader.readMethodDiffDetail(m.guid, "L");
                    rightMth = reader.readMethodDiffDetail(m.guid, "R");
                    getDisagreedMethodDesc(leftMth, rightMth, ref leftText, ref rightText);

                    leftDiffBuffer  = new StringBuilder();
                    rightDiffBuffer = new StringBuilder();
                    var simpleDiff = new SimpleDiff <string>(leftText.Split('\n'), rightText.Split('\n'));
                    simpleDiff.LineUpdate += new EventHandler <DiffEventArgs <string> > (ElementDiff_LineUpdate);
                    simpleDiff.RunDiff();

                    leftText  = leftDiffBuffer.ToString();
                    rightText = rightDiffBuffer.ToString();
                    leftDiffBuffer.Clear();
                    rightDiffBuffer.Clear();
                    break;

                case 'C':
                    rightMth = reader.readMethodDiffDetail(m.guid, "R");
                    getMonoMethodDesc(rightMth, ref rightText);
                    break;

                case 'D':
                    leftMth = reader.readMethodDiffDetail(m.guid, "L");
                    getMonoMethodDesc(leftMth, ref leftText);
                    break;

                default:
                    break;
                }

                longerLine = getLongerLine(leftText, rightText);

                setListItems(listL, leftText);
                setListItems(listR, rightText);
                setListBoxSize(listL, leftText, longerLine);
                setListBoxSize(listR, rightText, longerLine);


//				txtL.Text = leftText;
//				txtR.Text = rightText;
//	            setTextBoxSize(txtL, leftText, longerLine);
//				setTextBoxSize(txtR, rightText, longerLine);

                if (m.changed == 'D' || m.changed == 'U')
                {
                    listL.Tag = leftMth;
                    listL.ContextMenuStrip = contextMenuStrip1;
                    listL.Click           += new System.EventHandler(this.MethodListClick);
//					listL.Click += new System.EventHandler(this.MethodTextClick);
                }

                if (m.changed == 'C' || m.changed == 'U')
                {
                    listR.Tag = rightMth;
                    listR.ContextMenuStrip = contextMenuStrip1;
                    listR.Click           += new System.EventHandler(this.MethodListClick);
//					listR.Click += new System.EventHandler(this.MethodTextClick);
                }

                tableLayoutPanel1.Controls.Add(listL, 0, rowIndex);
                tableLayoutPanel1.Controls.Add(listR, 1, rowIndex);

                rowIndex++;
            }
        }