/// <summary> /// 一時保存ボタンのイベントハンドラ /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void BtnCommitClick(object sender, EventArgs e) { string outputDir = ProjectSetting.getVO().projectPath; StreamWriter swe = null; try { //BOM無しのUTF8でテキストファイルを作成する swe = new StreamWriter(outputDir + @"\elements\" + myElement.guid.Substring(1, 36) + "_changed.xml"); swe.WriteLine(@"<?xml version=""1.0"" encoding=""UTF-8""?> "); ElementXmlWriter.writeElementXml(myElement, 0, swe); btnCommit.Enabled = false; } catch (Exception exp) { MessageBox.Show(exp.Message); } finally { if (swe != null) { swe.Close(); } } savedElement = myElement; //メッセージボックスを表示する MessageBox.Show("クラスの変更内容をローカルファイルに記録しました", "確認", MessageBoxButtons.OK, MessageBoxIcon.Information); // this.Close(); }
/// <summary> /// マージXMLファイルの出力(要素) /// 2019年3月現在ではXMLの出力項目を統一するため、 /// 共通処理の ElementXmlWriter を呼び出すようにしている /// </summary> /// <param name="elements"></param> /// <param name="depth"></param> /// <param name="sw"></param> private void outputElements(List <ElementVO> elements, int depth, StreamWriter sw) { foreach (ElementVO elem in elements) { ElementXmlWriter.writeElementXml(elem, depth, sw); } }
/// <summary> /// 要素毎のXMLを elements 配下に出力する /// </summary> public void doMakeElementFiles() { // foreach (ArtifactVO atf in this.allArtifacts.getArtifactsExcludeImplModel()) { foreach (ElementVO elem in atf.getOwnElements()) { ElementXmlWriter.outputElementXmlFile(elem); // outputCSharpCode(elem); // ElementAsciidocWriter.doWrite(outputDir, elem); } } }
/// <summary> /// 要素毎のXMLを elements 配下に出力する /// </summary> public void doMakeElementFiles() { // outputElementXmlFile メソッドの出力先は ProjectPath 限定になるため、 // 先に作ったばかりのプロジェクトファイルをロードしておく string changedProjectFile = this.outputDir + "\\project.bdprj"; ProjectSetting.load(changedProjectFile); // foreach (ArtifactVO atf in this.outArtifacts) { foreach (ElementVO elem in atf.getOwnElements()) { if (elem.changed != ' ') { ElementXmlWriter.outputElementXmlFile(elem); } } } }
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(); }
void ButtonCommitCloseClick(object sender, EventArgs e) { EA.Repository repo = ProjectSetting.getVO().eaRepo; if (mergedElement == null) { MessageBox.Show("反映するべき差分が見つからなかったため、終了します"); return; } // 変更のあったメソッドを順にEAに反映する foreach (MethodVO m in mergedElement.methods) { MethodVO updMth = searchMethodByGuid(rightElement.methods, m.guid); if (m.changed == 'U') { execUpdateMethod(repo, updMth); } } // 反映後のEAから取得した要素オブジェクトの情報を elements 配下のXMLに反映する ElementVO refreshedElement = null; EA.Element eaElemObj = (EA.Element)repo.GetElementByGuid(mergedElement.guid); if (eaElemObj == null) { MessageBox.Show("EAから要素の取得に失敗しました。 異常終了しました。 GUID=" + mergedElement.guid); return; } else { refreshedElement = ObjectEAConverter.getElementFromEAObject(eaElemObj); } // 反映後のEAから取得した要素オブジェクトの情報を elements 配下のXMLに反映する StreamWriter elsw = null; string outputDir = ProjectSetting.getVO().projectPath; string elemFilePath = outputDir + @"\elements\" + refreshedElement.guid.Substring(1, 1) + @"\" + refreshedElement.guid.Substring(2, 1) + @"\" + refreshedElement.guid.Substring(1, 36) + ".xml"; try { //BOM無しのUTF8でテキストファイルを作成する elsw = new StreamWriter(elemFilePath); elsw.WriteLine(@"<?xml version=""1.0"" encoding=""UTF-8""?> "); ElementXmlWriter.writeElementXml(refreshedElement, 0, elsw); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { if (elsw != null) { elsw.Close(); } } // changedFile が存在したら削除する try { string changedElemFilePath = outputDir + @"\elements\" + refreshedElement.guid.Substring(1, 1) + @"\" + refreshedElement.guid.Substring(2, 1) + @"\" + refreshedElement.guid.Substring(1, 36) + "_changed.xml"; if (System.IO.File.Exists(changedElemFilePath)) { System.IO.File.Delete(changedElemFilePath); } } catch (Exception ex) { Console.WriteLine(ex.Message); } // 親フォームの再描画を依頼 ElementForm oya = (ElementForm)this.Owner; oya.repaint(refreshedElement); // XMLファイルをコミットするためにTortoiseGitを起動する //string exename = @"TortoiseGitProc.exe"; //string arguments = @"/command:commit /path:" + elemFilePath; //Process p = Process.Start( exename, arguments ); // 自分をクローズ this.Close(); }