X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.interop%2Fsrc%2Forg%2Fsimantics%2Finterop%2Ftest%2FTypeComparator.java;h=1417588f10f7ac828386176d8edaace5d55a1196;hb=499167aa0bcc2cab0066b87ef4a690c16ea92754;hp=0526a07f027b66c0763edb0bc769122eed4fe5b2;hpb=65dc4008773b79bd9672956204512fb87edb4f23;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 0526a07..1417588 100644 --- a/org.simantics.interop/src/org/simantics/interop/test/TypeComparator.java +++ b/org.simantics.interop/src/org/simantics/interop/test/TypeComparator.java @@ -1,7 +1,6 @@ package org.simantics.interop.test; import java.util.ArrayList; -import java.util.Collections; import java.util.Comparator; import org.simantics.db.ReadGraph; @@ -12,22 +11,19 @@ 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.interop.test.GraphComparator.PredicateComparator; -import org.simantics.interop.test.GraphComparator.ResourceComparator; 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 implements ObjectComparator { +public class TypeComparator extends ResourceComparator { - Comparator scomp = new PredicateComparator(); - Comparator rcomp = new ResourceComparator(); ArrayList rs1 = new ArrayList(); ArrayList rs2 = new ArrayList(); @@ -49,8 +45,9 @@ public class TypeComparator implements ObjectComparator { rs2.clear(); return false; } - Collections.sort(rs1, rcomp); - Collections.sort(rs2, rcomp); + Comparator rcomp = getComparator().getResourceComparator(); + 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) { @@ -72,10 +69,15 @@ public class TypeComparator implements ObjectComparator { ArrayList ss2 = new ArrayList(); ss1.addAll(g.getStatements(r1, l0.HasProperty)); ss2.addAll(g.getStatements(r2, l0.HasProperty)); - Collections.sort(ss1, scomp); - Collections.sort(ss2, scomp); - int count = 0; + if (ss1.size() == 0 && ss2.size() == 0) + return 0; + + Comparator scomp = getComparator().getStatementComparator(); + + getComparator().sortStatement(ss1, ss2); + + int count = 1; int i1 = 0; int i2 = 0;