
org.opentripplanner.service.vehiclerental.street.GeofencingZoneExtension 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.service.vehiclerental.street;
/**
* Traversal is restricted by the properties of the geofencing zone.
*/
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import org.opentripplanner.service.vehiclerental.model.GeofencingZone;
import org.opentripplanner.street.model.RentalRestrictionExtension;
import org.opentripplanner.street.search.state.State;
/**
* Traversal is restricted by the properties of the geofencing zone.
*/
public final class GeofencingZoneExtension implements RentalRestrictionExtension {
private final GeofencingZone zone;
public GeofencingZoneExtension(GeofencingZone zone) {
this.zone = zone;
}
public GeofencingZone zone() {
return zone;
}
@Override
public boolean traversalBanned(State state) {
if (state.isRentingVehicle()) {
return (
zone.traversalBanned() &&
(
state.unknownRentalNetwork() ||
zone.id().getFeedId().equals(state.getVehicleRentalNetwork())
)
);
} else {
return false;
}
}
@Override
public boolean dropOffBanned(State state) {
if (state.isRentingVehicle()) {
return (
zone.dropOffBanned() && zone.id().getFeedId().equals(state.getVehicleRentalNetwork())
);
} else {
return false;
}
}
@Override
public Set debugTypes() {
var set = EnumSet.noneOf(RestrictionType.class);
if (zone.traversalBanned()) {
set.add(RestrictionType.NO_TRAVERSAL);
}
if (zone.dropOffBanned()) {
set.add(RestrictionType.NO_DROP_OFF);
}
return set;
}
@Override
public List toList() {
return List.of(this);
}
@Override
public List networks() {
return List.of(zone.id().getFeedId());
}
@Override
public boolean hasRestrictions() {
return true;
}
@Override
public Set noDropOffNetworks() {
if (zone.dropOffBanned()) {
return Set.of(zone.id().getFeedId());
} else {
return Set.of();
}
}
@Override
public String toString() {
return zone.id().toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy