]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop/src/org/simantics/interop/test/TypeComparator.java
Improved handling of unidentified objects.
[simantics/interop.git] / org.simantics.interop / src / org / simantics / interop / test / TypeComparator.java
index 0526a07f027b66c0763edb0bc769122eed4fe5b2..1417588f10f7ac828386176d8edaace5d55a1196 100644 (file)
@@ -1,7 +1,6 @@
 package org.simantics.interop.test;\r
 \r
 import java.util.ArrayList;\r
-import java.util.Collections;\r
 import java.util.Comparator;\r
 \r
 import org.simantics.db.ReadGraph;\r
@@ -12,22 +11,19 @@ import org.simantics.db.exception.DoesNotContainValueException;
 import org.simantics.db.exception.ManyObjectsForFunctionalRelationException;\r
 import org.simantics.db.exception.ServiceException;\r
 import org.simantics.db.exception.ValidationException;\r
-import org.simantics.interop.test.GraphComparator.PredicateComparator;\r
-import org.simantics.interop.test.GraphComparator.ResourceComparator;\r
 import org.simantics.layer0.Layer0;\r
 \r
 /**\r
  * Object comparator that uses type of objects to check if objects are comparable. \r
  * \r
- * Difference value is amount of properties that have different values.\r
+ * Difference value is amount of properties that have different values. If objects have no properties, the result is 0 (unreliable).\r
+ * \r
  * \r
  * @author Marko Luukkainen <marko.luukkainen@vtt.fi>\r
  *\r
  */\r
-public class TypeComparator implements ObjectComparator {\r
+public class TypeComparator extends ResourceComparator {\r
 \r
-       Comparator<Statement> scomp = new PredicateComparator();\r
-       Comparator<Resource> rcomp = new ResourceComparator();\r
        \r
        ArrayList<Resource> rs1 = new ArrayList<Resource>();\r
        ArrayList<Resource> rs2 = new ArrayList<Resource>();\r
@@ -49,8 +45,9 @@ public class TypeComparator implements ObjectComparator {
                        rs2.clear();\r
                        return false;\r
                }\r
-               Collections.sort(rs1, rcomp);\r
-               Collections.sort(rs2, rcomp);\r
+               Comparator<Resource> rcomp = getComparator().getResourceComparator();\r
+               getComparator().sortResource(rs1, rs2);\r
+\r
                for (int i = 0; i < rs1.size(); i++) {\r
                        int c = rcomp.compare(rs1.get(i), rs2.get(i));\r
                        if (c != 0) {\r
@@ -72,10 +69,15 @@ public class TypeComparator implements ObjectComparator {
                ArrayList<Statement> ss2 = new ArrayList<Statement>();\r
                ss1.addAll(g.getStatements(r1, l0.HasProperty));\r
                ss2.addAll(g.getStatements(r2, l0.HasProperty));\r
-               Collections.sort(ss1, scomp);\r
-               Collections.sort(ss2, scomp);\r
                \r
-               int count = 0;\r
+               if (ss1.size() == 0 && ss2.size() == 0)\r
+                       return 0;\r
+               \r
+               Comparator<Statement> scomp = getComparator().getStatementComparator();\r
+               \r
+               getComparator().sortStatement(ss1, ss2);\r
+               \r
+               int count = 1;\r
                \r
                int i1 = 0; \r
                int i2 = 0;\r