]> gerrit.simantics Code Review - simantics/interop.git/blob - 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
1 package org.simantics.interop.test;
2
3 import org.simantics.db.ReadGraph;
4 import org.simantics.db.Resource;
5 import org.simantics.db.exception.DatabaseException;
6
7 /**
8  * 
9  * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
10  *
11  */
12 public abstract class ResourceComparator {
13         
14         public static int NO_MATCH = Integer.MAX_VALUE;   // Comparison result when Resources cannot match.
15         public static int UNDECISIVE = 0;                 // Comparison result when current available data is not enough to decide if the Resources match or not. 
16         public static int EXACT_MATCH = 1;                // Comparison result when Resources are exact match.
17         
18         private GraphComparator comparator;
19         
20         void setComparator(GraphComparator comparator) {
21                 this.comparator = comparator;
22         }
23         
24         public GraphComparator getComparator() {
25                 return comparator;
26         }
27         
28         /**
29          * Optional initialization method for overriding implementations.
30          * 
31          * @param g
32      * @param r1 root 1
33      * @param r2 root 2
34          */
35         public void initialize(ReadGraph g, Resource r1, Resource r2) throws DatabaseException {
36             
37         }
38         
39         /**
40          * Compares two resources and returns numeric value of differences, minimum value is 1. 
41          * 
42          * Special values:
43          * Integer.MAX_VALUE: Objects are not comparable.
44          * 0 (zero): Object comparison is not reliable. 
45          * 
46          * Result is same as compare(g, o1, o2, true);
47          * 
48          */
49         public abstract int compare(ReadGraph g, Resource o1, Resource o2) throws DatabaseException;
50         
51         /**
52          * Compares two resources and returns numeric value of differences, minimum value is 1. 
53          * 
54          * Special values:
55          * Integer.MAX_VALUE: Objects are not comparable.
56          * 0 (zero): Object comparison is not reliable. 
57          * 
58          * @param g
59          * @param o1
60          * @param o2
61          * @param local: if true, comparison must not utilise information stored into comparator. 
62          * @return
63          * @throws DatabaseException
64          */
65         public abstract int compare(ReadGraph g, Resource o1, Resource o2, boolean local) throws DatabaseException;
66
67 }