]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop/src/org/simantics/interop/test/TypeComparator.java
refs #3138
[simantics/interop.git] / org.simantics.interop / src / org / simantics / interop / test / TypeComparator.java
index fc0268ec6372a4258d05ea43c902a0b52ebc43b6..e3251ac07f2756b42224e76c9eb3a664edeb03c5 100644 (file)
@@ -16,12 +16,13 @@ import org.simantics.layer0.Layer0;
 /**\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 extends ObjectComparator {\r
+public class TypeComparator extends ResourceComparator {\r
 \r
        \r
        ArrayList<Resource> rs1 = new ArrayList<Resource>();\r
@@ -69,11 +70,14 @@ public class TypeComparator extends ObjectComparator {
                ss1.addAll(g.getStatements(r1, l0.HasProperty));\r
                ss2.addAll(g.getStatements(r2, l0.HasProperty));\r
                \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 = 0;\r
+               int count = 1;\r
                \r
                int i1 = 0; \r
                int i2 = 0;\r
@@ -98,6 +102,11 @@ public class TypeComparator extends ObjectComparator {
                        }\r
                        Statement s1 = ss1.get(i1);\r
                        Statement s2 = ss2.get(i2);\r
+                       if (s1.isAsserted(r1) && s2.isAsserted(r2)) {\r
+                               i1++;\r
+                               i2++;\r
+                               continue;\r
+                       }\r
                        int c = scomp.compare(s1, s2);\r
                        switch (c) {\r
                                case 0:{\r