Class AbstractAuthorityMediator
- Object
-
- AbstractFactory
-
- ReferencingFactory
-
- AbstractAuthorityFactory
-
- AbstractAuthorityMediator
-
- All Implemented Interfaces:
AuthorityFactory
,CRSAuthorityFactory
,CSAuthorityFactory
,DatumAuthorityFactory
,Factory
,CoordinateOperationAuthorityFactory
,BufferedFactory
,Factory
,RegistrableFactory
- Direct Known Subclasses:
AbstractEpsgMediator
public abstract class AbstractAuthorityMediator extends AbstractAuthorityFactory implements AuthorityFactory, CRSAuthorityFactory, CSAuthorityFactory, DatumAuthorityFactory, CoordinateOperationAuthorityFactory, BufferedFactory
An authority mediator that consults (a possibily shared) cache before delegating the generation of the content to a "worker" authority factory. The behaviour of thecreateFoo(String)
methods first looks if a previously created object exists for the given code. If such an object exists, it is returned directly. The testing of the cache is synchronized and may block if the referencing object is under construction.If the object is not yet created, the definition is delegated to the appropriate
createFoo
method of the factory, which will cache the result for next time.This object is responsible for maintaining an {{ObjectCache}} of "workers" based on the following:
- Hints.AUTHORITY_MAX_ACTIVE (default 2) - indicates the maximum number of worker created, if non positive the number of workers is unbounded.
- Hints.
- Since:
- 2.4
- Author:
- Jody Garnett (Refractions Research), Cory Horner (Refractions Research)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
AbstractAuthorityMediator.WorkerSafeRunnable
An interface describing a portion of work for which a worker is needed.
-
Field Summary
Fields Modifier and Type Field Description protected ReferencingFactoryContainer
factories
A container of the "real factories" actually used to construct objects.-
Fields inherited from class ReferencingFactory
LOGGER
-
Fields inherited from class AbstractFactory
hints, MAXIMUM_PRIORITY, MINIMUM_PRIORITY, NORMAL_PRIORITY, priority
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractAuthorityMediator()
Constructs an instance making use of the default cache and priority level.protected
AbstractAuthorityMediator(int priority)
Constructs an instance making use of the default cache.protected
AbstractAuthorityMediator(int priority, Hints hints)
Constructs an instance making use of the default cache.protected
AbstractAuthorityMediator(int priority, ObjectCache<Object,Object> cache, ReferencingFactoryContainer container)
Constructs an instance making use of the indicated cache.protected
AbstractAuthorityMediator(Hints hints)
Constructs an instance based on the provided Hints
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract void
activateWorker(AbstractCachedAuthorityFactory worker)
Reinitialize an instance to be returned by the pool.protected void
completeHints()
CartesianCS
createCartesianCS(String code)
Creates a cartesian coordinate system from a code.CompoundCRS
createCompoundCRS(String code)
Creates a 3D coordinate reference system from a code.CoordinateOperation
createCoordinateOperation(String code)
Creates an operation from a single operation code.CoordinateReferenceSystem
createCoordinateReferenceSystem(String code)
Returns an arbitrary coordinate reference system from a code.CoordinateSystem
createCoordinateSystem(String code)
Returns an arbitrary coordinate system from a code.CoordinateSystemAxis
createCoordinateSystemAxis(String code)
Returns a coordinate system axis from a code.CylindricalCS
createCylindricalCS(String code)
Creates a cylindrical coordinate system from a code.Datum
createDatum(String code)
Returns an arbitrary datum from a code.DerivedCRS
createDerivedCRS(String code)
Creates a derived coordinate reference system from a code.Ellipsoid
createEllipsoid(String code)
Returns an ellipsoid from a code.EllipsoidalCS
createEllipsoidalCS(String code)
Creates an ellipsoidal coordinate system from a code.EngineeringDatum
createEngineeringDatum(String code)
Creates a engineering datum from a code.Set<CoordinateOperation>
createFromCoordinateReferenceSystemCodes(String sourceCode, String targetCode)
Creates an operation from coordinate reference system codes.GeocentricCRS
createGeocentricCRS(String code)
Returns a geocentric coordinate reference system from a code.GeodeticDatum
createGeodeticDatum(String code)
Returns a geodetic datum from a code.GeographicCRS
createGeographicCRS(String code)
Returns a geographic coordinate reference system from a code.ImageCRS
createImageCRS(String code)
Creates a image coordinate reference system from a code.ImageDatum
createImageDatum(String code)
Creates a image datum from a code.IdentifiedObject
createObject(String code)
Returns an arbitrary object from a code.PolarCS
createPolarCS(String code)
Creates a polar coordinate system from a code.PrimeMeridian
createPrimeMeridian(String code)
Returns a prime meridian from a code.ProjectedCRS
createProjectedCRS(String code)
Returns a projected coordinate reference system from a code.SphericalCS
createSphericalCS(String code)
Creates a spherical coordinate system from a code.TemporalCRS
createTemporalCRS(String code)
Creates a temporal coordinate reference system from a code.TemporalDatum
createTemporalDatum(String code)
Creates a temporal datum from a code.TimeCS
createTimeCS(String code)
Creates a temporal coordinate system from a code.Unit<?>
createUnit(String code)
Returns an unit from a code.VerticalCRS
createVerticalCRS(String code)
Creates a vertical coordinate reference system from a code.VerticalCS
createVerticalCS(String code)
Creates a vertical coordinate system from a code.VerticalDatum
createVerticalDatum(String code)
Creates a vertical datum from a code.protected <T> T
createWith(Object key, AbstractAuthorityMediator.WorkerSafeRunnable runner)
This method is used to cut down the amount of try/catch/finally code needed when working with the cache and workers.protected abstract void
destroyWorker(AbstractCachedAuthorityFactory worker)
Destroys an instance no longer needed by the pool.void
dispose()
Clean up the object pool of workers (since we are shutting down).abstract Citation
getAuthority()
The authority body of the objects this factory provides.Set<String>
getAuthorityCodes(Class type)
Returns the set of authority codes of the given type.String
getBackingStoreDescription()
Returns a description of the underlying backing store, ornull
if unknown.abstract InternationalString
getDescriptionText(String code)
Gets a description of the object corresponding to a code.IdentifiedObjectFinder
getIdentifiedObjectFinder(Class<? extends IdentifiedObject> type)
Returns a finder which can be used for looking up unidentified objects.boolean
isConnected()
True if this mediator is currently connected to one or more workers.protected abstract AbstractCachedAuthorityFactory
makeWorker()
Creates an instance that can be returned by the pool.protected abstract void
passivateWorker(AbstractCachedAuthorityFactory worker)
Un-initialize an instance to be returned to the pool.protected String
toKey(String code)
protected String
trimAuthority(String code)
Trims the authority scope, if present.protected abstract boolean
validateWorker(AbstractCachedAuthorityFactory worker)
Ensures that the instance is safe to be returned by the pool.-
Methods inherited from class AbstractAuthorityFactory
createEngineeringCRS, createExtent, createOperationMethod, createParameterDescriptor, noSuchAuthorityCode
-
Methods inherited from class ReferencingFactory
ensureNonNull, getVendor
-
Methods inherited from class AbstractFactory
addImplementationHints, equals, getImplementationHints, getPriority, hashCode, onDeregistration, onRegistration, toString
-
Methods inherited from interface CRSAuthorityFactory
createEngineeringCRS
-
Methods inherited from interface Factory
getImplementationHints
-
-
-
-
Field Detail
-
factories
protected final ReferencingFactoryContainer factories
A container of the "real factories" actually used to construct objects.
-
-
Constructor Detail
-
AbstractAuthorityMediator
protected AbstractAuthorityMediator()
Constructs an instance making use of the default cache and priority level.
-
AbstractAuthorityMediator
protected AbstractAuthorityMediator(Hints hints)
Constructs an instance based on the provided Hints
-
AbstractAuthorityMediator
protected AbstractAuthorityMediator(int priority)
Constructs an instance making use of the default cache.
-
AbstractAuthorityMediator
protected AbstractAuthorityMediator(int priority, Hints hints)
Constructs an instance making use of the default cache.
-
AbstractAuthorityMediator
protected AbstractAuthorityMediator(int priority, ObjectCache<Object,Object> cache, ReferencingFactoryContainer container)
Constructs an instance making use of the indicated cache.This constructor is protected because subclasses must declare which of the
DatumAuthorityFactory
,CSAuthorityFactory
,CRSAuthorityFactory
andCoordinateOperationAuthorityFactory
interfaces they choose to implement.- Parameters:
cache
- The cache to use
-
-
Method Detail
-
completeHints
protected void completeHints()
-
isConnected
public boolean isConnected()
True if this mediator is currently connected to one or more workers.
-
trimAuthority
protected String trimAuthority(String code)
Trims the authority scope, if present. For example if this factory is an EPSG authority factory and the specified code start with the "EPSG:" prefix, then the prefix is removed. Otherwise, the string is returned unchanged (except for leading and trailing spaces).- Overrides:
trimAuthority
in classAbstractAuthorityFactory
- Parameters:
code
- The code to trim.- Returns:
- The code without the authority scope.
-
getAuthority
public abstract Citation getAuthority()
The authority body of the objects this factory provides.- Specified by:
getAuthority
in interfaceAuthorityFactory
- Specified by:
getAuthority
in classAbstractAuthorityFactory
- Returns:
- The organization reponsible for definition of the database.
-
getAuthorityCodes
public Set<String> getAuthorityCodes(Class type) throws FactoryException
Description copied from interface:AuthorityFactory
Returns the set of authority codes of the given type. Thetype
argument specify the base class. For example if this factory is an instance ofCRSAuthorityFactory
, then:CoordinateReferenceSystem.class
asks for all authority codes accepted by one ofcreateGeographicCRS
,createProjectedCRS
,createVerticalCRS
,createTemporalCRS
and their friends.ProjectedCRS.class
asks only for authority codes accepted bycreateProjectedCRS
.
- Specified by:
getAuthorityCodes
in interfaceAuthorityFactory
- Parameters:
type
- The spatial reference objects type.- Returns:
- The set of authority codes for spatial reference objects of the given type. If this factory doesn't contains any object of the given type, then this method returns an {@linkplain java.util.Collections.emptySet() empty set}.
- Throws:
FactoryException
- if access to the underlying database failed.
-
getDescriptionText
public abstract InternationalString getDescriptionText(String code) throws FactoryException
Description copied from interface:AuthorityFactory
Gets a description of the object corresponding to a code.- Specified by:
getDescriptionText
in interfaceAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- A description of the object, or
null
if the object corresponding to the specifiedcode
has no description. - Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the query failed for some other reason.
-
createObject
public IdentifiedObject createObject(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Returns an arbitrary object from a code. The returned object will typically be an instance ofDatum
,CoordinateSystem
,CoordinateReferenceSystem
orCoordinateOperation
. The default implementation always throw an exception. Subclasses should override this method if they are capable to automatically detect the object type from its code.- Specified by:
createObject
in interfaceAuthorityFactory
- Overrides:
createObject
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The object for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.- See Also:
AbstractAuthorityFactory.createCoordinateReferenceSystem(java.lang.String)
,AbstractAuthorityFactory.createDatum(java.lang.String)
,AbstractAuthorityFactory.createEllipsoid(java.lang.String)
,AbstractAuthorityFactory.createUnit(java.lang.String)
-
createCompoundCRS
public CompoundCRS createCompoundCRS(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates a 3D coordinate reference system from a code.- Specified by:
createCompoundCRS
in interfaceCRSAuthorityFactory
- Overrides:
createCompoundCRS
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.
-
createCoordinateReferenceSystem
public CoordinateReferenceSystem createCoordinateReferenceSystem(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Returns an arbitrary coordinate reference system from a code. If the coordinate reference system type is know at compile time, it is recommended to invoke the most precise method instead of this one (for examplecreateGeographicCRS(code)
instead ofcreateCoordinateReferenceSystem(code)
if the caller know he is asking for a geographic coordinate reference system).- Specified by:
createCoordinateReferenceSystem
in interfaceCRSAuthorityFactory
- Overrides:
createCoordinateReferenceSystem
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.- See Also:
AbstractAuthorityFactory.createGeographicCRS(java.lang.String)
,AbstractAuthorityFactory.createProjectedCRS(java.lang.String)
,AbstractAuthorityFactory.createVerticalCRS(java.lang.String)
,AbstractAuthorityFactory.createTemporalCRS(java.lang.String)
,AbstractAuthorityFactory.createCompoundCRS(java.lang.String)
-
createDerivedCRS
public DerivedCRS createDerivedCRS(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates a derived coordinate reference system from a code.- Specified by:
createDerivedCRS
in interfaceCRSAuthorityFactory
- Overrides:
createDerivedCRS
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.
-
createGeocentricCRS
public GeocentricCRS createGeocentricCRS(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Returns a geocentric coordinate reference system from a code.- Specified by:
createGeocentricCRS
in interfaceCRSAuthorityFactory
- Overrides:
createGeocentricCRS
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed.- See Also:
AbstractAuthorityFactory.createGeodeticDatum(java.lang.String)
-
createGeographicCRS
public GeographicCRS createGeographicCRS(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Returns a geographic coordinate reference system from a code.- Specified by:
createGeographicCRS
in interfaceCRSAuthorityFactory
- Overrides:
createGeographicCRS
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.- See Also:
AbstractAuthorityFactory.createGeodeticDatum(java.lang.String)
-
createImageCRS
public ImageCRS createImageCRS(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates a image coordinate reference system from a code.- Specified by:
createImageCRS
in interfaceCRSAuthorityFactory
- Overrides:
createImageCRS
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.
-
createProjectedCRS
public ProjectedCRS createProjectedCRS(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Returns a projected coordinate reference system from a code.- Specified by:
createProjectedCRS
in interfaceCRSAuthorityFactory
- Overrides:
createProjectedCRS
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.- See Also:
AbstractAuthorityFactory.createGeodeticDatum(java.lang.String)
-
createTemporalCRS
public TemporalCRS createTemporalCRS(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates a temporal coordinate reference system from a code.- Specified by:
createTemporalCRS
in interfaceCRSAuthorityFactory
- Overrides:
createTemporalCRS
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.- See Also:
AbstractAuthorityFactory.createTemporalDatum(java.lang.String)
-
createVerticalCRS
public VerticalCRS createVerticalCRS(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates a vertical coordinate reference system from a code.- Specified by:
createVerticalCRS
in interfaceCRSAuthorityFactory
- Overrides:
createVerticalCRS
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.- See Also:
AbstractAuthorityFactory.createVerticalDatum(java.lang.String)
-
createCartesianCS
public CartesianCS createCartesianCS(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates a cartesian coordinate system from a code. The default implementation invokescreateCoordinateSystem(code)
.- Specified by:
createCartesianCS
in interfaceCSAuthorityFactory
- Overrides:
createCartesianCS
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.
-
createCoordinateSystem
public CoordinateSystem createCoordinateSystem(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Returns an arbitrary coordinate system from a code. The default implementation invokescreateObject(code)
.- Specified by:
createCoordinateSystem
in interfaceCSAuthorityFactory
- Overrides:
createCoordinateSystem
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.
-
createCoordinateSystemAxis
public CoordinateSystemAxis createCoordinateSystemAxis(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Returns a coordinate system axis from a code. The default implementation invokescreateObject(code)
.- Specified by:
createCoordinateSystemAxis
in interfaceCSAuthorityFactory
- Overrides:
createCoordinateSystemAxis
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The axis for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.
-
createCylindricalCS
public CylindricalCS createCylindricalCS(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates a cylindrical coordinate system from a code. The default implementation invokescreateCoordinateSystem(code)
.- Specified by:
createCylindricalCS
in interfaceCSAuthorityFactory
- Overrides:
createCylindricalCS
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.
-
createEllipsoidalCS
public EllipsoidalCS createEllipsoidalCS(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates an ellipsoidal coordinate system from a code. The default implementation invokescreateCoordinateSystem(code)
.- Specified by:
createEllipsoidalCS
in interfaceCSAuthorityFactory
- Overrides:
createEllipsoidalCS
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.
-
createPolarCS
public PolarCS createPolarCS(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates a polar coordinate system from a code. The default implementation invokescreateCoordinateSystem(code)
.- Specified by:
createPolarCS
in interfaceCSAuthorityFactory
- Overrides:
createPolarCS
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.
-
createSphericalCS
public SphericalCS createSphericalCS(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates a spherical coordinate system from a code. The default implementation invokescreateCoordinateSystem(code)
.- Specified by:
createSphericalCS
in interfaceCSAuthorityFactory
- Overrides:
createSphericalCS
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.
-
createTimeCS
public TimeCS createTimeCS(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates a temporal coordinate system from a code. The default implementation invokescreateCoordinateSystem(code)
.- Specified by:
createTimeCS
in interfaceCSAuthorityFactory
- Overrides:
createTimeCS
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.
-
createUnit
public Unit<?> createUnit(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Returns an unit from a code. The default implementation invokescreateObject(code)
.- Specified by:
createUnit
in interfaceCSAuthorityFactory
- Overrides:
createUnit
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The unit for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.
-
createVerticalCS
public VerticalCS createVerticalCS(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates a vertical coordinate system from a code. The default implementation invokescreateCoordinateSystem(code)
.- Specified by:
createVerticalCS
in interfaceCSAuthorityFactory
- Overrides:
createVerticalCS
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.
-
createDatum
public Datum createDatum(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Returns an arbitrary datum from a code. The default implementation invokescreateObject(code)
.- Specified by:
createDatum
in interfaceDatumAuthorityFactory
- Overrides:
createDatum
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The datum for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.- See Also:
AbstractAuthorityFactory.createGeodeticDatum(java.lang.String)
,AbstractAuthorityFactory.createVerticalDatum(java.lang.String)
,AbstractAuthorityFactory.createTemporalDatum(java.lang.String)
-
createEllipsoid
public Ellipsoid createEllipsoid(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Returns an ellipsoid from a code. The default implementation invokescreateObject(code)
.- Specified by:
createEllipsoid
in interfaceDatumAuthorityFactory
- Overrides:
createEllipsoid
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The ellipsoid for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.- See Also:
AbstractAuthorityFactory.createGeodeticDatum(java.lang.String)
-
createEngineeringDatum
public EngineeringDatum createEngineeringDatum(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates a engineering datum from a code. The default implementation invokescreateDatum(code)
.- Specified by:
createEngineeringDatum
in interfaceDatumAuthorityFactory
- Overrides:
createEngineeringDatum
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The datum for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.- See Also:
AbstractAuthorityFactory.createEngineeringCRS(java.lang.String)
-
createGeodeticDatum
public GeodeticDatum createGeodeticDatum(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Returns a geodetic datum from a code. The default implementation invokescreateDatum(code)
.- Specified by:
createGeodeticDatum
in interfaceDatumAuthorityFactory
- Overrides:
createGeodeticDatum
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The datum for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.- See Also:
AbstractAuthorityFactory.createEllipsoid(java.lang.String)
,AbstractAuthorityFactory.createPrimeMeridian(java.lang.String)
,AbstractAuthorityFactory.createGeographicCRS(java.lang.String)
,AbstractAuthorityFactory.createProjectedCRS(java.lang.String)
-
createImageDatum
public ImageDatum createImageDatum(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates a image datum from a code. The default implementation invokescreateDatum(code)
.- Specified by:
createImageDatum
in interfaceDatumAuthorityFactory
- Overrides:
createImageDatum
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The datum for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.- See Also:
AbstractAuthorityFactory.createImageCRS(java.lang.String)
-
createPrimeMeridian
public PrimeMeridian createPrimeMeridian(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Returns a prime meridian from a code. The default implementation invokescreateObject(code)
.- Specified by:
createPrimeMeridian
in interfaceDatumAuthorityFactory
- Overrides:
createPrimeMeridian
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The prime meridian for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.- See Also:
AbstractAuthorityFactory.createGeodeticDatum(java.lang.String)
-
createTemporalDatum
public TemporalDatum createTemporalDatum(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates a temporal datum from a code. The default implementation invokescreateDatum(code)
.- Specified by:
createTemporalDatum
in interfaceDatumAuthorityFactory
- Overrides:
createTemporalDatum
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The datum for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.- See Also:
AbstractAuthorityFactory.createTemporalCRS(java.lang.String)
-
createVerticalDatum
public VerticalDatum createVerticalDatum(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates a vertical datum from a code. The default implementation invokescreateDatum(code)
.- Specified by:
createVerticalDatum
in interfaceDatumAuthorityFactory
- Overrides:
createVerticalDatum
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The datum for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.- See Also:
AbstractAuthorityFactory.createVerticalCRS(java.lang.String)
-
createCoordinateOperation
public CoordinateOperation createCoordinateOperation(String code) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates an operation from a single operation code.- Specified by:
createCoordinateOperation
in interfaceCoordinateOperationAuthorityFactory
- Overrides:
createCoordinateOperation
in classAbstractAuthorityFactory
- Parameters:
code
- Value allocated by authority.- Returns:
- The operation for the given code.
- Throws:
NoSuchAuthorityCodeException
- if the specifiedcode
was not found.FactoryException
- if the object creation failed for some other reason.
-
createFromCoordinateReferenceSystemCodes
public Set<CoordinateOperation> createFromCoordinateReferenceSystemCodes(String sourceCode, String targetCode) throws FactoryException
Description copied from class:AbstractAuthorityFactory
Creates an operation from coordinate reference system codes. The default implementation returns an {@linkplain Collections.emptySet() empty set}. We do not delegate to some kind of coordinate operation factory method because the usual contract for this method is to extract the information from an authority database like EPSG, not to compute operations on-the-fly.Rational: Coordinate operation factory backed by an authority will invoke this method. If this method invoked the coordinate operation factory in turn, the application could be trapped in infinite recursive calls.
- Specified by:
createFromCoordinateReferenceSystemCodes
in interfaceCoordinateOperationAuthorityFactory
- Overrides:
createFromCoordinateReferenceSystemCodes
in classAbstractAuthorityFactory
- Parameters:
sourceCode
- Coded value of source coordinate reference system.targetCode
- Coded value of target coordinate reference system.- Returns:
- The operations from
sourceCRS
totargetCRS
. - Throws:
NoSuchAuthorityCodeException
- if a specified code was not found.FactoryException
- if the object creation failed for some other reason.
-
createWith
protected <T> T createWith(Object key, AbstractAuthorityMediator.WorkerSafeRunnable runner) throws FactoryException
This method is used to cut down the amount of try/catch/finally code needed when working with the cache and workers.This code brings together two try/catch/finally blocks.
For cache management:
And worker management when generating values:T value = (T) cache.get(key); if (value == null) { try { cache.writeLock(key); value = (T) cache.peek(key); if (value == null) { ....generate value.... cache.put( key, value ); } } finally { cache.writeUnLock(key); } }
AbstractCachedAuthorityFactory worker = null; try { worker = (AbstractCachedAuthorityFactory) getPool().borrowObject(); value = (T) runner.run( worker ); } catch (FactoryException e) { throw e; } catch (Exception e) { throw new FactoryException(e); } finally { try { getPool().returnObject(worker); } catch (Exception e) { LOGGER.log(Level.WARNING, "Unable to return worker " + e, e); } }
- Parameters:
key
- Used to look in the cacherunner
- Used to generate a value in the case of a cache miss- Returns:
- value from either the cache or generated
- Throws:
FactoryException
-
getBackingStoreDescription
public String getBackingStoreDescription() throws FactoryException
Description copied from class:AbstractAuthorityFactory
Returns a description of the underlying backing store, ornull
if unknown. This is for example the database software used for storing the data. The default implementation returns alwaysnull
.- Overrides:
getBackingStoreDescription
in classAbstractAuthorityFactory
- Returns:
- The description of the underlying backing store, or
null
. - Throws:
FactoryException
- if a failure occurs while fetching the engine description.
-
dispose
public void dispose() throws FactoryException
Clean up the object pool of workers (since we are shutting down).Subclasses may wish to override this method if they have their own resources to clean up (like a database connection). If you do this please remember to call super.dispose().
- Overrides:
dispose
in classAbstractAuthorityFactory
- Throws:
FactoryException
- if an error occured while disposing the factory.
-
activateWorker
protected abstract void activateWorker(AbstractCachedAuthorityFactory worker) throws Exception
Reinitialize an instance to be returned by the pool.Please note that BEFORE this method has been called AbstractAuthorityMediator has already:
- provided the worker with the single shared
cache
- provided the worker with the single shared
findCache
- Throws:
Exception
- provided the worker with the single shared
-
destroyWorker
protected abstract void destroyWorker(AbstractCachedAuthorityFactory worker) throws Exception
Destroys an instance no longer needed by the pool.- Throws:
Exception
-
makeWorker
protected abstract AbstractCachedAuthorityFactory makeWorker() throws Exception
Creates an instance that can be returned by the pool.- Throws:
Exception
-
passivateWorker
protected abstract void passivateWorker(AbstractCachedAuthorityFactory worker) throws Exception
Un-initialize an instance to be returned to the pool.- Throws:
Exception
-
validateWorker
protected abstract boolean validateWorker(AbstractCachedAuthorityFactory worker)
Ensures that the instance is safe to be returned by the pool.
-
getIdentifiedObjectFinder
public IdentifiedObjectFinder getIdentifiedObjectFinder(Class<? extends IdentifiedObject> type) throws FactoryException
Returns a finder which can be used for looking up unidentified objects.The returned implementation will make use of workers as needed.
- Overrides:
getIdentifiedObjectFinder
in classAbstractAuthorityFactory
- Parameters:
type
- The type of objects to look for.- Returns:
- A finder to use for looking up unidentified objects.
- Throws:
FactoryException
- if the finder can not be created.- Since:
- 2.4
-
-