org.opentripplanner.standalone.config.RouterConfig 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.standalone.config;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.MissingNode;
import org.opentripplanner.routing.algorithm.raptor.transit.TransitTuningParameters;
import org.opentripplanner.routing.api.request.RoutingRequest;
import org.opentripplanner.transit.raptor.api.request.RaptorTuningParameters;
import org.opentripplanner.updater.UpdaterParameters;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.Serializable;
import static org.opentripplanner.standalone.config.RoutingRequestMapper.mapRoutingRequest;
/**
* This class is an object representation of the 'router-config.json'.
*/
public class RouterConfig implements Serializable {
private static final double DEFAULT_STREET_ROUTING_TIMEOUT = 5.0;
private static final Logger LOG = LoggerFactory.getLogger(RouterConfig.class);
public static final RouterConfig DEFAULT = new RouterConfig(
MissingNode.getInstance(), "DEFAULT", false
);
/**
* The raw JsonNode three kept for reference and (de)serialization.
*/
private final JsonNode rawJson;
private final String requestLogFile;
private final boolean transmodelApiHideFeedId;
private final double streetRoutingTimeoutSeconds;
private final RoutingRequest routingRequestDefaults;
private final TransitRoutingConfig transitConfig;
private final UpdaterParameters updaterParameters;
public RouterConfig(JsonNode node, String source, boolean logUnusedParams) {
NodeAdapter adapter = new NodeAdapter(node, source);
this.rawJson = node;
this.requestLogFile = adapter.asText("requestLogFile", null);
this.transmodelApiHideFeedId = adapter.path("transmodelApi").asBoolean("hideFeedId", false);
this.streetRoutingTimeoutSeconds = adapter.asDouble(
"streetRoutingTimeout", DEFAULT_STREET_ROUTING_TIMEOUT
);
this.transitConfig = new TransitRoutingConfig(adapter.path("transit"));
this.routingRequestDefaults = mapRoutingRequest(adapter.path("routingDefaults"));
this.updaterParameters = new UpdaterConfig(adapter);
if(logUnusedParams) {
adapter.logAllUnusedParameters(LOG);
}
}
public String requestLogFile() {
return requestLogFile;
}
/**
* The preferred way to limit the search is to limit the distance for
* each street mode(WALK, BIKE, CAR). So the default timeout for a
* street search is set quite high. This is used to abort the search
* if the max distance is not reached within the timeout.
*/
public double streetRoutingTimeoutSeconds() {
return streetRoutingTimeoutSeconds;
}
public boolean transmodelApiHideFeedId() { return transmodelApiHideFeedId; }
public RoutingRequest routingRequestDefaults() {
return routingRequestDefaults;
}
public RaptorTuningParameters raptorTuningParameters() {
return transitConfig;
}
public TransitTuningParameters transitTuningParameters() {
return transitConfig;
}
public UpdaterParameters updaterConfig() { return updaterParameters; }
/**
* If {@code true} the config is loaded from file, in not the DEFAULT config is used.
*/
public boolean isDefault() {
return this.rawJson.isMissingNode();
}
public String toJson() {
return rawJson.isMissingNode() ? "" : rawJson.toString();
}
public String toString() {
// Print ONLY the values set, not deafult values
return rawJson.toPrettyString();
}
}