X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.route%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Froute%2Finternal%2FRouteImpl.java;fp=org.simantics.district.route%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Froute%2Finternal%2FRouteImpl.java;h=224f4af0392084adea8d168f215c10ace4c6b30e;hb=92904091e630d96b15286d3ddca833289f0ba926;hp=3619b602143a4c0be0c7c897df625acd3512829e;hpb=0e8411115bcfa632f880953c7e49c5389de28a31;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.route/src/org/simantics/district/route/internal/RouteImpl.java b/org.simantics.district.route/src/org/simantics/district/route/internal/RouteImpl.java index 3619b602..224f4af0 100644 --- a/org.simantics.district.route/src/org/simantics/district/route/internal/RouteImpl.java +++ b/org.simantics.district.route/src/org/simantics/district/route/internal/RouteImpl.java @@ -4,13 +4,21 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.simantics.Simantics; import org.simantics.db.Resource; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.request.Read; import org.simantics.district.route.Route; import org.simantics.district.route.RouteEvent; import org.simantics.district.route.Waypoint; +import org.simantics.utils.threads.ThreadUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class RouteImpl implements Route { + private static final Logger LOGGER = LoggerFactory.getLogger(RouteImpl.class); + private String name; private Resource model; private Resource backend; @@ -68,8 +76,26 @@ public class RouteImpl implements Route { @Override public Waypoint createWaypoint(Object backend) { - if (backend instanceof Resource) - return new WaypointImpl((Resource) backend, "Point 1"); + if (backend instanceof Resource) { + Resource waypoint = (Resource) backend; + WaypointImpl wp = new WaypointImpl(waypoint, ""); + + // Read real label in background + ThreadUtils.getBlockingWorkExecutor().submit(() -> { + try { + Waypoint p = Simantics.getSession().syncRequest( + (Read) graph -> RoutePersistence.toWaypoint(graph, waypoint)); + if (p != null) { + wp.setLabel(p.getLabel()); + rs.fireEvent(RouteEvent.TYPE_ROUTE_MODIFIED, RouteImpl.this); + } + } catch (DatabaseException e) { + LOGGER.error("Failed to read waypoint {} label", backend, e); + } + }); + + return wp; + } throw new IllegalArgumentException("only Resource type waypoints supported, got " + backend); //$NON-NLS-1$ }