void getElementFromEA( ) { EA.Repository repo = ProjectSetting.getEARepo(); EA.ObjectType otype = repo.GetContextItemType(); if (otype == EA.ObjectType.otElement) { // Code for when an element is selected EA.Element eaElemObj = (EA.Element)repo.GetContextObject(); if (eaElemObj != null && (eaElemObj.Type == "Class" || eaElemObj.Type == "Enumeration")) { ElementVO eaElement = ObjectEAConverter.getElementFromEAObject(eaElemObj); textBoxElementName.Text = eaElement.name; targetElement = eaElement; } else { textBoxElementName.Text = "(EA上でクラスを選択してください)"; targetElement = null; } } else { textBoxElementName.Text = "(EA上でクラスを選択してください)"; targetElement = null; } }
/// <summary> /// 変更差分確認ボタンのクリックイベント /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void ButtonViewDiffClick(object sender, EventArgs e) { EA.Repository repo = ProjectSetting.getVO().eaRepo; EA.Element eaElemObj = (EA.Element)repo.GetElementByGuid(myElement.guid); ElementVO eaElement = ObjectEAConverter.getElementFromEAObject(eaElemObj); // 差分フォームを開く DiffElementForm diffForm = new DiffElementForm(eaElement, ref myElement); diffForm.ShowDialog(this); diffForm.Dispose(); }
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(); }