X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.interop%2Fsrc%2Forg%2Fsimantics%2Finterop%2Ftest%2FTypeComparator.java;fp=org.simantics.interop%2Fsrc%2Forg%2Fsimantics%2Finterop%2Ftest%2FTypeComparator.java;h=a8cefa3a5ee4a9175dd0802d07b606602dd85920;hb=d990eb34629f49c2c3fe6ecb9819d5c44ae19303;hp=6a05562961d230551220f10deb913b97fbd3528e;hpb=b7493f55002eb0e11f3d38b578adfe0292cd2c98;p=simantics%2Finterop.git diff --git a/org.simantics.interop/src/org/simantics/interop/test/TypeComparator.java b/org.simantics.interop/src/org/simantics/interop/test/TypeComparator.java index 6a05562..a8cefa3 100644 --- a/org.simantics.interop/src/org/simantics/interop/test/TypeComparator.java +++ b/org.simantics.interop/src/org/simantics/interop/test/TypeComparator.java @@ -59,14 +59,7 @@ public class TypeComparator extends ResourceComparator { rs2.clear(); return false; } - if (rs1.size() == 0) { - rs1.addAll(g.getObjects(r1, l0.Inherits)); - rs2.addAll(g.getObjects(r2, l0.Inherits)); - } - if (rs1.size() == 0) { - rs1.addAll(g.getObjects(r1, l0.SubrelationOf)); - rs2.addAll(g.getObjects(r2, l0.SubrelationOf)); - } + Comparator rcomp = getComparator().getResourceComparator(); if (rs1.size() == 0) { return rcomp.compare(r1, r2) == 0; @@ -99,6 +92,48 @@ public class TypeComparator extends ResourceComparator { return true; } + protected boolean compareInheritance(ReadGraph g, Resource r1, Resource r2) throws DatabaseException { + Layer0 l0 = Layer0.getInstance(g); + + rs1.addAll(g.getObjects(r1, l0.Inherits)); + rs2.addAll(g.getObjects(r2, l0.Inherits)); + + if (rs1.size() != rs2.size()) { + rs1.clear(); + rs2.clear(); + return false; + } + if (rs1.size() == 0) { + rs1.addAll(g.getObjects(r1, l0.SubrelationOf)); + rs2.addAll(g.getObjects(r2, l0.SubrelationOf)); + } + if (rs1.size() != rs2.size()) { + rs1.clear(); + rs2.clear(); + return false; + } + Comparator rcomp = getComparator().getResourceComparator(); + if (rs1.size() == 0) { + return rcomp.compare(r1, r2) == 0; + } + + getComparator().sortResource(rs1, rs2); + + for (int i = 0; i < rs1.size(); i++) { + int c = rcomp.compare(rs1.get(i), rs2.get(i)); + if (c != 0) { + rs1.clear(); + rs2.clear(); + return false; + } + } + + rs1.clear(); + rs2.clear(); + + return true; + } + protected int propsDiffCount(ReadGraph g, Resource r1, Resource r2) throws DatabaseException { Layer0 l0 = Layer0.getInstance(g);