// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.graphview.core.access;
import java.util.Collection;
import java.util.List;
import org.openstreetmap.josm.plugins.graphview.core.data.Tag;
/**
* set of assumptions and implications for access;
* will usually depend on local traffic laws
*/
public interface AccessRuleset {
/**
* for a mode of transport, returns all transport categories it is a subset of.
* For example, the returned collection for "motorcycle" might include "motor_vehicle" and "vehicle".
*
* @param transportMode mode of transport to get "supertypes" for; != null
* @return parameters superset categories, including the parameter itself,
* in the order of decreasing specificness
* empty if the parameter was no known mode of transport; != null
*/
List<String> getAccessHierarchyAncestors(String transportMode);
/**
* returns all base tags.
* Base tags are tags that make an object "eligible" for access evaluation
* (commonly things like highway=* or barrier=*)
*/
Collection<Tag> getBaseTags();
/**
* returns ruleset-specific implications
* @return list of implications in the order they are expected to be applied; != null
*/
List<Implication> getImplications();
}