X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Frequests%2FCollectionRequest.java;h=183717325bf0353a6d2a459d6b8577f914e3625e;hb=refs%2Fchanges%2F26%2F626%2F4;hp=70aa8c88b100b7547fccc29ddb8ca2c7d9c6ef01;hpb=75809ec96a58c23cc89131637fbc65435ac482af;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/requests/CollectionRequest.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/requests/CollectionRequest.java index 70aa8c88b..183717325 100644 --- a/bundles/org.simantics.modeling/src/org/simantics/modeling/requests/CollectionRequest.java +++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/requests/CollectionRequest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Association for Decentralized Information Management + * Copyright (c) 2007, 2017 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -27,7 +27,6 @@ import org.simantics.db.Resource; import org.simantics.db.common.request.ReadRequest; import org.simantics.db.common.request.ResourceRead; import org.simantics.db.common.utils.NameUtils; -import org.simantics.db.exception.AdaptionException; import org.simantics.db.exception.DatabaseException; import org.simantics.db.request.Read; import org.simantics.diagram.query.DiagramRequests; @@ -69,22 +68,6 @@ public class CollectionRequest implements Read { return g.syncRequest(new GetName(r)); } -// Collection getPartOfGroups(Resource diagram) throws DatabaseException { -// Resource r = diagram; -// Deque result = new ArrayDeque(); -// loop: -// while (true) { -// for (Resource partOf : g.getObjects(r, b.PartOf)) { -// if (g.isInstanceOf(partOf, dr.DiagramLibrary)) { -// result.addFirst(safeGetName(partOf)); -// r = partOf; -// continue loop; -// } -// } -// return result; -// } -// } - @Override public CollectionResult perform(ReadGraph g) throws DatabaseException { this.g = g; @@ -96,53 +79,22 @@ public class CollectionRequest implements Read { SIMU = SimulationResource.getInstance(g); final CollectionResult result = new CollectionResult(); - final Deque roots = new ArrayDeque(); + final Deque roots = new ArrayDeque<>(); // 1. Based on input, look for the proper nodes to start browsing for diagrams. for (Resource r : input) { - /*if (g.isInstanceOf(r, SIMU.Model)) { - // Complete models - Resource composite = g.getPossibleObject(r, SIMU.HasConfiguration); - Resource diagram = composite != null ? g.getPossibleObject(composite, mr.CompositeToDiagram) : null; - - if (DEBUG) - System.out.println("Model root"); - - if (composite != null) { - Node node = new Node(null, safeGetName(r), diagram, composite, r); - roots.add(node); - result.roots.add(roots.peekLast()); - } - } else*/ if (g.isInstanceOf(r, l0.IndexRoot)) { -// for(Resource type : ModelingUtils.searchByTypeShallow(g, r, sr.ComponentType)) { -// Resource composite = g.getPossibleObject(type, sr.IsDefinedBy); -// Resource diagram = composite != null ? g.getPossibleObject(composite, mr.CompositeToDiagram) : null; -// if(composite != null) { -// Node node = new Node(null, safeGetName(r), diagram, composite, r); -// roots.add(node); -// result.roots.add(roots.peekLast()); -// } -// } - - Node node = new Node(null, safeGetName(r), null, r); - roots.add(node); - result.roots.add(roots.peekLast()); - + if (g.isInstanceOf(r, l0.IndexRoot)) { + Node node = new Node(null, safeGetName(r), null, r); + roots.add(node); + result.roots.add(roots.peekLast()); } else if (g.isInstanceOf(r, sr.Composite)) { // The contents of components String name = null; Resource model = g.getPossibleObject(r, SIMU.IsConfigurationOf); - //Resource componentType = g.getPossibleObject(r, sr.Defines); if (model != null) { name = safeGetName(model); - if (DEBUG) System.out.println("Configuration root: " + name); - -// } else if (componentType != null) { -// Resource singleInstance = componentType != null ? g.getPossibleObject(componentType, b.HasSingleInstance) : null; -// name = singleInstance != null ? safeGetName(singleInstance) : safeGetName(componentType); -// System.out.println("Composite of component type root: " + name); } else { name = safeGetName(r); if (DEBUG) @@ -153,19 +105,10 @@ public class CollectionRequest implements Read { diagram = (diagram != null && g.isInstanceOf(diagram, dr.Composite)) ? diagram : null; { - Node node = new Node(null, name, diagram, r); - roots.add(node); - result.roots.add(roots.peekLast()); + Node node = new Node(null, name, diagram, r); + roots.add(node); + result.roots.add(roots.peekLast()); } -// } else if (g.isInstanceOf(r, sr.Component)) { -// // Complete components themselves -// Resource componentType = g.getSingleType(r, sr.Component); -// Resource composite = g.getPossibleObject(componentType, sr.IsDefinedBy); -// Resource diagram = (composite != null && g.isInstanceOf(composite, sr.Composite)) ? g.getPossibleObject(composite, mr.CompositeToDiagram) : null; -// String name = safeGetName(r); -// System.out.println("Component root: " + name); -// roots.add(new Node(null, name, diagram, composite, r)); -// result.roots.add(roots.peekLast()); } else if (g.isInheritedFrom(r, dr.DefinedElement)) { // Symbols Resource composite = g.getPossibleObject(r, sr.IsDefinedBy); @@ -176,21 +119,13 @@ public class CollectionRequest implements Read { name += " Symbol"; if (DEBUG) System.out.println("Symbol root: " + name); - - { - Node node = new Node(null, name, composite, r); - roots.add(node); - result.roots.add(roots.peekLast()); + + { + Node node = new Node(null, name, composite, r); + roots.add(node); + result.roots.add(roots.peekLast()); } } -// } else if (g.isInheritedFrom(r, sr.Component)) { -// // Reusable component types -// Resource composite = g.getPossibleObject(r, sr.IsDefinedBy); -// Resource diagram = (composite != null && g.isInstanceOf(composite, sr.Composite)) ? g.getPossibleObject(composite, mr.CompositeToDiagram) : null; -// String name = safeGetName(r); -// System.out.println("Component type root: " + name); -// roots.add(new Node(null, name, diagram, r, composite)); -// result.roots.add(roots.peekLast()); } } @@ -206,35 +141,41 @@ public class CollectionRequest implements Read { private void loadComposites(ReadGraph graph, final Node node) throws DatabaseException { Resource diagram = node.getDiagramResource(); - //System.out.println("loadComposites(" + diagram + ", " + node + ")"); - if (diagram != null) { + if (DEBUG) + System.out.println("loadComposites(" + diagram + ", " + node + ")"); + if (diagram != null) result.addDiagram(diagram, node); -// node.setPartOfGroups(getPartOfGroups(diagram)); - } mon.setWorkRemaining(1000); for(Resource r : graph.getObjects(node.getDefiningResources().resources[0], l0.ConsistsOf)) { - if(graph.isInstanceOf(r, sr.Composite)) { - String compositeName = graph.syncRequest(new GetName(r)); - Resource definingDiagram = graph.getPossibleObject(r, mr.CompositeToDiagram); - Node n = new Node(node, compositeName, definingDiagram, r); + if(graph.isInstanceOf(r, sr.Composite)) { + String compositeName = graph.syncRequest(new GetName(r)); + Resource definingDiagram = graph.getPossibleObject(r, mr.CompositeToDiagram); + Node n = new Node(node, compositeName, definingDiagram, r); + if (DEBUG) + System.out.println("Found composite: " + n); loadComposites(graph, n); mon.worked(1); - } else if (graph.isInstanceOf(r, l0.Library)) { - String compositeName = graph.syncRequest(new GetName(r)); - Node n = new Node(node, compositeName, null, r); + } else if (graph.isInstanceOf(r, l0.Library)) { + String compositeName = graph.syncRequest(new GetName(r)); + Node n = new Node(node, compositeName, null, r); + if (DEBUG) + System.out.println("Found library: " + n); loadComposites(graph, n); mon.worked(1); - } else if (graph.isInheritedFrom(r, sr.Component)) { - String name = safeGetName(r); - Node n = new Node(node, name, null, r); - loadComposites(graph, n); - mon.worked(1); - } + } else if (graph.isInheritedFrom(r, sr.Component)) { + Resource definedBy = graph.getPossibleObject(r, sr.IsDefinedBy); + if (definedBy == null) + continue; + String name = safeGetName(r); + Node n = new Node(node, name, null, r); + if (DEBUG) + System.out.println("Found component: " + n); + loadComposites(graph, n); + mon.worked(1); + } } - } - }); ILog log = Platform.getLog(Platform.getBundle(Plugin.PLUGIN_ID)); @@ -263,9 +204,8 @@ public class CollectionRequest implements Read { return result; } - - static class GetName extends ResourceRead { + static class GetName extends ResourceRead { public GetName(Resource resource) { super(resource); } @@ -274,11 +214,10 @@ public class CollectionRequest implements Read { public String perform(ReadGraph graph) throws DatabaseException { try { return NameLabelUtil.modalName(graph, resource); - } catch (AdaptionException e) { + } catch (DatabaseException e) { return NameUtils.getSafeName(graph, resource); } } - } } \ No newline at end of file