]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/genericrelation/DependencyChanges.java
Replace e.printStackTrace() with Logger in DependencyChanges
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / genericrelation / DependencyChanges.java
index 2f0d2d5f313007b6452cc5cc23ada9b19a9cee40..87f06cc41211c50d0ff86ee9f9d9772080f74391 100644 (file)
-package org.simantics.db.layer0.genericrelation;\r
-\r
-import java.io.IOException;\r
-import java.util.ArrayList;\r
-import java.util.Map;\r
-import java.util.TreeMap;\r
-\r
-import org.simantics.databoard.Databoard;\r
-import org.simantics.databoard.annotations.Arguments;\r
-import org.simantics.databoard.annotations.Union;\r
-import org.simantics.databoard.binding.Binding;\r
-import org.simantics.databoard.binding.error.BindingConstructionException;\r
-import org.simantics.databoard.serialization.SerializationException;\r
-import org.simantics.databoard.serialization.Serializer;\r
-import org.simantics.databoard.serialization.SerializerConstructionException;\r
-import org.simantics.db.Metadata;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.Session;\r
-import org.simantics.db.common.utils.NameUtils;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.layer0.Layer0;\r
-\r
-public class DependencyChanges implements Metadata {\r
-    \r
-    public final @Arguments({Resource.class, Change[].class}) TreeMap<Resource, Change[]> modelChanges;\r
-    public final boolean hasUnresolved;\r
-    \r
-    public DependencyChanges(TreeMap<Resource, Change[]> modelChanges, boolean hasUnresolved) {\r
-        this.modelChanges = modelChanges;\r
-        this.hasUnresolved = hasUnresolved;\r
-    }        \r
-    \r
-    public DependencyChanges(Map<Resource, ArrayList<Change>> _modelChanges, boolean hasUnresolved) {\r
-        this(new TreeMap<Resource, Change[]>(), hasUnresolved);\r
-        for(Map.Entry<Resource, ArrayList<Change>> entry : _modelChanges.entrySet()) {\r
-            ArrayList<Change> value = entry.getValue();\r
-            modelChanges.put(entry.getKey(), value.toArray(new Change[value.size()]));\r
-        }\r
-    }\r
-    \r
-    public static enum ChangeType {\r
-        LINK_CHANGE, COMPONENT_ADDITION, COMPONENT_REMOVAL,\r
-        COMPONENT_MODIFICATION\r
-    }\r
-        \r
-    @Union({LinkChange.class,\r
-       ComponentAddition.class, \r
-        ComponentRemoval.class, \r
-        ComponentModification.class})\r
-    public static interface Change {\r
-        ChangeType getType();\r
-        String toString(ReadGraph graph) throws DatabaseException;\r
-    }\r
-    \r
-    public static class LinkChange implements Change {\r
-        public final Resource component;\r
-        public LinkChange(Resource component) {\r
-            this.component = component;\r
-        }\r
-        @Override\r
-        public ChangeType getType() {\r
-            return ChangeType.LINK_CHANGE;\r
-        }\r
-        @Override\r
-        public String toString(ReadGraph graph) throws DatabaseException {\r
-               return "LinkChange[" + NameUtils.getSafeName(graph, component, true) + "]";\r
-        }\r
-    }\r
-\r
-    public static class ComponentAddition implements Change {\r
-        public final Resource component;\r
-        public final Resource parent;\r
-        public ComponentAddition(Resource component, Resource parent) {\r
-            this.component = component;\r
-            this.parent = parent;\r
-        }\r
-        @Override\r
-        public ChangeType getType() {\r
-            return ChangeType.COMPONENT_ADDITION;\r
-        }\r
-        @Override\r
-        public String toString() {\r
-               return "ComponentAddition[" + component + "]";\r
-        }\r
-        public boolean isValid(ReadGraph graph) throws DatabaseException {\r
-               return graph.hasStatement(component, Layer0.getInstance(graph).PartOf, parent);\r
-        }\r
-        @Override\r
-        public String toString(ReadGraph graph) throws DatabaseException {\r
-               return "ComponentAddition[" + NameUtils.getSafeName(graph, component, true) + "]";\r
-        }\r
-    }\r
-    \r
-    public static class ComponentRemoval implements Change {\r
-        public final Resource component;\r
-        public final Resource parent;\r
-        public ComponentRemoval(Resource component, Resource parent) {        \r
-            this.component = component;\r
-            this.parent = parent;\r
-        }\r
-        @Override\r
-        public ChangeType getType() {\r
-            return ChangeType.COMPONENT_REMOVAL;\r
-        }\r
-        public boolean isValid(ReadGraph graph) throws DatabaseException {\r
-               return !graph.hasStatement(component, Layer0.getInstance(graph).PartOf, parent);\r
-        }\r
-        @Override\r
-        public String toString(ReadGraph graph) throws DatabaseException {\r
-               return "ComponentRemoval[component=" + NameUtils.getSafeName(graph, component, true) + ", parent=" + NameUtils.getSafeName(graph, parent, true) + "]";\r
-        }\r
-    }\r
-    \r
-    public static class ComponentModification implements Change {\r
-        public final Resource component;\r
-        public ComponentModification(Resource component) {\r
-            this.component = component;\r
-        }\r
-        @Override\r
-        public ChangeType getType() {\r
-            return ChangeType.COMPONENT_MODIFICATION;\r
-        }\r
-        @Override\r
-        public String toString(ReadGraph graph) throws DatabaseException {\r
-               return "ComponentModification[" + NameUtils.getSafeName(graph, component, true) + "]";\r
-        }\r
-    }\r
-        \r
-    public Change[] get(Resource model) {\r
-        return modelChanges.get(model);\r
-    }\r
-    \r
-    public Map<Resource, Change[]> get() {\r
-       return modelChanges;\r
-    }\r
-            \r
-    @Override\r
-    public byte[] serialise(Session session) {\r
-        try {\r
-               Databoard databoard = session.getService( Databoard.class );\r
-               Binding binding = databoard.getBinding( DependencyChanges.class );\r
-               Serializer serializer = databoard.getSerializer( binding );\r
-            return serializer.serialize(this);\r
-        } catch (SerializationException e) {\r
-            e.printStackTrace();\r
-        } catch (IOException e) {\r
-                       // TODO Auto-generated catch block\r
-                       e.printStackTrace();\r
-               } catch (SerializerConstructionException e) {\r
-                       // TODO Auto-generated catch block\r
-                       e.printStackTrace();\r
-               } catch (BindingConstructionException e) {\r
-                       // TODO Auto-generated catch block\r
-                       e.printStackTrace();\r
-               }\r
-        return new byte[0];\r
-    }\r
-    \r
-    public static DependencyChanges deserialise(Session session, byte[] input) {\r
-        try {\r
-               Databoard databoard = session.getService( Databoard.class );\r
-               Binding binding = databoard.getBinding( DependencyChanges.class );\r
-               Serializer serializer = databoard.getSerializer( binding );\r
-            return (DependencyChanges) serializer.deserialize(input); \r
-        } catch (SerializationException e) {\r
-            e.printStackTrace();\r
-        } catch (IOException e) {\r
-            e.printStackTrace();\r
-        } catch (SerializerConstructionException e) {\r
-                       e.printStackTrace();\r
-               } catch (BindingConstructionException e) {\r
-                       e.printStackTrace();\r
-               }\r
-        return null;\r
-    }\r
-    \r
-    public boolean isEmpty() {\r
-       return modelChanges.isEmpty() && !hasUnresolved;\r
-    }\r
-    \r
-}\r
+package org.simantics.db.layer0.genericrelation;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.simantics.databoard.Databoard;
+import org.simantics.databoard.annotations.Arguments;
+import org.simantics.databoard.annotations.Union;
+import org.simantics.databoard.binding.Binding;
+import org.simantics.databoard.binding.error.BindingConstructionException;
+import org.simantics.databoard.serialization.Serializer;
+import org.simantics.databoard.serialization.SerializerConstructionException;
+import org.simantics.db.Metadata;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.Session;
+import org.simantics.db.common.utils.NameUtils;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.layer0.Layer0;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class DependencyChanges implements Metadata {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(DependencyChanges.class);
+
+    public final @Arguments({Resource.class, Change[].class}) TreeMap<Resource, Change[]> modelChanges;
+    public final boolean hasUnresolved;
+    
+    public DependencyChanges(TreeMap<Resource, Change[]> modelChanges, boolean hasUnresolved) {
+        this.modelChanges = modelChanges;
+        this.hasUnresolved = hasUnresolved;
+    }        
+    
+    public DependencyChanges(Map<Resource, ArrayList<Change>> _modelChanges, boolean hasUnresolved) {
+        this(new TreeMap<Resource, Change[]>(), hasUnresolved);
+        for(Map.Entry<Resource, ArrayList<Change>> entry : _modelChanges.entrySet()) {
+            ArrayList<Change> value = entry.getValue();
+            modelChanges.put(entry.getKey(), value.toArray(new Change[value.size()]));
+        }
+    }
+    
+    public static enum ChangeType {
+        LINK_CHANGE, COMPONENT_ADDITION, COMPONENT_REMOVAL,
+        COMPONENT_MODIFICATION
+    }
+        
+    @Union({LinkChange.class,
+       ComponentAddition.class, 
+        ComponentRemoval.class, 
+        ComponentModification.class})
+    public static interface Change {
+        ChangeType getType();
+        String toString(ReadGraph graph) throws DatabaseException;
+    }
+    
+    public static class LinkChange implements Change {
+        public final Resource component;
+        public LinkChange(Resource component) {
+            this.component = component;
+        }
+        @Override
+        public ChangeType getType() {
+            return ChangeType.LINK_CHANGE;
+        }
+        @Override
+        public String toString(ReadGraph graph) throws DatabaseException {
+               return "LinkChange[" + NameUtils.getSafeName(graph, component, true) + "]";
+        }
+    }
+
+    public static class ComponentAddition implements Change {
+        public final Resource component;
+        public final Resource parent;
+        public ComponentAddition(Resource component, Resource parent) {
+            this.component = component;
+            this.parent = parent;
+        }
+        @Override
+        public ChangeType getType() {
+            return ChangeType.COMPONENT_ADDITION;
+        }
+        @Override
+        public String toString() {
+               return "ComponentAddition[" + component + "]";
+        }
+        public boolean isValid(ReadGraph graph) throws DatabaseException {
+               return graph.hasStatement(component, Layer0.getInstance(graph).PartOf, parent);
+        }
+        @Override
+        public String toString(ReadGraph graph) throws DatabaseException {
+               return "ComponentAddition[" + NameUtils.getSafeName(graph, component, true) + "]";
+        }
+    }
+    
+    public static class ComponentRemoval implements Change {
+        public final Resource component;
+        public final Resource parent;
+        public ComponentRemoval(Resource component, Resource parent) {        
+            this.component = component;
+            this.parent = parent;
+        }
+        @Override
+        public ChangeType getType() {
+            return ChangeType.COMPONENT_REMOVAL;
+        }
+        public boolean isValid(ReadGraph graph) throws DatabaseException {
+               return !graph.hasStatement(component, Layer0.getInstance(graph).PartOf, parent);
+        }
+        @Override
+        public String toString(ReadGraph graph) throws DatabaseException {
+               return "ComponentRemoval[component=" + NameUtils.getSafeName(graph, component, true) + ", parent=" + NameUtils.getSafeName(graph, parent, true) + "]";
+        }
+    }
+    
+    public static class ComponentModification implements Change {
+        public final Resource component;
+        public ComponentModification(Resource component) {
+            this.component = component;
+        }
+        @Override
+        public ChangeType getType() {
+            return ChangeType.COMPONENT_MODIFICATION;
+        }
+        @Override
+        public String toString(ReadGraph graph) throws DatabaseException {
+               return "ComponentModification[" + NameUtils.getSafeName(graph, component, true) + "]";
+        }
+    }
+        
+    public Change[] get(Resource model) {
+        return modelChanges.get(model);
+    }
+    
+    public Map<Resource, Change[]> get() {
+       return modelChanges;
+    }
+            
+    @Override
+    public byte[] serialise(Session session) {
+        try {
+               Databoard databoard = session.getService( Databoard.class );
+               Binding binding = databoard.getBinding( DependencyChanges.class );
+               Serializer serializer = databoard.getSerializer( binding );
+            return serializer.serialize(this);
+        } catch (IOException | SerializerConstructionException | BindingConstructionException e) {
+            LOGGER.error("Could not serialise {} {}", getClass().getSimpleName(), this, e);
+        }
+        return new byte[0];
+    }
+    
+    public static DependencyChanges deserialise(Session session, byte[] input) {
+        try {
+               Databoard databoard = session.getService( Databoard.class );
+               Binding binding = databoard.getBinding( DependencyChanges.class );
+               Serializer serializer = databoard.getSerializer( binding );
+            return (DependencyChanges) serializer.deserialize(input); 
+        } catch (IOException | SerializerConstructionException | BindingConstructionException e) {
+            LOGGER.error("Could not deserialise {}", Arrays.toString(input), e);
+        }
+        return null;
+    }
+    
+    public boolean isEmpty() {
+       return modelChanges.isEmpty() && !hasUnresolved;
+    }
+    
+}