package org.geotiff.image; import java.util.Properties; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.Iterator; import java.io.InputStream; import java.io.IOException; /** * The KeyRegistry provides the global registry for all * sets of KeyMaps. All methods are static. */ public class KeyRegistry { private static HashMap keyMaps = new HashMap(); public static String GEOKEY = "geokey"; public static String GEO_CTRANS= "ProjCoordTransGeoKey"; public static String EPSG_PCS = "ProjectedCSTypeGeoKey"; public static String EPSG_DATUM= "GeogGeodeticDatumGeoKey"; public static String EPSG_ELLIPSE="GeogEllipsoidGeoKey"; public static String EPSG_GCS= "GeogGeographicTypeGeoKey"; public static String EPSG_PM= "GeogPrimeMeridianGeoKey"; public static String EPSG_PROJ= "ProjectionGeoKey"; public static String EPSG_VERTCS="VerticalCSTypeGeoKey"; public static String UNIT_GEOG= "GeogLinearUnitsGeoKey"; public static String UNIT_PROJ= "ProjLinearUnitsGeoKey"; public static String UNIT_VERTCS= "VerticalUnitsGeoKey"; public static KeyRegistry instance = new KeyRegistry(); private KeyRegistry() { try { addKeyMap(EPSG_DATUM, "/org/geotiff/epsg/epsg_datum.properties"); addKeyMap(EPSG_ELLIPSE,"/org/geotiff/epsg/epsg_ellipse.properties"); addKeyMap(EPSG_GCS, "/org/geotiff/epsg/epsg_gcs.properties"); addKeyMap(EPSG_PCS, "/org/geotiff/epsg/epsg_pcs.properties"); addKeyMap(EPSG_PM, "/org/geotiff/epsg/epsg_pm.properties"); addKeyMap(EPSG_PROJ, "/org/geotiff/epsg/epsg_proj.properties"); addKeyMap(EPSG_VERTCS,"/org/geotiff/epsg/epsg_vertcs.properties"); addKeyMap(GEO_CTRANS, "/org/geotiff/image/geo_ctrans.properties"); addKeyMap(GEOKEY, "/org/geotiff/image/geokey.properties"); //A number of Keys use epsg units, so we share them addKeyMap(UNIT_GEOG, "/org/geotiff/epsg/epsg_unit.properties"); KeyMap units=getKeyMap(UNIT_GEOG); addKeyMap(UNIT_PROJ, units); addKeyMap(UNIT_VERTCS, units); } catch (IOException e) { // do nothing } } public static KeyRegistry getKeyRegistry() { return instance; } public static void addKeyMap(String name,KeyMap map) throws IOException { keyMaps.put(name,map); } public static void addKeyMap(String name,String resource) throws IOException { addKeyMap(name,new KeyMap(resource)); } public static KeyMap getKeyMap(String name) { Object map = keyMaps.get(name); return (KeyMap)map; } public static int getCode(String map,String key) { KeyMap keyMap=getKeyMap(map); if (keyMap==null) return -1; return keyMap.getCode(key); } public static String getKey(String map,int code) { KeyMap keyMap=getKeyMap(map); if (keyMap==null) return null; return keyMap.getKey(code); } }