// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.graphview.core.access; import java.util.Map; import org.openstreetmap.josm.plugins.graphview.core.data.DataSource; import org.openstreetmap.josm.plugins.graphview.core.property.RoadPropertyType; /** * determines the access rights for an object under certain conditions. * This interface is generic, so it can be used for different representations of ways and nodes * (e.g. internal JOSM representation). * * Generic implementations will usually use {@link DataSource} objects * to implement tag evaluation in an abstract way. * * @param <N> type of the nodes * @param <W> type of the ways */ public interface AccessEvaluator<N, W> { /** * checks whether a way may be accessed in the given direction * * @param way object to be checked; != null * @param segmentProperties map from road property types to their values for this way's * segments; each value must be a valid value for its property type; * != null */ boolean wayUsable(W way, boolean forward, Map<RoadPropertyType<?>, Object> roadPropertyValues); /** * checks whether a node may be accessed/passed * * @param node object to be checked; != null * @param segmentProperties map from road property types to their values for SegmentNodes * based on this node, each value must be a valid value for its * property type; != null */ boolean nodeUsable(N node, Map<RoadPropertyType<?>, Object> roadPropertyValues); }