]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling/src/org/simantics/modeling/mapping/ComponentAndElementCopyHandler.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / mapping / ComponentAndElementCopyHandler.java
index 10b5b09b7e66ec109659c481c2c7912b4079929b..fcf13e3a901aff0ff9c87d9a34457b16b3b72995 100644 (file)
-package org.simantics.modeling.mapping;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collection;\r
-\r
-import org.simantics.databoard.Bindings;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.common.NamedResource;\r
-import org.simantics.db.common.utils.OrderedSetUtils;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.layer0.adapter.impl.DefaultCopyHandler;\r
-import org.simantics.db.layer0.util.TransferableGraphConfiguration2;\r
-import org.simantics.diagram.stubs.DiagramResource;\r
-import org.simantics.layer0.Layer0;\r
-import org.simantics.modeling.ModelingResources;\r
-import org.simantics.structural.stubs.StructuralResource2;\r
-\r
-\r
-/**\r
- * Copy handler for Component and it's Element.\r
- * \r
- * FIXME: Requires patched ModelTransferableGraphSourceRequest\r
- * \r
- *  in classifyPredicates(), excluded resources must be filtered. Otherwise the code fails with :Diagram.hasInverse having no URI.\r
- *  \r
- *  Resource predicate = stm.getPredicate();\r
- *     Resource object = stm.getObject();              \r
- *     if (exclusions.contains(object) || exclusions.contains(predicate))\r
- *             continue; \r
- *\r
- * \r
- * @author Marko Luukkainen <marko.luukkainen@vtt.fi>\r
- *\r
- */\r
-public class ComponentAndElementCopyHandler extends DefaultCopyHandler{\r
-\r
-       protected boolean includeComponent = true;\r
-       protected boolean includeElement = true;\r
-       \r
-       public ComponentAndElementCopyHandler(Resource resource) {\r
-               super(resource);\r
-       }\r
-       \r
-       /**\r
-        * \r
-        * @param resource Component, if component is included. Otherwise the Element.\r
-        * @param includeComponent\r
-        * @param includeElement\r
-        */\r
-       public ComponentAndElementCopyHandler(Resource resource, boolean includeComponent, boolean includeElement) {\r
-               super(resource);\r
-               if (!includeComponent && !includeElement)\r
-                       throw new IllegalArgumentException();\r
-               this.includeComponent = includeComponent;\r
-               this.includeElement = includeElement;\r
-       }\r
-       \r
-       \r
-\r
-       \r
-       @Override\r
-       protected TransferableGraphConfiguration2 createConfiguration(ReadGraph graph, boolean cut) throws DatabaseException {\r
-       ModelingResources MR = ModelingResources.getInstance(graph);\r
-\r
-       ArrayList<Resource> exclusions = new ArrayList<Resource>();\r
-\r
-       ArrayList<NamedResource> roots = new ArrayList<NamedResource>();\r
-       \r
-       Resource component = null;\r
-       Resource element = null;\r
-       \r
-       if (includeComponent) {\r
-               component = getResource();\r
-               element = graph.getPossibleObject(component, MR.ComponentToElement);\r
-       } else {\r
-               element = getResource();\r
-               component = graph.getPossibleObject(element, MR.ElementToComponent);\r
-       }\r
-               // Include component as root\r
-       if (component != null) {\r
-               processComponent(graph, component, includeComponent, roots, exclusions);\r
-       }\r
-               \r
-           if (element != null) {\r
-               processElement(graph, element, includeElement, roots, exclusions);\r
-           }\r
-           \r
-       return TransferableGraphConfiguration2.createWithNames(graph, roots, exclusions, true, false);\r
-       }\r
-       \r
-       protected void processComponent(ReadGraph graph, Resource component, boolean includeComponent, ArrayList<NamedResource> roots, ArrayList<Resource> exclusions) throws DatabaseException {\r
-               Layer0 L0 = Layer0.getInstance(graph);\r
-       StructuralResource2 SR = StructuralResource2.getInstance(graph);\r
-       Resource resource = getResource();\r
-               if (includeComponent) {\r
-                       String rootName = graph.getRelatedValue(resource, L0.HasName, Bindings.STRING);\r
-                       roots.add(new NamedResource(rootName, resource));\r
-               } else {\r
-                       exclusions.add(component);\r
-               }\r
-\r
-               // filter connections\r
-               for (Resource connection : graph.getObjects(resource, SR.IsConnectedTo))\r
-                       exclusions.add(connection);\r
-       }\r
-       \r
-       protected void processElement(ReadGraph graph, Resource element, boolean includeElement, ArrayList<NamedResource> roots, ArrayList<Resource> exclusions) throws DatabaseException {\r
-               Layer0 L0 = Layer0.getInstance(graph);\r
-               DiagramResource DIA = DiagramResource.getInstance(graph);\r
-       StructuralResource2 SR = StructuralResource2.getInstance(graph);\r
-               \r
-               if (includeElement) {\r
-                       // Add element as a root.\r
-                       String name = graph.getRelatedValue(element, L0.HasName, Bindings.STRING);\r
-                       roots.add(new NamedResource(name, element));\r
-               } else {\r
-                       exclusions.add(element);\r
-               }\r
-               \r
-               // exclude diagram from copied data.\r
-               Collection<Resource> diagram_ = OrderedSetUtils.getOwnerLists(graph, element, DIA.Diagram);\r
-               for (Resource diagram : diagram_) {\r
-                       \r
-                       Resource inv = graph.getInverse(diagram);\r
-                       exclusions.add(diagram);\r
-                       exclusions.add(inv);\r
-                       \r
-                       // Exclude next and previous elements in the diagram\r
-                       Resource next = OrderedSetUtils.next(graph, diagram, element);\r
-                       Resource previous = OrderedSetUtils.prev(graph, diagram, element);\r
-                       if (next != null && !next.equals(element))\r
-                               exclusions.add(next);\r
-                       if (previous != null && !previous.equals(element) && !previous.equals(next))\r
-                               exclusions.add(previous);\r
-               }\r
-               // filter connections\r
-       for (Resource connection : graph.getObjects(element, SR.IsConnectedTo))\r
-               exclusions.add(connection);\r
-       }\r
-               \r
-}\r
+package org.simantics.modeling.mapping;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.simantics.databoard.Bindings;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.common.NamedResource;
+import org.simantics.db.common.utils.OrderedSetUtils;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.adapter.impl.DefaultCopyHandler;
+import org.simantics.db.layer0.util.TransferableGraphConfiguration2;
+import org.simantics.diagram.stubs.DiagramResource;
+import org.simantics.layer0.Layer0;
+import org.simantics.modeling.ModelingResources;
+import org.simantics.structural.stubs.StructuralResource2;
+
+
+/**
+ * Copy handler for Component and it's Element.
+ * 
+ * FIXME: Requires patched ModelTransferableGraphSourceRequest
+ * 
+ *  in classifyPredicates(), excluded resources must be filtered. Otherwise the code fails with :Diagram.hasInverse having no URI.
+ *  
+ *  Resource predicate = stm.getPredicate();
+ *     Resource object = stm.getObject();              
+ *     if (exclusions.contains(object) || exclusions.contains(predicate))
+ *             continue; 
+ *
+ * 
+ * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
+ *
+ */
+public class ComponentAndElementCopyHandler extends DefaultCopyHandler{
+
+       protected boolean includeComponent = true;
+       protected boolean includeElement = true;
+       
+       public ComponentAndElementCopyHandler(Resource resource) {
+               super(resource);
+       }
+       
+       /**
+        * 
+        * @param resource Component, if component is included. Otherwise the Element.
+        * @param includeComponent
+        * @param includeElement
+        */
+       public ComponentAndElementCopyHandler(Resource resource, boolean includeComponent, boolean includeElement) {
+               super(resource);
+               if (!includeComponent && !includeElement)
+                       throw new IllegalArgumentException();
+               this.includeComponent = includeComponent;
+               this.includeElement = includeElement;
+       }
+       
+       
+
+       
+       @Override
+       protected TransferableGraphConfiguration2 createConfiguration(ReadGraph graph, boolean cut) throws DatabaseException {
+       ModelingResources MR = ModelingResources.getInstance(graph);
+
+       ArrayList<Resource> exclusions = new ArrayList<Resource>();
+
+       ArrayList<NamedResource> roots = new ArrayList<NamedResource>();
+       
+       Resource component = null;
+       Resource element = null;
+       
+       if (includeComponent) {
+               component = getResource();
+               element = graph.getPossibleObject(component, MR.ComponentToElement);
+       } else {
+               element = getResource();
+               component = graph.getPossibleObject(element, MR.ElementToComponent);
+       }
+               // Include component as root
+       if (component != null) {
+               processComponent(graph, component, includeComponent, roots, exclusions);
+       }
+               
+           if (element != null) {
+               processElement(graph, element, includeElement, roots, exclusions);
+           }
+           
+       return TransferableGraphConfiguration2.createWithNames(graph, roots, exclusions, true, false);
+       }
+       
+       protected void processComponent(ReadGraph graph, Resource component, boolean includeComponent, ArrayList<NamedResource> roots, ArrayList<Resource> exclusions) throws DatabaseException {
+               Layer0 L0 = Layer0.getInstance(graph);
+       StructuralResource2 SR = StructuralResource2.getInstance(graph);
+       Resource resource = getResource();
+               if (includeComponent) {
+                       String rootName = graph.getRelatedValue(resource, L0.HasName, Bindings.STRING);
+                       roots.add(new NamedResource(rootName, resource));
+               } else {
+                       exclusions.add(component);
+               }
+
+               // filter connections
+               for (Resource connection : graph.getObjects(resource, SR.IsConnectedTo))
+                       exclusions.add(connection);
+       }
+       
+       protected void processElement(ReadGraph graph, Resource element, boolean includeElement, ArrayList<NamedResource> roots, ArrayList<Resource> exclusions) throws DatabaseException {
+               Layer0 L0 = Layer0.getInstance(graph);
+               DiagramResource DIA = DiagramResource.getInstance(graph);
+       StructuralResource2 SR = StructuralResource2.getInstance(graph);
+               
+               if (includeElement) {
+                       // Add element as a root.
+                       String name = graph.getRelatedValue(element, L0.HasName, Bindings.STRING);
+                       roots.add(new NamedResource(name, element));
+               } else {
+                       exclusions.add(element);
+               }
+               
+               // exclude diagram from copied data.
+               Collection<Resource> diagram_ = OrderedSetUtils.getOwnerLists(graph, element, DIA.Diagram);
+               for (Resource diagram : diagram_) {
+                       
+                       Resource inv = graph.getInverse(diagram);
+                       exclusions.add(diagram);
+                       exclusions.add(inv);
+                       
+                       // Exclude next and previous elements in the diagram
+                       Resource next = OrderedSetUtils.next(graph, diagram, element);
+                       Resource previous = OrderedSetUtils.prev(graph, diagram, element);
+                       if (next != null && !next.equals(element))
+                               exclusions.add(next);
+                       if (previous != null && !previous.equals(element) && !previous.equals(next))
+                               exclusions.add(previous);
+               }
+               // filter connections
+       for (Resource connection : graph.getObjects(element, SR.IsConnectedTo))
+               exclusions.add(connection);
+       }
+               
+}