package net.osmand.data;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import net.osmand.osm.MapRenderingTypes;
// http://wiki.openstreetmap.org/wiki/Amenity
// POI tags : amenity, leisure, shop, sport, tourism, historic; accessories (internet-access), natural ?
public enum AmenityType {
// Some of those types are subtypes of Amenity tag
SUSTENANCE("amenity"), // restaurant, cafe ... //$NON-NLS-1$ //$NON-NLS-2$
EDUCATION("amenity"), // school, ... //$NON-NLS-1$ //$NON-NLS-2$
TRANSPORTATION("amenity"), // car_wash, parking, ... //$NON-NLS-1$ //$NON-NLS-2$
FINANCE("amenity"), // bank, atm, ... //$NON-NLS-1$ //$NON-NLS-2$
HEALTHCARE("amenity"), // hospital ... //$NON-NLS-1$ //$NON-NLS-2$
ENTERTAINMENT("amenity"), // cinema, ... (+! sauna, brothel) //$NON-NLS-1$ //$NON-NLS-2$
TOURISM("tourism"), // [TAG] tourism hotel, sights, museum .. //$NON-NLS-1$ //$NON-NLS-2$
HISTORIC("historic"), // [TAG] historic places, monuments (should we unify tourism/historic) //$NON-NLS-1$ //$NON-NLS-2$
NATURAL("natural"), // [TAG] natural places, monuments (should we unify tourism/historic) //$NON-NLS-1$ //$NON-NLS-2$
SHOP("shop"), // [TAG] amenity convenience (product), clothes... //$NON-NLS-1$ //$NON-NLS-2$
LEISURE("leisure"), // [TAG] leisure //$NON-NLS-1$ //$NON-NLS-2$
SPORT("sport"), // [TAG] sport //$NON-NLS-1$ //$NON-NLS-2$
BARRIER("barrier"), // [TAG] barrier + traffic_calming //$NON-NLS-1$ //$NON-NLS-2$
LANDUSE("landuse"), // [TAG] landuse //$NON-NLS-1$ //$NON-NLS-2$
MAN_MADE("man_made"), // [TAG] man_made and others //$NON-NLS-1$ //$NON-NLS-2$
OFFICE("office"), // [TAG] office //$NON-NLS-1$ //$NON-NLS-2$
EMERGENCY("emergency"), // [TAG] emergency //$NON-NLS-1$ //$NON-NLS-2$
MILITARY("military"), // [TAG] military //$NON-NLS-1$ //$NON-NLS-2$
ADMINISTRATIVE("administrative"), // [TAG] administrative //$NON-NLS-1$ //$NON-NLS-2$
GEOCACHE("geocache"), //$NON-NLS-1$//$NON-NLS-2$
OTHER("amenity"), // grave-yard, police, post-office [+Internet_access] //$NON-NLS-1$ //$NON-NLS-2$
;
private final String defaultTag;
private AmenityType(String defaultTag) {
this.defaultTag = defaultTag;
}
public static AmenityType fromString(String s){
try {
return AmenityType.valueOf(s.toUpperCase());
} catch (IllegalArgumentException e) {
return AmenityType.OTHER;
}
}
public String getDefaultTag() {
return defaultTag;
}
public static String valueToString(AmenityType t){
return t.toString().toLowerCase();
}
public static AmenityType[] getCategories(){
return AmenityType.values();
}
public static Collection<String> getSubCategories(AmenityType t, MapRenderingTypes renderingTypes){
Map<AmenityType, Map<String, String>> amenityTypeNameToTagVal = renderingTypes.getAmenityTypeNameToTagVal();
if(!amenityTypeNameToTagVal.containsKey(t)){
return Collections.emptyList();
}
return amenityTypeNameToTagVal.get(t).keySet();
}
}