コード例 #1
0
        public Model ToModel(ModelEntity.Package package)
        {
            var elements = (from p in package.SubPackages
                            from e in p.Elements
                            select new Element
            {
                tpe = e.MetaType,
                path = MkSegments(e, package),
                attributes = MkAttributes(e)
            });


            var relations = (from p in package.SubPackages
                             from e in p.Elements
                             from c in e.Connectors
                             from source in c.Source(repo.GetElement)
                             from target in c.Target(repo.GetElement)
                             select Tuple.Create(c.MetaType, source, target))
                            .Distinct()
                            .Select(r => new Relation
            {
                tpe   = r.Item1,
                @from = MkSegments(r.Item2, package),
                to    = MkSegments(r.Item3, package)
            });

            return(new Model
            {
                root = MkSegments(package),
                elements = elements,
                relations = relations
            });
        }
コード例 #2
0
 private ProblemSpaceTree(
     ModelEntity.Package package,
     Option <ModelEntity.Package> packageInstance,
     IEnumerable <ElementInstantiation> instantiations,
     IEnumerable <ModelEntity.Diagram> diagrams,
     IEnumerable <ProblemSpaceTree> children)
 {
     Package               = package;
     PackageInstance       = packageInstance;
     ElementInstantiations = instantiations.Run();
     Diagrams              = diagrams.Run();
     Children              = children.Run();
 }
コード例 #3
0
        private IImmutableList <String> MkSegments(ModelEntity e, ModelEntity.Package root = null)
        {
            if (Options.Some(e).Equals(Options.Some(root)))
            {
                return(ImmutableList.Create <String>());
            }
            else
            {
                var pre = (from parent in e.GetParent(repo.GetPackage)
                           select MkSegments(parent, root));

                return(pre.Fold(prefix => prefix.Add(e.Name), () => ImmutableList.Create(e.Name)));
            }
        }
コード例 #4
0
        public static ProblemSpaceTree Create(ModelEntity.Package problemSpacePackage)
        {
            var instantiations = from element in problemSpacePackage.Elements
                                 where element is OptionEntity || element is Problem
                                 select new ElementInstantiation(element);
            var diagrams = from diagram in problemSpacePackage.Diagrams
                           where diagram.Is(DiagramTypes.ProblemSpace)
                           select diagram;
            var children = from childPackage in problemSpacePackage.Packages
                           let childTree = Create(childPackage)
                                           where childTree.AllInstantiations().Any()
                                           select childTree;

            return(new ProblemSpaceTree(problemSpacePackage, Options.None <ModelEntity.Package>(), instantiations, diagrams, children));
        }
コード例 #5
0
        public SolutionInstantiationGraph InstantiateSelectedItems(ModelEntity.Package package)
        {
            var newGraph = Graph.MapNodeLabels(problemItem =>
            {
                if (problemItem.Selected)
                {
                    return(problemItem.CreateInstanceIfMissing(Repo, package));
                }
                else
                {
                    return(problemItem);
                }
            });

            return(new SolutionInstantiationGraph(Repo, newGraph));
        }
コード例 #6
0
        private IEnumerable <ModelEntity> CollectChildren(ModelEntity.Package package)
        {
            var packages = from p in package.SubPackages
                           select p;

            var elements = from p in package.SubPackages
                           from e in p.Elements
                           select e;

            var connectors = from e in elements
                             from c in e.Connectors
                             select c;

            return(packages
                   .Concat <ModelEntity>(elements)
                   .Concat <ModelEntity>(connectors)
                   .Distinct());
        }
コード例 #7
0
ファイル: XmlExporter.cs プロジェクト: yjstyle/ADMentor
            public void WithXmlExporter(ModelEntity.Package package, Action <XmlExporter> act)
            {
                var project = EaRepo.Val.GetProjectInterface();

                var tempPath = Path.GetTempFileName();
                var xmlGuid  = project.GUIDtoXML(package.Guid);

                project.ExportPackageXMI(xmlGuid, EA.EnumXMIType.xmiEA11, 1, 0, 1, 0, tempPath);
                using (var reader = XmlReader.Create(tempPath))
                {
                    var doc = XDocument.Load(reader);

                    var namespaceManager = new XmlNamespaceManager(reader.NameTable);
                    namespaceManager.AddNamespace("UML", "omg.org/UML1.3");

                    var exporter = new XmlExporter(doc, namespaceManager, project, Repo);

                    act(exporter);
                }

                File.Delete(tempPath);
            }
コード例 #8
0
 public ElementInstantiation CreateInstanceIfMissing(ModelEntityRepository repo, ModelEntity.Package package)
 {
     return(Instance.Fold(
                _ => this,
                () => Copy(instance: repo.Instantiate(Element, package, ADTechnology.Technologies.AD.ElementStereotypes))));
 }
コード例 #9
0
ファイル: AdRepository.cs プロジェクト: yjstyle/ADMentor
 public override Option <ModelEntity.Element> Instantiate(ModelEntity.Element classifier, ModelEntity.Package package, IEnumerable <EAAddInBase.MDGBuilder.ElementStereotype> stereotypes)
 {
     return(base.Instantiate(classifier, package, stereotypes).Select(instance =>
     {
         instance.TryCast <AdEntity>().Do(adInstance =>
         {
             adInstance.CopyDataFromClassifier(GetElement);
         });
         return instance;
     }));
 }