public RaptorBoardSpec getTripIndexReverse(RoutingRequest request, int arrivalTime, int stopNo) { RaptorBoardSpec spec = new RaptorBoardSpec(); spec.departureTime = 0; spec.tripTimes = null; spec.patternIndex = -1; for (int i = 0; i < alights[stopNo - 1].length; ++i) { TransitBoardAlight alight = alights[stopNo - 1][i]; State state = new State(alight.getToVertex(), arrivalTime, request); State result = alight.traverse(state); if (result == null) continue; int time = (int) result.getTime(); if (time > spec.departureTime) { spec.departureTime = time; spec.tripTimes = result.getTripTimes(); spec.patternIndex = i; spec.serviceDay = result.getServiceDay(); spec.tripId = result.getTripId(); } } if (spec.patternIndex == -1) return null; return spec; }
public void testBoardAlight() throws Exception { Vertex stop_a_depart = graph.getVertex("agency:A_depart"); Vertex stop_b_depart = graph.getVertex("agency:B_depart"); assertEquals(1, stop_a_depart.getDegreeOut()); assertEquals(3, stop_b_depart.getDegreeOut()); for (Edge e : stop_a_depart.getOutgoing()) { assertEquals(TransitBoardAlight.class, e.getClass()); assertTrue(((TransitBoardAlight) e).boarding); } TransitBoardAlight pb = (TransitBoardAlight) stop_a_depart.getOutgoing().iterator().next(); Vertex journey_a_1 = pb.getToVertex(); assertEquals(1, journey_a_1.getDegreeIn()); for (Edge e : journey_a_1.getOutgoing()) { if (e.getToVertex() instanceof TransitStop) { assertEquals(TransitBoardAlight.class, e.getClass()); } else { assertEquals(PatternHop.class, e.getClass()); } } }
public PatternHop getHopOut(Vertex v) { for (TransitBoardAlight e : filter(v.getOutgoing(), TransitBoardAlight.class)) { if (!e.isBoarding()) continue; for (PatternHop f : filter(e.getToVertex().getOutgoing(), PatternHop.class)) { return f; } } return null; }
/* Somewhat hackish convenience method to grab a hop edge on a particular route leaving a particular stop. */ private PatternHop getHopEdge(String stopId, String routeId) { Vertex stopDepartVertex = graph.getVertex("agency:" + stopId + "_depart"); for (Edge edge : stopDepartVertex.getOutgoing()) { if (edge instanceof TransitBoardAlight) { TransitBoardAlight tba = ((TransitBoardAlight) edge); if (tba.boarding && tba.getPattern().route.getId().getId().equals(routeId)) { for (Edge edge2 : tba.getToVertex().getOutgoing()) { if (edge2 instanceof PatternHop) { return (PatternHop) edge2; } } } } } return null; }