]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop/src/org/simantics/interop/test/GraphComparatorViewer.java
Allow defining matching resources (Comparing models with structural components)
[simantics/interop.git] / org.simantics.interop / src / org / simantics / interop / test / GraphComparatorViewer.java
index fa65da422b9123dbbca396483226f69d5b712899..73981180e901bba0291d2d6736ee298b93857cc7 100644 (file)
@@ -39,6 +39,7 @@ import org.simantics.db.Session;
 import org.simantics.db.Statement;\r
 import org.simantics.db.common.ResourceArray;\r
 import org.simantics.db.common.request.ReadRequest;\r
+import org.simantics.db.common.utils.NameUtils;\r
 import org.simantics.db.exception.DatabaseException;\r
 import org.simantics.db.exception.InvalidResourceReferenceException;\r
 import org.simantics.db.exception.ServiceException;\r
@@ -46,13 +47,13 @@ import org.simantics.db.exception.ValidationException;
 import org.simantics.db.request.Read;\r
 import org.simantics.db.service.SerialisationSupport;\r
 import org.simantics.layer0.Layer0;\r
-import org.simantics.layer0.utils.direct.GraphUtils;\r
 import org.simantics.ui.SimanticsUI;\r
 import org.simantics.ui.dnd.LocalObjectTransfer;\r
 import org.simantics.ui.dnd.ResourceReferenceTransfer;\r
 import org.simantics.ui.dnd.ResourceTransferUtils;\r
 import org.simantics.ui.utils.ResourceAdaptionUtils;\r
 import org.simantics.utils.datastructures.BijectionMap;\r
+import org.simantics.utils.datastructures.Pair;\r
 \r
 /**\r
  * Simple multi line text viewer for seeing differences in two subgraphs. \r
@@ -72,7 +73,7 @@ public class GraphComparatorViewer extends ViewPart{
        private Text text1;\r
        private Text text2;\r
        \r
-       private GraphComparator comparator = new GraphComparator();\r
+\r
        \r
        @Override\r
        public void createPartControl(Composite parent) {\r
@@ -123,22 +124,71 @@ public class GraphComparatorViewer extends ViewPart{
                        \r
                        @Override\r
                        public void run(final ReadGraph graph) throws DatabaseException {\r
+                               GraphComparator comparator = new GraphComparator(r1,r2);\r
                                comparator.clearRels();\r
                                Layer0 l0 = Layer0.getInstance(graph);\r
                                comparator.addTraversed(l0.ConsistsOf);\r
+                               comparator.addTraversed(l0.HasNext);\r
                                comparator.addTested(l0.IsWeaklyRelatedTo);\r
-                               comparator.test(graph, r1, r2);\r
-                               BijectionMap<Statement, Statement> map = comparator.getComparable();\r
+                               comparator.test(graph);\r
+                               BijectionMap<Statement, Statement> map = comparator.getComparableStatements();\r
                                Map<Statement, Integer> indices = new HashMap<Statement, Integer>();\r
                                final StringBuilder sb1 = new StringBuilder();\r
+                               final StringBuilder sb2 = new StringBuilder();\r
                                int index = 0;\r
-                               for (Statement s : comparator.getChanges1()) {\r
+                               \r
+                               GraphChanges changes = comparator.getChanges();\r
+                               \r
+                               for (Pair<Statement,Statement> mod : changes.getModifications()) {\r
+                                       {\r
+                                               String sub;\r
+                                               try {\r
+                                                       Statement s = mod.first;\r
+                                                       sub = NameUtils.getSafeName(graph, s.getSubject());\r
+                                                       String pre = NameUtils.getSafeName(graph, s.getPredicate());\r
+                                                       String obj = NameUtils.getSafeName(graph, s.getObject());\r
+                                                       if (map.containsLeft(s)) {\r
+                                                               index++;\r
+                                                               indices.put(s, index);\r
+                                                               sb1.append("["+index + "] ");\r
+                                                       }\r
+                                                       sb1.append(sub + " - " + pre + " - " + obj);\r
+                                                       sb1.append(" ["+s.getSubject().getResourceId() + " " + s.getPredicate().getResourceId() + " " + s.getObject().getResourceId()+"]");\r
+                                                       sb1.append("\n");\r
+                                               } catch (ValidationException e) {\r
+                                                       e.printStackTrace();\r
+                                               } catch (ServiceException e) {\r
+                                                       e.printStackTrace();\r
+                                               }\r
+                                       }\r
+                                       {\r
+                                               String sub;\r
+                                               try {\r
+                                                       Statement s = mod.second;\r
+                                                       sub = NameUtils.getSafeName(graph, s.getSubject());\r
+                                                       String pre = NameUtils.getSafeName(graph, s.getPredicate());\r
+                                                       String obj = NameUtils.getSafeName(graph, s.getObject());\r
+                                                       if (map.containsRight(s)) {\r
+                                                               index = indices.get(map.getLeft(s));\r
+                                                               sb2.append("["+index + "] ");\r
+                                                       }\r
+                                                       sb2.append(sub + " - " + pre + " - " + obj);\r
+                                                       sb2.append(" ["+s.getSubject().getResourceId() + " " + s.getPredicate().getResourceId() + " " + s.getObject().getResourceId()+"]");\r
+                                                       sb2.append("\n");\r
+                                               } catch (ValidationException e) {\r
+                                                       e.printStackTrace();\r
+                                               } catch (ServiceException e) {\r
+                                                       e.printStackTrace();\r
+                                               }\r
+                                       }\r
+                               }\r
+                               for (Statement s : changes.getDeletions()) {\r
                                        String sub;\r
                                        try {\r
                                                \r
-                                               sub = GraphUtils.getReadableName(graph, s.getSubject());\r
-                                               String pre = GraphUtils.getReadableName(graph, s.getPredicate());\r
-                                               String obj = GraphUtils.getReadableName(graph, s.getObject());\r
+                                               sub = NameUtils.getSafeName(graph, s.getSubject());\r
+                                               String pre = NameUtils.getSafeName(graph, s.getPredicate());\r
+                                               String obj = NameUtils.getSafeName(graph, s.getObject());\r
                                                if (map.containsLeft(s)) {\r
                                                        index++;\r
                                                        indices.put(s, index);\r
@@ -154,13 +204,13 @@ public class GraphComparatorViewer extends ViewPart{
                                        }\r
                                        \r
                                }\r
-                               final StringBuilder sb2 = new StringBuilder();\r
-                               for (Statement s : comparator.getChanges2()) {\r
+                               \r
+                               for (Statement s : changes.getAdditions()) {\r
                                        String sub;\r
                                        try {\r
-                                               sub = GraphUtils.getReadableName(graph, s.getSubject());\r
-                                               String pre = GraphUtils.getReadableName(graph, s.getPredicate());\r
-                                               String obj = GraphUtils.getReadableName(graph, s.getObject());\r
+                                               sub = NameUtils.getSafeName(graph, s.getSubject());\r
+                                               String pre = NameUtils.getSafeName(graph, s.getPredicate());\r
+                                               String obj = NameUtils.getSafeName(graph, s.getObject());\r
                                                if (map.containsRight(s)) {\r
                                                        index = indices.get(map.getLeft(s));\r
                                                        sb2.append("["+index + "] ");\r
@@ -241,7 +291,7 @@ public class GraphComparatorViewer extends ViewPart{
                                                        @Override\r
                                                        public String perform(ReadGraph graph)\r
                                                                throws DatabaseException {\r
-                                                               return GraphUtils.getReadableName(graph, r);\r
+                                                               return NameUtils.getSafeName(graph, r);\r
                                                        }\r
                                                }));\r
                                        } catch (DatabaseException e) {\r