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

org.opentripplanner.transit.raptor.api.request.RaptorRequestBuilder Maven / Gradle / Ivy

There is a newer version: 2.5.0
Show newest version
package org.opentripplanner.transit.raptor.api.request;

import org.opentripplanner.transit.raptor.api.transit.RaptorSlackProvider;
import org.opentripplanner.transit.raptor.api.transit.RaptorTripSchedule;

import javax.validation.constraints.NotNull;
import java.util.Collection;
import java.util.EnumSet;
import java.util.Set;

/**
 * This is a Request builder to help construct valid requests. Se the
 * request classes for documentation on each parameter.
 * 

*

    *
  • {@link RaptorRequest} *
  • {@link McCostParams} *
  • {@link DebugRequest} *
* * @param The TripSchedule type defined by the user of the raptor API. */ public class RaptorRequestBuilder { // Search private final SearchParamsBuilder searchParams; private SearchDirection searchDirection; private RaptorSlackProvider slackProvider; // Algorithm private RaptorProfile profile; private final McCostParamsBuilder mcCost; private final Set optimizations = EnumSet.noneOf(Optimization.class); // Debug private final DebugRequestBuilder debug; public RaptorRequestBuilder() { this(RaptorRequest.defaults()); } RaptorRequestBuilder(RaptorRequest defaults) { this.searchParams = new SearchParamsBuilder<>(this, defaults.searchParams()); this.searchDirection = defaults.searchDirection(); this.slackProvider = defaults.slackProvider(); // Algorithm this.profile = defaults.profile(); this.mcCost = new McCostParamsBuilder(defaults.multiCriteriaCostFactors()); this.optimizations.addAll(defaults.optimizations()); // Debug this.debug = new DebugRequestBuilder<>(defaults.debug()); } public SearchParamsBuilder searchParams() { return searchParams; } public RaptorProfile profile() { return profile; } public RaptorRequestBuilder profile(RaptorProfile profile) { this.profile = profile; return this; } public SearchDirection searchDirection() { return searchDirection; } public RaptorRequestBuilder searchDirection(SearchDirection searchDirection) { this.searchDirection = searchDirection; return this; } public RaptorSlackProvider slackProvider() { return slackProvider; } public void slackProvider(@NotNull RaptorSlackProvider slackProvider) { this.slackProvider = slackProvider; } public Collection optimizations() { return optimizations; } public RaptorRequestBuilder enableOptimization(Optimization optimization) { this.optimizations.add(optimization); return this; } public RaptorRequestBuilder clearOptimizations() { this.optimizations.clear(); return this; } public RaptorRequestBuilder disableOptimization(Optimization optimization) { this.optimizations.remove(optimization); return this; } public McCostParamsBuilder mcCostFactors() { return this.mcCost; } public DebugRequestBuilder debug() { return this.debug; } public RaptorRequest build() { return new RaptorRequest<>(this); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy