예제 #1
0
        /// <summary>
        /// 成果物ファイルの出力
        /// </summary>
        private void writeArtifactFiles()
        {
            // 成果物リストの中身を artifact.xml ファイルに出力
            foreach (var atf in this.allArtifacts.artifactList)
            {
                ArtifactXmlWriter.outputArtifactXml(artifactDir, atf);
            }

            // AllArtifacts.xml ファイルを出力
            AllArtifactsFileWriter.outputAllArtifactsFile(artifactDir, this.allArtifacts);
        }
예제 #2
0
        /// <summary>
        /// 成果物ファイルの出力
        /// </summary>
        private void writeArtifactFiles()
        {
            // 成果物リストの中身を artifact.xml ファイルに出力
            foreach (var atf in this.allArtifacts.artifactList)
            {
                // 成果物の保有クラスごとにふるまい→コードへの変換を実施
                // setParsedCodeInArtifact(atf);
                ArtifactXmlWriter.outputArtifactXml(artifactDir, atf);
            }

            // AllArtifacts.xml ファイルを出力
            AllArtifactsXmlWriter.outputAllArtifactsFile(artifactDir, this.allArtifacts);
        }
예제 #3
0
        /// <summary>
        /// ツリービューのコンテキストメニュー-「この成果物をEAから取得」のクリック時イベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void UpdateArtifactByEAToolStripMenuItemClick(object sender, EventArgs e)
        {
            TreeNode node = treeView1.SelectedNode;

            EA.Repository repo = ProjectSetting.getEARepo();

            if (node != null && node.Tag != null)
            {
                ArtifactVO atfvo = (ArtifactVO)node.Tag;

                try {
                    // 確認メッセージを表示
                    MessageBox.Show("選択されたパッケージの内容をEAから取得しローカルを更新します");

                    // マウスカーソルを待機状態にする
                    Cursor.Current = Cursors.WaitCursor;

                    EA.Package atfPacObj = repo.GetPackageByGuid(atfvo.guid);

                    EAArtifactXmlMaker maker       = new EAArtifactXmlMaker(atfPacObj);
                    ArtifactVO         newArtifact = maker.makeArtifactXml();

                    // 現在読み込まれている成果物の内容を今読んだもので置き換え
                    atfvo.package = newArtifact.package;

                    // elements配下の要素XMLファイルを今読んだもので置き換え
                    ArtifactXmlWriter writer = new ArtifactXmlWriter();
                    writer.rewriteElementXmlFiles(atfvo);

                    // 標準に戻す
                    Cursor.Current = Cursors.Default;

                    MessageBox.Show("EAの最新情報をローカルに取り込みました");
                } catch (Exception ex) {
                    MessageBox.Show(ex.Message);
                }
            }
            else
            {
                MessageBox.Show("フォルダツリーから成果物パッケージを選択して下さい");
            }
        }
예제 #4
0
        /// <summary>
        ///  メニュー - 編集 - (全)成果物を更新 メニュークリックイベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void EditRefreshArtifactToolStripMenuItemClick(object sender, EventArgs e)
        {
            EA.Repository repo = ProjectSetting.getEARepo();

            try {
                // 確認メッセージを表示
                MessageBox.Show("全ての成果物パッケージの内容をEAから取得しローカルを更新します");

                // マウスカーソルを待機状態にする
                Cursor.Current = Cursors.WaitCursor;

                // 全成果物をなめ、それぞれの成果物パッケージをEAから取得してローカルを更新
                foreach (ArtifactVO atfvo in artifacts)
                {
                    try {
                        EA.Package atfPacObj = repo.GetPackageByGuid(atfvo.guid);

                        EAArtifactXmlMaker maker       = new EAArtifactXmlMaker(atfPacObj);
                        ArtifactVO         newArtifact = maker.makeArtifactXml();

                        // 現在読み込まれている成果物の内容を今読んだもので置き換え
                        atfvo.package = newArtifact.package;

                        // elements配下の要素XMLファイルを今読んだもので置き換え
                        ArtifactXmlWriter writer = new ArtifactXmlWriter();
                        writer.rewriteElementXmlFiles(atfvo);
                    } catch (Exception ex) {
                        MessageBox.Show(ex.Message);
                    }
                }

                // マウスカーソルを標準に戻す
                Cursor.Current = Cursors.Default;

                MessageBox.Show("EAの最新情報をローカルに取り込みました");
            } catch (Exception ex) {
                MessageBox.Show(ex.Message);
            }
        }
예제 #5
0
        public static void Main(string[] args)
        {
            //コマンドライン引数を配列で取得する
            string[] cmds = System.Environment.GetCommandLineArgs();

            string prjfile, projectPath;

            if (cmds != null && cmds.Length > 1)
            {
                prjfile = cmds[1];
            }
            else
            {
                Console.WriteLine("引数が足りません");
                Console.WriteLine("Usage: EAArtifactLoader.exe <projectFilePath>");
                return;
            }

            if (ProjectSetting.load(prjfile))
            {
                projectPath = Path.GetDirectoryName(prjfile);
                Console.WriteLine("プロジェクトファイルを読み込み : " + prjfile);
            }
            else
            {
                Console.WriteLine("プロジェクトファイル読み込みに失敗しました。 再度正しいファイルを選択して下さい。");
                return;
            }

            EA.App        eaapp = (EA.App)Microsoft.VisualBasic.Interaction.GetObject(null, "EA.App");
            EA.Repository repo;

            if (eaapp != null)
            {
                repo = eaapp.Repository;
                ProjectSetting.getVO().eaRepo = repo;
                Console.WriteLine("EAにアタッチ成功 : 接続文字列 = " + repo.ConnectionString);
            }
            else
            {
                Console.WriteLine("EAにアタッチできないため処理できません。終了します。");
                return;
            }

            // All_Artifact.xml から全成果物リストを取得
            Console.WriteLine("全成果物XMLファイルを読み込み :");
            string            artifactsFileName = ProjectSetting.getVO().artifactsFile;
            List <ArtifactVO> artifacts         = ArtifactsXmlReader.readArtifactList(projectPath, artifactsFileName);

            Console.WriteLine("成果物パッケージの件数: " + artifacts.Count);

            // 全成果物をなめ、それぞれの成果物パッケージをEAから取得してローカルを更新
            for (int i = 0; i < artifacts.Count; i++)
            {
                ArtifactVO atfvo = artifacts[i];
                Console.WriteLine(i + ": guid=" + atfvo.guid + ", name=" + atfvo.name);

                try {
                    EA.Package atfPacObj = repo.GetPackageByGuid(atfvo.guid);

                    EAArtifactXmlMaker maker       = new EAArtifactXmlMaker(atfPacObj);
                    ArtifactVO         newArtifact = maker.makeArtifactXml();

                    // 現在読み込まれている成果物の内容を今読んだもので置き換え
                    atfvo.package = newArtifact.package;

                    // elements配下の要素XMLファイルを今読んだもので置き換え
                    ArtifactXmlWriter writer = new ArtifactXmlWriter();
                    writer.rewriteElementXmlFiles(atfvo);
                } catch (Exception ex) {
                    Console.WriteLine(ex.Message);
                }
            }
        }
예제 #6
0
        void ButtonRevertClick(object sender, EventArgs e)
        {
            EA.Repository repo = ProjectSetting.getVO().eaRepo;

            // 反映前のEAから取得した要素オブジェクトの情報を elements 配下のXMLに反映する
            ElementVO revertedElement = null;

            EA.Element eaElemObj = (EA.Element)repo.GetElementByGuid(mergedElement.guid);
            if (eaElemObj == null)
            {
                MessageBox.Show("EAから要素の取得に失敗しました。 異常終了しました。 GUID=" + mergedElement.guid);
                return;
            }
            else
            {
                revertedElement = ObjectEAConverter.getElementFromEAObject(eaElemObj);
            }


            // 反映後のEAから取得した要素オブジェクトの情報を elements 配下のXMLに反映する
            ArtifactXmlWriter writer       = new ArtifactXmlWriter();
            StreamWriter      elsw         = null;
            string            outputDir    = ProjectSetting.getVO().projectPath;
            string            elemFilePath = outputDir + @"\elements\" + revertedElement.guid.Substring(1, 1) + @"\" + revertedElement.guid.Substring(2, 1) + @"\" + revertedElement.guid.Substring(1, 36) + ".xml";

            try {
                //BOM無しのUTF8でテキストファイルを作成する
                elsw = new StreamWriter(elemFilePath);
                elsw.WriteLine(@"<?xml version=""1.0"" encoding=""UTF-8""?> ");
                ElementXmlWriter.writeElementXml(revertedElement, 0, elsw);
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            } finally {
                if (elsw != null)
                {
                    elsw.Close();
                }
            }

            // changedFile が存在したら削除する
            try {
                string changedElemFilePath = outputDir + @"\elements\" + revertedElement.guid.Substring(1, 1) + @"\" + revertedElement.guid.Substring(2, 1) + @"\" + revertedElement.guid.Substring(1, 36) + "_changed.xml";
                if (System.IO.File.Exists(changedElemFilePath))
                {
                    System.IO.File.Delete(changedElemFilePath);
                }
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }

            // 呼び出し元から受領した更新後ElementをRevert後の要素で置き換え
//			rightElement = revertedElement;

            // 親フォームの再描画を依頼
            ElementForm oya = (ElementForm)this.Owner;

            oya.repaint(revertedElement);

            // XMLファイルをコミットするためにTortoiseGitを起動する
            //string exename = @"TortoiseGitProc.exe";
            //string arguments = @"/command:commit /path:" + elemFilePath;

            //Process p = Process.Start( exename, arguments );

            // 自分をクローズ
            this.Close();
        }