public virtual ModelEntity.Connector Connect(ModelEntity.Element source, ModelEntity.Element target, ConnectorStereotype stereotype) { if (stereotype.Type == ConnectorType.Association && (source.Type.Equals(ElementType.Package.Name) || target.Type.Equals(ElementType.Package.Name))) { // seems strange but it's true; EA crashes if you try to create such a connection! Thus, we stop before it's getting really ugly. throw new ApplicationException(String.Format("Cannot create connection {0} - {1} - {2}", source, stereotype.Name, target)); } var c = source.EaObject.Connectors.AddNew("", stereotype.Type.Name) as EA.Connector; c.Stereotype = stereotype.Name; c.SupplierID = target.Id; try { c.Update(); } catch (Exception e) { throw new ApplicationException(c.GetLastError(), e); } SpecifyComposition(stereotype, c); SpecifyNavigateability(stereotype, c); source.EaObject.Connectors.Refresh(); target.EaObject.Connectors.Refresh(); return(Wrapper.Wrap(c)); }
public virtual Option <ModelEntity.Element> Instantiate(ModelEntity.Element classifier, ModelEntity.Package package, IEnumerable <ElementStereotype> stereotypes) { return((from stype in classifier.GetStereotype(stereotypes) from instanceType in stype.InstanceType let e = Create("", instanceType, package) select e) .Select(e => { e.EaObject.ClassifierID = classifier.Id; e.EaObject.Update(); return e; })); }
public ModelEntity.Package FindPackageContaining(ModelEntity.Element element) { return(GetPackage(element.EaObject.PackageID).Value); }