/
Trip.java
136 lines (117 loc) · 4.93 KB
/
Trip.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package com.graphhopper;
import com.graphhopper.util.InstructionList;
import com.graphhopper.util.details.PathDetail;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.Point;
import java.util.Date;
import java.util.List;
import java.util.Map;
public class Trip {
public static abstract class Leg {
public final String type;
public final String departureLocation;
public final Geometry geometry;
public final double distance;
public Leg(String type, String departureLocation, Geometry geometry, double distance) {
this.type = type;
this.departureLocation = departureLocation;
this.geometry = geometry;
this.distance = distance;
}
public double getDistance() {
return distance;
}
public abstract Date getDepartureTime();
public abstract Date getArrivalTime();
}
public static class Stop {
public final String stop_id;
public final String stop_name;
public final Point geometry;
public final Date arrivalTime;
public final Date plannedArrivalTime;
public final Date predictedArrivalTime;
public final boolean arrivalCancelled;
public final Date departureTime;
public final Date plannedDepartureTime;
public final Date predictedDepartureTime;
public final boolean departureCancelled;
public Stop(String stop_id, String name, Point geometry, Date arrivalTime, Date plannedArrivalTime, Date predictedArrivalTime, boolean arrivalCancelled, Date departureTime, Date plannedDepartureTime, Date predictedDepartureTime, boolean departureCancelled) {
this.stop_id = stop_id;
this.stop_name = name;
this.geometry = geometry;
this.arrivalTime = arrivalTime;
this.plannedArrivalTime = plannedArrivalTime;
this.predictedArrivalTime = predictedArrivalTime;
this.arrivalCancelled = arrivalCancelled;
this.departureTime = departureTime;
this.plannedDepartureTime = plannedDepartureTime;
this.predictedDepartureTime = predictedDepartureTime;
this.departureCancelled = departureCancelled;
}
@Override
public String toString() {
return "Stop{" +
"stop_id='" + stop_id + '\'' +
", arrivalTime=" + arrivalTime +
", departureTime=" + departureTime +
'}';
}
}
public static class WalkLeg extends Leg {
public final InstructionList instructions;
public final Map<String, List<PathDetail>> details;
private final Date departureTime;
private final Date arrivalTime;
public WalkLeg(String departureLocation, Date departureTime, Geometry geometry, double distance, InstructionList instructions, Map<String, List<PathDetail>> details, Date arrivalTime) {
super("walk", departureLocation, geometry, distance);
this.instructions = instructions;
this.departureTime = departureTime;
this.details = details;
this.arrivalTime = arrivalTime;
}
@Override
public Date getDepartureTime() {
return departureTime;
}
@Override
public Date getArrivalTime() {
return arrivalTime;
}
}
public static class PtLeg extends Leg {
public final String feed_id;
public final boolean isInSameVehicleAsPrevious;
public final String trip_headsign;
public final long travelTime;
public final List<Stop> stops;
public final String trip_id;
public final String route_id;
public final int route_type;
public final String route_url;
public final String route_short_name;
public final String route_long_name;
public PtLeg(String feedId, boolean isInSameVehicleAsPrevious, String tripId, String routeId, int routeType, String routeUrl, String routeShortName, String routeLongName, String headsign, List<Stop> stops, double distance, long travelTime, Geometry geometry) {
super("pt", stops.get(0).stop_name, geometry, distance);
this.feed_id = feedId;
this.isInSameVehicleAsPrevious = isInSameVehicleAsPrevious;
this.trip_id = tripId;
this.route_id = routeId;
this.trip_headsign = headsign;
this.travelTime = travelTime;
this.stops = stops;
this.route_type = routeType;
this.route_url = routeUrl;
this.route_short_name = routeShortName;
this.route_long_name = routeLongName;
}
@Override
public Date getDepartureTime() {
return stops.get(0).departureTime;
}
@Override
public Date getArrivalTime() {
return stops.get(stops.size()-1).arrivalTime;
}
}
}