01: /* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved.
02: * This code is licensed under the GPL 2.0 license, availible at the root
03: * application directory.
04: */
05: package org.vfny.geoserver.crs;
06:
07: import org.geotools.referencing.factory.epsg.FactoryUsingWKT;
08: import org.vfny.geoserver.global.GeoserverDataDirectory;
09: import java.io.File;
10: import java.net.MalformedURLException;
11: import java.net.URL;
12: import java.util.logging.Level;
13:
14: /**
15: * Authority allowing users to define their own CRS in a separate file
16: */
17: public class GeoserverCustomWKTFactory extends FactoryUsingWKT {
18: public static final String SYSTEM_DEFAULT_USER_PROJ_FILE = "user.projections.file";
19:
20: /**
21: * Returns the URL to the property file that contains CRS definitions. The
22: * default implementation returns the URL to the {@value #FILENAME} file.
23: *
24: * @return The URL, or {@code null} if none.
25: */
26: protected URL getDefinitionsURL() {
27: String cust_proj_file = System
28: .getProperty(SYSTEM_DEFAULT_USER_PROJ_FILE);
29:
30: if (cust_proj_file == null) {
31: cust_proj_file = new File(GeoserverDataDirectory
32: .getGeoserverDataDirectory(),
33: "user_projections/epsg.properties")
34: .getAbsolutePath();
35: }
36:
37: // Attempt to load user-defined projections
38: File proj_file = new File(cust_proj_file);
39:
40: if (proj_file.exists()) {
41: try {
42: return proj_file.toURL();
43: } catch (MalformedURLException e) {
44: LOGGER.log(Level.SEVERE,
45: "Had troubles converting file name to URL", e);
46: }
47: }
48:
49: // Use the built-in property defintions
50: cust_proj_file = "user_epsg.properties";
51:
52: return GeoserverCustomWKTFactory.class
53: .getResource(cust_proj_file);
54: }
55: }
|