001    //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/tags/2.1/src/org/deegree/model/csct/cs/CoordinateSystemAuthorityFactory.java $
002    /*
003     * SEAGIS - An OpenSource implementation of OpenGIS specification
004     *          (C) 2001, Institut de Recherche pour le D�veloppement
005     *
006     *    This library is free software; you can redistribute it and/or
007     *    modify it under the terms of the GNU Lesser General Public
008     *    License as published by the Free Software Foundation; either
009     *    version 2.1 of the License, or (at your option) any later version.
010     *
011     *    This library is distributed in the hope that it will be useful,
012     *    but WITHOUT ANY WARRANTY; without even the implied warranty of
013     *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014     *    Lesser General Public License for more details.
015     *
016     *    You should have received a copy of the GNU Lesser General Public
017     *    License along with this library; if not, write to the Free Software
018     *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
019     *
020     *
021     * Contacts:
022     *     FRANCE: Surveillance de l'Environnement Assist�e par Satellite
023     *             Institut de Recherche pour le D�veloppement / US-Espace
024     *             mailto:seasnet@teledetection.fr
025     *
026     *     CANADA: Observatoire du Saint-Laurent
027     *             Institut Maurice-Lamontagne
028     *             mailto:osl@osl.gc.ca
029     *
030     *    This package contains documentation from OpenGIS specifications.
031     *    OpenGIS consortium's work is fully acknowledged here.
032     */
033    package org.deegree.model.csct.cs;
034    
035    // Properties
036    import java.util.NoSuchElementException;
037    
038    import org.deegree.model.csct.units.Unit;
039    
040    
041    /**
042     * Creates spatial reference objects using codes. The codes are maintained by an external authority.
043     * A commonly used authority is EPSG, which is also used in the GeoTIFF standard.
044     * 
045     * @version 1.00
046     * @author OpenGIS (www.opengis.org)
047     * @author Martin Desruisseaux
048     * 
049     * @author last edited by: $Author: apoth $
050     * 
051     * @version $Revision: 7055 $, $Date: 2007-05-10 09:26:53 +0200 (Do, 10 Mai 2007) $
052     * 
053     * @see "org.opengis.cs.CS_CoordinateSystemAuthorityFactory"
054     */
055    public abstract class CoordinateSystemAuthorityFactory {
056        /**
057         * The underlying factory used for objects creation.
058         */
059        protected final CoordinateSystemFactory factory;
060    
061        /**
062         * Construct an authority factory using the specified coordinate system factory.
063         * 
064         * @param factory
065         *            The underlying factory used for objects creation.
066         */
067        public CoordinateSystemAuthorityFactory( final CoordinateSystemFactory factory ) {
068            Info.ensureNonNull( "factory", factory );
069            this.factory = factory;
070        }
071    
072        /**
073         * Returns the authority name.
074         * 
075         * @return the authority name.
076         */
077        public abstract String getAuthority();
078    
079        /**
080         * Returns an {@link Ellipsoid} object from a code.
081         * 
082         * @param code
083         *            Value allocated by authority.
084         * @return The ellipsoid object.
085         * @throws NoSuchElementException
086         *             if this method can't find the requested code.
087         * 
088         */
089        public Ellipsoid createEllipsoid( final String code )
090                                throws NoSuchElementException {
091            throw new NoSuchElementException( code );
092        }
093    
094        /**
095         * Returns a {@link Unit} object from a code.
096         * 
097         * @param code
098         *            Value allocated by authority.
099         * @return The unit object.
100         * @throws NoSuchElementException
101         *             if this method can't find the requested code.
102         * 
103         */
104        public Unit createUnit( final String code )
105                                throws NoSuchElementException {
106            throw new NoSuchElementException( code );
107        }
108    
109        
110    }