MATSIM
DefaultTransitPassengerRoute.java
Go to the documentation of this file.
1 package org.matsim.pt.routes;
2 
3 import java.io.IOException;
4 import java.util.Objects;
5 
6 import org.matsim.api.core.v01.Id;
10 import org.matsim.core.utils.misc.Time;
14 
15 import com.fasterxml.jackson.annotation.JsonProperty;
16 import com.fasterxml.jackson.core.JsonProcessingException;
17 import com.fasterxml.jackson.databind.ObjectMapper;
18 
20  protected final static int NULL_ID = -1;
21  private final static ObjectMapper OBJECT_MAPPER = new ObjectMapper();
22 
23  final public static String ROUTE_TYPE = "default_pt";
24 
25  public double boardingTime = UNDEFINED_TIME;
26 
27  public int transitLineIndex;
28  public int transitRouteIndex;
29 
30  public int accessFacilityIndex;
31  public int egressFacilityIndex;
32 
34  this(startLinkId, endLinkId, null, null, null, null);
35  }
36 
38  TransitStopFacility egressFacility) {
39  this( //
40  accessFacility.getLinkId(), egressFacility.getLinkId(), //
41  accessFacility.getId(), egressFacility.getId(), //
42  line != null ? line.getId() : null, route != null ? route.getId() : null);
43  }
44 
46  final Id<Link> accessLinkId, final Id<Link> egressLinkId, //
47  Id<TransitStopFacility> accessFacilityId, Id<TransitStopFacility> egressFacilityId, //
48  Id<TransitLine> transitLineId, Id<TransitRoute> transitRouteId) {
49  super(accessLinkId, egressLinkId);
50 
51  this.transitLineIndex = Objects.isNull(transitLineId) ? NULL_ID : transitLineId.index();
52  this.transitRouteIndex = Objects.isNull(transitRouteId) ? NULL_ID : transitRouteId.index();
53  this.accessFacilityIndex = Objects.isNull(accessFacilityId) ? NULL_ID : accessFacilityId.index();
54  this.egressFacilityIndex = Objects.isNull(egressFacilityId) ? NULL_ID : egressFacilityId.index();
55  }
56 
57  @Override
58  public String getRouteType() {
59  return ROUTE_TYPE;
60  }
61 
62  @Override
63  public String getRouteDescription() {
64 
65  try {
66  RouteDescription routeDescription = new RouteDescription();
67  routeDescription.boardingTime = this.boardingTime;
68  routeDescription.accessFacilityId = this.accessFacilityIndex == NULL_ID ? null : Id.get(this.accessFacilityIndex, TransitStopFacility.class);
69  routeDescription.egressFacilityId = this.egressFacilityIndex == NULL_ID ? null : Id.get(this.egressFacilityIndex, TransitStopFacility.class);
70  routeDescription.transitLineId = this.transitLineIndex == NULL_ID ? null : Id.get(this.transitLineIndex, TransitLine.class);
71  routeDescription.transitRouteId = this.transitRouteIndex == NULL_ID ? null : Id.get(this.transitRouteIndex, TransitRoute.class);
72  return OBJECT_MAPPER.writeValueAsString(routeDescription);
73  } catch (JsonProcessingException e) {
74  throw new RuntimeException(e);
75  }
76  }
77 
78  @Override
79  public void setRouteDescription(String routeDescription) {
80  try {
81  RouteDescription parsed = OBJECT_MAPPER.readValue(routeDescription, RouteDescription.class);
82  this.boardingTime = parsed.boardingTime;
83  this.accessFacilityIndex = parsed.accessFacilityId == null ? NULL_ID : parsed.accessFacilityId.index();
84  this.egressFacilityIndex = parsed.egressFacilityId == null ? NULL_ID : parsed.egressFacilityId.index();
85  this.transitLineIndex = parsed.transitLineId == null ? NULL_ID : parsed.transitLineId.index();
86  this.transitRouteIndex = parsed.transitRouteId == null ? NULL_ID : parsed.transitRouteId.index();
87  } catch (IOException e) {
88  throw new RuntimeException(e);
89  }
90  }
91 
92  @Override
94  return asOptionalTime(this.boardingTime);
95  }
96 
97  public void setBoardingTime(double boardingTime) {
98  OptionalTime.assertDefined(boardingTime);
99  this.boardingTime = boardingTime;
100  }
101 
102  @Override
104  return this.transitLineIndex >= 0 ? Id.get(this.transitLineIndex, TransitLine.class) : null;
105  }
106 
107  @Override
109  return this.transitRouteIndex >= 0 ? Id.get(this.transitRouteIndex, TransitRoute.class) : null;
110  }
111 
112  @Override
114  return this.accessFacilityIndex >= 0 ? Id.get(this.accessFacilityIndex, TransitStopFacility.class) : null;
115  }
116 
117  @Override
119  return this.egressFacilityIndex >= 0 ? Id.get(this.egressFacilityIndex, TransitStopFacility.class) : null;
120  }
121 
122  @Override
127  getLineId(), getRouteId());
128 
129  copy.setDistance(getDistance());
130  getTravelTime().ifDefined(copy::setTravelTime);
131  getBoardingTime().ifDefined(copy::setBoardingTime);
132 
133  return copy;
134  }
135 
136  public static class RouteDescription {
137  public double boardingTime = UNDEFINED_TIME;
138 
141 
144 
145  @JsonProperty("boardingTime")
146  public String getBoardingTime() {
147  return Time.writeTime(boardingTime);
148  }
149 
150  @JsonProperty("accessFacilityId")
151  public String getAccessFacilityId() {
152  return this.accessFacilityId == null ? null : this.accessFacilityId.toString();
153  }
154 
155  @JsonProperty("egressFacilityId")
156  public String getEgressFacilityId() {
157  return this.egressFacilityId == null ? null : this.egressFacilityId.toString();
158  }
159 
160  @JsonProperty("transitLineId")
161  public String getTransitLineId() {
162  return this.transitLineId == null ? null : this.transitLineId.toString();
163  }
164 
165  @JsonProperty("transitRouteId")
166  public String getRouteLineId() {
167  return this.transitRouteId == null ? null : this.transitRouteId.toString();
168  }
169 
170  @JsonProperty("boardingTime")
171  public void setBoardingTime(String boardingTime) {
173  }
174 
175  @JsonProperty("transitLineId")
176  public void setTransitLineId(String transitLineId) {
177  this.transitLineId = transitLineId == null ? null : Id.create(transitLineId, TransitLine.class);
178  }
179 
180  @JsonProperty("transitRouteId")
181  public void setRouteLineId(String transitRouteId) {
182  this.transitRouteId = transitRouteId == null ? null : Id.create(transitRouteId, TransitRoute.class);
183  }
184 
185  @JsonProperty("accessFacilityId")
186  public void setAccessFacilityId(String accessFacilityId) {
188  }
189 
190  @JsonProperty("egressFacilityId")
191  public void setEgressFacilityId(String egressFacilityId) {
193  }
194 
195  }
196 }
static< T > Id< T > get(int index, final Class< T > type)
Definition: Id.java:112
void ifDefined(DoubleConsumer action)
static< T > Id< T > create(final long key, final Class< T > type)
Definition: Id.java:68
static final OptionalTime parseOptionalTime(final String time)
Definition: Time.java:167
static OptionalTime asOptionalTime(double seconds)
static final String writeTime(final double seconds, final String timeformat)
Definition: Time.java:80
DefaultTransitPassengerRoute(final Id< Link > accessLinkId, final Id< Link > egressLinkId, Id< TransitStopFacility > accessFacilityId, Id< TransitStopFacility > egressFacilityId, Id< TransitLine > transitLineId, Id< TransitRoute > transitRouteId)
static void assertDefined(double seconds)
DefaultTransitPassengerRoute(TransitStopFacility accessFacility, TransitLine line, TransitRoute route, TransitStopFacility egressFacility)