/******************************************************************************* * 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.domain.valueobject; import java.util.HashMap; import java.util.Locale; import java.util.Map; import java.util.MissingResourceException; import java.util.ResourceBundle; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.i18n.LocaleContextHolder; import com.gisgraphy.domain.geoloc.entity.*; /** * List of all feature codes with their feature class with a localized * description and an associated java Object.<br> * A {@link FeatureCode} is represented by a stringwith this pattern : * featureclass_featureCode * * @see <a href="http://download.geonames.org/export/dump/featureCodes.txt">The * feature code files</a> * @see #getObject(). * @author <a href="mailto:david.masclet@gisgraphy.com">David Masclet</a> */ public enum FeatureCode { A_ADM1 { @Override public GisFeature getObject() { return new Adm(1); } }, A_ADM2 { @Override public GisFeature getObject() { return new Adm(2); } }, A_ADM3 { @Override public GisFeature getObject() { return new Adm(3); } }, A_ADM4 { @Override public GisFeature getObject() { return new Adm(4); } }, A_ADMD { @Override public GisFeature getObject() { return new GisFeature(); } }, A_LTER { @Override public GisFeature getObject() { return new PoliticalEntity(); } }, A_PCL { @Override public GisFeature getObject() { return new Country(); } }, A_PCLD { @Override public GisFeature getObject() { return new PoliticalEntity(); } }, A_PCLF { @Override public GisFeature getObject() { return new PoliticalEntity(); } }, A_PCLI { @Override public GisFeature getObject() { return new Country(); } }, A_PCLIX { @Override public GisFeature getObject() { return new PoliticalEntity(); } }, A_PCLS { @Override public GisFeature getObject() { return new PoliticalEntity(); } }, A_PRSH { @Override public GisFeature getObject() { return new Religious(); } }, A_TERR { @Override public GisFeature getObject() { return new GisFeature(); } }, A_ZN { @Override public GisFeature getObject() { return new GisFeature(); } }, A_ZNB { @Override public GisFeature getObject() { return new GisFeature(); } }, H_AIRS { @Override public GisFeature getObject() { return new GisFeature(); } }, H_ANCH { @Override public GisFeature getObject() { return new WaterBody(); } }, H_BAY { @Override public GisFeature getObject() { return new Bay(); } }, H_BAYS { @Override public GisFeature getObject() { return new Bay(); } }, H_BGHT { @Override public GisFeature getObject() { return new Bay(); } }, H_BNK { @Override public GisFeature getObject() { return new WaterBody(); } }, H_BNKR { @Override public GisFeature getObject() { return new WaterBody(); } }, H_BNKX { @Override public GisFeature getObject() { return new WaterBody(); } }, H_BOG { @Override public GisFeature getObject() { return new WaterBody(); } }, H_CAPG { @Override public GisFeature getObject() { return new Ice(); } }, H_CHN { @Override public GisFeature getObject() { return new Stream(); } }, H_CHNL { @Override public GisFeature getObject() { return new Stream(); } }, H_CHNM { @Override public GisFeature getObject() { return new Stream(); } }, H_CHNN { @Override public GisFeature getObject() { return new Stream(); } }, H_CNFL { @Override public GisFeature getObject() { return new Stream(); } }, H_CNL { @Override public GisFeature getObject() { return new Stream(); } }, H_CNLA { @Override public GisFeature getObject() { return new Aqueduc(); } }, H_CNLB { @Override public GisFeature getObject() { return new Stream(); } }, H_CNLD { @Override public GisFeature getObject() { return new Stream(); } }, H_CNLI { @Override public GisFeature getObject() { return new Stream(); } }, H_CNLN { @Override public GisFeature getObject() { return new Stream(); } }, H_CNLQ { @Override public GisFeature getObject() { return new Stream(); } }, H_CNLSB { @Override public GisFeature getObject() { return new Stream(); } }, H_CNLX { @Override public GisFeature getObject() { return new Stream(); } }, H_COVE { @Override public GisFeature getObject() { return new WaterBody(); } }, H_CRKT { @Override public GisFeature getObject() { return new WaterBody(); } }, H_CRNT { @Override public GisFeature getObject() { return new WaterBody(); } }, H_CUTF { @Override public GisFeature getObject() { return new WaterBody(); } }, H_DCK { @Override public GisFeature getObject() { return new WaterBody(); } }, H_DCKB { @Override public GisFeature getObject() { return new WaterBody(); } }, H_DOMG { @Override public GisFeature getObject() { return new Ice(); } }, H_DPRG { @Override public GisFeature getObject() { return new Ice(); } }, H_DTCH { @Override public GisFeature getObject() { return new WaterBody(); } }, H_DTCHD { @Override public GisFeature getObject() { return new WaterBody(); } }, H_DTCHI { @Override public GisFeature getObject() { return new WaterBody(); } }, H_DTCHM { @Override public GisFeature getObject() { return new WaterBody(); } }, H_ESTY { @Override public GisFeature getObject() { return new Bay(); } }, H_FISH { @Override public GisFeature getObject() { return new FishingArea(); } }, H_FJD { @Override public GisFeature getObject() { return new Fjord(); } }, H_FJDS { @Override public GisFeature getObject() { return new Fjord(); } }, H_FLLS { @Override public GisFeature getObject() { return new Falls(); } }, H_FLLSX { @Override public GisFeature getObject() { return new Falls(); } }, H_FLTM { @Override public GisFeature getObject() { return new WaterBody(); } }, H_FLTT { @Override public GisFeature getObject() { return new WaterBody(); } }, H_GLCR { @Override public GisFeature getObject() { return new Ice(); } }, H_GULF { @Override public GisFeature getObject() { return new Gulf(); } }, H_GYSR { @Override public GisFeature getObject() { return new GisFeature(); } }, H_HBR { @Override public GisFeature getObject() { return new Port(); } }, H_HBRX { @Override public GisFeature getObject() { return new Port(); } }, H_INLT { @Override public GisFeature getObject() { return new WaterBody(); } }, H_INLTQ { @Override public GisFeature getObject() { return new WaterBody(); } }, H_LBED { @Override public GisFeature getObject() { return new Lake(); } }, H_LGN { @Override public GisFeature getObject() { return new WaterBody(); } }, H_LGNS { @Override public GisFeature getObject() { return new WaterBody(); } }, H_LGNX { @Override public GisFeature getObject() { return new WaterBody(); } }, H_LK { @Override public GisFeature getObject() { return new Lake(); } }, H_LKC { @Override public GisFeature getObject() { return new Lake(); } }, H_LKI { @Override public GisFeature getObject() { return new Lake(); } }, H_LKN { @Override public GisFeature getObject() { return new Lake(); } }, H_LKNI { @Override public GisFeature getObject() { return new Lake(); } }, H_LKO { @Override public GisFeature getObject() { return new Lake(); } }, H_LKOI { @Override public GisFeature getObject() { return new Lake(); } }, H_LKS { @Override public GisFeature getObject() { return new Lake(); } }, H_LKSB { @Override public GisFeature getObject() { return new Lake(); } }, H_LKSC { @Override public GisFeature getObject() { return new Lake(); } }, H_LKSI { @Override public GisFeature getObject() { return new Lake(); } }, H_LKSN { @Override public GisFeature getObject() { return new Lake(); } }, H_LKSNI { @Override public GisFeature getObject() { return new Lake(); } }, H_LKX { @Override public GisFeature getObject() { return new Lake(); } }, H_MFGN { @Override public GisFeature getObject() { return new Pond(); } }, H_MGV { @Override public GisFeature getObject() { return new Pond(); } }, H_MOOR { @Override public GisFeature getObject() { return new GisFeature(); } }, H_MRSH { @Override public GisFeature getObject() { return new Pond(); } }, H_MRSHN { @Override public GisFeature getObject() { return new Pond(); } }, H_NRWS { @Override public GisFeature getObject() { return new Pond(); } }, H_OCN { @Override public GisFeature getObject() { return new Ocean(); } }, H_OVF { @Override public GisFeature getObject() { return new WaterBody(); } }, H_PND { @Override public GisFeature getObject() { return new Pond(); } }, H_PNDI { @Override public GisFeature getObject() { return new Pond(); } }, H_PNDN { @Override public GisFeature getObject() { return new Pond(); } }, H_PNDNI { @Override public GisFeature getObject() { return new Pond(); } }, H_PNDS { @Override public GisFeature getObject() { return new Pond(); } }, H_PNDSF { @Override public GisFeature getObject() { return new Pond(); } }, H_PNDSI { @Override public GisFeature getObject() { return new Pond(); } }, H_PNDSN { public GisFeature getObject() { return new Pond(); } }, H_POOL { public GisFeature getObject() { return new WaterBody(); } }, H_POOLI { public GisFeature getObject() { return new WaterBody(); } }, H_RCH { public GisFeature getObject() { return new Stream(); } }, H_RDGG { public GisFeature getObject() { return new Ice(); } }, H_RDST { public GisFeature getObject() { return new GisFeature(); } }, H_RF { public GisFeature getObject() { return new Reef(); } }, H_RFC { public GisFeature getObject() { return new Reef(); } }, H_RFX { public GisFeature getObject() { return new Reef(); } }, H_RPDS { public GisFeature getObject() { return new Stream(); } }, H_RSV { public GisFeature getObject() { return new WaterBody(); } }, H_RSVI { public GisFeature getObject() { return new WaterBody(); } }, H_RSVT { public GisFeature getObject() { return new WaterBody(); } }, H_RVN { public GisFeature getObject() { return new Ravin(); } }, H_SBKH { public GisFeature getObject() { return new GisFeature(); } }, H_SD { public GisFeature getObject() { return new WaterBody(); } }, H_SEA { public GisFeature getObject() { return new Sea(); } }, H_SHOL { public GisFeature getObject() { return new GisFeature(); } }, H_SILL { public GisFeature getObject() { return new GisFeature(); } }, H_SPNG { public GisFeature getObject() { return new Spring(); } }, H_SPNS { public GisFeature getObject() { return new Spring(); } }, H_SPNT { public GisFeature getObject() { return new Spring(); } }, H_STM { public GisFeature getObject() { return new Stream(); } }, H_STMA { public GisFeature getObject() { return new Stream(); } }, H_STMB { public GisFeature getObject() { return new Stream(); } }, H_STMC { public GisFeature getObject() { return new Stream(); } }, H_STMD { public GisFeature getObject() { return new Stream(); } }, H_STMH { public GisFeature getObject() { return new Stream(); } }, H_STMI { public GisFeature getObject() { return new Stream(); } }, H_STMIX { public GisFeature getObject() { return new Stream(); } }, H_STMM { public GisFeature getObject() { return new Stream(); } }, H_STMQ { public GisFeature getObject() { return new Stream(); } }, H_STMS { public GisFeature getObject() { return new Stream(); } }, H_STMSB { public GisFeature getObject() { return new Stream(); } }, H_STMX { public GisFeature getObject() { return new Stream(); } }, H_STRT { public GisFeature getObject() { return new Strait(); } }, H_SWMP { public GisFeature getObject() { return new Marsh(); } }, H_SYSI { public GisFeature getObject() { return new WaterBody(); } }, H_TNLC { public GisFeature getObject() { return new Tunnel(); } }, H_WAD { public GisFeature getObject() { return new Stream(); } }, H_WADB { public GisFeature getObject() { return new Stream(); } }, H_WADJ { public GisFeature getObject() { return new Stream(); } }, H_WADM { public GisFeature getObject() { return new Stream(); } }, H_WADS { public GisFeature getObject() { return new Stream(); } }, H_WADX { public GisFeature getObject() { return new Stream(); } }, H_WHRL { public GisFeature getObject() { return new GisFeature(); } }, H_WLL { public GisFeature getObject() { return new GisFeature(); } }, H_WLLQ { public GisFeature getObject() { return new GisFeature(); } }, H_WLLS { public GisFeature getObject() { return new GisFeature(); } }, H_WTLD { public GisFeature getObject() { return new GisFeature(); } }, H_WTLDI { public GisFeature getObject() { return new GisFeature(); } }, H_WTRC { public GisFeature getObject() { return new Stream(); } }, H_WTRH { public GisFeature getObject() { return new WaterBody(); } }, L_AGRC { public GisFeature getObject() { return new GisFeature(); } }, L_AMUS { public GisFeature getObject() { return new AmusePark(); } }, L_AREA { public GisFeature getObject() { return new GisFeature(); } }, L_BSND { public GisFeature getObject() { return new WaterBody(); } }, L_BSNP { public GisFeature getObject() { return new GisFeature(); } }, L_BTL { public GisFeature getObject() { return new Military(); } }, L_CLG { public GisFeature getObject() { return new GisFeature(); } }, L_CMN { public GisFeature getObject() { return new Park(); } }, L_CNS { public GisFeature getObject() { return new GisFeature(); } }, L_COLF { public GisFeature getObject() { return new GisFeature(); } }, L_CONT { public GisFeature getObject() { return new Continent(); } }, L_CST { public GisFeature getObject() { return new Coast(); } }, L_CTRB { public GisFeature getObject() { return new GisFeature(); } }, L_DEVH { public GisFeature getObject() { return new GisFeature(); } }, L_FLD { public GisFeature getObject() { return new Field(); } }, L_FLDI { public GisFeature getObject() { return new Field(); } }, L_GASF { public GisFeature getObject() { return new Field(); } }, L_GRAZ { public GisFeature getObject() { return new Field(); } }, L_GVL { public GisFeature getObject() { return new Field(); } }, L_INDS { public GisFeature getObject() { return new GisFeature(); } }, L_LAND { public GisFeature getObject() { return new Ice(); } }, L_LCTY { public GisFeature getObject() { return new City(); } }, L_MILB { public GisFeature getObject() { return new Military(); } }, L_MNA { public GisFeature getObject() { return new Mine(); } }, L_MVA { public GisFeature getObject() { return new Military(); } }, L_NVB { public GisFeature getObject() { return new Military(); } }, L_OAS { public GisFeature getObject() { return new Oasis(); } }, L_OILF { public GisFeature getObject() { return new Field(); } }, L_PEAT { public GisFeature getObject() { return new GisFeature(); } }, L_PRK { public GisFeature getObject() { return new Park(); } }, L_PRT { public GisFeature getObject() { return new Port(); } }, L_QCKS { public GisFeature getObject() { return new GisFeature(); } }, L_REP { public GisFeature getObject() { return new GisFeature(); } }, L_RES { public GisFeature getObject() { return new Reserve(); } }, L_RESA { public GisFeature getObject() { return new Reserve(); } }, L_RESF { public GisFeature getObject() { return new Forest(); } }, L_RESH { public GisFeature getObject() { return new Reserve(); } }, L_RESN { public GisFeature getObject() { return new Reserve(); } }, L_RESP { public GisFeature getObject() { return new Reserve(); } }, L_RESV { public GisFeature getObject() { return new Reserve(); } }, L_RESW { public GisFeature getObject() { return new Reserve(); } }, L_RGN { public GisFeature getObject() { return new GisFeature(); } }, L_RGNE { public GisFeature getObject() { return new GisFeature(); } }, L_RGNL { public GisFeature getObject() { return new GisFeature(); } }, L_RNGA { public GisFeature getObject() { return new Military(); } }, L_SALT { public GisFeature getObject() { return new WaterBody(); } }, L_SNOW { public GisFeature getObject() { return new Ice(); } }, L_TRB { public GisFeature getObject() { return new GisFeature(); } }, L_ZZZZZ { public GisFeature getObject() { return new GisFeature(); } }, P_PPL { public GisFeature getObject() { return new City(); } }, P_PPLA { public GisFeature getObject() { return new City(); } }, P_PPLA2 { public GisFeature getObject() { return new City(); } }, P_PPLA3 { public GisFeature getObject() { return new City(); } }, P_PPLA4 { public GisFeature getObject() { return new City(); } }, P_PPLC { public GisFeature getObject() { return new City(); } }, P_PPLG { public GisFeature getObject() { return new City(); } }, P_PPLL { public GisFeature getObject() { return new City(); } }, P_PPLQ { public GisFeature getObject() { return new City(); } }, P_PPLR { public GisFeature getObject() { return new City(); } }, P_PPLS { public GisFeature getObject() { return new City(); } }, P_PPLW { public GisFeature getObject() { return new City(); } }, P_PPLX { public GisFeature getObject() { return new CitySubdivision(); } }, P_STLMT { public GisFeature getObject() { return new City(); } }, R_CSWY { public GisFeature getObject() { return new GisFeature(); } }, R_CSWYQ { public GisFeature getObject() { return new GisFeature(); } }, R_OILP { public GisFeature getObject() { return new GisFeature(); } }, R_PRMN { public GisFeature getObject() { return new GisFeature(); } }, R_PTGE { public GisFeature getObject() { return new GisFeature(); } }, R_RD { public GisFeature getObject() { return new Road(); } }, R_RDA { public GisFeature getObject() { return new Road(); } }, R_RDB { public GisFeature getObject() { return new Road(); } }, R_RDCUT { public GisFeature getObject() { return new Road(); } }, R_RDJCT { public GisFeature getObject() { return new Road(); } }, R_RJCT { public GisFeature getObject() { return new Rail(); } }, R_RR { public GisFeature getObject() { return new Rail(); } }, R_RRQ { public GisFeature getObject() { return new Rail(); } }, R_RTE { public GisFeature getObject() { return new Road(); } }, R_RYD { public GisFeature getObject() { return new Rail(); } }, R_ST { public GisFeature getObject() { return new Street(); } }, R_STKR { public GisFeature getObject() { return new GisFeature(); } }, R_TNL { public GisFeature getObject() { return new Tunnel(); } }, R_TNLN { public GisFeature getObject() { return new Tunnel(); } }, R_TNLRD { public GisFeature getObject() { return new Tunnel(); } }, R_TNLRR { public GisFeature getObject() { return new Tunnel(); } }, R_TNLS { public GisFeature getObject() { return new Tunnel(); } }, R_TRL { public GisFeature getObject() { return new Road(); } }, S_ADMF { public GisFeature getObject() { return new Building(); } }, S_AGRF { public GisFeature getObject() { return new Building(); } }, S_AIRB { public GisFeature getObject() { return new Building(); } }, S_AIRF { public GisFeature getObject() { return new Airport(); } }, S_AIRH { public GisFeature getObject() { return new Airport(); } }, S_AIRP { public GisFeature getObject() { return new Airport(); } }, S_AIRQ { public GisFeature getObject() { return new Airport(); } }, S_AMTH { public GisFeature getObject() { return new Theater(); } }, S_ANS { public GisFeature getObject() { return new GisFeature(); } }, S_ARCH { public GisFeature getObject() { return new GisFeature(); } }, S_ASTR { public GisFeature getObject() { return new GisFeature(); } }, S_ASYL { public GisFeature getObject() { return new GisFeature(); } }, S_ATHF { public GisFeature getObject() { return new Stadium(); } }, S_ATM { public GisFeature getObject() { return new ATM(); } }, S_BANK { public GisFeature getObject() { return new Bank(); } }, S_BCN { public GisFeature getObject() { return new GisFeature(); } }, S_BDG { public GisFeature getObject() { return new Bridge(); } }, S_BDGQ { public GisFeature getObject() { return new Bridge(); } }, S_BLDG { public GisFeature getObject() { return new Pond(); } }, S_BP { public GisFeature getObject() { return new GisFeature(); } }, S_BRKS { public GisFeature getObject() { return new Military(); } }, S_BRKW { public GisFeature getObject() { return new Military(); } }, S_BSTN { public GisFeature getObject() { return new GisFeature(); } }, S_BTYD { public GisFeature getObject() { return new GisFeature(); } }, S_BUR { public GisFeature getObject() { return new Cemetery(); } }, S_BUSTN { public GisFeature getObject() { return new BusStation(); } }, S_BUSTP { public GisFeature getObject() { return new BusStation(); } }, S_CARN { public GisFeature getObject() { return new GisFeature(); } }, S_CAVE { public GisFeature getObject() { return new Vineyard(); } }, S_CH { public GisFeature getObject() { return new Religious(); } }, S_CMP { public GisFeature getObject() { return new Camp(); } }, S_CMPL { public GisFeature getObject() { return new Camp(); } }, S_CMPLA { public GisFeature getObject() { return new Camp(); } }, S_CMPMN { public GisFeature getObject() { return new Mine(); } }, S_CMPO { public GisFeature getObject() { return new Camp(); } }, S_CMPQ { public GisFeature getObject() { return new Camp(); } }, S_CMPRF { public GisFeature getObject() { return new Camp(); } }, S_CMTY { public GisFeature getObject() { return new Cemetery(); } }, S_COMC { public GisFeature getObject() { return new GisFeature(); } }, S_CRRL { public GisFeature getObject() { return new GisFeature(); } }, S_CSNO { public GisFeature getObject() { return new Casino(); } }, S_CSTL { public GisFeature getObject() { return new Castle(); } }, S_CSTM { public GisFeature getObject() { return new CustomsPost(); } }, S_CTHSE { public GisFeature getObject() { return new CourtHouse(); } }, S_CTRA { public GisFeature getObject() { return new GisFeature(); } }, S_CTRCM { public GisFeature getObject() { return new GisFeature(); } }, S_CTRF { public GisFeature getObject() { return new GisFeature(); } }, S_CTRM { public GisFeature getObject() { return new Hospital(); } }, S_CTRR { public GisFeature getObject() { return new Religious(); } }, S_CTRS { public GisFeature getObject() { return new GisFeature(); } }, S_CVNT { public GisFeature getObject() { return new Religious(); } }, S_DAM { public GisFeature getObject() { return new Dam(); } }, S_DAMQ { public GisFeature getObject() { return new GisFeature(); } }, S_DAMSB { public GisFeature getObject() { return new GisFeature(); } }, S_DARY { public GisFeature getObject() { return new GisFeature(); } }, S_DCKD { public GisFeature getObject() { return new WaterBody(); } }, S_DCKY { public GisFeature getObject() { return new GisFeature(); } }, S_DIKE { public GisFeature getObject() { return new GisFeature(); } }, S_DPOF { public GisFeature getObject() { return new GisFeature(); } }, S_EST { public GisFeature getObject() { return new GisFeature(); } }, S_ESTB { public GisFeature getObject() { return new Plantation(); } }, S_ESTC { public GisFeature getObject() { return new Plantation(); } }, S_ESTO { public GisFeature getObject() { return new Plantation(); } }, S_ESTR { public GisFeature getObject() { return new Plantation(); } }, S_ESTSG { public GisFeature getObject() { return new Plantation(); } }, S_ESTSL { public GisFeature getObject() { return new Plantation(); } }, S_ESTT { public GisFeature getObject() { return new Plantation(); } }, S_ESTX { public GisFeature getObject() { return new Plantation(); } }, S_FCL { public GisFeature getObject() { return new GisFeature(); } }, S_FNDY { public GisFeature getObject() { return new GisFeature(); } }, S_FRM { public GisFeature getObject() { return new Farm(); } }, S_FRMQ { public GisFeature getObject() { return new Farm(); } }, S_FRMS { public GisFeature getObject() { return new GisFeature(); } }, S_FRMT { public GisFeature getObject() { return new Farm(); } }, S_FT { public GisFeature getObject() { return new GisFeature(); } }, S_FY { public GisFeature getObject() { return new GisFeature(); } }, S_GATE { public GisFeature getObject() { return new GisFeature(); } }, S_GDN { public GisFeature getObject() { return new Garden(); } }, S_GHSE { public GisFeature getObject() { return new GisFeature(); } }, S_GOSP { public GisFeature getObject() { return new GisFeature(); } }, S_GRVE { public GisFeature getObject() { return new Cemetery(); } }, S_HERM { public GisFeature getObject() { return new GisFeature(); } }, S_HLT { public GisFeature getObject() { return new GisFeature(); } }, S_HSE { public GisFeature getObject() { return new House(); } }, S_HSEC { public GisFeature getObject() { return new House(); } }, S_HSP { public GisFeature getObject() { return new Hospital(); } }, S_HSPC { public GisFeature getObject() { return new Hospital(); } }, S_HSPD { public GisFeature getObject() { return new Religious(); } }, S_HSPL { public GisFeature getObject() { return new GisFeature(); } }, S_HSTS { public GisFeature getObject() { return new GisFeature(); } }, S_HTL { public GisFeature getObject() { return new Hotel(); } }, S_HUT { public GisFeature getObject() { return new GisFeature(); } }, S_HUTS { public GisFeature getObject() { return new GisFeature(); } }, S_INSM { public GisFeature getObject() { return new Military(); } }, S_ITTR { public GisFeature getObject() { return new GisFeature(); } }, S_JTY { public GisFeature getObject() { return new WaterBody(); } }, S_LDNG { public GisFeature getObject() { return new Quay(); } }, S_LEPC { public GisFeature getObject() { return new GisFeature(); } }, S_LIBR { public GisFeature getObject() { return new Library(); } }, S_LOCK { public GisFeature getObject() { return new WaterBody(); } }, S_LTHSE { public GisFeature getObject() { return new LightHouse(); } }, S_MALL { public GisFeature getObject() { return new Mall(); } }, S_MAR { public GisFeature getObject() { return new Port(); } }, S_MFG { public GisFeature getObject() { return new Factory(); } }, S_MFGB { public GisFeature getObject() { return new Factory(); } }, S_MFGC { public GisFeature getObject() { return new Factory(); } }, S_MFGCU { public GisFeature getObject() { return new Factory(); } }, S_MFGLM { public GisFeature getObject() { return new Factory(); } }, S_MFGM { public GisFeature getObject() { return new Factory(); } }, S_MFGPH { public GisFeature getObject() { return new Factory(); } }, S_MFGQ { public GisFeature getObject() { return new Factory(); } }, S_MFGSG { public GisFeature getObject() { return new Factory(); } }, S_MKT { public GisFeature getObject() { return new GisFeature(); } }, S_ML { public GisFeature getObject() { return new Mill(); } }, S_MLM { public GisFeature getObject() { return new Mine(); } }, S_MLO { public GisFeature getObject() { return new Factory(); } }, S_MLSG { public GisFeature getObject() { return new Factory(); } }, S_MLSGQ { public GisFeature getObject() { return new Factory(); } }, S_MLSW { public GisFeature getObject() { return new Mill(); } }, S_MLWND { public GisFeature getObject() { return new Mill(); } }, S_MLWTR { public GisFeature getObject() { return new Mill(); } }, S_MN { public GisFeature getObject() { return new Mine(); } }, S_MNAU { public GisFeature getObject() { return new Mine(); } }, S_MNC { public GisFeature getObject() { return new Mine(); } }, S_MNCR { public GisFeature getObject() { return new Mine(); } }, S_MNCU { public GisFeature getObject() { return new Mine(); } }, S_MNDT { public GisFeature getObject() { return new Mine(); } }, S_MNFE { public GisFeature getObject() { return new Mine(); } }, S_MNMT { public GisFeature getObject() { return new Monument(); } }, S_MNN { public GisFeature getObject() { return new GisFeature(); } }, S_MNNI { public GisFeature getObject() { return new Mine(); } }, S_MNPB { public GisFeature getObject() { return new Mine(); } }, S_MNPL { public GisFeature getObject() { return new Mine(); } }, S_MNQ { public GisFeature getObject() { return new Mine(); } }, S_MNQR { public GisFeature getObject() { return new Mole(); } }, S_MNSN { public GisFeature getObject() { return new Mine(); } }, S_MOLE { public GisFeature getObject() { return new Mole(); } }, S_MSQE { public GisFeature getObject() { return new Religious(); } }, S_MSSN { public GisFeature getObject() { return new Religious(); } }, S_MSSNQ { public GisFeature getObject() { return new Religious(); } }, S_MSTY { public GisFeature getObject() { return new Religious(); } }, S_MTRO { public GisFeature getObject() { return new MetroStation(); } }, S_MUS { public GisFeature getObject() { return new Museum(); } }, S_NOV { public GisFeature getObject() { return new Religious(); } }, S_NSY { public GisFeature getObject() { return new GisFeature(); } }, S_OBPT { public GisFeature getObject() { return new ObservatoryPoint(); } }, S_OBS { public GisFeature getObject() { return new GisFeature(); } }, S_OBSR { public GisFeature getObject() { return new GisFeature(); } }, S_OILJ { public GisFeature getObject() { return new GisFeature(); } }, S_OILQ { public GisFeature getObject() { return new GisFeature(); } }, S_OILR { public GisFeature getObject() { return new GisFeature(); } }, S_OILT { public GisFeature getObject() { return new GisFeature(); } }, S_OILW { public GisFeature getObject() { return new GisFeature(); } }, S_OPRA { public GisFeature getObject() { return new OperaHouse(); } }, S_PAL { public GisFeature getObject() { return new GisFeature(); } }, S_PGDA { public GisFeature getObject() { return new GisFeature(); } }, S_PIER { public GisFeature getObject() { return new GisFeature(); } }, S_PKLT { public GisFeature getObject() { return new Parking(); } }, S_PMPO { public GisFeature getObject() { return new GisFeature(); } }, S_PMPW { public GisFeature getObject() { return new GisFeature(); } }, S_PO { public GisFeature getObject() { return new PostOffice(); } }, S_PP { public GisFeature getObject() { return new PolicePost(); } }, S_PPQ { public GisFeature getObject() { return new PolicePost(); } }, S_PRKGT { public GisFeature getObject() { return new Parking(); } }, S_PRKHQ { public GisFeature getObject() { return new Parking(); } }, S_PRN { public GisFeature getObject() { return new Prison(); } }, S_PRNJ { public GisFeature getObject() { return new GisFeature(); } }, S_PRNQ { public GisFeature getObject() { return new Prison(); } }, S_PS { public GisFeature getObject() { return new Factory(); } }, S_PSH { public GisFeature getObject() { return new Factory(); } }, S_PSTB { public GisFeature getObject() { return new CustomsPost(); } }, S_PSTC { public GisFeature getObject() { return new CustomsPost(); } }, S_PSTP { public GisFeature getObject() { return new GisFeature(); } }, S_PYR { public GisFeature getObject() { return new Pyramid(); } }, S_PYRS { public GisFeature getObject() { return new Pyramid(); } }, S_QUAY { public GisFeature getObject() { return new GisFeature(); } }, S_RECG { public GisFeature getObject() { return new Golf(); } }, S_RECR { public GisFeature getObject() { return new GisFeature(); } }, S_REST { public GisFeature getObject() { return new Restaurant(); } }, S_RHSE { public GisFeature getObject() { return new GisFeature(); } }, S_RKRY { public GisFeature getObject() { return new GisFeature(); } }, S_RLG { public GisFeature getObject() { return new Religious(); } }, S_RLGR { public GisFeature getObject() { return new Religious(); } }, S_RNCH { public GisFeature getObject() { return new Ranch(); } }, S_RSD { public GisFeature getObject() { return new Rail(); } }, S_RSGNL { public GisFeature getObject() { return new Rail(); } }, S_RSRT { public GisFeature getObject() { return new GisFeature(); } }, S_RSTN { public GisFeature getObject() { return new RailRoadStation(); } }, S_RSTNQ { public GisFeature getObject() { return new RailRoadStation(); } }, S_RSTP { public GisFeature getObject() { return new Rail(); } }, S_RSTPQ { public GisFeature getObject() { return new Rail(); } }, S_RUIN { public GisFeature getObject() { return new GisFeature(); } }, S_SCH { public GisFeature getObject() { return new School(); } }, S_SCHA { public GisFeature getObject() { return new School(); } }, S_SCHC { public GisFeature getObject() { return new School(); } }, S_SCHM { public GisFeature getObject() { return new Military(); } }, S_SCHN { public GisFeature getObject() { return new School(); } }, S_SHPF { public GisFeature getObject() { return new GisFeature(); } }, S_SHRN { public GisFeature getObject() { return new Religious(); } }, S_SHSE { public GisFeature getObject() { return new GisFeature(); } }, S_SLCE { public GisFeature getObject() { return new GisFeature(); } }, S_SNTR { public GisFeature getObject() { return new GisFeature(); } }, S_SPA { public GisFeature getObject() { return new GisFeature(); } }, S_SPLY { public GisFeature getObject() { return new GisFeature(); } }, S_SQR { public GisFeature getObject() { return new GisFeature(); } }, S_STBL { public GisFeature getObject() { return new GisFeature(); } }, S_STDM { public GisFeature getObject() { return new Stadium(); } }, S_STNB { public GisFeature getObject() { return new GisFeature(); } }, S_STNC { public GisFeature getObject() { return new GisFeature(); } }, S_STNE { public GisFeature getObject() { return new GisFeature(); } }, S_STNF { public GisFeature getObject() { return new Forest(); } }, S_STNI { public GisFeature getObject() { return new GisFeature(); } }, S_STNM { public GisFeature getObject() { return new GisFeature(); } }, S_STNR { public GisFeature getObject() { return new GisFeature(); } }, S_STNS { public GisFeature getObject() { return new GisFeature(); } }, S_STNW { public GisFeature getObject() { return new GisFeature(); } }, S_STPS { public GisFeature getObject() { return new GisFeature(); } }, S_THTR { public GisFeature getObject() { return new Theater(); } }, S_TMB { public GisFeature getObject() { return new Cemetery(); } }, S_TMPL { public GisFeature getObject() { return new Religious(); } }, S_TNKD { public GisFeature getObject() { return new WaterBody(); } }, S_TOWR { public GisFeature getObject() { return new Tower(); } }, S_TRIG { public GisFeature getObject() { return new GisFeature(); } }, S_TRMO { public GisFeature getObject() { return new GisFeature(); } }, S_UNIV { public GisFeature getObject() { return new School(); } }, S_USGE { public GisFeature getObject() { return new Building(); } }, S_VETF { public GisFeature getObject() { return new GisFeature(); } }, S_WALL { public GisFeature getObject() { return new GisFeature(); } }, S_WALLA { public GisFeature getObject() { return new GisFeature(); } }, S_WEIR { public GisFeature getObject() { return new GisFeature(); } }, S_WHRF { public GisFeature getObject() { return new Quay(); } }, S_WRCK { public GisFeature getObject() { return new GisFeature(); } }, S_WTRW { public GisFeature getObject() { return new GisFeature(); } }, S_ZNF { public GisFeature getObject() { return new GisFeature(); } }, S_ZOO { public GisFeature getObject() { return new Zoo(); } }, T_ASPH { public GisFeature getObject() { return new Lake(); } }, T_ATOL { public GisFeature getObject() { return new GisFeature(); } }, T_BAR { public GisFeature getObject() { return new Bar(); } }, T_BCH { public GisFeature getObject() { return new Beach(); } }, T_BCHS { public GisFeature getObject() { return new Beach(); } }, T_BDLD { public GisFeature getObject() { return new GisFeature(); } }, T_BLDR { public GisFeature getObject() { return new GisFeature(); } }, T_BLHL { public GisFeature getObject() { return new GisFeature(); } }, T_BLOW { public GisFeature getObject() { return new GisFeature(); } }, T_BNCH { public GisFeature getObject() { return new GisFeature(); } }, T_BUTE { public GisFeature getObject() { return new GisFeature(); } }, T_CAPE { public GisFeature getObject() { return new GisFeature(); } }, T_CFT { public GisFeature getObject() { return new GisFeature(); } }, T_CLDA { public GisFeature getObject() { return new GisFeature(); } }, T_CLF { public GisFeature getObject() { return new Cliff(); } }, T_CNYN { public GisFeature getObject() { return new Canyon(); } }, T_CONE { public GisFeature getObject() { return new GisFeature(); } }, T_CRDR { public GisFeature getObject() { return new GisFeature(); } }, T_CRQ { public GisFeature getObject() { return new Cirque(); } }, T_CRQS { public GisFeature getObject() { return new Cirque(); } }, T_CRTR { public GisFeature getObject() { return new GisFeature(); } }, T_CUET { public GisFeature getObject() { return new GisFeature(); } }, T_DLTA { public GisFeature getObject() { return new GisFeature(); } }, T_DPR { public GisFeature getObject() { return new GisFeature(); } }, T_DSRT { public GisFeature getObject() { return new Desert(); } }, T_DUNE { public GisFeature getObject() { return new GisFeature(); } }, T_DVD { public GisFeature getObject() { return new GisFeature(); } }, T_ERG { public GisFeature getObject() { return new Desert(); } }, T_FAN { public GisFeature getObject() { return new GisFeature(); } }, T_FORD { public GisFeature getObject() { return new GisFeature(); } }, T_FSR { public GisFeature getObject() { return new GisFeature(); } }, T_GAP { public GisFeature getObject() { return new GisFeature(); } }, T_GRGE { public GisFeature getObject() { return new Gorge(); } }, T_HDLD { public GisFeature getObject() { return new Bay(); } }, T_HLL { public GisFeature getObject() { return new Hill(); } }, T_HLLS { public GisFeature getObject() { return new Hill(); } }, T_HMCK { public GisFeature getObject() { return new GisFeature(); } }, T_HMDA { public GisFeature getObject() { return new GisFeature(); } }, T_INTF { public GisFeature getObject() { return new GisFeature(); } }, T_ISL { public GisFeature getObject() { return new Island(); } }, T_ISLF { public GisFeature getObject() { return new Island(); } }, T_ISLM { public GisFeature getObject() { return new GisFeature(); } }, T_ISLS { public GisFeature getObject() { return new Island(); } }, T_ISLT { public GisFeature getObject() { return new Island(); } }, T_ISLX { public GisFeature getObject() { return new Island(); } }, T_ISTH { public GisFeature getObject() { return new Island(); } }, T_KRST { public GisFeature getObject() { return new GisFeature(); } }, T_LAVA { public GisFeature getObject() { return new GisFeature(); } }, T_LEV { public GisFeature getObject() { return new GisFeature(); } }, T_MESA { public GisFeature getObject() { return new GisFeature(); } }, T_MND { public GisFeature getObject() { return new Mound(); } }, T_MRN { public GisFeature getObject() { return new GisFeature(); } }, T_MT { public GisFeature getObject() { return new Mountain(); } }, T_MTS { public GisFeature getObject() { return new Mountain(); } }, T_NKM { public GisFeature getObject() { return new GisFeature(); } }, T_NTK { public GisFeature getObject() { return new GisFeature(); } }, T_NTKS { public GisFeature getObject() { return new GisFeature(); } }, T_PAN { public GisFeature getObject() { return new GisFeature(); } }, T_PANS { public GisFeature getObject() { return new GisFeature(); } }, T_PASS { public GisFeature getObject() { return new GisFeature(); } }, T_PEN { public GisFeature getObject() { return new GisFeature(); } }, T_PENX { public GisFeature getObject() { return new GisFeature(); } }, T_PK { public GisFeature getObject() { return new GisFeature(); } }, T_PKS { public GisFeature getObject() { return new GisFeature(); } }, T_PLAT { public GisFeature getObject() { return new GisFeature(); } }, T_PLATX { public GisFeature getObject() { return new GisFeature(); } }, T_PLDR { public GisFeature getObject() { return new GisFeature(); } }, T_PLN { public GisFeature getObject() { return new GisFeature(); } }, T_PLNX { public GisFeature getObject() { return new GisFeature(); } }, T_PROM { public GisFeature getObject() { return new GisFeature(); } }, T_PT { public GisFeature getObject() { return new GisFeature(); } }, T_PTS { public GisFeature getObject() { return new GisFeature(); } }, T_RDGB { public GisFeature getObject() { return new Beach(); } }, T_RDGE { public GisFeature getObject() { return new GisFeature(); } }, T_REG { public GisFeature getObject() { return new GisFeature(); } }, T_RK { public GisFeature getObject() { return new GisFeature(); } }, T_RKFL { public GisFeature getObject() { return new GisFeature(); } }, T_RKS { public GisFeature getObject() { return new GisFeature(); } }, T_SAND { public GisFeature getObject() { return new GisFeature(); } }, T_SBED { public GisFeature getObject() { return new GisFeature(); } }, T_SCRP { public GisFeature getObject() { return new GisFeature(); } }, T_SDL { public GisFeature getObject() { return new GisFeature(); } }, T_SHOR { public GisFeature getObject() { return new GisFeature(); } }, T_SINK { public GisFeature getObject() { return new GisFeature(); } }, T_SLID { public GisFeature getObject() { return new GisFeature(); } }, T_SLP { public GisFeature getObject() { return new GisFeature(); } }, T_SPIT { public GisFeature getObject() { return new GisFeature(); } }, T_SPUR { public GisFeature getObject() { return new GisFeature(); } }, T_TAL { public GisFeature getObject() { return new GisFeature(); } }, T_TRGD { public GisFeature getObject() { return new GisFeature(); } }, T_TRR { public GisFeature getObject() { return new GisFeature(); } }, T_UPLD { public GisFeature getObject() { return new GisFeature(); } }, T_VAL { public GisFeature getObject() { return new GisFeature(); } }, T_VALG { public GisFeature getObject() { return new GisFeature(); } }, T_VALS { public GisFeature getObject() { return new GisFeature(); } }, T_VALX { public GisFeature getObject() { return new GisFeature(); } }, T_VLC { public GisFeature getObject() { return new Volcano(); } }, U_APNU { public GisFeature getObject() { return new UnderSea(); } }, U_ARCU { public GisFeature getObject() { return new UnderSea(); } }, U_ARRU { public GisFeature getObject() { return new UnderSea(); } }, U_BDLU { public GisFeature getObject() { return new UnderSea(); } }, U_BKSU { public GisFeature getObject() { return new UnderSea(); } }, U_BNCU { public GisFeature getObject() { return new UnderSea(); } }, U_BNKU { public GisFeature getObject() { return new UnderSea(); } }, U_BSNU { public GisFeature getObject() { return new UnderSea(); } }, U_CDAU { public GisFeature getObject() { return new UnderSea(); } }, U_CNSU { public GisFeature getObject() { return new UnderSea(); } }, U_CNYU { public GisFeature getObject() { return new UnderSea(); } }, U_CRSU { public GisFeature getObject() { return new UnderSea(); } }, U_DEPU { public GisFeature getObject() { return new UnderSea(); } }, U_EDGU { public GisFeature getObject() { return new UnderSea(); } }, U_ESCU { public GisFeature getObject() { return new UnderSea(); } }, U_FANU { public GisFeature getObject() { return new UnderSea(); } }, U_FLTU { public GisFeature getObject() { return new UnderSea(); } }, U_FRKU { public GisFeature getObject() { return new UnderSea(); } }, U_FRSU { public GisFeature getObject() { return new UnderSea(); } }, U_FRZU { public GisFeature getObject() { return new UnderSea(); } }, U_FURU { public GisFeature getObject() { return new UnderSea(); } }, U_GAPU { public GisFeature getObject() { return new UnderSea(); } }, U_GLYU { public GisFeature getObject() { return new UnderSea(); } }, U_HLLU { public GisFeature getObject() { return new UnderSea(); } }, U_HLSU { public GisFeature getObject() { return new UnderSea(); } }, U_HOLU { public GisFeature getObject() { return new UnderSea(); } }, U_KNLU { public GisFeature getObject() { return new UnderSea(); } }, U_KNSU { public GisFeature getObject() { return new UnderSea(); } }, U_LDGU { public GisFeature getObject() { return new UnderSea(); } }, U_LEVU { public GisFeature getObject() { return new UnderSea(); } }, U_MDVU { public GisFeature getObject() { return new UnderSea(); } }, U_MESU { public GisFeature getObject() { return new UnderSea(); } }, U_MNDU { public GisFeature getObject() { return new UnderSea(); } }, U_MOTU { public GisFeature getObject() { return new UnderSea(); } }, U_MTSU { public GisFeature getObject() { return new UnderSea(); } }, U_MTU { public GisFeature getObject() { return new UnderSea(); } }, U_PKSU { public GisFeature getObject() { return new UnderSea(); } }, U_PKU { public GisFeature getObject() { return new UnderSea(); } }, U_PLFU { public GisFeature getObject() { return new UnderSea(); } }, U_PLNU { public GisFeature getObject() { return new UnderSea(); } }, U_PLTU { public GisFeature getObject() { return new UnderSea(); } }, U_PNLU { public GisFeature getObject() { return new UnderSea(); } }, U_PRVU { public GisFeature getObject() { return new UnderSea(); } }, U_RAVU { public GisFeature getObject() { return new UnderSea(); } }, U_RDGU { public GisFeature getObject() { return new UnderSea(); } }, U_RDSU { public GisFeature getObject() { return new UnderSea(); } }, U_RFSU { public GisFeature getObject() { return new UnderSea(); } }, U_RFU { public GisFeature getObject() { return new UnderSea(); } }, U_RISU { public GisFeature getObject() { return new UnderSea(); } }, U_RMPU { public GisFeature getObject() { return new UnderSea(); } }, U_RNGU { public GisFeature getObject() { return new UnderSea(); } }, U_SCNU { public GisFeature getObject() { return new UnderSea(); } }, U_SCSU { public GisFeature getObject() { return new UnderSea(); } }, U_SDLU { public GisFeature getObject() { return new UnderSea(); } }, U_SHFU { public GisFeature getObject() { return new UnderSea(); } }, U_SHLU { public GisFeature getObject() { return new UnderSea(); } }, U_SHSU { public GisFeature getObject() { return new UnderSea(); } }, U_SHVU { public GisFeature getObject() { return new UnderSea(); } }, U_SILU { public GisFeature getObject() { return new UnderSea(); } }, U_SLPU { public GisFeature getObject() { return new UnderSea(); } }, U_SMSU { public GisFeature getObject() { return new UnderSea(); } }, U_SMU { public GisFeature getObject() { return new UnderSea(); } }, U_SPRU { public GisFeature getObject() { return new UnderSea(); } }, U_TERU { public GisFeature getObject() { return new UnderSea(); } }, U_TMSU { public GisFeature getObject() { return new UnderSea(); } }, U_TMTU { public GisFeature getObject() { return new UnderSea(); } }, U_TNGU { public GisFeature getObject() { return new UnderSea(); } }, U_TRGU { public GisFeature getObject() { return new UnderSea(); } }, U_TRNU { public GisFeature getObject() { return new UnderSea(); } }, U_VALU { public GisFeature getObject() { return new UnderSea(); } }, U_VLSU { public GisFeature getObject() { return new UnderSea(); } }, V_BUSH { public GisFeature getObject() { return new GisFeature(); } }, V_CULT { public GisFeature getObject() { return new GisFeature(); } }, V_FRST { public GisFeature getObject() { return new Forest(); } }, V_FRSTF { public GisFeature getObject() { return new Forest(); } }, V_GRSLD { public GisFeature getObject() { return new GrassLand(); } }, V_GRVC { public GisFeature getObject() { return new GisFeature(); } }, V_GRVO { public GisFeature getObject() { return new GisFeature(); } }, V_GRVP { public GisFeature getObject() { return new GisFeature(); } }, V_GRVPN { public GisFeature getObject() { return new GisFeature(); } }, V_HTH { public GisFeature getObject() { return new GisFeature(); } }, V_MDW { public GisFeature getObject() { return new GisFeature(); } }, V_OCH { public GisFeature getObject() { return new GisFeature(); } }, V_SCRB { public GisFeature getObject() { return new GisFeature(); } }, V_TREE { public GisFeature getObject() { return new Tree(); } }, V_TUND { public GisFeature getObject() { return new GisFeature(); } }, V_VIN { public GisFeature getObject() { return new Vineyard(); } }, V_VINS { public GisFeature getObject() { return new Vineyard(); } }, UNK_UNK { public GisFeature getObject() { return new GisFeature(); }}, OSM_ADMBUILDING{ public GisFeature getObject() { return new AdmBuilding(); }}, OSM_BENCH{ public GisFeature getObject() { return new Bench(); }}, OSM_CINEMA{ public GisFeature getObject() { return new Cinema(); }}, OSM_DENTIST{ public GisFeature getObject() { return new Dentist(); }}, OSM_DOCTOR{ public GisFeature getObject() { return new Doctor(); }}, OSM_EMERGENCYPHONE{ public GisFeature getObject() { return new EmergencyPhone(); }}, OSM_FERRYTERMINAL{ public GisFeature getObject() { return new FerryTerminal(); }}, OSM_FIRESTATION{ public GisFeature getObject() { return new FireStation(); }}, OSM_FOUNTAIN{ public GisFeature getObject() { return new Fountain(); }}, OSM_FUEL{ public GisFeature getObject() { return new Fuel(); }}, OSM_NIGHTCLUB{ public GisFeature getObject() { return new NightClub(); }}, OSM_PHARMACY{ public GisFeature getObject() { return new Pharmacy(); }}, OSM_RENTAL{ public GisFeature getObject() { return new Rental(); }}, OSM_SHOP{ public GisFeature getObject() { return new Shop(); }}, OSM_SWIMMINGPOOL{ public GisFeature getObject() { return new SwimmingPool(); }}, OSM_TAXI{ public GisFeature getObject() { return new Taxi(); }}, OSM_TELEPHONE{ public GisFeature getObject() { return new Telephone(); }}, OSM_TOILET{ public GisFeature getObject() { return new Toilet(); }}, OSM_VENDINGMACHINE{ public GisFeature getObject() { return new VendingMachine(); }}, OSM_VETERINARY{ public GisFeature getObject() { return new Veterinary(); }}, UNKNOW { public GisFeature getObject() { return new GisFeature(); } }; /** * Returns the java Object that the feature class and feature code are * associated to. The goal is to defined java Object that regroup several * feature code. <u>note</u> : Having several object improve performance * for polymorphic request.<br/> because we restrict the search to the * specified type and we don't search in the whole {@link GisFeature} * * @return The java Object the featureclass and feature code are associated * to */ public abstract GisFeature getObject(); /** * The specified locale is used : <br/> If null the * {@link LocaleContextHolder} one is used (in a web context, it should be * the user locale).<br/> If no bundle exists for the * {@link LocaleContextHolder} : the {@link Locale#getDefault()} is used.<br/> * If no bundle for {@link Locale#getDefault()} exists : the * {@link #DEFAULT_FALLBACK_LOCALE} is used. <br/> <br/> If no translation * is found {@link #DEFAULT_TRANSLATION} is return * * @param locale * The Locale * @return The localized description */ public String getLocalizedDescription(Locale locale) { if (locale == null) { locale = LocaleContextHolder.getLocale(); } String description = DEFAULT_TRANSLATION; try { ResourceBundle bundle = ResourceBundle.getBundle( Constants.FEATURECODE_BUNDLE_KEY, locale); if (bundle.getLocale().getLanguage()!= locale.getLanguage()){ bundle = ResourceBundle.getBundle( Constants.FEATURECODE_BUNDLE_KEY, LocaleContextHolder.getLocale()); } description = bundle.getString( this.toString()); } catch (MissingResourceException mse) { logger.warn(this.toString() + " is not localized for : " + locale); try { description = ResourceBundle.getBundle( Constants.FEATURECODE_BUNDLE_KEY, DEFAULT_FALLBACK_LOCALE).getString(this.toString()); } catch (RuntimeException e) { logger .warn(this.toString() + " is not localized for the default fallback translation: " + locale); return description; } } catch (RuntimeException rte) { logger.warn("Can not retrieve localized description for " + this.toString() + " for locale " + locale + " : " + rte.getMessage()); } return description; } /** * The default Locale, If the thread one does not esxists */ public static final Locale DEFAULT_FALLBACK_LOCALE = Locale.ENGLISH; /** * The default Translation. It is used when no translation is found for the * locale */ public static final String DEFAULT_TRANSLATION = "Toponym"; /** * A map that associate a string to a class */ public final static Map<String, Class<? extends GisFeature>> entityClass = new HashMap<String, Class<? extends GisFeature>>(); protected static final Logger logger = LoggerFactory .getLogger(FeatureCode.class); static { Class<? extends GisFeature> clazz = null; for (FeatureCode featurecode : FeatureCode.values()) { clazz = (Class<? extends GisFeature>) featurecode.getObject() .getClass(); entityClass.put(clazz.getSimpleName().toLowerCase(), clazz); } logger.info("There is " + entityClass.size() + " different entities"); if (logger.isInfoEnabled()) { for (String key : entityClass.keySet()) { logger.info("entityclass contains " + key + "=" + entityClass.get(key)); } } } // TODO v2 test that all feature code are localized }