1 package org.simantics.district.route.internal;
3 import java.util.ArrayList;
4 import java.util.Collections;
7 import org.simantics.db.Resource;
8 import org.simantics.district.route.Route;
9 import org.simantics.district.route.RouteEvent;
10 import org.simantics.district.route.Waypoint;
12 public class RouteImpl implements Route {
15 private Resource model;
16 private Resource backend;
18 private RouteServiceImpl rs;
20 private List<Waypoint> waypoints;
21 private List<Waypoint> unmodifiableWaypoints;
23 public RouteImpl(String name) {
26 waypoints(new ArrayList<>());
29 public RouteImpl modelEntity(Resource model) {
34 public Resource modelEntity() {
38 public RouteImpl backend(Resource backend) {
39 this.backend = backend;
43 public Resource backend() {
47 public RouteImpl waypoints(List<Waypoint> waypoints) {
48 this.waypoints = waypoints;
49 this.unmodifiableWaypoints = Collections.unmodifiableList(waypoints);
53 public RouteImpl routeService(RouteServiceImpl rs) {
59 public String getName() {
64 public void setName(String name) {
66 fireEvent(RouteEvent.TYPE_ROUTE_RENAMED);
70 public Waypoint createWaypoint(Object backend) {
71 if (backend instanceof Resource)
72 return new WaypointImpl((Resource) backend, "Point 1");
73 throw new IllegalArgumentException("only Resource type waypoints supported, got " + backend); //$NON-NLS-1$
77 public void addWaypoint(int index, Waypoint r) {
78 waypoints.add(index, r);
79 fireEvent(RouteEvent.TYPE_ROUTE_MODIFIED);
83 public void removeWaypoint(Waypoint r) {
85 fireEvent(RouteEvent.TYPE_ROUTE_MODIFIED);
89 public List<Waypoint> waypoints() {
90 return unmodifiableWaypoints;
94 public String toString() {
95 return String.format("%s@%x [%s, waypoints=%s]",
97 System.identityHashCode(this),
99 waypoints.toString());
102 private void fireEvent(int type) {
104 rs.fireEvent(type, this);