X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.interop%2Fsrc%2Forg%2Fsimantics%2Finterop%2Ftest%2FTypeComparator.java;h=2ea03d38f8d12ce0e4519b8b5a2328e906d084e1;hb=37acf1273cdf0be148b22625db2baa15a4077d0b;hp=61e8a0fbc193fa50cbc08e9a44f66207b241230d;hpb=4a008135d58a5045245d7f6aa36793c8ed32e4d5;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 61e8a0f..2ea03d3 100644 --- a/org.simantics.interop/src/org/simantics/interop/test/TypeComparator.java +++ b/org.simantics.interop/src/org/simantics/interop/test/TypeComparator.java @@ -7,10 +7,6 @@ import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.Statement; import org.simantics.db.exception.DatabaseException; -import org.simantics.db.exception.DoesNotContainValueException; -import org.simantics.db.exception.ManyObjectsForFunctionalRelationException; -import org.simantics.db.exception.ServiceException; -import org.simantics.db.exception.ValidationException; import org.simantics.layer0.Layer0; /** @@ -30,16 +26,16 @@ public class TypeComparator extends ResourceComparator { @Override public int compare(ReadGraph g, Resource o1, Resource o2, boolean local) throws DatabaseException { - if (local) - return new TypeComparator().compare(g, o1, o2); - else - return compare(g, o1, o2); + if (o1.equals(o2)) { + return EXACT_MATCH; + } + return compare(g, o1, o2); } @Override public int compare(ReadGraph g, Resource o1, Resource o2) throws DatabaseException{ if (!compareType(g,o1, o2)) { - return (Integer.MAX_VALUE); + return NO_MATCH; } return propsDiffCount(g,o1, o2); } @@ -64,6 +60,16 @@ public class TypeComparator extends ResourceComparator { return false; } } + if (rs1.size() == 1) { + // Check for enumeration type. Without this enumeration instances could be mixed together. + if (g.hasStatement(rs1.get(0), l0.Enumeration, rs1.get(0))) { + if (!r1.equals(r2)) { + rs1.clear(); + rs2.clear(); + return false; + } + } + } rs1.clear(); rs2.clear();