]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop/src/org/simantics/interop/test/GraphChanges.java
Asserted properties caused wrong change reports.
[simantics/interop.git] / org.simantics.interop / src / org / simantics / interop / test / GraphChanges.java
index f022209a1c99d0cb6954ee2f842814a800520981..ce7af6d1aee6c3f8ff1f81cffa6c33cfe06f1b86 100644 (file)
-package org.simantics.interop.test;\r
-\r
-import java.util.List;\r
-\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.Statement;\r
-import org.simantics.db.common.utils.NameUtils;\r
-import org.simantics.db.exception.ServiceException;\r
-import org.simantics.db.exception.ValidationException;\r
-import org.simantics.utils.datastructures.Pair;\r
-\r
-public class GraphChanges {\r
-       \r
-       private Resource r1;\r
-       private Resource r2;\r
-       private List<Statement> deletions;\r
-       private List<Statement> additions;\r
-       private List<Pair<Statement,Statement>> modifications;\r
-       \r
-       public GraphChanges(Resource r1, Resource r2, List<Statement> deletions, List<Statement> additions,\r
-                       List<Pair<Statement, Statement>> modifications) {\r
-               super();\r
-               this.r1 = r1;\r
-               this.r2 = r2;\r
-               this.deletions = deletions;\r
-               this.additions = additions;\r
-               this.modifications = modifications;\r
-       }\r
-       \r
-       public Resource getResource1() {\r
-               return r1;\r
-       }\r
-       \r
-       public Resource getResource2() {\r
-               return r2;\r
-       }\r
-       \r
-       public List<Statement> getAdditions() {\r
-               return additions;\r
-       }\r
-       \r
-       public List<Statement> getDeletions() {\r
-               return deletions;\r
-       }\r
-       \r
-       public List<Pair<Statement, Statement>> getModifications() {\r
-               return modifications;\r
-       }\r
-       \r
-       public String toString(ReadGraph graph) throws ValidationException, ServiceException {\r
-               StringBuilder sb = new StringBuilder();\r
-               sb.append("Del:\n");\r
-               for (Statement stm : deletions) {\r
-                       sb.append(NameUtils.getSafeName(graph, stm.getSubject()) + " "+\r
-                                                  NameUtils.getSafeName(graph, stm.getPredicate()) + " " +\r
-                                                  NameUtils.getSafeName(graph, stm.getObject()) + " (" +\r
-                                                  stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n");\r
-       }\r
-               sb.append("Add:\n");\r
-               for (Statement stm : additions) {\r
-                       sb.append(NameUtils.getSafeName(graph, stm.getSubject()) + " "+\r
-                                          NameUtils.getSafeName(graph, stm.getPredicate()) + " " +\r
-                                  NameUtils.getSafeName(graph, stm.getObject()) + " (" +\r
-                                  stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n");\r
-       }\r
-               sb.append("Mod:\n");\r
-               for (Pair<Statement, Statement> mod :modifications) {\r
-                       {\r
-                               Statement stm = mod.first;\r
-                               sb.append(NameUtils.getSafeName(graph, stm.getSubject()) + " "+\r
-                                                  NameUtils.getSafeName(graph, stm.getPredicate()) + " " +\r
-                                          NameUtils.getSafeName(graph, stm.getObject()) + " (" +\r
-                                          stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n");\r
-                       }\r
-                       {\r
-                               Statement stm = mod.second;\r
-                               sb.append(NameUtils.getSafeName(graph, stm.getSubject()) + " "+\r
-                                                  NameUtils.getSafeName(graph, stm.getPredicate()) + " " +\r
-                                          NameUtils.getSafeName(graph, stm.getObject()) + " (" +\r
-                                          stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n");\r
-                       }\r
-       }\r
-               return sb.toString();\r
-       }\r
-\r
-}\r
+package org.simantics.interop.test;
+
+import java.util.List;
+import java.util.Map.Entry;
+
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.Statement;
+import org.simantics.db.common.utils.NameUtils;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.utils.datastructures.BijectionMap;
+
+public class GraphChanges {
+       
+       private Resource r1;
+       private Resource r2;
+       private List<Statement> deletions;
+       private List<Statement> additions;
+       private List<Modification> modifications;
+       
+       private BijectionMap<Resource, Resource> comparable;
+       
+       public static class Modification {
+               Resource leftSub;
+               Resource rightSub;
+               Statement leftStm;
+               Statement rightStm;
+
+               
+               int hashCode;
+               
+               public Modification(Resource leftSub, Resource rightSub, Statement leftStm, Statement rightStm) {
+                       super();
+                       this.leftSub = leftSub;
+                       this.rightSub = rightSub;
+                       this.leftStm = leftStm;
+                       this.rightStm = rightStm;
+                       
+                       hashCode = leftSub.hashCode() + rightSub.hashCode();
+                       if (leftStm != null)
+                               hashCode += leftStm.hashCode();
+                       if (rightStm != null)
+                               hashCode += rightStm.hashCode();
+               }
+
+               public boolean isLeftAsserted() {
+                       return !leftSub.equals(leftStm.getSubject());
+               }
+               
+               public boolean isRightAsserted() {
+                       return !rightSub.equals(rightStm.getSubject());
+               }
+
+               public Resource getLeftSub() {
+                       return leftSub;
+               }
+
+               public void setLeftSub(Resource leftSub) {
+                       this.leftSub = leftSub;
+               }
+
+               public Resource getRightSub() {
+                       return rightSub;
+               }
+
+               public void setRightSub(Resource rightSub) {
+                       this.rightSub = rightSub;
+               }
+
+               public Statement getLeftStm() {
+                       return leftStm;
+               }
+
+               public void setLeftStm(Statement leftStm) {
+                       this.leftStm = leftStm;
+               }
+
+               public Statement getRightStm() {
+                       return rightStm;
+               }
+
+               public void setRightStm(Statement rightStm) {
+                       this.rightStm = rightStm;
+               }
+               
+               public Resource getPredicate() {
+                   if (leftStm != null)
+                       return leftStm.getPredicate();
+                   return rightStm.getPredicate();
+               }
+               
+               @Override
+               public boolean equals(Object obj) {
+                       if (obj.getClass() != this.getClass())
+                               return false;
+                       Modification other = (Modification)obj;
+                       if (!leftSub.equals(other.leftSub))
+                               return false;
+                       if (!rightSub.equals(other.rightSub))
+                               return false;
+                       if (leftStm != null) {
+                               if (!leftStm.equals(other.leftStm))
+                                       return false;
+                       } else if (other.leftStm != null)
+                               return false;
+                       if (rightStm != null) {
+                               if (!rightStm.equals(other.rightStm))
+                                       return false;
+                       } else if (other.rightStm != null)
+                               return false;
+                       return true;
+               }
+               
+               @Override
+               public int hashCode() {
+                       return hashCode;
+               }
+
+       }
+       
+       public GraphChanges(Resource r1, Resource r2, List<Statement> deletions, List<Statement> additions,
+                       List<Modification> modifications, BijectionMap<Resource, Resource> comparable) {
+               super();
+               this.r1 = r1;
+               this.r2 = r2;
+               this.deletions = deletions;
+               this.additions = additions;
+               this.modifications = modifications;
+               this.comparable = comparable;
+       }
+       
+       public Resource getResource1() {
+               return r1;
+       }
+       
+       public Resource getResource2() {
+               return r2;
+       }
+       
+       public List<Statement> getAdditions() {
+               return additions;
+       }
+       
+       public List<Statement> getDeletions() {
+               return deletions;
+       }
+       
+       public List<Modification> getModifications() {
+               return modifications;
+       }
+       
+       public BijectionMap<Resource, Resource> getComparable() {
+               return comparable;
+       }
+       
+       public String toString(ReadGraph graph) throws DatabaseException {
+               StringBuilder sb = new StringBuilder();
+               sb.append("Del:\n");
+               for (Statement stm : deletions) {
+                       sb.append(NameUtils.getSafeName(graph, stm.getSubject()) + " "+
+                                                  NameUtils.getSafeName(graph, stm.getPredicate()) + " " +
+                                                  NameUtils.getSafeName(graph, stm.getObject()) + " (" +
+                                                  stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n");
+       }
+               sb.append("Add:\n");
+               for (Statement stm : additions) {
+                       sb.append(NameUtils.getSafeName(graph, stm.getSubject()) + " "+
+                                          NameUtils.getSafeName(graph, stm.getPredicate()) + " " +
+                                  NameUtils.getSafeName(graph, stm.getObject()) + " (" +
+                                  stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n");
+       }
+               sb.append("Mod:\n");
+               for (Modification mod :modifications) {
+                       {
+                               Statement stm = mod.getLeftStm();
+                               if (stm != null) {
+                                       sb.append(NameUtils.getSafeName(graph, mod.getLeftSub()) + " "+
+                                                          NameUtils.getSafeName(graph, stm.getPredicate()) + " " +
+                                                          truncate(NameUtils.getSafeName(graph, stm.getObject())) + " (" +
+                                                          mod.getLeftSub() + " " + stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n");
+                               } else {
+                                       sb.append(NameUtils.getSafeName(graph, mod.getLeftSub()) + " "+  mod.getLeftSub() + " N/A\n");
+                               }
+                       }
+                       {
+                               Statement stm = mod.getRightStm();
+                               if (stm != null) {
+                                       sb.append(NameUtils.getSafeName(graph, mod.getRightSub()) + " "+
+                                                          NameUtils.getSafeName(graph, stm.getPredicate()) + " " +
+                                                          truncate(NameUtils.getSafeName(graph, stm.getObject())) + " (" +
+                                                          mod.getRightSub() + " " + stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n");
+                               } else {
+                                       sb.append(NameUtils.getSafeName(graph, mod.getRightSub()) + " "+  mod.getRightSub() + " N/A\n");
+                               }
+                               
+                       }
+       }
+               return sb.toString();
+       }
+       
+       public String truncate(String s) {
+               if (s.length() < 100)
+                       return s;
+               return s.substring(0, 100)+"...";
+       }
+       
+       public String comparableToString(ReadGraph graph) throws DatabaseException {
+               StringBuilder sb = new StringBuilder();
+               sb.append("Comparable:\n");
+               for (Entry<Resource, Resource> entry : comparable.getEntries()) {
+                       sb.append(NameUtils.getSafeName(graph, entry.getKey()) + " "+
+                                          NameUtils.getSafeName(graph, entry.getValue()) + " (" +
+                                          entry.getKey() + " " +entry.getValue() + ")\n");
+                       
+               }
+               return sb.toString();
+       }
+
+}