]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop.mapping/src/org/simantics/interop/mapping/data/DistanceComparator.java
refs #3483
[simantics/interop.git] / org.simantics.interop.mapping / src / org / simantics / interop / mapping / data / DistanceComparator.java
diff --git a/org.simantics.interop.mapping/src/org/simantics/interop/mapping/data/DistanceComparator.java b/org.simantics.interop.mapping/src/org/simantics/interop/mapping/data/DistanceComparator.java
new file mode 100644 (file)
index 0000000..7ea8dc8
--- /dev/null
@@ -0,0 +1,28 @@
+package org.simantics.interop.mapping.data;\r
+\r
+import java.util.Comparator;\r
+\r
+public class DistanceComparator<T> implements Comparator<GraphNode<T>> {\r
+\r
+       private String rel;\r
+       private String inv;\r
+       \r
+       public DistanceComparator(String rel, String inv) {\r
+               this.rel = rel;\r
+               this.inv = inv;\r
+       }\r
+       \r
+       @Override\r
+       public int compare(GraphNode<T> arg0, GraphNode<T> arg1) {\r
+               int dist = arg0.distanceTo(arg1, rel, inv);\r
+               if (dist < 0) {\r
+                       dist = arg0.distanceTo(arg1, inv, rel);\r
+                       if (dist < 0)\r
+                               return 0;\r
+                       return -dist;\r
+               } else {\r
+                       return dist;\r
+               }\r
+               \r
+       }\r
+}\r