Class TransformedAuthorityFactory

All Implemented Interfaces:
AuthorityFactory, Factory, Factory, OptionalFactory, RegistrableFactory
Direct Known Subclasses:
OrderedAxisCRSAuthorityFactory

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)
  • Constructor Details

  • Method Details

    • 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

      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

      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 AuthorityFactoryAdapter
      Throws:
      FactoryException - if an error occured while disposing the factory.