public final Resource Actions;
public final Resource Actions_SelectRoute;
+ public final Resource Actions_ValidateRoute;
public final Resource Route;
public final Resource RouteActionContext;
public final Resource RouteFolder;
public static class URIs {
public static final String Actions = "http://www.simantics.org/DistrictNetworkRoutes-1.0/Actions";
public static final String Actions_SelectRoute = "http://www.simantics.org/DistrictNetworkRoutes-1.0/Actions/SelectRoute";
+ public static final String Actions_ValidateRoute = "http://www.simantics.org/DistrictNetworkRoutes-1.0/Actions/ValidateRoute";
public static final String Route = "http://www.simantics.org/DistrictNetworkRoutes-1.0/Route";
public static final String RouteActionContext = "http://www.simantics.org/DistrictNetworkRoutes-1.0/RouteActionContext";
public static final String RouteFolder = "http://www.simantics.org/DistrictNetworkRoutes-1.0/RouteFolder";
public RouteResource(ReadGraph graph) {
Actions = getResourceOrNull(graph, URIs.Actions);
Actions_SelectRoute = getResourceOrNull(graph, URIs.Actions_SelectRoute);
+ Actions_ValidateRoute = getResourceOrNull(graph, URIs.Actions_ValidateRoute);
Route = getResourceOrNull(graph, URIs.Route);
RouteActionContext = getResourceOrNull(graph, URIs.RouteActionContext);
RouteFolder = getResourceOrNull(graph, URIs.RouteFolder);
--- /dev/null
+package org.simantics.district.route.ui.actions;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+import org.simantics.Simantics;
+import org.simantics.db.Resource;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.adapter.ActionFactory;
+import org.simantics.district.route.Route;
+import org.simantics.district.route.RouteJob;
+import org.simantics.district.route.RouterConfiguration;
+import org.simantics.district.route.internal.RoutePersistence;
+import org.simantics.utils.ui.dialogs.ShowMessage;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ValidateRouteAction implements ActionFactory {
+
+ protected static final Logger LOGGER = LoggerFactory.getLogger(ValidateRouteAction.class);
+
+ @Override
+ public Runnable create(Object target) {
+ if (!(target instanceof Resource))
+ return null;
+
+ return new Runnable() {
+ @Override
+ public void run() {
+ try {
+ Route route = Simantics.getSession().syncRequest(new RoutePersistence.RouteRequest((Resource)target));
+ if (route == null) {
+ ShowMessage.showInformation("Route Validation", "Reading the route object failed");
+ LOGGER.error("Reading a route object failed"); //$NON-NLS-1$
+ return;
+ }
+
+ CompletableFuture<List<Resource>> result = new CompletableFuture<>();
+ result.exceptionally(e -> null).thenAccept(dnElements -> {
+ if (dnElements != null) {
+ if (!dnElements.isEmpty())
+ ShowMessage.showInformation("Route Validation", "The route is valid");
+ else
+ ShowMessage.showInformation("Route Validation", "The route produced an empty list of vertices");
+ }
+ });
+
+ RouterConfiguration config = new RouterConfiguration();
+ new RouteJob(config, route, result).schedule();
+ }
+ catch (DatabaseException e) {
+ LOGGER.error("Error in selecting route " + target, e); //$NON-NLS-1$
+ }
+ }
+ };
+ }
+}