org.geotools.referencing.factory
Class TransformedAuthorityFactory

Object
  extended by AbstractFactory
      extended by ReferencingFactory
          extended by AbstractAuthorityFactory
              extended by AuthorityFactoryAdapter
                  extended by TransformedAuthorityFactory
All Implemented Interfaces:
RegisterableService, Factory, OptionalFactory, AuthorityFactory
Direct Known Subclasses:
OrderedAxisAuthorityFactory

public class TransformedAuthorityFactory
extends AuthorityFactoryAdapter

An authority factory which returns modified CRS, CS or datum objects from other factory implementations. This class provides a set of replace(...) methods to be overridden by subclasses in order to replace some CRS, CS or datum objects by other ones. The replacement rules are determined by the subclass being used. For example the OrderedAxisAuthorityFactory subclass can replace coordinate systems using (latitude, longitude) axis order by coordinate systems using (longitude, latitude) axis order.

All constructors are protected because this class must be subclassed in order to determine which of the DatumAuthorityFactory, CSAuthorityFactory and CRSAuthorityFactory interfaces to implement.

Since:
2.3
Author:
Martin Desruisseaux (IRD)
Module:
modules/library/referencing (gt-referencing.jar)

Field Summary
 
Fields inherited from class ReferencingFactory
LOGGER
 
Fields inherited from class AbstractFactory
hints, MAXIMUM_PRIORITY, MINIMUM_PRIORITY, NORMAL_PRIORITY, priority
 
Constructor Summary
protected TransformedAuthorityFactory(AuthorityFactory factory)
          Creates a wrapper around the specified factory.
protected TransformedAuthorityFactory(CRSAuthorityFactory crsFactory, CSAuthorityFactory csFactory, DatumAuthorityFactory datumFactory, CoordinateOperationAuthorityFactory opFactory)
          Creates a wrapper around the specified factories.
protected TransformedAuthorityFactory(String authority, Hints userHints)
          Creates a wrappers around the default factories for the specified authority.
 
Method Summary
 Set<CoordinateOperation> createFromCoordinateReferenceSystemCodes(String sourceCode, String targetCode)
          Creates an operation from coordinate reference system codes.
 void dispose()
          Releases resources immediately instead of waiting for the garbage collector.
 int getPriority()
          Returns the priority for this factory.
protected  AxisDirection replace(AxisDirection direction)
          Replaces the specified direction, if applicable.
protected  CoordinateOperation replace(CoordinateOperation operation)
          Replaces (if needed) the specified coordinate operation.
protected  CoordinateReferenceSystem replace(CoordinateReferenceSystem crs)
          Replaces (if needed) the specified coordinate reference system.
protected  CoordinateSystem replace(CoordinateSystem cs)
          Replaces (if needed) the specified coordinate system by a new one.
protected  CoordinateSystemAxis replace(CoordinateSystemAxis axis)
          Replaces (if needed) the specified axis by a new one.
protected  Datum replace(Datum datum)
          Replaces (if needed) the specified datum by a new one.
protected  Unit<?> replace(Unit<?> units)
          Replaces the specified unit, if applicable.
 
Methods inherited from class AuthorityFactoryAdapter
createCartesianCS, createCompoundCRS, createCoordinateOperation, createCoordinateReferenceSystem, createCoordinateSystem, createCoordinateSystemAxis, createCylindricalCS, createDatum, createDerivedCRS, createEllipsoid, createEllipsoidalCS, createEngineeringCRS, createEngineeringDatum, createExtent, createGeocentricCRS, createGeodeticDatum, createGeographicCRS, createImageCRS, createImageDatum, createObject, createOperationMethod, createParameterDescriptor, createPolarCS, createPrimeMeridian, createProjectedCRS, createSphericalCS, createTemporalCRS, createTemporalDatum, createTimeCS, createUnit, createVerticalCRS, createVerticalCS, createVerticalDatum, getAuthority, getAuthorityCodes, getAuthorityFactory, getBackingStoreDescription, getCoordinateOperationAuthorityFactory, getCRSAuthorityFactory, getCSAuthorityFactory, getDatumAuthorityFactory, getDescriptionText, getIdentifiedObjectFinder, getVendor, isAvailable, toBackingFactoryCode
 
Methods inherited from class AbstractAuthorityFactory
noSuchAuthorityCode, trimAuthority
 
Methods inherited from class ReferencingFactory
ensureNonNull
 
Methods inherited from class AbstractFactory
addImplementationHints, equals, getImplementationHints, hashCode, onDeregistration, onRegistration, toString
 
Methods inherited from class Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface Factory
getImplementationHints
 

Constructor Detail

TransformedAuthorityFactory

protected TransformedAuthorityFactory(AuthorityFactory factory)
Creates a wrapper around the specified factory.

Parameters:
factory - The factory to wrap.

TransformedAuthorityFactory

protected TransformedAuthorityFactory(CRSAuthorityFactory crsFactory,
                                      CSAuthorityFactory csFactory,
                                      DatumAuthorityFactory datumFactory,
                                      CoordinateOperationAuthorityFactory opFactory)
Creates a wrapper around the specified factories.

Parameters:
crsFactory - The coordinate reference system authority factory, or null.
csFactory - The coordinate system authority factory, or null.
datumFactory - The datum authority factory, or null.
opFactory - The coordinate operation authority factory, or null.

TransformedAuthorityFactory

protected TransformedAuthorityFactory(String authority,
                                      Hints userHints)
                               throws FactoryRegistryException
Creates a wrappers around the default factories for the specified authority. The factories are fetched using ReferencingFactoryFinder.

Parameters:
authority - The authority to wraps (example: "EPSG"). If null, then all authority factories must be explicitly specified in the set of hints.
userHints - An optional set of hints, or null if none.
Throws:
FactoryRegistryException - if at least one factory can not be obtained.
Since:
2.4
Method Detail

getPriority

public int getPriority()
Returns the priority for this factory. Priorities are used by ReferencingFactoryFinder for selecting a preferred factory when many are found for the same service. The default implementation returns priority + 1, which implies that this adapter has precedence over the wrapped factories. Subclasses should override this method if they want a different priority order for this instance.

Overrides:
getPriority in class AbstractFactory

replace

protected Unit<?> replace(Unit<?> units)
                   throws FactoryException
Replaces the specified unit, if applicable. This method is invoked automatically by the replace(CoordinateSystem) method. The default implementation returns the unit unchanged.

Parameters:
units - The units to replace.
Returns:
The new units, or units if no change were needed.
Throws:
FactoryException - if an error occured while creating the new units.

replace

protected AxisDirection replace(AxisDirection direction)
                         throws FactoryException
Replaces the specified direction, if applicable. This method is invoked automatically by the replace(CoordinateSystem) method. The default implementation returns the axis direction unchanged.

Parameters:
direction - The axis direction to replace.
Returns:
The new direction, or direction if no change were needed.
Throws:
FactoryException - if an error occured while creating the new axis direction.

replace

protected CoordinateSystemAxis replace(CoordinateSystemAxis axis)
                                throws FactoryException
Replaces (if needed) the specified axis by a new one. The default implementation invokes replace(Unit) and replace(AxisDirection).

Parameters:
axis - The coordinate system axis to replace.
Returns:
The new coordinate system axis, or axis if no change were needed.
Throws:
FactoryException - if an error occured while creating the new coordinate system axis.

replace

protected CoordinateSystem replace(CoordinateSystem cs)
                            throws FactoryException
Replaces (if needed) the specified coordinate system by a new one. The default implementation invokes replace for each axis. In addition, axis are sorted if this factory implements the Comparator interface.

Parameters:
cs - The coordinate system to replace.
Returns:
The new coordinate system, or cs if no change were needed.
Throws:
FactoryException - if an error occured while creating the new coordinate system.

replace

protected Datum replace(Datum datum)
                 throws FactoryException
Replaces (if needed) the specified datum by a new one. The default implementation returns the datum unchanged. Subclasses should override this method if some datum replacements are desired.

Parameters:
datum - The datum to replace.
Returns:
The new datum, or datum if no change were needed.
Throws:
FactoryException - if an error occured while creating the new datum.

replace

protected CoordinateReferenceSystem replace(CoordinateReferenceSystem crs)
                                     throws FactoryException
Replaces (if needed) the specified coordinate reference system. The default implementation checks if there is a datum replacement or a coordinate system replacement. If there is at least one of those, then this method returns a new coordinate reference system using the new datum and coordinate system.

Parameters:
crs - The coordinate reference system to replace.
Returns:
A new CRS, or crs if no change were needed.
Throws:
FactoryException - if an error occured while creating the new CRS object.

replace

protected CoordinateOperation replace(CoordinateOperation operation)
                               throws FactoryException
Replaces (if needed) the specified coordinate operation. The default implementation checks if there is a source or target CRS replacement. If there is at least one of those, then this method returns a new coordinate operation using the new CRS.

Parameters:
operation - The coordinate operation to replace.
Returns:
A new operation, or operation if no change were needed.
Throws:
FactoryException - if an error occured while creating the new operation object.

createFromCoordinateReferenceSystemCodes

public Set<CoordinateOperation> createFromCoordinateReferenceSystemCodes(String sourceCode,
                                                                         String targetCode)
                                                                  throws FactoryException
Creates an operation from coordinate reference system codes. The default implementation first invokes the same method from the underlying operation factory, and next invokes replace for each operations.

Overrides:
createFromCoordinateReferenceSystemCodes in class AuthorityFactoryAdapter
Parameters:
sourceCode - Coded value of source coordinate reference system.
targetCode - Coded value of target coordinate reference system.
Returns:
The operations from sourceCRS to targetCRS.
Throws:
FactoryException - if the object creation failed.

dispose

public void dispose()
             throws FactoryException
Releases resources immediately instead of waiting for the garbage collector. This method do not dispose the resources of wrapped factories (e.g. crsFactory), because they may still in use by other classes.

Overrides:
dispose in class AbstractAuthorityFactory
Throws:
FactoryException - if an error occured while disposing the factory.


Copyright © 1996-2009 Geotools. All Rights Reserved.