Ignore:
Timestamp:
2013-01-27T17:08:57+01:00 (12 years ago)
Author:
malcolmh
Message:

save

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/smed2/src/s57/S57obj.java

    r29049 r29209  
    22
    33import java.util.EnumMap;
     4import java.util.HashMap;
     5import java.util.Map;
    46
    57public class S57obj {
     
    6264                ObjS57.put(Obj.$COMPS,503);     ObjS57.put(Obj.$TEXTS,504);
    6365        }
     66
    6467        private static final EnumMap<Obj, Integer> ObjIENC = new EnumMap<Obj, Integer>(Obj.class);
    6568        static {
     
    7881        }
    7982
    80         private static final EnumMap<Obj, String> ObjSTR = new EnumMap<Obj, String>(Obj.class);
     83        private static final HashMap<Integer, Obj> S57Obj = new HashMap<Integer, Obj>();
    8184        static {
    82                 ObjSTR.put(Obj.UNKOBJ, "");     ObjSTR.put(Obj.ADMARE, "administrative_area");  ObjSTR.put(Obj.AIRARE, "airfield");     ObjSTR.put(Obj.ACHBRT, "anchor_berth");
    83                 ObjSTR.put(Obj.ACHARE, "anchorage"); ObjSTR.put(Obj.BCNCAR, "beacon_cardinal"); ObjSTR.put(Obj.BCNISD, "beacon_isolated_danger");
    84                 ObjSTR.put(Obj.BCNLAT, "beacon_lateral");       ObjSTR.put(Obj.BCNSAW, "beacon_safe_water"); ObjSTR.put(Obj.BCNSPP, "beacon_special_purpose");
    85                 ObjSTR.put(Obj.BERTHS, "berth"); ObjSTR.put(Obj.BRIDGE, "bridge"); ObjSTR.put(Obj.BUISGL, "building"); ObjSTR.put(Obj.BUAARE, "built-up_area");
    86                 ObjSTR.put(Obj.BOYCAR, "buoy_cardinal"); ObjSTR.put(Obj.BOYINB, "buoy_installation");   ObjSTR.put(Obj.BOYISD, "buoy_isolated_danger");
    87                 ObjSTR.put(Obj.BOYLAT, "buoy_lateral"); ObjSTR.put(Obj.BOYSAW, "buoy_safe_water"); ObjSTR.put(Obj.BOYSPP, "buoy_special_purpose");
    88                 ObjSTR.put(Obj.CBLARE, "cable_area");   ObjSTR.put(Obj.CBLOHD, "cable_overhead");       ObjSTR.put(Obj.CBLSUB, "cable_submarine"); ObjSTR.put(Obj.CANALS, "canal");
    89                 ObjSTR.put(Obj.CANBNK, "canal_bank");   ObjSTR.put(Obj.CTSARE, "cargo_area");   ObjSTR.put(Obj.CAUSWY, "causeway");     ObjSTR.put(Obj.CTNARE, "caution_area");
    90                 ObjSTR.put(Obj.CHKPNT, "checkpoint");   ObjSTR.put(Obj.CGUSTA, "coastguard_station");   ObjSTR.put(Obj.COALNE, "coastline"); ObjSTR.put(Obj.CONZNE, "contiguous_zone");
    91                 ObjSTR.put(Obj.COSARE, "continental_shelf"); ObjSTR.put(Obj.CTRPNT, "control_point");   ObjSTR.put(Obj.CONVYR, "conveyor");     ObjSTR.put(Obj.CRANES, "crane");
    92                 ObjSTR.put(Obj.CURENT, "current"); ObjSTR.put(Obj.CUSZNE, "custom_zone");       ObjSTR.put(Obj.DAMCON, "dam"); ObjSTR.put(Obj.DAYMAR, "daymark");
    93                 ObjSTR.put(Obj.DWRTCL, "deep_water_route_centreline"); ObjSTR.put(Obj.DWRTPT, "deep_water_route"); ObjSTR.put(Obj.DEPARE, "depth_area");
    94                 ObjSTR.put(Obj.DEPCNT, "depth_contour"); ObjSTR.put(Obj.DISMAR, "distance_mark");       ObjSTR.put(Obj.DOCARE, "dock"); ObjSTR.put(Obj.DRGARE, "dredged_area");
    95                 ObjSTR.put(Obj.DRYDOC, "dry_dock");     ObjSTR.put(Obj.DMPGRD, "dumping_ground");       ObjSTR.put(Obj.DYKCON, "dyke"); ObjSTR.put(Obj.EXEZNE, "exclusive_economic_zone");
    96                 ObjSTR.put(Obj.FAIRWY, "fairway"); ObjSTR.put(Obj.FNCLNE, "wall"); ObjSTR.put(Obj.FERYRT, "ferry_route");       ObjSTR.put(Obj.FSHZNE, "fishery_zone");
    97                 ObjSTR.put(Obj.FSHFAC, "fishing_facility");     ObjSTR.put(Obj.FSHGRD, "fishing_ground");       ObjSTR.put(Obj.FLODOC, "floating_dock"); ObjSTR.put(Obj.FOGSIG, "fog_signal");
    98                 ObjSTR.put(Obj.FORSTC, "fortified_structure"); ObjSTR.put(Obj.FRPARE, "free_port_area"); ObjSTR.put(Obj.GATCON, "gate"); ObjSTR.put(Obj.GRIDRN, "gridiron");
    99                 ObjSTR.put(Obj.HRBARE, "harbour_area"); ObjSTR.put(Obj.HRBFAC, "harbour"); ObjSTR.put(Obj.HULKES, "hulk"); ObjSTR.put(Obj.ICEARE, "ice_area");
    100                 ObjSTR.put(Obj.ICNARE, "incineration_zone"); ObjSTR.put(Obj.ISTZNE, "inshore_traffic_zone"); ObjSTR.put(Obj.LAKARE, "lake"); ObjSTR.put(Obj.LAKSHR, "lake_shore");
    101                 ObjSTR.put(Obj.LNDARE, "land_area"); ObjSTR.put(Obj.LNDELV, "land_elevation"); ObjSTR.put(Obj.LNDRGN, "land_region");   ObjSTR.put(Obj.LNDMRK, "landmark");
    102                 ObjSTR.put(Obj.LIGHTS, "light"); ObjSTR.put(Obj.LITFLT, "light_float"); ObjSTR.put(Obj.LITVES, "light_vessel"); ObjSTR.put(Obj.LOCMAG, "local_magnetic_anomaly");
    103                 ObjSTR.put(Obj.LOKBSN, "lock_basin");   ObjSTR.put(Obj.LOGPON, "log_pond");     ObjSTR.put(Obj.MAGVAR, "magnetic_variation");   ObjSTR.put(Obj.MARCUL, "marine_farm");
    104                 ObjSTR.put(Obj.MIPARE, "military_area"); ObjSTR.put(Obj.MORFAC, "mooring");     ObjSTR.put(Obj.NAVLNE, "navigation_line"); ObjSTR.put(Obj.OBSTRN, "obstruction");
    105                 ObjSTR.put(Obj.OFSPLF, "platform");     ObjSTR.put(Obj.OSPARE, "production_area"); ObjSTR.put(Obj.OILBAR, "oil_barrier");       ObjSTR.put(Obj.PILPNT, "pile");
    106                 ObjSTR.put(Obj.PILBOP, "pilot_boarding");       ObjSTR.put(Obj.PIPARE, "pipeline_area"); ObjSTR.put(Obj.PIPOHD, "pipeline_overhead");   ObjSTR.put(Obj.PIPSOL, "pipeline_submarine");
    107                 ObjSTR.put(Obj.PONTON, "pontoon"); ObjSTR.put(Obj.PRCARE, "precautionary_area"); ObjSTR.put(Obj.PRDARE, "land_production_area");ObjSTR.put(Obj.PYLONS, "pylon");
    108                 ObjSTR.put(Obj.RADLNE, "radar_line");   ObjSTR.put(Obj.RADRNG, "radar_range"); ObjSTR.put(Obj.RADRFL, "radar_reflector");       ObjSTR.put(Obj.RADSTA, "radar_station");
    109                 ObjSTR.put(Obj.RTPBCN, "radar_transponder"); ObjSTR.put(Obj.RDOCAL, "calling-in_point"); ObjSTR.put(Obj.RDOSTA, "radio_station");       ObjSTR.put(Obj.RAILWY, "railway");
    110                 ObjSTR.put(Obj.RAPIDS, "rapids");       ObjSTR.put(Obj.RCRTCL, "recommended_route_centreline"); ObjSTR.put(Obj.RECTRC, "recommended_track");
    111                 ObjSTR.put(Obj.RCTLPT, "recommended_traffic_lane");     ObjSTR.put(Obj.RSCSTA, "rescue_station");       ObjSTR.put(Obj.RESARE, "restricted_area");
    112                 ObjSTR.put(Obj.RETRFL, "retro_reflector"); ObjSTR.put(Obj.RIVERS, "river");     ObjSTR.put(Obj.RIVBNK, "river_bank");   ObjSTR.put(Obj.ROADWY, "road");
    113                 ObjSTR.put(Obj.RUNWAY, "runway");       ObjSTR.put(Obj.SNDWAV, "sand_waves");   ObjSTR.put(Obj.SEAARE, "sea_area");     ObjSTR.put(Obj.SPLARE, "seaplane_landing_area");
    114                 ObjSTR.put(Obj.SBDARE, "seabed_area"); ObjSTR.put(Obj.SLCONS, "shoreline_construction"); ObjSTR.put(Obj.SISTAT, "signal_station_traffic");
    115                 ObjSTR.put(Obj.SISTAW, "signal_station_warning");       ObjSTR.put(Obj.SILTNK, "tank"); ObjSTR.put(Obj.SLOTOP, "slope_topline"); ObjSTR.put(Obj.SLOGRD, "sloping_ground");
    116                 ObjSTR.put(Obj.SMCFAC, "small_craft_facility"); ObjSTR.put(Obj.SOUNDG, "sounding");     ObjSTR.put(Obj.SPRING, "spring");       ObjSTR.put(Obj.SQUARE, "square");
    117                 ObjSTR.put(Obj.STSLNE, "territorial_baseline"); ObjSTR.put(Obj.SUBTLN, "submarine_transit_lane");       ObjSTR.put(Obj.SWPARE, "swept_area");
    118                 ObjSTR.put(Obj.TESARE, "territorial_area");     ObjSTR.put(Obj.TS_PRH, "");     ObjSTR.put(Obj.TS_PNH, "");     ObjSTR.put(Obj.TS_PAD, "");     ObjSTR.put(Obj.TS_TIS, "");
    119                 ObjSTR.put(Obj.T_HMON, "");     ObjSTR.put(Obj.T_NHMN, "");     ObjSTR.put(Obj.T_TIMS, "");     ObjSTR.put(Obj.TIDEWY, "tideway"); ObjSTR.put(Obj.TOPMAR, "topmark");
    120                 ObjSTR.put(Obj.TSELNE, "separation_line"); ObjSTR.put(Obj.TSSBND, "separation_boundary");       ObjSTR.put(Obj.TSSCRS, "separation_crossing");
    121                 ObjSTR.put(Obj.TSSLPT, "separation_lane"); ObjSTR.put(Obj.TSSRON, "separation_roundabout");     ObjSTR.put(Obj.TSEZNE, "separation_zone"); ObjSTR.put(Obj.TUNNEL, "tunnel");
    122                 ObjSTR.put(Obj.TWRTPT, "two-way_route"); ObjSTR.put(Obj.UWTROC, "rock"); ObjSTR.put(Obj.UNSARE, "unsurveyed_area");     ObjSTR.put(Obj.VEGATN, "vegetation");
    123                 ObjSTR.put(Obj.WATTUR, "water_turbulence");     ObjSTR.put(Obj.WATFAL, "waterfall"); ObjSTR.put(Obj.WEDKLP, "weed"); ObjSTR.put(Obj.WRECKS, "wreck");
    124                 ObjSTR.put(Obj.TS_FEB, "tidal_stream"); ObjSTR.put(Obj.M_ACCY, "");     ObjSTR.put(Obj.M_CSCL, "");     ObjSTR.put(Obj.M_COVR, "coverage");     ObjSTR.put(Obj.M_HDAT, "");
    125                 ObjSTR.put(Obj.M_HOPA, "");     ObjSTR.put(Obj.M_NPUB, "");     ObjSTR.put(Obj.M_NSYS, "");     ObjSTR.put(Obj.M_PROD, "");     ObjSTR.put(Obj.M_QUAL, "data_quality");
    126                 ObjSTR.put(Obj.M_SDAT, "");     ObjSTR.put(Obj.M_SREL, "");     ObjSTR.put(Obj.M_UNIT, "");     ObjSTR.put(Obj.M_VDAT, "");     ObjSTR.put(Obj.C_AGGR, "");     ObjSTR.put(Obj.C_ASSO, "");
    127                 ObjSTR.put(Obj.C_STAC, "");     ObjSTR.put(Obj.$AREAS, "");     ObjSTR.put(Obj.$LINES, "");     ObjSTR.put(Obj.$CSYMB, "");     ObjSTR.put(Obj.$COMPS, "");     ObjSTR.put(Obj.$TEXTS, "");
    128                 ObjSTR.put(Obj.NOTMRK, "notice");       ObjSTR.put(Obj.WTWAXS, "waterway_axis"); ObjSTR.put(Obj.WTWPRF, "waterway_profile"); ObjSTR.put(Obj.BRGARE, "bridge_area");
    129                 ObjSTR.put(Obj.BUNSTA, "bunker_station");       ObjSTR.put(Obj.COMARE, "communication_area");   ObjSTR.put(Obj.HRBBSN, "harbour_basin"); ObjSTR.put(Obj.LOKARE, "lock_area");
    130                 ObjSTR.put(Obj.LKBSPT, "lock_basin_part"); ObjSTR.put(Obj.PRTARE, "port_area"); ObjSTR.put(Obj.BCNWTW, "beacon_waterway"); ObjSTR.put(Obj.BOYWTW, "buoy_waterway");
    131                 ObjSTR.put(Obj.REFDMP, "refuse_dump"); ObjSTR.put(Obj.RTPLPT, "route_planning_point"); ObjSTR.put(Obj.TERMNL, "terminal"); ObjSTR.put(Obj.TRNBSN, "turning_basin");
    132                 ObjSTR.put(Obj.WTWARE, "waterway_area"); ObjSTR.put(Obj.WTWGAG, "waterway_gauge"); ObjSTR.put(Obj.TISDGE, "time_schedule");     ObjSTR.put(Obj.VEHTRF, "vehicle_transfer");
    133                 ObjSTR.put(Obj.EXCNST, "exceptional_structure"); ObjSTR.put(Obj.LG_SDM, ""); ObjSTR.put(Obj.LG_VSP, ""); ObjSTR.put(Obj.LITMAJ, "light_major"); ObjSTR.put(Obj.LITMIN, "light_minor");
     85                for (Map.Entry<Obj, Integer> entry : ObjS57.entrySet()) {
     86                        S57Obj.put(entry.getValue(), entry.getKey());
     87                }
     88                for (Map.Entry<Obj, Integer> entry : ObjIENC.entrySet()) {
     89                        S57Obj.put(entry.getValue(), entry.getKey());
     90                }
    13491        }
    135 
    136         public static String decodeType(Integer type) { // Convert S57 feature code to OSeaM object string
    137                 String str = ObjSTR.get(lookupType(type));
    138                 return str != null ? str : "";
     92       
     93        private static final EnumMap<Obj, String> ObjStr = new EnumMap<Obj, String>(Obj.class);
     94        static {
     95                ObjStr.put(Obj.UNKOBJ, "");     ObjStr.put(Obj.ADMARE, "administrative_area");  ObjStr.put(Obj.AIRARE, "airfield");     ObjStr.put(Obj.ACHBRT, "anchor_berth");
     96                ObjStr.put(Obj.ACHARE, "anchorage"); ObjStr.put(Obj.BCNCAR, "beacon_cardinal"); ObjStr.put(Obj.BCNISD, "beacon_isolated_danger");
     97                ObjStr.put(Obj.BCNLAT, "beacon_lateral");       ObjStr.put(Obj.BCNSAW, "beacon_safe_water"); ObjStr.put(Obj.BCNSPP, "beacon_special_purpose");
     98                ObjStr.put(Obj.BERTHS, "berth"); ObjStr.put(Obj.BRIDGE, "bridge"); ObjStr.put(Obj.BUISGL, "building"); ObjStr.put(Obj.BUAARE, "built-up_area");
     99                ObjStr.put(Obj.BOYCAR, "buoy_cardinal"); ObjStr.put(Obj.BOYINB, "buoy_installation");   ObjStr.put(Obj.BOYISD, "buoy_isolated_danger");
     100                ObjStr.put(Obj.BOYLAT, "buoy_lateral"); ObjStr.put(Obj.BOYSAW, "buoy_safe_water"); ObjStr.put(Obj.BOYSPP, "buoy_special_purpose");
     101                ObjStr.put(Obj.CBLARE, "cable_area");   ObjStr.put(Obj.CBLOHD, "cable_overhead");       ObjStr.put(Obj.CBLSUB, "cable_submarine"); ObjStr.put(Obj.CANALS, "canal");
     102                ObjStr.put(Obj.CANBNK, "canal_bank");   ObjStr.put(Obj.CTSARE, "cargo_area");   ObjStr.put(Obj.CAUSWY, "causeway");     ObjStr.put(Obj.CTNARE, "caution_area");
     103                ObjStr.put(Obj.CHKPNT, "checkpoint");   ObjStr.put(Obj.CGUSTA, "coastguard_station");   ObjStr.put(Obj.COALNE, "coastline"); ObjStr.put(Obj.CONZNE, "contiguous_zone");
     104                ObjStr.put(Obj.COSARE, "continental_shelf"); ObjStr.put(Obj.CTRPNT, "control_point");   ObjStr.put(Obj.CONVYR, "conveyor");     ObjStr.put(Obj.CRANES, "crane");
     105                ObjStr.put(Obj.CURENT, "current"); ObjStr.put(Obj.CUSZNE, "custom_zone");       ObjStr.put(Obj.DAMCON, "dam"); ObjStr.put(Obj.DAYMAR, "daymark");
     106                ObjStr.put(Obj.DWRTCL, "deep_water_route_centreline"); ObjStr.put(Obj.DWRTPT, "deep_water_route"); ObjStr.put(Obj.DEPARE, "depth_area");
     107                ObjStr.put(Obj.DEPCNT, "depth_contour"); ObjStr.put(Obj.DISMAR, "distance_mark");       ObjStr.put(Obj.DOCARE, "dock"); ObjStr.put(Obj.DRGARE, "dredged_area");
     108                ObjStr.put(Obj.DRYDOC, "dry_dock");     ObjStr.put(Obj.DMPGRD, "dumping_ground");       ObjStr.put(Obj.DYKCON, "dyke"); ObjStr.put(Obj.EXEZNE, "exclusive_economic_zone");
     109                ObjStr.put(Obj.FAIRWY, "fairway"); ObjStr.put(Obj.FNCLNE, "wall"); ObjStr.put(Obj.FERYRT, "ferry_route");       ObjStr.put(Obj.FSHZNE, "fishery_zone");
     110                ObjStr.put(Obj.FSHFAC, "fishing_facility");     ObjStr.put(Obj.FSHGRD, "fishing_ground");       ObjStr.put(Obj.FLODOC, "floating_dock"); ObjStr.put(Obj.FOGSIG, "fog_signal");
     111                ObjStr.put(Obj.FORSTC, "fortified_structure"); ObjStr.put(Obj.FRPARE, "free_port_area"); ObjStr.put(Obj.GATCON, "gate"); ObjStr.put(Obj.GRIDRN, "gridiron");
     112                ObjStr.put(Obj.HRBARE, "harbour_area"); ObjStr.put(Obj.HRBFAC, "harbour"); ObjStr.put(Obj.HULKES, "hulk"); ObjStr.put(Obj.ICEARE, "ice_area");
     113                ObjStr.put(Obj.ICNARE, "incineration_zone"); ObjStr.put(Obj.ISTZNE, "inshore_traffic_zone"); ObjStr.put(Obj.LAKARE, "lake"); ObjStr.put(Obj.LAKSHR, "lake_shore");
     114                ObjStr.put(Obj.LNDARE, "land_area"); ObjStr.put(Obj.LNDELV, "land_elevation"); ObjStr.put(Obj.LNDRGN, "land_region");   ObjStr.put(Obj.LNDMRK, "landmark");
     115                ObjStr.put(Obj.LIGHTS, "light"); ObjStr.put(Obj.LITFLT, "light_float"); ObjStr.put(Obj.LITVES, "light_vessel"); ObjStr.put(Obj.LOCMAG, "local_magnetic_anomaly");
     116                ObjStr.put(Obj.LOKBSN, "lock_basin");   ObjStr.put(Obj.LOGPON, "log_pond");     ObjStr.put(Obj.MAGVAR, "magnetic_variation");   ObjStr.put(Obj.MARCUL, "marine_farm");
     117                ObjStr.put(Obj.MIPARE, "military_area"); ObjStr.put(Obj.MORFAC, "mooring");     ObjStr.put(Obj.NAVLNE, "navigation_line"); ObjStr.put(Obj.OBSTRN, "obstruction");
     118                ObjStr.put(Obj.OFSPLF, "platform");     ObjStr.put(Obj.OSPARE, "production_area"); ObjStr.put(Obj.OILBAR, "oil_barrier");       ObjStr.put(Obj.PILPNT, "pile");
     119                ObjStr.put(Obj.PILBOP, "pilot_boarding");       ObjStr.put(Obj.PIPARE, "pipeline_area"); ObjStr.put(Obj.PIPOHD, "pipeline_overhead");   ObjStr.put(Obj.PIPSOL, "pipeline_submarine");
     120                ObjStr.put(Obj.PONTON, "pontoon"); ObjStr.put(Obj.PRCARE, "precautionary_area"); ObjStr.put(Obj.PRDARE, "land_production_area");ObjStr.put(Obj.PYLONS, "pylon");
     121                ObjStr.put(Obj.RADLNE, "radar_line");   ObjStr.put(Obj.RADRNG, "radar_range"); ObjStr.put(Obj.RADRFL, "radar_reflector");       ObjStr.put(Obj.RADSTA, "radar_station");
     122                ObjStr.put(Obj.RTPBCN, "radar_transponder"); ObjStr.put(Obj.RDOCAL, "calling-in_point"); ObjStr.put(Obj.RDOSTA, "radio_station");       ObjStr.put(Obj.RAILWY, "railway");
     123                ObjStr.put(Obj.RAPIDS, "rapids");       ObjStr.put(Obj.RCRTCL, "recommended_route_centreline"); ObjStr.put(Obj.RECTRC, "recommended_track");
     124                ObjStr.put(Obj.RCTLPT, "recommended_traffic_lane");     ObjStr.put(Obj.RSCSTA, "rescue_station");       ObjStr.put(Obj.RESARE, "restricted_area");
     125                ObjStr.put(Obj.RETRFL, "retro_reflector"); ObjStr.put(Obj.RIVERS, "river");     ObjStr.put(Obj.RIVBNK, "river_bank");   ObjStr.put(Obj.ROADWY, "road");
     126                ObjStr.put(Obj.RUNWAY, "runway");       ObjStr.put(Obj.SNDWAV, "sand_waves");   ObjStr.put(Obj.SEAARE, "sea_area");     ObjStr.put(Obj.SPLARE, "seaplane_landing_area");
     127                ObjStr.put(Obj.SBDARE, "seabed_area"); ObjStr.put(Obj.SLCONS, "shoreline_construction"); ObjStr.put(Obj.SISTAT, "signal_station_traffic");
     128                ObjStr.put(Obj.SISTAW, "signal_station_warning");       ObjStr.put(Obj.SILTNK, "tank"); ObjStr.put(Obj.SLOTOP, "slope_topline"); ObjStr.put(Obj.SLOGRD, "sloping_ground");
     129                ObjStr.put(Obj.SMCFAC, "small_craft_facility"); ObjStr.put(Obj.SOUNDG, "sounding");     ObjStr.put(Obj.SPRING, "spring");       ObjStr.put(Obj.SQUARE, "square");
     130                ObjStr.put(Obj.STSLNE, "territorial_baseline"); ObjStr.put(Obj.SUBTLN, "submarine_transit_lane");       ObjStr.put(Obj.SWPARE, "swept_area");
     131                ObjStr.put(Obj.TESARE, "territorial_area");     ObjStr.put(Obj.TS_PRH, "");     ObjStr.put(Obj.TS_PNH, "");     ObjStr.put(Obj.TS_PAD, "");     ObjStr.put(Obj.TS_TIS, "");
     132                ObjStr.put(Obj.T_HMON, "");     ObjStr.put(Obj.T_NHMN, "");     ObjStr.put(Obj.T_TIMS, "");     ObjStr.put(Obj.TIDEWY, "tideway"); ObjStr.put(Obj.TOPMAR, "topmark");
     133                ObjStr.put(Obj.TSELNE, "separation_line"); ObjStr.put(Obj.TSSBND, "separation_boundary");       ObjStr.put(Obj.TSSCRS, "separation_crossing");
     134                ObjStr.put(Obj.TSSLPT, "separation_lane"); ObjStr.put(Obj.TSSRON, "separation_roundabout");     ObjStr.put(Obj.TSEZNE, "separation_zone"); ObjStr.put(Obj.TUNNEL, "tunnel");
     135                ObjStr.put(Obj.TWRTPT, "two-way_route"); ObjStr.put(Obj.UWTROC, "rock"); ObjStr.put(Obj.UNSARE, "unsurveyed_area");     ObjStr.put(Obj.VEGATN, "vegetation");
     136                ObjStr.put(Obj.WATTUR, "water_turbulence");     ObjStr.put(Obj.WATFAL, "waterfall"); ObjStr.put(Obj.WEDKLP, "weed"); ObjStr.put(Obj.WRECKS, "wreck");
     137                ObjStr.put(Obj.TS_FEB, "tidal_stream"); ObjStr.put(Obj.M_ACCY, "");     ObjStr.put(Obj.M_CSCL, "");     ObjStr.put(Obj.M_COVR, "coverage");     ObjStr.put(Obj.M_HDAT, "");
     138                ObjStr.put(Obj.M_HOPA, "");     ObjStr.put(Obj.M_NPUB, "");     ObjStr.put(Obj.M_NSYS, "");     ObjStr.put(Obj.M_PROD, "");     ObjStr.put(Obj.M_QUAL, "data_quality");
     139                ObjStr.put(Obj.M_SDAT, "");     ObjStr.put(Obj.M_SREL, "");     ObjStr.put(Obj.M_UNIT, "");     ObjStr.put(Obj.M_VDAT, "");     ObjStr.put(Obj.C_AGGR, "");     ObjStr.put(Obj.C_ASSO, "");
     140                ObjStr.put(Obj.C_STAC, "");     ObjStr.put(Obj.$AREAS, "");     ObjStr.put(Obj.$LINES, "");     ObjStr.put(Obj.$CSYMB, "");     ObjStr.put(Obj.$COMPS, "");     ObjStr.put(Obj.$TEXTS, "");
     141                ObjStr.put(Obj.NOTMRK, "notice");       ObjStr.put(Obj.WTWAXS, "waterway_axis"); ObjStr.put(Obj.WTWPRF, "waterway_profile"); ObjStr.put(Obj.BRGARE, "bridge_area");
     142                ObjStr.put(Obj.BUNSTA, "bunker_station");       ObjStr.put(Obj.COMARE, "communication_area");   ObjStr.put(Obj.HRBBSN, "harbour_basin"); ObjStr.put(Obj.LOKARE, "lock_area");
     143                ObjStr.put(Obj.LKBSPT, "lock_basin_part"); ObjStr.put(Obj.PRTARE, "port_area"); ObjStr.put(Obj.BCNWTW, "beacon_waterway"); ObjStr.put(Obj.BOYWTW, "buoy_waterway");
     144                ObjStr.put(Obj.REFDMP, "refuse_dump"); ObjStr.put(Obj.RTPLPT, "route_planning_point"); ObjStr.put(Obj.TERMNL, "terminal"); ObjStr.put(Obj.TRNBSN, "turning_basin");
     145                ObjStr.put(Obj.WTWARE, "waterway_area"); ObjStr.put(Obj.WTWGAG, "waterway_gauge"); ObjStr.put(Obj.TISDGE, "time_schedule");     ObjStr.put(Obj.VEHTRF, "vehicle_transfer");
     146                ObjStr.put(Obj.EXCNST, "exceptional_structure"); ObjStr.put(Obj.LG_SDM, ""); ObjStr.put(Obj.LG_VSP, ""); ObjStr.put(Obj.LITMAJ, "light_major"); ObjStr.put(Obj.LITMIN, "light_minor");
    139147        }
    140 
    141         public static Integer encodeType(String type) { // Convert OSM object string to S57 feature code
    142                 if (type != null) {
    143                         for (Obj obj : ObjSTR.keySet()) {
    144                                 if (ObjSTR.get(obj).equals(type)) {
    145                                         if (ObjS57.get(obj) != null)
    146                                                 return ObjS57.get(obj);
    147                                         else if (ObjIENC.get(obj) != null)
    148                                                 return ObjIENC.get(obj);
    149                                         else break;
    150                                 }
    151                         }
     148       
     149        private static final HashMap<String, Obj> StrObj = new HashMap<String, Obj>();
     150        static {
     151                for (Map.Entry<Obj, String> entry : ObjStr.entrySet()) {
     152                        StrObj.put(entry.getValue(), entry.getKey());
    152153                }
    153                 return 0;
     154        }
     155       
     156        public static Obj decodeType(Integer objl) { // Convert S57 feature code to OSeaM object enumeration
     157                Obj obj = S57Obj.get(objl);
     158                return (obj != null) ? obj : Obj.UNKOBJ;
    154159        }
    155160
    156161        public static Integer encodeType(Obj type) { // Convert OSM object enumeration to S57 feature code
    157                 if (ObjS57.get(type) != null)
     162                if (ObjS57.containsKey(type))
    158163                        return ObjS57.get(type);
    159                 else if (ObjIENC.get(type) != null)
     164                else if (ObjIENC.containsKey(type))
    160165                        return ObjIENC.get(type);
    161166                return 0;
    162167        }
    163168
    164         public static Obj lookupType(Integer type) {    // Convert S57 feature code to OSeaM object enumeration
    165                 if (type < 10000) {
    166                         for (Obj obj : ObjS57.keySet()) {
    167                                 if (ObjS57.get(obj).equals(type)) {
    168                                         return obj;
    169                                 }
    170                         }
    171                 } else {
    172                         for (Obj obj : ObjIENC.keySet()) {
    173                                 if (ObjIENC.get(obj).equals(type)) {
    174                                         return obj;
    175                                 }
    176                         }
    177                 }
    178                 return Obj.UNKOBJ;
    179         }
    180 
    181169        public static String stringType(Obj type) { // Convert OSeaM object enumeration to OSeaM object string
    182                 String str = ObjSTR.get(type);
     170                String str = ObjStr.get(type);
    183171                        return str != null ? str : "";
    184172        }
    185173
    186174        public static Obj enumType(String type) { // Convert OSeaM object string to OSeaM object enumeration
    187                 for (Obj obj : ObjSTR.keySet()) {
    188                         if (ObjSTR.get(obj).equals(type)) {
    189                                 return obj;
    190                         }
    191                 }
    192                 return Obj.UNKOBJ;
     175                if (StrObj.containsKey(type))
     176                        return StrObj.get(type);
     177                else
     178                        return Obj.UNKOBJ;
    193179        }
    194180
Note: See TracChangeset for help on using the changeset viewer.