+ protected static Pair<Resource, Collection<Object>> findConfigurationAndObjects(ReadGraph graph, List<Resource> contexts) throws DatabaseException {
+ Layer0 L0 = Layer0.getInstance(graph);
+ DiagramResource DIA = DiagramResource.getInstance(graph);
+ StructuralResource2 STR = StructuralResource2.getInstance(graph);
+ ModelingResources MOD = ModelingResources.getInstance(graph);
+
+ for(Resource context : contexts) {
+ Set<Resource> types = graph.getTypes(context);
+ if (types.contains(DIA.Element)) {
+ Resource config = findConfigurationForElement(graph, context);
+ if (config != null) {
+ Collection<Object> elements = Collections.<Object>singleton(context);
+ return Pair.make(config, elements);
+ }
+ } else if (types.contains(STR.Component) && !types.contains(STR.Composite)) {
+ Resource config = graph.getPossibleObject(context, L0.PartOf);
+ if (config != null) {
+ return Pair.make(config, findElementObjects(graph, context));
+ }
+ } else if (types.contains(STR.Connection)) {
+ Resource element = graph.getPossibleObject(context, MOD.ConnectionToDiagramConnection);
+ if (element != null) {
+ Resource config = findConfigurationForElement(graph, element);
+ if (config != null) {
+ return Pair.make(config, Collections.<Object>singleton(element));
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ protected static Resource findConfigurationForElement(ReadGraph graph, Resource element) throws DatabaseException {
+ Layer0 L0 = Layer0.getInstance(graph);
+ ModelingResources MOD = ModelingResources.getInstance(graph);
+ Resource diagram = graph.getPossibleObject(element, L0.PartOf);
+ if (diagram == null) return null;
+ return graph.getPossibleObject(diagram, MOD.DiagramToComposite);
+ }
+
+ protected static Collection<Object> findElementObjects(ReadGraph g, Resource component) throws DatabaseException {
+ Collection<Object> result = findElementObjects(g, component, "");
+ ModelingResources MOD = ModelingResources.getInstance(g);
+ for (Resource element : g.getObjects(component, MOD.HasParentComponent_Inverse))
+ result.add(element);
+ return result;
+ }
+
+ public static Collection<Object> findElementObjects(ReadGraph g, Resource component, String rviFromComponent) throws DatabaseException {
+ Layer0 L0 = Layer0.getInstance(g);