// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.graphview.core.access;
import java.util.Collection;
import org.openstreetmap.josm.plugins.graphview.core.property.VehiclePropertyType;
/**
* information that describes the vehicle and situation to evaluate access for.
* AccessParameters should be immutable.
*/
public interface AccessParameters {
String getAccessClass();
/**
* returns true iff a road with a given access type can be used
* @param accessType access type to check usablitly for; != null
*/
boolean getAccessTypeUsable(AccessType accessType);
/**
* returns all {@link VehiclePropertyType}s a value is avaliable for.
* The value can be accessed using {@link #getVehiclePropertyValue(VehiclePropertyType)}
* @return collection of property types; != null
*/
Collection<VehiclePropertyType<?>> getAvailableVehicleProperties();
/**
* returns the value for a vehicle property.
*
* @param <V> type of property value
* @param vehicleProperty property to get value for; != null
* @return value for vehicleProperty, null if no value is available.
* Guaranteed to be valid according to vehicleProperty's
* {@link VehiclePropertyType#isValidValue(Object)} method.
*/
<V> V getVehiclePropertyValue(VehiclePropertyType<V> vehicleProperty);
}