X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.interop%2Fsrc%2Forg%2Fsimantics%2Finterop%2Ftest%2FGraphChanges.java;h=ce7af6d1aee6c3f8ff1f81cffa6c33cfe06f1b86;hb=894fd479af4bd23016e38165b8ba3d6235d27125;hp=b25eea87d49795573a2f26e2f33566d66fdd3f53;hpb=aa4da931fd1a692a877f90e4bc676640b09ba5c1;p=simantics%2Finterop.git diff --git a/org.simantics.interop/src/org/simantics/interop/test/GraphChanges.java b/org.simantics.interop/src/org/simantics/interop/test/GraphChanges.java index b25eea8..ce7af6d 100644 --- a/org.simantics.interop/src/org/simantics/interop/test/GraphChanges.java +++ b/org.simantics.interop/src/org/simantics/interop/test/GraphChanges.java @@ -9,7 +9,6 @@ import org.simantics.db.Statement; import org.simantics.db.common.utils.NameUtils; import org.simantics.db.exception.DatabaseException; import org.simantics.utils.datastructures.BijectionMap; -import org.simantics.utils.datastructures.Pair; public class GraphChanges { @@ -17,12 +16,110 @@ public class GraphChanges { private Resource r2; private List deletions; private List additions; - private List> modifications; + private List modifications; private BijectionMap 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 deletions, List additions, - List> modifications, BijectionMap comparable) { + List modifications, BijectionMap comparable) { super(); this.r1 = r1; this.r2 = r2; @@ -48,7 +145,7 @@ public class GraphChanges { return deletions; } - public List> getModifications() { + public List getModifications() { return modifications; } @@ -73,25 +170,40 @@ public class GraphChanges { stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n"); } sb.append("Mod:\n"); - for (Pair mod :modifications) { + for (Modification mod :modifications) { { - Statement stm = mod.first; - sb.append(NameUtils.getSafeName(graph, stm.getSubject()) + " "+ - NameUtils.getSafeName(graph, stm.getPredicate()) + " " + - NameUtils.getSafeName(graph, stm.getObject()) + " (" + - stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\n"); + 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.second; - sb.append(NameUtils.getSafeName(graph, stm.getSubject()) + " "+ - NameUtils.getSafeName(graph, stm.getPredicate()) + " " + - NameUtils.getSafeName(graph, stm.getObject()) + " (" + - stm.getSubject() + " " +stm.getPredicate() + " " + stm.getObject() + ")\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");