示例#1
0
 internal void Initialize()
 {
     DeviceList.Clear();
     ComponentList.Clear();
     ExecutionEnvironmentList.Clear();
     NodeList.Clear();
 }
示例#2
0
 // ルートデバイスを返す
 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)));
 }
示例#3
0
        // 配置図の要素が属している実行環境の取得
        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));
        }
示例#4
0
        // 図から必要な要素を取得し、リストを作成する
        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));
        }