]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop/src/org/simantics/interop/test/ResourceComparator.java
Use named Comparator return values for most common cases
[simantics/interop.git] / org.simantics.interop / src / org / simantics / interop / test / ResourceComparator.java
index 0b0a7c1a53d983933319bfa901f70eca84ff1ce8..f01d88d860b2bd34edc8b513740d6b6f353820f9 100644 (file)
@@ -1,39 +1,67 @@
-package org.simantics.interop.test;\r
-\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.exception.DatabaseException;\r
-\r
-/**\r
- * \r
- * @author Marko Luukkainen <marko.luukkainen@vtt.fi>\r
- *\r
- */\r
-public abstract class ResourceComparator {\r
-       \r
-       private GraphComparator comparator;\r
-       \r
-       void setComparator(GraphComparator comparator) {\r
-               this.comparator = comparator;\r
-       }\r
-       \r
-       public GraphComparator getComparator() {\r
-               return comparator;\r
-       }\r
-       \r
-       /**\r
-        * Compares two resources and returns numeric value of differences, minimum value is 1. \r
-        * \r
-        * Special values:\r
-        * Integer.MAX_VALUE: Objects are not comparable.\r
-        * 0 (zero): Object comparison is not reliable. \r
-        * \r
-        * @param g\r
-        * @param o1\r
-        * @param o2\r
-        * @return\r
-        * @throws DatabaseException\r
-        */\r
-       public abstract int compare(ReadGraph g, Resource o1, Resource o2) throws DatabaseException;\r
-\r
-}\r
+package org.simantics.interop.test;
+
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.exception.DatabaseException;
+
+/**
+ * 
+ * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
+ *
+ */
+public abstract class ResourceComparator {
+       
+       public static int NO_MATCH = Integer.MAX_VALUE;   // Comparison result when Resources cannot match.
+       public static int UNDECISIVE = 0;                 // Comparison result when current available data is not enough to decide if the Resources match or not. 
+       public static int EXACT_MATCH = 1;                // Comparison result when Resources are exact match.
+       
+       private GraphComparator comparator;
+       
+       void setComparator(GraphComparator comparator) {
+               this.comparator = comparator;
+       }
+       
+       public GraphComparator getComparator() {
+               return comparator;
+       }
+       
+       /**
+        * Optional initialization method for overriding implementations.
+        * 
+        * @param g
+     * @param r1 root 1
+     * @param r2 root 2
+        */
+       public void initialize(ReadGraph g, Resource r1, Resource r2) throws DatabaseException {
+           
+       }
+       
+       /**
+        * Compares two resources and returns numeric value of differences, minimum value is 1. 
+        * 
+        * Special values:
+        * Integer.MAX_VALUE: Objects are not comparable.
+        * 0 (zero): Object comparison is not reliable. 
+        * 
+        * Result is same as compare(g, o1, o2, true);
+        * 
+        */
+       public abstract int compare(ReadGraph g, Resource o1, Resource o2) throws DatabaseException;
+       
+       /**
+        * Compares two resources and returns numeric value of differences, minimum value is 1. 
+        * 
+        * Special values:
+        * Integer.MAX_VALUE: Objects are not comparable.
+        * 0 (zero): Object comparison is not reliable. 
+        * 
+        * @param g
+        * @param o1
+        * @param o2
+        * @param local: if true, comparison must not utilise information stored into comparator. 
+        * @return
+        * @throws DatabaseException
+        */
+       public abstract int compare(ReadGraph g, Resource o1, Resource o2, boolean local) throws DatabaseException;
+
+}