public GraphIndex(Graph graph) { LOG.info("Indexing graph..."); for (String feedId : graph.getFeedIds()) { for (Agency agency : graph.getAgencies(feedId)) { Map<String, Agency> agencyForId = agenciesForFeedId.getOrDefault(feedId, new HashMap<>()); agencyForId.put(agency.getId(), agency); this.agenciesForFeedId.put(feedId, agencyForId); } } Collection<Edge> edges = graph.getEdges(); /* We will keep a separate set of all vertices in case some have the same label. * Maybe we should just guarantee unique labels. */ Set<Vertex> vertices = Sets.newHashSet(); for (Edge edge : edges) { vertices.add(edge.getFromVertex()); vertices.add(edge.getToVertex()); if (edge instanceof TablePatternEdge) { TablePatternEdge patternEdge = (TablePatternEdge) edge; TripPattern pattern = patternEdge.getPattern(); patternForId.put(pattern.code, pattern); } } for (Vertex vertex : vertices) { vertexForId.put(vertex.getLabel(), vertex); if (vertex instanceof TransitStop) { TransitStop transitStop = (TransitStop) vertex; Stop stop = transitStop.getStop(); stopForId.put(stop.getId(), stop); stopVertexForStop.put(stop, transitStop); stopsForParentStation.put(stop.getParentStation(), stop); } } for (TransitStop stopVertex : stopVertexForStop.values()) { Envelope envelope = new Envelope(stopVertex.getCoordinate()); stopSpatialIndex.insert(envelope, stopVertex); } for (TripPattern pattern : patternForId.values()) { patternsForFeedId.put(pattern.getFeedId(), pattern); patternsForRoute.put(pattern.route, pattern); for (Trip trip : pattern.getTrips()) { patternForTrip.put(trip, pattern); tripForId.put(trip.getId(), trip); } for (Stop stop : pattern.getStops()) { patternsForStop.put(stop, pattern); } } for (Route route : patternsForRoute.asMap().keySet()) { routeForId.put(route.getId(), route); } // Copy these two service indexes from the graph until we have better ones. calendarService = graph.getCalendarService(); serviceCodes = graph.serviceCodes; this.graph = graph; LOG.info("Done indexing graph."); }
private void fixupTransitLeg(Leg leg, State state, TransitIndexService transitIndex) { Edge en = state.getBackEdge(); leg.route = en.getName(); Trip trip = state.getBackTrip(); leg.headsign = state.getBackDirection(); if (trip != null) { // this is the stop headsign // leg.headsign = "This is the headsign"; // handle no stop headsign if (leg.headsign == null) leg.headsign = trip.getTripHeadsign(); leg.tripId = trip.getId().getId(); leg.agencyId = trip.getId().getAgencyId(); leg.tripShortName = trip.getTripShortName(); leg.routeShortName = trip.getRoute().getShortName(); leg.routeLongName = trip.getRoute().getLongName(); leg.routeColor = trip.getRoute().getColor(); leg.routeTextColor = trip.getRoute().getTextColor(); leg.routeId = trip.getRoute().getId().getId(); if (transitIndex != null) { Agency agency = transitIndex.getAgency(leg.agencyId); leg.agencyName = agency.getName(); leg.agencyUrl = agency.getUrl(); } } leg.mode = state.getBackMode().toString(); leg.startTime = makeCalendar(state.getBackState()); }
private void fixupTransitLeg(Leg leg, State state, TransitIndexService transitIndex) { EdgeNarrative en = state.getBackEdgeNarrative(); leg.route = en.getName(); Trip trip = en.getTrip(); if (trip != null) { leg.headsign = trip.getTripHeadsign(); leg.tripId = trip.getId().getId(); leg.agencyId = trip.getId().getAgencyId(); leg.tripShortName = trip.getTripShortName(); leg.routeShortName = trip.getRoute().getShortName(); leg.routeLongName = trip.getRoute().getLongName(); leg.routeColor = trip.getRoute().getColor(); leg.routeTextColor = trip.getRoute().getTextColor(); if (transitIndex != null) { Agency agency = transitIndex.getAgency(leg.agencyId); leg.agencyName = agency.getName(); leg.agencyUrl = agency.getUrl(); } } leg.mode = en.getMode().toString(); leg.startTime = makeCalendar(state.getBackState()); }