org.opentripplanner.transit.raptor.api.request.RaptorRequestBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of otp Show documentation
Show all versions of otp Show documentation
The OpenTripPlanner multimodal journey planning system
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);
}
}