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());
      }
    }
  }
Esempio n. 3
0
  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;
 }