internal void Initialize() { DeviceList.Clear(); ComponentList.Clear(); ExecutionEnvironmentList.Clear(); NodeList.Clear(); }
// ルートデバイスを返す internal Device GetRootDevice(DeployDiagramObject DeployDiagramObject) { // 親がExecutionEnvitomnentObjectなら現在のデバイスがルートデバイスなのでreturn if (ExecutionEnvironmentList.Any(ExecutionEnvironment => ExecutionEnvironment.ID == DeployDiagramObject.ParentID)) { return(DeployDiagramObject as Device); } return(GetRootDevice(DeviceList.Single(Device => Device.ID == DeployDiagramObject.ParentID))); }
// 配置図の要素が属している実行環境の取得 internal ExecutionEnvironment GetExecutionEnvironment(EA.Repository Repository, DeployDiagramObject DeployDiagramObject) { var diagram = Repository.GetCurrentDiagram(); var diagramObject = diagram.GetDiagramObjectByID(DeployDiagramObject.ParentID, ""); if (DeviceList.Where(Device => Device.ID == DeployDiagramObject.ParentID).Any()) { return(GetExecutionEnvironment(Repository, DeviceList.Single(Device => Device.ID == DeployDiagramObject.ParentID))); } return(ExecutionEnvironmentList.Single(ExecutionEnvironment => ExecutionEnvironment.ID == DeployDiagramObject.ParentID)); }
// 図から必要な要素を取得し、リストを作成する internal void LoadDeployDiagramObjectsInformation(EA.Repository Repository) { // ノードの配置に関するモデルの作成,親をたどることにより必要な情報を入手 // 配置図の要素を環境、デバイス、ノード、コンポーネントのリストに格納 EA.Diagram diagram = Repository.GetCurrentDiagram(); var TmpCommunicationList = new List <Communication>(); for (short i = 0; i < diagram.DiagramObjects.Count; i++) { DiagramObject diagramObject = diagram.DiagramObjects.GetAt(i); Element element = Repository.GetElementByID(diagramObject.ElementID); var ConnectorList = new List <Connector>(); var xdoc = element.Notes.ToXDocument(); switch (element.MetaType) { case "ExecutionEnvironment": ExecutionEnvironmentList.Add(new ExecutionEnvironment(element.Name, element.ElementID, element.ParentID, xdoc)); break; case "Device": // デバイスが保持している接続を取得 for (short j = 0; j < element.Connectors.Count; j++) { Connector connector = element.Connectors.GetAt(j); ConnectorList.Add(connector); TmpCommunicationList.Add(new Communication(connector.Name, connector.ConnectorID, connector.DiagramID, connector.Notes.ToXDocument())); } DeviceList.Add(new Device(element.Name, element.ElementID, element.ParentID, xdoc, element.Stereotype, ConnectorList)); break; case "Node": NodeList.Add(new Node(element.Name, element.ElementID, element.ParentID, xdoc)); break; case "Component": ComponentList.Add(new Component(element.Name, element.ElementID, element.ParentID, xdoc)); break; } } TmpCommunicationList.GroupBy(communication => communication.Name) .Select(x => x.FirstOrDefault()) .ToList() .ForEach(Communication => CommunicationList.Add(Communication)); }