package org.geotiff.image;
import java.io.IOException;
import java.util.HashMap;
/**
* 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);
}
}