
org.opentripplanner.routing.api.request.RequestModes 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
The newest version!
package org.opentripplanner.routing.api.request;
import static org.opentripplanner.routing.api.request.StreetMode.NOT_SET;
import java.util.Objects;
import javax.annotation.Nonnull;
import org.opentripplanner.framework.tostring.ToStringBuilder;
public class RequestModes {
/**
* The RequestModes is mutable, so we need to keep a private default set of modes.
*/
private static final RequestModes DEFAULTS = new RequestModes(
StreetMode.WALK,
StreetMode.WALK,
StreetMode.WALK,
StreetMode.WALK
);
@Nonnull
public final StreetMode accessMode;
@Nonnull
public final StreetMode egressMode;
@Nonnull
public final StreetMode directMode;
@Nonnull
public final StreetMode transferMode;
private RequestModes(
StreetMode accessMode,
StreetMode egressMode,
StreetMode directMode,
StreetMode transferMode
) {
this.accessMode = (accessMode != null && accessMode.accessAllowed()) ? accessMode : NOT_SET;
this.egressMode = (egressMode != null && egressMode.egressAllowed()) ? egressMode : NOT_SET;
this.directMode = directMode != null ? directMode : NOT_SET;
this.transferMode =
(transferMode != null && transferMode.transferAllowed()) ? transferMode : NOT_SET;
}
public RequestModes(RequestModesBuilder builder) {
this(builder.accessMode(), builder.egressMode(), builder.directMode(), builder.transferMode());
}
/**
* Return a mode builder with the defaults set.
*/
public static RequestModesBuilder of() {
return DEFAULTS.copyOf();
}
public RequestModesBuilder copyOf() {
return new RequestModesBuilder(this);
}
/**
* Return the default set of modes with WALK for all street modes and all transit modes set.
* Tip: Use the {@link #of()} to change the defaults.
*/
public static RequestModes defaultRequestModes() {
return DEFAULTS;
}
public boolean contains(StreetMode streetMode) {
return (
streetMode.equals(accessMode) ||
streetMode.equals(egressMode) ||
streetMode.equals(directMode)
);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
RequestModes that = (RequestModes) o;
if (accessMode != that.accessMode) {
return false;
}
if (egressMode != that.egressMode) {
return false;
}
if (directMode != that.directMode) {
return false;
}
return transferMode == that.transferMode;
}
@Override
public int hashCode() {
return Objects.hash(accessMode, egressMode, directMode, transferMode);
}
@Override
public String toString() {
return ToStringBuilder
.of(RequestModes.class)
.addEnum("accessMode", accessMode)
.addEnum("egressMode", egressMode)
.addEnum("directMode", directMode)
.addEnum("transferMode", transferMode)
.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy