package aimax.osm.data; import java.util.List; import aimax.osm.data.entities.MapEntity; /** * Interface for search engines which find entities by name or by * attribute. Search functionality is focused on analysis of the * vicinity of a reference position. * @author Ruediger Lunde */ public interface EntityFinder { /** Returns the radius which defines the search area when starting the search. */ int getMinRadius(); /** Defines the size of the area which is used when starting the search. */ void setMinRadius(int km); /** Returns the radius of the maximal area which can be analyzed during search. */ int getMaxRadius(); /** Defines the maximum dimension of the area to be analyzed. */ void setMaxRadius(int km); /** * Initiates a search for nodes and ways. * @param pattern Part of an entity name, attribute name or attribute value. * @param pos Reference position. */ void findEntity(String pattern, Position pos); /** * Initiates a search for nodes. * @param pattern Part of an entity name, attribute name or attribute value. * @param pos Reference position. */ void findNode(String pattern, Position pos); /** * Initiates a search for ways. * @param pattern Part of an entity name, attribute name or attribute value. * @param pos Reference position. */ void findWay(String pattern, Position pos, MapWayFilter filter); /** * Initiates a search for addresses. * @param address Something like 'Ulm, Prittwitz'. * @param pos Reference position. */ void findAddress(String address, Position pos); /** * Returns true if further results might be obtained by extending the * search area or by using the previously selected intermediate result. */ boolean canFindMore(); /** * Continues search by extending the search area or inferring new * results based on a selected intermediate result (address search). */ void findMore(); /** Returns the reference position of the current search. */ Position getRefPosition(); /** * Returns intermediate results (e.g. possible nodes representing places * with the same name in address search). */ List<MapEntity> getIntermediateResults(); /** * Allows to select one object from the intermediate results to continue * search. */ void selectIntermediateResult(MapEntity entity); /** Returns all search results. */ List<MapEntity> getResults(); }