]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling/src/org/simantics/modeling/requests/CollectionRequest.java
Improved PDF diagram export wizard user experience
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / requests / CollectionRequest.java
index 70aa8c88b100b7547fccc29ddb8ca2c7d9c6ef01..183717325bf0353a6d2a459d6b8577f914e3625e 100644 (file)
@@ -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<CollectionResult> {
         return g.syncRequest(new GetName(r));
     }
 
-//    Collection<String> getPartOfGroups(Resource diagram) throws DatabaseException {
-//        Resource r = diagram;
-//        Deque<String> result = new ArrayDeque<String>();
-//        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<CollectionResult> {
         SIMU = SimulationResource.getInstance(g);
 
         final CollectionResult result = new CollectionResult();
-        final Deque<Node> roots = new ArrayDeque<Node>();
+        final Deque<Node> 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<CollectionResult> {
                 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<CollectionResult> {
                     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<CollectionResult> {
 
             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<CollectionResult> {
 
         return result;
     }
-    
-    static class GetName extends ResourceRead<String> {
 
+    static class GetName extends ResourceRead<String> {
         public GetName(Resource resource) {
             super(resource);
         }
@@ -274,11 +214,10 @@ public class CollectionRequest implements Read<CollectionResult> {
         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