package com.graphhopper; import com.graphhopper.util.EdgeIteratorState; import com.graphhopper.util.InstructionList; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.Point; import java.util.Date; import java.util.List; public class Trip { public static abstract class Leg { public final String type; public final String departureLocation; public final Date departureTime; public final List<EdgeIteratorState> edges; public final Geometry geometry; public final double distance; public final Date arrivalTime; public Leg(String type, String departureLocation, Date departureTime, List<EdgeIteratorState> edges, Geometry geometry, double distance, Date arrivalTime) { this.type = type; this.departureLocation = departureLocation; this.edges = edges; this.geometry = geometry; this.distance = distance; this.departureTime = departureTime; this.arrivalTime = arrivalTime; } public double getDistance() { return distance; } } public static class Stop { public final String stop_id; public final String name; public final Point geometry; public final Date arrivalTime; public final Date departureTime; public Stop(String stop_id, String name, Point geometry, Date arrivalTime, Date departureTime) { this.stop_id = stop_id; this.name = name; this.geometry = geometry; this.arrivalTime = arrivalTime; this.departureTime = departureTime; } } public static class WalkLeg extends Leg { public final InstructionList instructions; public WalkLeg(String departureLocation, Date departureTime, List<EdgeIteratorState> edges, Geometry geometry, double distance, InstructionList instructions, Date arrivalTime) { super("walk", departureLocation, departureTime, edges, geometry, distance, arrivalTime); this.instructions = instructions; } } public static class PtLeg extends Leg { public final String feedId; public final boolean isInSameVehicleAsPrevious; public final String trip_headsign; public final long travelTime; public final List<Stop> stops; public final Stop boardStop; public final String tripId; public final String routeId; public PtLeg(String feedId, boolean isInSameVehicleAsPrevious, Stop stop, String tripId, String routeId, List<EdgeIteratorState> edges, Date departureTime, List<Stop> stops, double distance, long travelTime, Date arrivalTime, Geometry geometry) { super("pt", stop.name, departureTime, edges, geometry, distance, arrivalTime); this.feedId = feedId; this.isInSameVehicleAsPrevious = isInSameVehicleAsPrevious; this.boardStop = stop; this.tripId = tripId; this.routeId = routeId; this.trip_headsign = edges.get(0).getName(); this.travelTime = travelTime; this.stops = stops; } } }