001: //$HeadURL: $
002: /*---------------- FILE HEADER ------------------------------------------
003: This file is part of deegree.
004: Copyright (C) 2001-2008 by:
005: Department of Geography, University of Bonn
006: http://www.giub.uni-bonn.de/deegree/
007: lat/lon GmbH
008: http://www.lat-lon.de
009:
010: This library is free software; you can redistribute it and/or
011: modify it under the terms of the GNU Lesser General Public
012: License as published by the Free Software Foundation; either
013: version 2.1 of the License, or (at your option) any later version.
014: This library is distributed in the hope that it will be useful,
015: but WITHOUT ANY WARRANTY; without even the implied warranty of
016: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017: Lesser General Public License for more details.
018: You should have received a copy of the GNU Lesser General Public
019: License along with this library; if not, write to the Free Software
020: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
021: Contact:
022:
023: Andreas Poth
024: lat/lon GmbH
025: Aennchenstr. 19
026: 53177 Bonn
027: Germany
028: E-Mail: poth@lat-lon.de
029:
030: Prof. Dr. Klaus Greve
031: Department of Geography
032: University of Bonn
033: Meckenheimer Allee 166
034: 53115 Bonn
035: Germany
036: E-Mail: greve@giub.uni-bonn.de
037: ---------------------------------------------------------------------------*/
038:
039: package org.deegree.crs.configuration;
040:
041: import java.util.List;
042:
043: import org.deegree.crs.coordinatesystems.CoordinateSystem;
044: import org.deegree.crs.exceptions.CRSConfigurationException;
045:
046: /**
047: * The <code>CRSProvider</code> will allow the support for different crs-definitions formats within the crs package.
048: * All implementation should consider the fact that the deegree-crs package will assume all incoming and outgoing
049: * latitude/longitude coordinates in <u>radians</u>.
050: *
051: * @author <a href="mailto:bezema@lat-lon.de">Rutger Bezema</a>
052: *
053: * @author last edited by: $Author:$
054: *
055: * @version $Revision:$, $Date:$
056: *
057: */
058:
059: public interface CRSProvider {
060:
061: /**
062: * @param id
063: * string representation of the CoordinateSystem
064: * @return the identified CRS or <code>null</code> if no such CRS was found.
065: * @throws CRSConfigurationException
066: * if the implementation was confronted by an exception and could not deliver the requested crs. This
067: * exception should not be thrown if the given id wasn't found, in this case <code>null</code> should
068: * be returned.
069: */
070: public CoordinateSystem getCRSByID(String id)
071: throws CRSConfigurationException;
072:
073: /**
074: * @return all configured CRSs.
075: * @throws CRSConfigurationException
076: * if the implementation was confronted by an exception and could not deliver the requested crs. This
077: * exception should not be thrown if no CoordinateSystems were found, in this an empty List ( a list
078: * with size == 0 ) should be returned.
079: */
080: public List<CoordinateSystem> getAvailableCRSs()
081: throws CRSConfigurationException;
082:
083: /**
084: * Exports the crs to the implemented format. Try calling {@link #canExport()} before executing this method.
085: *
086: * @param sb
087: * the StringBuilder which will contain the exported version of the given crs.
088: * @param crsToExport
089: * the CoordinateSystems to export.
090: * @see #canExport()
091: */
092: public void export(StringBuilder sb,
093: List<CoordinateSystem> crsToExport);
094:
095: /**
096: * @return true if this provider can export a given crs.
097: */
098: public boolean canExport();
099:
100: }
|