public Diagram<T> fromExisting(ReadGraph g, Resource diagram) throws DatabaseException {
ModelingResources m = ModelingResources.getInstance(g);
StructuralResource2 s = StructuralResource2.getInstance(g);
+ DiagramResource d = DiagramResource.getInstance(g);
Resource composite = null;
if (g.isInstanceOf(diagram, s.Composite)) {
composite = diagram;
diagram = g.getPossibleObject(composite, m.CompositeToDiagram);
if (diagram == null)
return null;
+ } else if (g.isInheritedFrom(diagram, d.DefinedElement)) {
+ // TODO : Defined Element behaves differently to regular configuration diagrams; should we have separate implementation?
+ composite = diagram;
+ diagram = g.getPossibleObject(composite, s.IsDefinedBy);
+ if (diagram == null)
+ return null;
} else {
composite = g.getPossibleObject(diagram, m.DiagramToComposite);
if (composite == null)
+
+
/**
* Returns diagram type from composite type
* @param g
public T getSymbol(ReadGraph g, Resource element) throws DatabaseException {
ModelingResources mr = ModelingResources.getInstance(g);
DiagramResource dr = DiagramResource.getInstance(g);
+ StructuralResource2 s = StructuralResource2.getInstance(g);
if (g.isInstanceOf(element, dr.Element))
return getSymbol(g, element, g.getPossibleObject(element, mr.ElementToComponent));
+ else if (g.isSubrelationOf(element, s.IsConnectedTo)) {
+ // TODO : Defined Element
+ return getSymbol(g, g.getSingleObject(element, dr.HasConnectionPoint_Inverse),element);
+ }
else
return getSymbol(g, g.getSingleObject(element, mr.ComponentToElement), element);
}