private static void runOnLocalFileMode(string projectFile, string elemGuid) { // プロジェクトファイルの存在チェック if (System.IO.File.Exists(projectFile)) { // プロジェクト設定ファイルのロード ProjectSetting.load(projectFile); } else { MessageBox.Show("指定されたプロジェクトファイルが見つかりません"); return; } try { // 要素ファイルからGUIDで検索した結果を読み込む ElementVO elemvo = ElementsXmlReader.readElementFile(elemGuid); ElementForm elementForm = new ElementForm(ref elemvo); Application.Run(elementForm); } catch (Exception ex) { MessageBox.Show(ex.Message, "エラー発生"); } }
private void writeDiagramPlantUml(DiagramVO diag, StreamWriter sw) { sw.WriteLine("### ダイアグラム: " + diag.name); sw.WriteLine(""); sw.WriteLine("[plantuml, img-diag-" + diag.guid.Substring(1, 13) + ", svg]"); sw.WriteLine("--"); sw.WriteLine("@startuml"); var elemNameHash = new Dictionary <int, string>(); foreach (DiagramObjectVO diaObj in diag.diagramObjects) { // ダイアグラムオブジェクトのobjectIdをキーとしてt_elementから要素を取りに行く ElementSearchItem elemSearchItem = this.elementSearcher.findByElementId(diaObj.objectId); // 取得できなかったらインデックスに登録される対象の要素タイプではないので、class文を出す必要はない // と思っていたらNoteはインデックスに登録されており、Noteは本文をnameにする必要があるので別ロジック if (elemSearchItem != null) { // 要素の型が "Note" の場合のみ if (elemSearchItem.elemType == "Note") { // note 要素を出力する(ひとまず全てフローティングにしておく) ElementVO elem = ElementsXmlReader.readElementFile(elemSearchItem.elemGuid); sw.WriteLine("note \"" + filterNoteString(elem.notes) + "\" "); } else { // クラス図の中で表示されるクラス名を取得(空白を別の文字に置換するなど) string normalizedName = filterSpecialChar(elemSearchItem.elemName); // 接続線を引く時にこのクラス名を使う必要があるので、ID毎に名前をキャッシュしておく elemNameHash.Add(elemSearchItem.elementId, normalizedName); // class 文の出力 sw.WriteLine("class \"" + normalizedName + "\" " + getStereotypeStr(elemSearchItem.elemStereotype) + " {"); sw.WriteLine("}"); } } } // ダイアグラムリンク(ダイアグラム上で有効な接続)情報を元にPlantUMLの接続線を引く foreach (DiagramLinkVO diaLink in diag.diagramLinks) { // diagramLink の connectorId をキーとして Connector情報を取得 List <ConnectorVO> conns = this.connSearcher.findByConnectorId(diaLink.connectorId); ConnectorVO targetConn = null; if (conns.Count > 0) { targetConn = conns[0]; outputSrcConnectLine(targetConn, sw); } } sw.WriteLine("@enduml"); sw.WriteLine("--"); sw.WriteLine(""); }
/// <summary> /// 引数の要素リストをなめ、その中に変更済(_changed)があればその内容で置き換えて返却する。 /// このツール内で振る舞いを修正し、保存してあるとパスのelements内に変更済み(#GUID#_changed.xml)ファイルが作成されている。 /// 成果物オブジェクトを作成した時は一旦変更済みファイルを無視して読み込まれるため、この処理で変更済みファイルを読み込み、 /// リスト内の要素を変更済みのに置き換えて返却する。 /// </summary> /// <param name="srcList"></param> /// <returns></returns> private List <ElementVO> replaceElementIfExistChangedData(List <ElementVO> srcList) { List <ElementVO> outList = new List <ElementVO>(); foreach (ElementVO e in srcList) { if (ElementsXmlReader.existChangedElementFile(e.guid)) { outList.Add(ElementsXmlReader.readChangedElementFile(e.guid)); } else { outList.Add(e); } } return(outList); }
/// <summary> /// 操作の所属クラスの接続要素を取得する /// </summary> /// <param name="method">EA.Method</param> public IList <CrossReference> GetConnectionClassList() { IList <CrossReference> crList = new List <CrossReference>(); ElementsXmlReader elemReader = new ElementsXmlReader(ProjectSetting.getVO().projectPath); foreach (ConnectorVO convo in this.element.connectors) { CrossReference cref = new CrossReference(); cref.Name = convo.targetObjName; cref.ElementGUID = convo.targetObjGuid; ElementVO destObject = elemReader.readElementByGUID(cref.ElementGUID); // タイプ cref.Type = convo.connectorType; // コメント // cref.Notes = connector.Notes; cref.Notes = destObject.notes; // パッケージ // cref.PackageName = repository.GetPackageByID(targetElement.PackageID).Name; cref.PackageName = "packageName"; // 属性・操作一覧 cref.AttributesMethods = this.GetAttributesMethodsFromElement(destObject); // クラスフラグ cref.classflg = false; // 削除権限フラグ cref.CanDelete = false; crList.Add(cref); } return(crList); }
public ElementForm(ref ElementVO element) { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); // changed のXMLファイルが存在する場合はそちらを読み込む if (ElementsXmlReader.existChangedElementFile(element.guid)) { element = ElementsXmlReader.readChangedElementFile(element.guid); } // このフォームを開いた時点の要素を保存 savedElement = element; // このフォーム内で変更されうる要素オブジェクトはクローンで作成 myElement = element.Clone(); // this.Text = myElement.eaType + " " + myElement.name + " " + myElement.guid; if (ProjectSetting.getEARepo() == null) { buttonViewDiff.Enabled = false; } else { buttonViewDiff.Enabled = true; } // 初期状態で一時保存ボタンは使用不可 btnCommit.Enabled = false; setElementItems(myElement); }