/*******************************************************************************
* Gisgraphy Project
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
*
* Copyright 2008 Gisgraphy project
* David Masclet <davidmasclet@gisgraphy.com>
*
*
*******************************************************************************/
package com.gisgraphy.importer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.gisgraphy.domain.geoloc.entity.ATM;
import com.gisgraphy.domain.geoloc.entity.AdmBuilding;
import com.gisgraphy.domain.geoloc.entity.Airport;
import com.gisgraphy.domain.geoloc.entity.AmusePark;
import com.gisgraphy.domain.geoloc.entity.Bank;
import com.gisgraphy.domain.geoloc.entity.Bar;
import com.gisgraphy.domain.geoloc.entity.Bench;
import com.gisgraphy.domain.geoloc.entity.BusStation;
import com.gisgraphy.domain.geoloc.entity.Camping;
import com.gisgraphy.domain.geoloc.entity.Casino;
import com.gisgraphy.domain.geoloc.entity.Castle;
import com.gisgraphy.domain.geoloc.entity.Cemetery;
import com.gisgraphy.domain.geoloc.entity.Cinema;
import com.gisgraphy.domain.geoloc.entity.CityHall;
import com.gisgraphy.domain.geoloc.entity.CourtHouse;
import com.gisgraphy.domain.geoloc.entity.Craft;
import com.gisgraphy.domain.geoloc.entity.Dentist;
import com.gisgraphy.domain.geoloc.entity.Doctor;
import com.gisgraphy.domain.geoloc.entity.EmergencyPhone;
import com.gisgraphy.domain.geoloc.entity.Farm;
import com.gisgraphy.domain.geoloc.entity.FerryTerminal;
import com.gisgraphy.domain.geoloc.entity.FireStation;
import com.gisgraphy.domain.geoloc.entity.FishingArea;
import com.gisgraphy.domain.geoloc.entity.Fountain;
import com.gisgraphy.domain.geoloc.entity.Fuel;
import com.gisgraphy.domain.geoloc.entity.Garden;
import com.gisgraphy.domain.geoloc.entity.GisFeature;
import com.gisgraphy.domain.geoloc.entity.Golf;
import com.gisgraphy.domain.geoloc.entity.Hospital;
import com.gisgraphy.domain.geoloc.entity.Hotel;
import com.gisgraphy.domain.geoloc.entity.House;
import com.gisgraphy.domain.geoloc.entity.Ice;
import com.gisgraphy.domain.geoloc.entity.Library;
import com.gisgraphy.domain.geoloc.entity.Mall;
import com.gisgraphy.domain.geoloc.entity.Mill;
import com.gisgraphy.domain.geoloc.entity.Museum;
import com.gisgraphy.domain.geoloc.entity.NightClub;
import com.gisgraphy.domain.geoloc.entity.ObservatoryPoint;
import com.gisgraphy.domain.geoloc.entity.Park;
import com.gisgraphy.domain.geoloc.entity.Parking;
import com.gisgraphy.domain.geoloc.entity.Pharmacy;
import com.gisgraphy.domain.geoloc.entity.Picnic;
import com.gisgraphy.domain.geoloc.entity.PolicePost;
import com.gisgraphy.domain.geoloc.entity.Port;
import com.gisgraphy.domain.geoloc.entity.PostOffice;
import com.gisgraphy.domain.geoloc.entity.Prison;
import com.gisgraphy.domain.geoloc.entity.Rail;
import com.gisgraphy.domain.geoloc.entity.RailRoadStation;
import com.gisgraphy.domain.geoloc.entity.Religious;
import com.gisgraphy.domain.geoloc.entity.Rental;
import com.gisgraphy.domain.geoloc.entity.Reserve;
import com.gisgraphy.domain.geoloc.entity.Restaurant;
import com.gisgraphy.domain.geoloc.entity.School;
import com.gisgraphy.domain.geoloc.entity.Shop;
import com.gisgraphy.domain.geoloc.entity.Sport;
import com.gisgraphy.domain.geoloc.entity.Stadium;
import com.gisgraphy.domain.geoloc.entity.SwimmingPool;
import com.gisgraphy.domain.geoloc.entity.Taxi;
import com.gisgraphy.domain.geoloc.entity.Telephone;
import com.gisgraphy.domain.geoloc.entity.Theater;
import com.gisgraphy.domain.geoloc.entity.Toilet;
import com.gisgraphy.domain.geoloc.entity.Tourism;
import com.gisgraphy.domain.geoloc.entity.TourismInfo;
import com.gisgraphy.domain.geoloc.entity.VendingMachine;
import com.gisgraphy.domain.geoloc.entity.Veterinary;
import com.gisgraphy.domain.geoloc.entity.Zoo;
/**
* associates the amenity tag of osm to a palcetype.
* list of values based on http://taginfo.openstreetmap.org/keys/?key=amenity#values
*
*
* @author <a href="mailto:david.masclet@gisgraphy.com">David Masclet</a>
*/
public class OsmAmenityToPlacetype {
public static int TAGS_ARRAY_SIZE = 14;
public final static String DEFAULT_OSM_FEATURE_CODE= "UNK";
public final static String DEFAULT_OSM_FEATURE_CLASS= "UNK";
boolean isNonRealTag(String tag) {
if (tag == null || "".equals(tag.trim()) || "yes".equalsIgnoreCase(tag) || "no".equalsIgnoreCase(tag) || "fixme".equalsIgnoreCase(tag) ){
return true;
}
return false;
}
public List<GisFeature> getObjectsFromTags(String[] tags){
List<GisFeature> objects = new ArrayList<GisFeature>();
if (tags == null){
return objects;
}
if (tags.length!= TAGS_ARRAY_SIZE){
throw new RuntimeException("tags array has not the correct size expected "+TAGS_ARRAY_SIZE+" but was "+tags.length+" :" +Arrays.toString(tags));//pqp
}
//0: amenity, 1: aeroway,2 : building,3: craft, 4 : historic, 5: leisure,6 : man_made,7 : office, 8 : railway,9 :tourism,10 : shop,11 : sport,12 :landuse,13 : highway
GisFeature o = getRailwayObject(tags[8]);
if (o!=null){
objects.add(o);
return objects;//railway is only a railway pqp
}
o = getAerowayObject(tags[1]);
if (o!=null){
objects.add(o);
return objects;//aeroway is only a railway pqp
}
Set<String> placeTypes = new HashSet<String>();
o = getAmenityObject(tags[0]);
if (o!=null){
objects.add(o);
placeTypes.add(o.getClass().getSimpleName());
}
o = getBuildingObject(tags[2]);
if (o!=null && !placeTypes.contains(o.getClass().getSimpleName())){
objects.add(o);
placeTypes.add(o.getClass().getSimpleName());
}
o = getCraftObject(tags[3]);
if (o!=null && !placeTypes.contains(o.getClass().getSimpleName())){
objects.add(o);
placeTypes.add(o.getClass().getSimpleName());
}
o = getHistoricObject(tags[4]);
if (o!=null && !placeTypes.contains(o.getClass().getSimpleName())){
objects.add(o);
placeTypes.add(o.getClass().getSimpleName());
}
//if leisure and !sport or !sport[pitch|sports_center]
if (tags[5]!=null &&
(tags[12]==null ||
(tags[12]!=null && !("pitch".equals(tags[5].trim().toLowerCase()) || "sports_center".equals(tags[5].trim().toLowerCase())))
)
){
o = getLeisureObject(tags[5]);
if (o!=null && !placeTypes.contains(o.getClass().getSimpleName())){
objects.add(o);
placeTypes.add(o.getClass().getSimpleName());
}
}
o = getManMadeObject(tags[6]);
if (o!=null && !placeTypes.contains(o.getClass().getSimpleName())){
objects.add(o);
placeTypes.add(o.getClass().getSimpleName());
}
o = getOfficeObject(tags[7]);
if (o!=null && !placeTypes.contains(o.getClass().getSimpleName())){
objects.add(o);
placeTypes.add(o.getClass().getSimpleName());
}
o = getTourismObject(tags[9]);
if (o!=null && !placeTypes.contains(o.getClass().getSimpleName())){
objects.add(o);
placeTypes.add(o.getClass().getSimpleName());
}
o = getShopObject(tags[10]);
if (o!=null && !placeTypes.contains(o.getClass().getSimpleName())){
objects.add(o);
placeTypes.add(o.getClass().getSimpleName());
}
o = getSportObject(tags[11]);
if (o!=null && !placeTypes.contains(o.getClass().getSimpleName())){
objects.add(o);
placeTypes.add(o.getClass().getSimpleName());
}
o = getLanduseObject(tags[12]);
if (o!=null && !placeTypes.contains(o.getClass().getSimpleName())){
objects.add(o);
placeTypes.add(o.getClass().getSimpleName());
}
o = getHighwayObject(tags[13]);
if (o!=null && !placeTypes.contains(o.getClass().getSimpleName())){
objects.add(o);
placeTypes.add(o.getClass().getSimpleName());
}
if (objects.size()==0){
objects.add(new GisFeature());
}
return objects;
}
GisFeature getAmenityObject(String amenity){
if (isNonRealTag(amenity)){
return null;
}
GisFeature gisfeature = null;
//take care of case, always put in lower case
String a = amenity.trim().toLowerCase();
if ("parking".equals(a)){
gisfeature = new Parking();
} else if ("school".equals(a)){
gisfeature = new School();
} else if ("place_of_worship".equals(a)){
gisfeature = new Religious();
} else if ("restaurant".equals(a)){
gisfeature = new Restaurant();
} else if ("fuel".equals(a)){
gisfeature = new Fuel();
} else if ("bench".equals(a)){
gisfeature = new Bench();
} else if ("grave_yard".equals(a)){
gisfeature = new Cemetery();
} else if ("post_box".equals(a)){
gisfeature = new PostOffice();
} else if ("bank".equals(a)){
gisfeature = new Bank();
} else if ("fast_food".equals(a)){
gisfeature = new Restaurant();
} else if ("cafe".equals(a)){
gisfeature = new Restaurant();
} else if ("kindergarten".equals(a)){
gisfeature = new School();
} else if ("hospital".equals(a)){
gisfeature = new Hospital();
} else if ("pharmacy".equals(a)){
gisfeature = new Pharmacy();
} else if ("post_office".equals(a)){
gisfeature = new PostOffice();
} else if ("pub".equals(a)){
gisfeature = new Bar();
} else if ("bicycle_parking".equals(a)){
gisfeature = new Parking();
} else if ("telephone".equals(a)){
gisfeature = new Telephone();
} else if ("toilets".equals(a)){
gisfeature = new Toilet();
} else if ("atm".equals(a)){
gisfeature = new ATM();
} else if ("drinking_water".equals(a)){
gisfeature = new GisFeature();
} else if ("fire_station".equals(a)){
gisfeature = new FireStation();
} else if ("police".equals(a)){
gisfeature = new PolicePost();
} else if ("bar".equals(a)){
gisfeature = new Bar();
} else if ("swimming_pool".equals(a)){
gisfeature = new SwimmingPool();
} else if ("townhall".equals(a)){
gisfeature = new CityHall();
} else if ("parking_space".equals(a)){
gisfeature = new Parking();
} else if ("library".equals(a)){
gisfeature = new Library();
} else if ("fountain".equals(a)){
gisfeature = new Fountain();
} else if ("vending_machine".equals(a)){
gisfeature = new VendingMachine();
} else if ("university".equals(a)){
gisfeature = new School();
} else if ("doctors".equals(a)){
gisfeature = new Doctor();
} else if ("social_facility".equals(a)){
gisfeature = new AdmBuilding();
} else if ("bus_station".equals(a)){
gisfeature = new BusStation();
} else if ("college".equals(a)){
gisfeature = new School();
} else if ("car_wash".equals(a)){
gisfeature = new GisFeature();
} else if ("marketplace".equals(a)){
gisfeature = new Shop();
} else if ("emergency_phone".equals(a)){
gisfeature = new EmergencyPhone();
} else if ("dentist".equals(a)){
gisfeature = new Dentist();
} else if ("theatre".equals(a)){
gisfeature = new Theater();
} else if ("taxi".equals(a)){
gisfeature = new Taxi();
} else if ("community_centre".equals(a)){
gisfeature = new GisFeature();
} else if ("cinema".equals(a)){
gisfeature = new Cinema();
} else if ("fire_hydrant".equals(a)){
gisfeature = new FireStation();
} else if ("bicycle_rental".equals(a)){
gisfeature = new Rental();
} else if ("veterinary".equals(a)){
gisfeature = new Veterinary();
} else if ("residential".equals(a)){
gisfeature = new House();
} else if ("nursing_home".equals(a)){
gisfeature = new House();
} else if ("courthouse".equals(a)){
gisfeature = new CourtHouse();
} else if ("ferry_terminal".equals(a)){
gisfeature = new FerryTerminal();
} else if ("nightclub".equals(a)){
gisfeature = new NightClub();
} else if ("arts_centre".equals(a)){
gisfeature = new Museum();
} else if ("bbq".equals(a)){
gisfeature = new GisFeature();
} else if ("parking_entrance".equals(a)){
gisfeature = new Parking();
} else if ("biergarten".equals(a)){
gisfeature = new Bar();
} else if ("car_rental".equals(a)){
gisfeature = new Rental();
} else if ("clinic".equals(a)){
gisfeature = new Hospital();
} else if ("prison".equals(a)){
gisfeature = new Prison();
} else if ("car_sharing".equals(a)){
gisfeature = new Rental();
} else if ("embassy".equals(a)){
gisfeature = new AdmBuilding();
} else if ("driving_school".equals(a)){
gisfeature = new Shop();
} else if ("ice_cream".equals(a)){
gisfeature = new Restaurant();
} else if ("clock".equals(a)){
gisfeature = new GisFeature();
} else if ("charging_station".equals(a)){
gisfeature = new GisFeature();
} else if ("bureau_de_change".equals(a)){
gisfeature = new ATM();
} else if ("parking;fuel".equals(a)){
gisfeature = new Parking();
} else if ("shop".equals(a)){
gisfeature = new Shop();
} else if ("motorcycle_parking".equals(a)){
gisfeature = new Parking();
} else if ("casino".equals(a)){
gisfeature = new Casino();
} else if ("bus_stop".equals(a)){
gisfeature = new BusStation();
}else if ("monastery".equals(a)){
gisfeature = new Religious();
}
//tag we want to ignore
else if ("public_building".equals(a)){
return null;
} else if ("building".equals(a)){
return null;
} else if ("no".equals(a)){
return null;
} else if ("yes".equals(a)){
return null;
} else if ("fixme".equals(a)){
return null;
}else if ("recycling".equals(a)){
return null;
} else if ("waste_basket".equals(a)){//bin
return null;
} else if ("shelter".equals(a)){//abris
return null;
} else if ("grit_bin".equals(a)){//composteur
return null;
} else if ("waste_disposal".equals(a)){
return null;
}
//default if we don't know (should we kepp the poi and it let us the ability to search by amenity,
//or should we consider that it is something exotic
else {
/*gisfeature.setFeatureCode(DEFAULT_OSM_FEATURE_CODE);
gisfeature.setFeatureClass(DEFAULT_OSM_FEATURE_CLASS);
gisfeature = new GisFeature();*/
return null;
}
gisfeature.setFeatureCode(DEFAULT_OSM_FEATURE_CODE);
gisfeature.setFeatureClass(DEFAULT_OSM_FEATURE_CLASS);
gisfeature.setAmenity(a);
return gisfeature;
}
GisFeature getAerowayObject(String aeroway){
//default to airport
if (isNonRealTag(aeroway)){
return null;
}
GisFeature gisfeature = new Airport();
String a = aeroway.trim().toLowerCase();
gisfeature.setFeatureCode(DEFAULT_OSM_FEATURE_CODE);
gisfeature.setFeatureClass(DEFAULT_OSM_FEATURE_CLASS);
gisfeature.setAmenity(a);
return gisfeature;
}
GisFeature getRailwayObject(String railway){
//default to rail
String a = null;
if (isNonRealTag(railway)){
return null;
}
GisFeature gisfeature = new Rail();
a = railway.trim().toLowerCase();
if ("funicular".equals(a)||"light_rail".equals(a)||"monorail".equals(a)){
gisfeature = new Rail();
} else if ("station".equals(a)||"tram_stop".equals(a)||"subway_entrance".equals(a)||"halt".equals(a) ){
gisfeature = new RailRoadStation();
}
gisfeature.setFeatureCode(DEFAULT_OSM_FEATURE_CODE);
gisfeature.setFeatureClass(DEFAULT_OSM_FEATURE_CLASS);
gisfeature.setAmenity(a);
return gisfeature;
}
GisFeature getBuildingObject(String building){
GisFeature gisfeature = null;
String a = null;
if (building != null && !"".equals(building.trim()) ){
a = building.trim().toLowerCase();
}
if ("hotel".equals(a)||"dormitory".equals(a)){
gisfeature = new Hotel();
} else if ("school".equals(a)||"university".equals(a)||"faculty".equals(a)){
gisfeature = new School();
} else if ("supermarket".equals(a)){
gisfeature = new Shop();
} else if ("train_station".equals(a)){
gisfeature = new RailRoadStation();
}
else if ("cathedral".equals(a)||"chapel".equals(a)||"church".equals(a)||"mortuary".equals(a)){
gisfeature = new Religious();
}
else if ("city_hall".equals(a)){
gisfeature = new CityHall();
}
else if ("farm".equals(a)){
gisfeature = new Farm();
}
else if ("hospital".equals(a)){
gisfeature = new Hospital();
} else {
return null;
}
gisfeature.setFeatureClass(gisfeature.getClass().getSimpleName().toUpperCase());
gisfeature.setFeatureCode(DEFAULT_OSM_FEATURE_CODE);
gisfeature.setFeatureClass(DEFAULT_OSM_FEATURE_CLASS);
gisfeature.setAmenity(a);
return gisfeature;
}
GisFeature getHistoricObject(String historic){
GisFeature gisfeature = null;
String a = null;
if (historic != null && !"".equals(historic.trim()) ){
a = historic.trim().toLowerCase();
}
if ("castle".equals(a)||"manor".equals(a)){
gisfeature = new Castle();
} else if ("archeological_site".equals(a)||"city_gate".equals(a)||"fort".equals(a)||"memorial".equals(a)||"ruins".equals(a)||"rune_stone".equals(a)||"wreck".equals(a)||"monument".equals(a)){
gisfeature = new Tourism();
} else if ("chapel".equals(a)||"monastery".equals(a)||"TOMB".equals(a)||"wayside_chapel".equals(a)){
gisfeature = new Religious();
} else {
return null;
}
gisfeature.setFeatureClass(gisfeature.getClass().getSimpleName().toUpperCase());
gisfeature.setFeatureCode(DEFAULT_OSM_FEATURE_CODE);
gisfeature.setFeatureClass(DEFAULT_OSM_FEATURE_CLASS);
gisfeature.setAmenity(a);
return gisfeature;
}
GisFeature getManMadeObject(String manMade){
GisFeature gisfeature = null;
String a = null;
if (manMade != null && !"".equals(manMade.trim()) ){
a = manMade.trim().toLowerCase();
}
if ("watermill".equals(a)||"windmill".equals(a)){
gisfeature = new Mill();
} else {
return null;
}
gisfeature.setFeatureClass(gisfeature.getClass().getSimpleName().toUpperCase());
gisfeature.setFeatureCode(DEFAULT_OSM_FEATURE_CODE);
gisfeature.setFeatureClass(DEFAULT_OSM_FEATURE_CLASS);
gisfeature.setAmenity(a);
return gisfeature;
}
GisFeature getOfficeObject(String office){
GisFeature gisfeature = null;
String a = null;
if (office != null && !"".equals(office.trim()) ){
a = office.trim().toLowerCase();
}
if ("notary".equals(a)){
gisfeature = new AdmBuilding();
} else {
return null;
}
gisfeature.setFeatureClass(gisfeature.getClass().getSimpleName().toUpperCase());
gisfeature.setFeatureCode(DEFAULT_OSM_FEATURE_CODE);
gisfeature.setFeatureClass(DEFAULT_OSM_FEATURE_CLASS);
gisfeature.setAmenity(a);
return gisfeature;
}
GisFeature getCraftObject(String craft){
GisFeature gisfeature = new Craft();
String a = null;
if (craft != null && !"".equals(craft.trim()) ){
a = craft.trim().toLowerCase();
} else {
return null;//if no craft, we return null
}
gisfeature.setFeatureClass(gisfeature.getClass().getSimpleName().toUpperCase());
gisfeature.setFeatureCode(DEFAULT_OSM_FEATURE_CODE);
gisfeature.setFeatureClass(DEFAULT_OSM_FEATURE_CLASS);
gisfeature.setAmenity(a);
return gisfeature;
}
GisFeature getShopObject(String shop){
String a = null;
if (isNonRealTag(shop)){
return null;
}
a = shop.trim().toLowerCase();
GisFeature gisfeature = new Shop();
gisfeature.setFeatureClass(gisfeature.getClass().getSimpleName().toUpperCase());
gisfeature.setFeatureCode(DEFAULT_OSM_FEATURE_CODE);
gisfeature.setFeatureClass(DEFAULT_OSM_FEATURE_CLASS);
gisfeature.setAmenity(a);
return gisfeature;
}
GisFeature getSportObject(String sport){
String a = null;
if (isNonRealTag(sport) ){
return null;
}
a = sport.trim().toLowerCase();
GisFeature gisfeature = new Sport();
gisfeature.setFeatureClass(gisfeature.getClass().getSimpleName().toUpperCase());
gisfeature.setFeatureCode(DEFAULT_OSM_FEATURE_CODE);
gisfeature.setFeatureClass(DEFAULT_OSM_FEATURE_CLASS);
gisfeature.setAmenity(a);
return gisfeature;
}
GisFeature getLanduseObject(String landuse){
GisFeature gisfeature = null;
String a = null;
if (landuse != null && !"".equals(landuse.trim()) ){
a = landuse.trim().toLowerCase();
}
if ("cemetery".equals(a)){
gisfeature = new Cemetery();
} else if ("retail".equals(a) || "commercial".equals(a)){
gisfeature = new Mall();
} else {
return null;
}
gisfeature.setFeatureClass(gisfeature.getClass().getSimpleName().toUpperCase());
gisfeature.setFeatureCode(DEFAULT_OSM_FEATURE_CODE);
gisfeature.setFeatureClass(DEFAULT_OSM_FEATURE_CLASS);
gisfeature.setAmenity(a);
return gisfeature;
}
GisFeature getHighwayObject(String highway){
GisFeature gisfeature = null;
String a = null;
if (highway != null && !"".equals(highway.trim()) ){
a = highway.trim().toLowerCase();
}
if ("bus_stop".equals(a)){
gisfeature = new BusStation();
} else {
return null;
}
gisfeature.setFeatureClass(gisfeature.getClass().getSimpleName().toUpperCase());
gisfeature.setFeatureCode(DEFAULT_OSM_FEATURE_CODE);
gisfeature.setFeatureClass(DEFAULT_OSM_FEATURE_CLASS);
gisfeature.setAmenity(a);
return gisfeature;
}
//'common','dance','fishing','garden','golf','golf_course','ice_rink','marina','miniature_golf','nature_reserve','park' , 'pitch','playground','sports_center','stadium','swimming_pool','water_park')
GisFeature getLeisureObject(String tourism){
GisFeature gisfeature = null;
String a = null;
if (tourism != null && !"".equals(tourism.trim()) ){
a = tourism.trim().toLowerCase();
} if ("common".equals(a)){
return null;
} else if ("dance".equals(a)){
gisfeature = new NightClub();
} else if ("fishing".equals(a)||"hostel".equals(a)||"hotel".equals(a)||"motel".equals(a)){
gisfeature = new FishingArea();
} else if ("garden".equals(a)){
gisfeature = new Garden();
} else if ("golf".equals(a) || "golf_course".equals(a)){
gisfeature = new Golf();
} else if ("ice_rink".equals(a)){
gisfeature = new Ice();
} else if ("marina".equals(a)){
gisfeature = new Port();
} else if ("nature_reserve".equals(a)){
gisfeature = new Reserve();
} else if ("park".equals(a)){
gisfeature = new Park();
} else if ("pitch".equals(a)||"sports_center".equals(a)){
gisfeature = new Sport();
} else if ("playground".equals(a)){
gisfeature = new AmusePark();
} else if ("stadium".equals(a)){
gisfeature = new Stadium();
} else if ("swimming_pool".equals(a)){
gisfeature = new SwimmingPool();
} else if ("water_park".equals(a)){
gisfeature = new AmusePark();
} else {
return null;
}
gisfeature.setFeatureClass(gisfeature.getClass().getSimpleName().toUpperCase());
gisfeature.setFeatureCode(DEFAULT_OSM_FEATURE_CODE);
gisfeature.setFeatureClass(DEFAULT_OSM_FEATURE_CLASS);
gisfeature.setAmenity(a);
return gisfeature;
}
GisFeature getTourismObject(String tourism){
GisFeature gisfeature = null;
String a = null;
if (tourism != null && !"".equals(tourism.trim()) ){
a = tourism.trim().toLowerCase();
}
if ("camp_site".equals(a)||"caravan_site".equals(a)){
gisfeature = new Camping();
} else if ("guest_house".equals(a)||"hostel".equals(a)||"hotel".equals(a)||"motel".equals(a)){
gisfeature = new Hotel();
} else if ("information".equals(a)){
gisfeature = new TourismInfo();
} else if ("museum".equals(a)){
gisfeature = new Museum();
} else if ("picnic_site".equals(a)){
gisfeature = new Picnic();
} else if ("theme_park".equals(a)){
gisfeature = new AmusePark();
} else if ("viewpoint".equals(a)){
gisfeature = new ObservatoryPoint();
} else if ("zoo".equals(a)){
gisfeature = new Zoo();
} else if ("artwork".equals(a)){
gisfeature = new Tourism();
} else {
return null;
}
gisfeature.setFeatureClass(gisfeature.getClass().getSimpleName().toUpperCase());
gisfeature.setFeatureCode(DEFAULT_OSM_FEATURE_CODE);
gisfeature.setFeatureClass(DEFAULT_OSM_FEATURE_CLASS);
gisfeature.setAmenity(a);
return gisfeature;
}
}