X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.interop%2Fsrc%2Forg%2Fsimantics%2Finterop%2Ftest%2FTypeComparator.java;h=e3251ac07f2756b42224e76c9eb3a664edeb03c5;hb=020310b467ee9c4586117f7de377d256d756edb4;hp=fc0268ec6372a4258d05ea43c902a0b52ebc43b6;hpb=4399a40e11996b9a373f522af995a19a05493dd3;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 fc0268e..e3251ac 100644 --- a/org.simantics.interop/src/org/simantics/interop/test/TypeComparator.java +++ b/org.simantics.interop/src/org/simantics/interop/test/TypeComparator.java @@ -16,12 +16,13 @@ import org.simantics.layer0.Layer0; /** * Object comparator that uses type of objects to check if objects are comparable. * - * Difference value is amount of properties that have different values. + * Difference value is amount of properties that have different values. If objects have no properties, the result is 0 (unreliable). + * * * @author Marko Luukkainen * */ -public class TypeComparator extends ObjectComparator { +public class TypeComparator extends ResourceComparator { ArrayList rs1 = new ArrayList(); @@ -69,11 +70,14 @@ public class TypeComparator extends ObjectComparator { ss1.addAll(g.getStatements(r1, l0.HasProperty)); ss2.addAll(g.getStatements(r2, l0.HasProperty)); + if (ss1.size() == 0 && ss2.size() == 0) + return 0; + Comparator scomp = getComparator().getStatementComparator(); getComparator().sortStatement(ss1, ss2); - int count = 0; + int count = 1; int i1 = 0; int i2 = 0; @@ -98,6 +102,11 @@ public class TypeComparator extends ObjectComparator { } Statement s1 = ss1.get(i1); Statement s2 = ss2.get(i2); + if (s1.isAsserted(r1) && s2.isAsserted(r2)) { + i1++; + i2++; + continue; + } int c = scomp.compare(s1, s2); switch (c) { case 0:{