/// <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); }
/// <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); }
/// <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("フォルダツリーから成果物パッケージを選択して下さい"); } }
/// <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); } }
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); } } }
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(); }