01: /*
02: * GeoTools - OpenSource mapping toolkit
03: * http://geotools.org
04: * (C) 2005-2006, GeoTools Project Managment Committee (PMC)
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation;
09: * version 2.1 of the License.
10: *
11: * This library is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Lesser General Public License for more details.
15: */
16: package org.geotools.referencing.factory.epsg;
17:
18: // J2SE dependencies
19: import java.net.URL;
20:
21: // OpenGIS dependencies
22: import org.opengis.referencing.FactoryException;
23:
24: // Geotools dependencies
25: import org.geotools.factory.Hints;
26:
27: /**
28: * Provides common {@linkplain CoordinateReferenceSystem Coordinate Reference Systems}
29: * not found in the standard EPSG database. Those CRS will be registered in
30: * {@code "EPSG"} name space.
31: *
32: * @since 2.4
33: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/plugin/epsg-extension/src/main/java/org/geotools/referencing/factory/epsg/UnnamedExtension.java $
34: * @version $Id: UnnamedExtension.java 25398 2007-05-02 13:32:07Z desruisseaux $
35: * @author Andrea Aime
36: */
37: public class UnnamedExtension extends FactoryUsingWKT {
38: /**
39: * The default filename to read. This file will be searched in the
40: * {@code org/geotools/referencing/factory/espg} directory in the
41: * classpath or in a JAR file.
42: *
43: * @see #getDefinitionsURL
44: */
45: public static final String FILENAME = "unnamed.properties";
46:
47: /**
48: * Constructs an authority factory using the default set of factories.
49: */
50: public UnnamedExtension() {
51: this (null);
52: }
53:
54: /**
55: * Constructs an authority factory using a set of factories created from the specified hints.
56: * This constructor recognizes the {@link Hints#CRS_FACTORY CRS}, {@link Hints#CS_FACTORY CS},
57: * {@link Hints#DATUM_FACTORY DATUM} and {@link Hints#MATH_TRANSFORM_FACTORY MATH_TRANSFORM}
58: * {@code FACTORY} hints.
59: */
60: public UnnamedExtension(final Hints hints) {
61: super (hints, DEFAULT_PRIORITY - 2);
62: }
63:
64: /**
65: * Returns the URL to the property file that contains CRS definitions.
66: * The default implementation returns the URL to the {@value #FILENAME} file.
67: *
68: * @return The URL, or {@code null} if none.
69: */
70: protected URL getDefinitionsURL() {
71: return UnnamedExtension.class.getResource(FILENAME);
72: }
73:
74: /**
75: * Prints a list of codes that duplicate the ones provided in the {@link DefaultFactory}.
76: * The factory tested is the one registered in {@link ReferencingFactoryFinder}. By default, this
77: * is this {@code UnnamedExtension} class backed by the {@value #FILENAME} property file.
78: * This method can be invoked from the command line in order to check the content of the
79: * property file. Valid arguments are:
80: * <p>
81: * <table>
82: * <tr><td>{@code -test}</td><td>Try to instantiate all CRS and reports any failure
83: * to do so.</td></tr>
84: * <tr><td>{@code -duplicated}</td><td>List all codes from the WKT factory that are
85: * duplicating a code from the SQL factory.</td></tr>
86: * </table>
87: *
88: * @param args Command line arguments.
89: * @throws FactoryException if an error occured.
90: */
91: public static void main(final String[] args)
92: throws FactoryException {
93: main(args, UnnamedExtension.class);
94: }
95: }
|