X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=org.simantics.district.route%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Froute%2Finternal%2FRoutePersistence.java;fp=org.simantics.district.route%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Froute%2Finternal%2FRoutePersistence.java;h=4bc0c6f0cc4fa3d73d93a5fae9eda5ab25796147;hb=ba7538f944093917a2564f1ccde362439ce65495;hp=fceb6612cb521fd2d81e3d5759046c4daee2f120;hpb=c53dbb24511e2920c610caed7b65c3d92b4d76e8;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.route/src/org/simantics/district/route/internal/RoutePersistence.java b/org.simantics.district.route/src/org/simantics/district/route/internal/RoutePersistence.java index fceb6612..4bc0c6f0 100644 --- a/org.simantics.district.route/src/org/simantics/district/route/internal/RoutePersistence.java +++ b/org.simantics.district.route/src/org/simantics/district/route/internal/RoutePersistence.java @@ -23,6 +23,7 @@ import org.simantics.db.common.utils.NameUtils; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.QueryIndexUtils; import org.simantics.db.layer0.request.PossibleActiveModel; +import org.simantics.db.layer0.request.PossibleModel; import org.simantics.db.layer0.util.RemoverUtil; import org.simantics.district.network.ontology.DistrictNetworkResource; import org.simantics.district.route.Waypoint; @@ -135,16 +136,33 @@ public class RoutePersistence { List routes = new ArrayList<>(); for (Resource route : graph.syncRequest(new ObjectsWithType(rf, L0.ConsistsOf, RR.Route))) { - RouteImpl ri = new RouteImpl(graph.getRelatedValue(route, L0.HasLabel, Bindings.STRING)) - .backend(route) - .modelEntity(model) - .waypoints(toWaypoints(graph, ListUtils.toList(graph, route))); - routes.add(ri); + routes.add(getRoute(graph, model, route)); } return routes; } + public static RouteImpl getRoute(ReadGraph graph, Resource model, Resource route) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); + RouteImpl ri = new RouteImpl(graph.getRelatedValue(route, L0.HasLabel, Bindings.STRING)) + .backend(route) + .modelEntity(model) + .waypoints(toWaypoints(graph, ListUtils.toList(graph, route))); + return ri; + } + + public static class RouteRequest extends ResourceRead { + public RouteRequest(Resource resource) { + super(resource); + } + + @Override + public RouteImpl perform(ReadGraph graph) throws DatabaseException { + Resource model = graph.syncRequest(new PossibleModel(resource)); + return model != null ? getRoute(graph, model, resource) : null; + } + } + public static class ModelRoutesRequest extends ResourceRead> { public ModelRoutesRequest(Resource model) { super(model); @@ -154,7 +172,7 @@ public class RoutePersistence { return findRoutes(graph, resource); } } - + public static class ActiveModelRoutesRequest extends UniqueRead> { @Override public List perform(ReadGraph graph) throws DatabaseException {