01: package org.geotiff.image;
02:
03: import java.util.Properties;
04: import java.util.HashMap;
05: import java.util.Map;
06: import java.util.Set;
07: import java.util.Iterator;
08: import java.io.InputStream;
09: import java.io.IOException;
10:
11: /**
12: * The KeyRegistry provides the global registry for all
13: * sets of KeyMaps. All methods are static.
14: */
15: public class KeyRegistry {
16:
17: private static HashMap keyMaps = new HashMap();
18: public static String GEOKEY = "geokey";
19: public static String GEO_CTRANS = "ProjCoordTransGeoKey";
20: public static String EPSG_PCS = "ProjectedCSTypeGeoKey";
21: public static String EPSG_DATUM = "GeogGeodeticDatumGeoKey";
22: public static String EPSG_ELLIPSE = "GeogEllipsoidGeoKey";
23: public static String EPSG_GCS = "GeogGeographicTypeGeoKey";
24: public static String EPSG_PM = "GeogPrimeMeridianGeoKey";
25: public static String EPSG_PROJ = "ProjectionGeoKey";
26: public static String EPSG_VERTCS = "VerticalCSTypeGeoKey";
27:
28: public static String UNIT_GEOG = "GeogLinearUnitsGeoKey";
29: public static String UNIT_PROJ = "ProjLinearUnitsGeoKey";
30: public static String UNIT_VERTCS = "VerticalUnitsGeoKey";
31:
32: public static KeyRegistry instance = new KeyRegistry();
33:
34: private KeyRegistry() {
35: try {
36: addKeyMap(EPSG_DATUM,
37: "/org/geotiff/epsg/epsg_datum.properties");
38: addKeyMap(EPSG_ELLIPSE,
39: "/org/geotiff/epsg/epsg_ellipse.properties");
40: addKeyMap(EPSG_GCS, "/org/geotiff/epsg/epsg_gcs.properties");
41: addKeyMap(EPSG_PCS, "/org/geotiff/epsg/epsg_pcs.properties");
42: addKeyMap(EPSG_PM, "/org/geotiff/epsg/epsg_pm.properties");
43: addKeyMap(EPSG_PROJ,
44: "/org/geotiff/epsg/epsg_proj.properties");
45: addKeyMap(EPSG_VERTCS,
46: "/org/geotiff/epsg/epsg_vertcs.properties");
47: addKeyMap(GEO_CTRANS,
48: "/org/geotiff/image/geo_ctrans.properties");
49: addKeyMap(GEOKEY, "/org/geotiff/image/geokey.properties");
50:
51: //A number of Keys use epsg units, so we share them
52: addKeyMap(UNIT_GEOG,
53: "/org/geotiff/epsg/epsg_unit.properties");
54: KeyMap units = getKeyMap(UNIT_GEOG);
55: addKeyMap(UNIT_PROJ, units);
56: addKeyMap(UNIT_VERTCS, units);
57: } catch (IOException e) {
58: // do nothing
59: }
60: }
61:
62: public static KeyRegistry getKeyRegistry() {
63: return instance;
64: }
65:
66: public static void addKeyMap(String name, KeyMap map)
67: throws IOException {
68: keyMaps.put(name, map);
69: }
70:
71: public static void addKeyMap(String name, String resource)
72: throws IOException {
73: addKeyMap(name, new KeyMap(resource));
74: }
75:
76: public static KeyMap getKeyMap(String name) {
77: Object map = keyMaps.get(name);
78: return (KeyMap) map;
79: }
80:
81: public static int getCode(String map, String key) {
82: KeyMap keyMap = getKeyMap(map);
83: if (keyMap == null)
84: return -1;
85: return keyMap.getCode(key);
86: }
87:
88: public static String getKey(String map, int code) {
89: KeyMap keyMap = getKeyMap(map);
90: if (keyMap == null)
91: return null;
92: return keyMap.getKey(code);
93: }
94: }
|