X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.interop%2Fsrc%2Forg%2Fsimantics%2Finterop%2Ftest%2FGraphComparator.java;h=2727a95e0793dd5f5249c06c50361a749561931e;hb=ac08703bd29f0d7b2938deb75084f6becb5f1fb2;hp=6f8c4d1b15e13d10a652dac5551abbb7d0a329e1;hpb=7bd962c96d0a43bbc0fca67e87a1bc877a451fe0;p=simantics%2Finterop.git diff --git a/org.simantics.interop/src/org/simantics/interop/test/GraphComparator.java b/org.simantics.interop/src/org/simantics/interop/test/GraphComparator.java index 6f8c4d1..2727a95 100644 --- a/org.simantics.interop/src/org/simantics/interop/test/GraphComparator.java +++ b/org.simantics.interop/src/org/simantics/interop/test/GraphComparator.java @@ -711,16 +711,20 @@ public class GraphComparator { if (leftPath.getLength() != rightPath.getLength()) continue; if (comparableResources.contains(leftPath.getEnd(), rightPath.getEnd())) { - boolean preds = true; + boolean match = true; for (int i = 0; i < leftPath.getLength(); i++) { Statement sl = leftPath.getStatements().get(i); Statement sr = rightPath.getStatements().get(i); if (!sl.getPredicate().equals(sr.getPredicate()) && !comparableResources.contains(sl.getPredicate(), sr.getPredicate())) { - preds = false; + match = false; + break; + } + if ((getComparableResources().containsLeft(sl.getObject()) || getComparableResources().containsRight(sr.getObject())) && !getComparableResources().contains(sl.getObject(), sr.getObject())) { + match = false; break; } } - if (preds) { + if (match) { map.map(leftPath, rightPath); break; } @@ -892,8 +896,8 @@ public class GraphComparator { } } - private void addModification(Resource sub1, Statement s1, Resource sub2, Statement s2) { - Modification mod = new Modification(sub1, sub2, s1, s2); + private void addModification(Resource left, Statement leftstm, Resource right, Statement rightstm) { + Modification mod = new Modification(left, right, leftstm, rightstm); if (!modificationsSet.contains(mod)) { modificationsSet.add(mod); modifications.add(mod); @@ -1250,9 +1254,7 @@ public class GraphComparator { boolean b2 = g.hasValue(s2.getObject()); if (b1 == b2) { if (b1) { -// Object v1 = g.getValue(s1.getObject()); -// Object v2 = g.getValue(s2.getObject()); -// boolean eq = compareValue(v1, v2); + // Literals boolean eq = compareValue(g,b,s1.getObject(), s2.getObject()); if (!eq) { addModification(r1,s1,r2,s2); @@ -1260,8 +1262,16 @@ public class GraphComparator { addComparable(s1, s2); } } else { - if (!s1.getObject().equals(s1.getSubject()) && !s2.getObject().equals(s2.getSubject())) - compareProps(s1.getObject(), s2.getObject()); + // Non literal properties. + if (comparator.compare(g, s1.getObject(), s2.getObject()) != ResourceComparator.NO_MATCH) { + if (!s1.getObject().equals(s1.getSubject()) && !s2.getObject().equals(s2.getSubject())) + // TODO compare props matches objects, so this is questionable. + compareProps(s1.getObject(), s2.getObject()); + else + addModification(r1,s1,r2,s2); + } else { + addModification(r1,s1,r2,s2); + } } } else { addModification(r1,s1,r2,s2);