All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opentripplanner.routing.algorithm.mapping.RoutingResponseMapper Maven / Gradle / Ivy

The newest version!
package org.opentripplanner.routing.algorithm.mapping;

import static org.opentripplanner.ext.realtimeresolver.RealtimeResolver.populateLegsWithRealtime;

import java.util.List;
import java.util.Set;
import org.opentripplanner.framework.application.OTPFeature;
import org.opentripplanner.model.plan.Itinerary;
import org.opentripplanner.model.plan.paging.cursor.PageCursor;
import org.opentripplanner.raptor.api.request.SearchParams;
import org.opentripplanner.routing.api.request.RouteRequest;
import org.opentripplanner.routing.api.response.RoutingError;
import org.opentripplanner.routing.api.response.RoutingResponse;
import org.opentripplanner.routing.framework.DebugTimingAggregator;
import org.opentripplanner.service.paging.PagingService;
import org.opentripplanner.transit.service.TransitService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class RoutingResponseMapper {

  private static final Logger LOG = LoggerFactory.getLogger(RoutingResponseMapper.class);

  public static RoutingResponse map(
    RouteRequest request,
    SearchParams raptorSearchParamsUsed,
    List itineraries,
    Set routingErrors,
    DebugTimingAggregator debugTimingAggregator,
    TransitService transitService,
    PagingService pagingService
  ) {
    // Search is performed without realtime, but we still want to
    // include realtime information in the result
    if (
      request.preferences().transit().ignoreRealtimeUpdates() && OTPFeature.RealtimeResolver.isOn()
    ) {
      populateLegsWithRealtime(itineraries, transitService);
    }

    // Create response
    var tripPlan = TripPlanMapper.mapTripPlan(request, itineraries);

    // Paging
    PageCursor nextPageCursor = pagingService.nextPageCursor();
    PageCursor prevPageCursor = pagingService.previousPageCursor();

    if (LOG.isDebugEnabled()) {
      logPagingInformation(request.pageCursor(), prevPageCursor, nextPageCursor, routingErrors);
    }

    var metadata = pagingService.createTripSearchMetadata();

    return new RoutingResponse(
      tripPlan,
      prevPageCursor,
      nextPageCursor,
      metadata,
      List.copyOf(routingErrors),
      debugTimingAggregator
    );
  }

  private static void logPagingInformation(
    PageCursor currentPageCursor,
    PageCursor prevPageCursor,
    PageCursor nextPageCursor,
    Set errors
  ) {
    LOG.debug("PageCursor current  : {}", currentPageCursor);
    LOG.debug("PageCursor previous : {}", prevPageCursor);
    LOG.debug("PageCursor next ... : {}", nextPageCursor);
    LOG.debug("Errors ............ : {}", errors);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy