Ejemplo n.º 1
0
        private void ConvertEaDataToSpecifNodeRecursively(EADM.Element currentElement, Node parentNode)
        {
            string eaSpecIfID = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(currentElement.ElementGUID);

            string specIfResourceID       = eaSpecIfID;
            string specIfResourceRevision = "1";


            if (currentElement.TaggedValues.Exists(tv => tv.Name == "specifId"))
            {
                specIfResourceID       = currentElement.TaggedValues.First(tv => tv.Name == "specifId").Value;
                specIfResourceRevision = currentElement.TaggedValues.First(tv => tv.Name == "specifRevision").Value;
            }

            Node node = new Node()
            {
                ResourceReference = new Key(specIfResourceID, specIfResourceRevision),
                Description       = new List <MultilanguageText> {
                    new MultilanguageText(currentElement.ToString())
                },
                ID = eaSpecIfID + "_Node"
            };

            parentNode.Nodes.Add(node);

            foreach (EADM.Element childElement in currentElement.Elements)
            {
                ConvertEaDataToSpecifNodeRecursively(childElement, node);
            }
        }
        public SpecIfMetadata CreateMetaDataForDiagramObject(EAAPI.DiagramObject diagramObject,
                                                             EAAPI.Element element)
        {
            SpecIfMetadata result = new SpecIfMetadata();

            Shape shape = new Shape
            {
                Bounds            = new Bounds(),
                ResourceReference = new ResourceReference
                {
                    IdReference       = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(element.ElementGUID),
                    RevisionReference = EaDateToRevisionConverter.ConvertDateToRevision(element.Modified)
                }
            };

            int recatangleWidth = (diagramObject.right - diagramObject.left);
            int rectangleHeight = (-diagramObject.bottom) - (-diagramObject.top);

            shape.Bounds.X      = diagramObject.left;
            shape.Bounds.Y      = (diagramObject.top * -1);
            shape.Bounds.Width  = recatangleWidth;
            shape.Bounds.Height = rectangleHeight;

            result.Shape = shape;

            return(result);
        }
        public SpecIfMetadata CreateMetaDataForDiagramLink(EAAPI.DiagramLink diagramLink,
                                                           EAAPI.Connector connector,
                                                           EAAPI.DiagramObject sourceDiagramObject,
                                                           EAAPI.DiagramObject targetDiagramObject,
                                                           EAAPI.Element sourceElement,
                                                           EAAPI.Element targetElement)

        {
            SpecIfMetadata result = new SpecIfMetadata();

            EAAPI.Element srcElement  = sourceElement;
            EAAPI.Element trgtElement = targetElement;

            string directionAttribute = null; // unspecified

            if (connector.Direction == "Source -> Destination")
            {
                directionAttribute = "unidirectional";
            }
            else if (connector.Direction == "Destination -> Source")
            {
                srcElement         = targetElement;
                trgtElement        = sourceElement;
                directionAttribute = "unidirectional";
            }
            else if (connector.Direction == "Bi-Directional")
            {
                directionAttribute = "bidirectional";
            }

            Edge edge = new Edge
            {
                Waypoints  = new List <Waypoint>(),
                References = new List <SpecIfReferenceBase>(),
                SourceResourceReference = new ResourceReference
                {
                    IdReference       = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(srcElement.ElementGUID),
                    RevisionReference = EaDateToRevisionConverter.ConvertDateToRevision(srcElement.Modified)
                },
                TargetResourceReference = new ResourceReference
                {
                    IdReference       = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(trgtElement.ElementGUID),
                    RevisionReference = EaDateToRevisionConverter.ConvertDateToRevision(trgtElement.Modified)
                },
                Direction = directionAttribute
            };

            edge.Waypoints = CalculateWaypointsForDiagramLink(diagramLink, sourceDiagramObject, targetDiagramObject);

            result.Edge = edge;

            return(result);
        }
Ejemplo n.º 4
0
        private void ConvertElementToNodeRecursively(EAAPI.Element element, List <Node> parentNodeList)
        {
            Node elementNode = new Node()
            {
                ID                = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(element.ElementGUID + "-NODE"),
                Revision          = "1",
                NodeReferences    = new List <Key>(),
                ResourceReference = new Key()
                {
                    ID       = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(element.ElementGUID),
                    Revision = "1"
                }
            };

            parentNodeList.Add(elementNode);

            elementNode.Nodes = new List <Node>();

            for (short count = 0; count < element.Elements.Count; count++)
            {
                EAAPI.Element childElement = element.Elements.GetAt(count) as EAAPI.Element;

                ConvertElementToNodeRecursively(childElement, elementNode.Nodes);
            }


            for (short embeddedElementsCount = 0; embeddedElementsCount < element.EmbeddedElements.Count; embeddedElementsCount++)
            {
                EAAPI.Element embeddedElement = element.EmbeddedElements.GetAt(embeddedElementsCount) as EAAPI.Element;

                Node embeddedElementNode = new Node()
                {
                    ID                = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(embeddedElement.ElementGUID + "-NODE"),
                    Revision          = "1",
                    NodeReferences    = new List <Key>(),
                    ResourceReference = new Key()
                    {
                        ID       = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(embeddedElement.ElementGUID),
                        Revision = "1"
                    }
                };

                if (elementNode.Nodes == null)
                {
                    elementNode.Nodes = new List <Node>();
                }

                elementNode.Nodes.Add(embeddedElementNode);
            }
        }
Ejemplo n.º 5
0
        public Node ConvertPackageToHierarchy(EAAPI.Package eaPackage)
        {
            Node result = new Node();

            Resource resource = new Resource();

            resource.ID         = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(eaPackage.Element.ElementGUID);
            resource.Title      = new Value(eaPackage.Name);
            resource.Class      = new Key("RC-Folder", "1");
            resource.Properties = new List <Property>();

            result.Nodes = new List <Node>();

            for (short count = 0; count < eaPackage.Packages.Count; count++)
            {
                EAAPI.Package childPackage = eaPackage.Packages.GetAt(count) as EAAPI.Package;

                Node childNode = new Node()
                {
                    ID                = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(childPackage.Element.ElementGUID + "-NODE"),
                    Revision          = SpecIfGuidGenerator.CreateNewSpecIfGUID(),
                    NodeReferences    = new List <Key>(),
                    ResourceReference = new Key()
                    {
                        ID       = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(childPackage.Element.ElementGUID),
                        Revision = SpecIfGuidGenerator.CreateNewSpecIfGUID()
                    }
                };

                ConvertPackageToHierarchyRecursively(childPackage, childNode);

                result.Nodes = new List <Node>();
                result.Nodes.Add(childNode);
            }

            for (short count = 0; count < eaPackage.Elements.Count; count++)
            {
                EAAPI.Element element = eaPackage.Elements.GetAt(count) as EAAPI.Element;

                ConvertElementToNodeRecursively(element, result.Nodes);
            }

            return(result);
        }
Ejemplo n.º 6
0
        private void ConvertPackageToHierarchyRecursively(EAAPI.Package eaPackage, Node node)
        {
            for (short count = 0; count < eaPackage.Packages.Count; count++)
            {
                EAAPI.Package childPackage = eaPackage.Packages.GetAt(count) as EAAPI.Package;

                Node childNode = new Node()
                {
                    ID                = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(childPackage.Element.ElementGUID + "-NODE"),
                    Revision          = SpecIfGuidGenerator.CreateNewSpecIfGUID(),
                    NodeReferences    = new List <Key>(),
                    ResourceReference = new Key()
                    {
                        ID       = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(childPackage.Element.ElementGUID),
                        Revision = SpecIfGuidGenerator.CreateNewSpecIfGUID()
                    }
                };

                node.Nodes = new List <Node>();
                node.Nodes.Add(childNode);

                ConvertPackageToHierarchyRecursively(childPackage, childNode);
            }

            // diagrams
            //for (short count = 0; count < eaPackage.Diagrams.Count; count++)
            //{

            //}

            // elements
            for (short count = 0; count < eaPackage.Elements.Count; count++)
            {
                EAAPI.Element element = eaPackage.Elements.GetAt(count) as EAAPI.Element;

                ConvertElementToNodeRecursively(element, node.Nodes);
            }
        }
        public SpecIfMetadata CreateMetaDataForDiagram(EAAPI.Diagram diagram, int height, int width)
        {
            SpecIfMetadata result = new SpecIfMetadata();

            Shape shape = new Shape
            {
                Bounds = new Bounds
                {
                    X      = 0,
                    Y      = 0,
                    Width  = width,
                    Height = height
                },
                ResourceReference = new ResourceReference
                {
                    IdReference       = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(diagram.DiagramGUID),
                    RevisionReference = EaDateToRevisionConverter.ConvertDateToRevision(diagram.ModifiedDate),
                }
            };

            result.Shape = shape;

            return(result);
        }
Ejemplo n.º 8
0
        public Resource ConvertElementToResource(EAAPI.Element eaElement)
        {
            Resource result;

            result = new Resource();

            if (eaElement != null)
            {
                result.ID = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(eaElement.ElementGUID);

                result.Revision = "1";

                result.ChangedAt = eaElement.Modified;

                result.ChangedBy = eaElement.Author;

                result.Class = new Key("RC-Requirement", "1");

                result.Properties = new List <Property>();

                string name = eaElement.Name;

                string classifierName = eaElement.GetClassifierName(_repository);

                if (!string.IsNullOrEmpty(classifierName))
                {
                    if (name == "")
                    {
                        name = classifierName;
                    }
                    else
                    {
                        name += " : " + classifierName;
                    }
                }

                result.Title = new Value(name);

                Property nameProperty = new Property
                {
                    Title         = new Value("dcterms:title"),
                    PropertyClass = new Key("AT-Req-Name", "1"),
                    Value         = new Value
                    {
                        LanguageValues = new List <LanguageValue>
                        {
                            new LanguageValue
                            {
                                Text = name
                            }
                        }
                    },
                    ID        = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(eaElement.ElementGUID + "_NAME"),
                    ChangedAt = eaElement.Modified,
                    ChangedBy = eaElement.Author
                };

                result.Properties.Add(nameProperty);

                Property notesProperty = new Property
                {
                    Title         = new Value("dcterms:description"),
                    PropertyClass = new Key("PC-Text", "1"),
                    Value         = new Value
                    {
                        LanguageValues = new List <LanguageValue>
                        {
                            new LanguageValue
                            {
                                Text = eaElement.Notes
                            }
                        }
                    },
                    ID        = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(eaElement.ElementGUID + "_NOTES"),
                    ChangedAt = eaElement.Modified,
                    ChangedBy = eaElement.Author
                };



                result.Properties.Add(notesProperty);


                string stereotype = eaElement.Stereotype;

                if (eaElement.Type == "Requirement")
                {
                    result.Class = new Key("RC-Requirement", "1");

                    string identifier = eaElement.GetTaggedValueString("Identifier");

                    if (!string.IsNullOrEmpty(identifier))
                    {
                        Property identifierProperty = new Property
                        {
                            Title         = new Value("dcterms:identifier"),
                            PropertyClass = new Key("PC-VisibleId", "1"),
                            Value         = new Value
                            {
                                LanguageValues = new List <LanguageValue>
                                {
                                    new LanguageValue
                                    {
                                        Text = identifier
                                    }
                                }
                            },
                            ID        = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(eaElement.ElementGUID + "_IDENTIFIER"),
                            ChangedAt = eaElement.Modified,
                            ChangedBy = eaElement.Author
                        };

                        result.Properties.Add(identifierProperty);
                    }

                    string status = eaElement.Status;

                    string statusID = "";

                    switch (status)
                    {
                    case "00_rejected":
                        statusID = "V-Status-1";
                        break;

                    case "10_initial":
                        statusID = "V-Status-2";
                        break;

                    case "20_drafted":
                        statusID = "V-Status-3";
                        break;

                    case "30_submitted":
                        statusID = "V-Status-4";
                        break;

                    case "40_approved":
                        statusID = "V-Req-Status-3";
                        break;
                    }

                    if (!string.IsNullOrEmpty(statusID))
                    {
                        Property statusProperty = new Property
                        {
                            Title         = new Value("SpecIF:Status"),
                            PropertyClass = new Key("PC-Status", "1"),
                            Value         = new Value
                            {
                                LanguageValues = new List <LanguageValue>
                                {
                                    new LanguageValue
                                    {
                                        Text = statusID
                                    }
                                }
                            },
                            ID        = EaSpecIfGuidConverter.ConvertEaGuidToSpecIfGuid(eaElement.ElementGUID + "_STATUS"),
                            ChangedAt = eaElement.Modified,
                            ChangedBy = eaElement.Author
                        };

                        result.Properties.Add(statusProperty);
                    }
                }
                else if (eaElement.Type == "Package")
                {
                    result.Class = new Key("RC-Folder", "1");
                }
                else if (eaElement.Type == "Object")
                {
                    if (stereotype == "agent" || stereotype == "human agent")
                    {
                        result.Class = new Key("RC-Actor", "1");
                    }
                    else if (stereotype == "storage")
                    {
                        result.Class = new Key("RC-State", "1");
                    }
                    else if (stereotype == "heading")
                    {
                        result.Class = new Key("RC-Folder", "1");
                    }
                }
                else if (eaElement.Type == "Actor")
                {
                    result.Class = new Key("RC-Actor", "1");
                }
                else if (eaElement.Type == "Port")
                {
                    if (stereotype == "channel")
                    {
                        //result.ResourceClass = "OT-Channel";
                    }
                }
            }

            return(result);
        }