]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.route/src/org/simantics/district/route/Router.java
Merge "Initial version of the district network Routes view."
[simantics/district.git] / org.simantics.district.route / src / org / simantics / district / route / Router.java
diff --git a/org.simantics.district.route/src/org/simantics/district/route/Router.java b/org.simantics.district.route/src/org/simantics/district/route/Router.java
new file mode 100644 (file)
index 0000000..1d24232
--- /dev/null
@@ -0,0 +1,32 @@
+package org.simantics.district.route;
+
+import java.util.List;
+
+import org.simantics.db.Resource;
+import org.simantics.db.layer0.variable.Variable;
+
+/**
+ * @author Tuukka Lehtonen
+ */
+public interface Router {
+
+    /**
+     * @return descriptive name of the router
+     */
+    default String name() {
+        return toString();
+    }
+
+    /**
+     * Must be invoked outside of any transaction realm, like a database request or
+     * experiment thread, preferably from a background job thread.
+     * 
+     * @param wayPoints waypoints for the route to find in visiting order. The
+     *            resources must represents district network diagram elements.
+     * @return the piece-wise shortest path between the specified waypoints as a
+     *         fully baked path of district network diagram element resources
+     * @throws RoutingException in case of any problems in routing
+     */
+    List<Variable> findShortestPath(RouterConfiguration config, List<Resource> wayPoints) throws RoutingException;
+
+}