Package org.geotools.referencing.factory
Class CachedCRSAuthorityDecorator
Object
AbstractFactory
ReferencingFactory
AbstractAuthorityFactory
CachedCRSAuthorityDecorator
- All Implemented Interfaces:
AuthorityFactory,CRSAuthorityFactory,Factory,BufferedFactory,Factory,RegistrableFactory
public final class CachedCRSAuthorityDecorator
extends AbstractAuthorityFactory
implements AuthorityFactory, CRSAuthorityFactory, BufferedFactory
An authority factory that caches all objects created by the delegate CRSAuthorityFactory. The behaviour of the
createFoo(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 the AuthorityFactory authority factory and the result is cached for next time.
This object is responsible for owning a {{ReferencingObjectCache}}; there are several implementations to choose from on construction.
- Since:
- 2.4
- Author:
- Jody Garnett
-
Field Summary
Fields inherited from class ReferencingFactory
LOGGERFields inherited from class AbstractFactory
hints, MAXIMUM_PRIORITY, MINIMUM_PRIORITY, NORMAL_PRIORITY, priority -
Constructor Summary
ConstructorsConstructorDescriptionConstructs an instance wrapping the specified factory with a default cache. -
Method Summary
Modifier and TypeMethodDescriptioncreateCompoundCRS(String code) Creates a 3D coordinate reference system from a code.Returns an arbitrary coordinate reference system from a code.createDerivedCRS(String code) Creates a derived coordinate reference system from a code.createEngineeringCRS(String code) Creates a engineering coordinate reference system from a code.createGeocentricCRS(String code) Returns a geocentric coordinate reference system from a code.createGeographicCRS(String code) Returns a geographic coordinate reference system from a code.createImageCRS(String code) Creates a image coordinate reference system from a code.createObject(String code) Returns an arbitrary object from a code.createProjectedCRS(String code) Returns a projected coordinate reference system from a code.createTemporalCRS(String code) Creates a temporal coordinate reference system from a code.createVerticalCRS(String code) Creates a vertical coordinate reference system from a code.voiddispose()Releases resources immediately instead of waiting for the garbage collector.Returns the organization or party responsible for definition and maintenance of the database.getAuthorityCodes(Class<? extends IdentifiedObject> type) Returns the set of authority codes of the given type.Returns a description of the underlying backing store, ornullif unknown.getDescriptionText(String code) Gets a description of the object corresponding to a code.getIdentifiedObjectFinder(Class<? extends IdentifiedObject> type) Returns a finder which can be used for looking up unidentified objects.Methods inherited from class AbstractAuthorityFactory
createCartesianCS, createCoordinateOperation, createCoordinateSystem, createCoordinateSystemAxis, createCylindricalCS, createDatum, createEllipsoid, createEllipsoidalCS, createEngineeringDatum, createExtent, createFromCoordinateReferenceSystemCodes, createGeodeticDatum, createImageDatum, createOperationMethod, createParameterDescriptor, createPolarCS, createPrimeMeridian, createSphericalCS, createTemporalDatum, createTimeCS, createUnit, createVerticalCS, createVerticalDatum, noSuchAuthorityCode, trimAuthorityMethods inherited from class ReferencingFactory
ensureNonNull, getVendorMethods inherited from class AbstractFactory
addImplementationHints, equals, getImplementationHints, getPriority, hashCode, onDeregistration, onRegistration, toStringMethods inherited from interface Factory
getImplementationHints
-
Constructor Details
-
CachedCRSAuthorityDecorator
Constructs an instance wrapping the specified factory with a default cache.The provided authority factory must implement
DatumAuthorityFactory,CSAuthorityFactory,CRSAuthorityFactoryandCoordinateOperationAuthorityFactory.- Parameters:
factory- The factory to cache. Can not benull.
-
-
Method Details
-
createObject
Description copied from class:AbstractAuthorityFactoryReturns an arbitrary object from a code. The returned object will typically be an instance ofDatum,CoordinateSystem,CoordinateReferenceSystemorCoordinateOperation. 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:
createObjectin interfaceAuthorityFactory- Overrides:
createObjectin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The object for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.- See Also:
-
getAuthority
Description copied from class:AbstractAuthorityFactoryReturns the organization or party responsible for definition and maintenance of the database.- Specified by:
getAuthorityin interfaceAuthorityFactory- Specified by:
getAuthorityin classAbstractAuthorityFactory- Returns:
- The organization reponsible for definition of the database.
-
getAuthorityCodes
public Set<String> getAuthorityCodes(Class<? extends IdentifiedObject> type) throws FactoryException Description copied from interface:AuthorityFactoryReturns the set of authority codes of the given type. Thetypeargument specify the base class. For example if this factory is an instance ofCRSAuthorityFactory, then:CoordinateReferenceSystem.classasks for all authority codes accepted by one ofcreateGeographicCRS,createProjectedCRS,createVerticalCRS,createTemporalCRSand their friends.ProjectedCRS.classasks only for authority codes accepted bycreateProjectedCRS.
- Specified by:
getAuthorityCodesin 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 empty set.
- Throws:
FactoryException- if access to the underlying database failed.
-
getDescriptionText
Description copied from interface:AuthorityFactoryGets a description of the object corresponding to a code.- Specified by:
getDescriptionTextin interfaceAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- A description of the object, or
nullif the object corresponding to the specifiedcodehas no description. - Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the query failed for some other reason.
-
createCompoundCRS
Description copied from class:AbstractAuthorityFactoryCreates a 3D coordinate reference system from a code.- Specified by:
createCompoundCRSin interfaceCRSAuthorityFactory- Overrides:
createCompoundCRSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createCoordinateReferenceSystem
public CoordinateReferenceSystem createCoordinateReferenceSystem(String code) throws FactoryException Description copied from class:AbstractAuthorityFactoryReturns 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:
createCoordinateReferenceSystemin interfaceCRSAuthorityFactory- Overrides:
createCoordinateReferenceSystemin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas 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
Description copied from class:AbstractAuthorityFactoryCreates a derived coordinate reference system from a code.- Specified by:
createDerivedCRSin interfaceCRSAuthorityFactory- Overrides:
createDerivedCRSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createEngineeringCRS
Description copied from class:AbstractAuthorityFactoryCreates a engineering coordinate reference system from a code.- Specified by:
createEngineeringCRSin interfaceCRSAuthorityFactory- Overrides:
createEngineeringCRSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createGeocentricCRS
Description copied from class:AbstractAuthorityFactoryReturns a geocentric coordinate reference system from a code.- Specified by:
createGeocentricCRSin interfaceCRSAuthorityFactory- Overrides:
createGeocentricCRSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed.- See Also:
-
createGeographicCRS
Description copied from class:AbstractAuthorityFactoryReturns a geographic coordinate reference system from a code.- Specified by:
createGeographicCRSin interfaceCRSAuthorityFactory- Overrides:
createGeographicCRSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.- See Also:
-
createImageCRS
Description copied from class:AbstractAuthorityFactoryCreates a image coordinate reference system from a code.- Specified by:
createImageCRSin interfaceCRSAuthorityFactory- Overrides:
createImageCRSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createProjectedCRS
Description copied from class:AbstractAuthorityFactoryReturns a projected coordinate reference system from a code.- Specified by:
createProjectedCRSin interfaceCRSAuthorityFactory- Overrides:
createProjectedCRSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.- See Also:
-
createTemporalCRS
Description copied from class:AbstractAuthorityFactoryCreates a temporal coordinate reference system from a code.- Specified by:
createTemporalCRSin interfaceCRSAuthorityFactory- Overrides:
createTemporalCRSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.- See Also:
-
createVerticalCRS
Description copied from class:AbstractAuthorityFactoryCreates a vertical coordinate reference system from a code.- Specified by:
createVerticalCRSin interfaceCRSAuthorityFactory- Overrides:
createVerticalCRSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate reference system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.- See Also:
-
dispose
Description copied from class:AbstractAuthorityFactoryReleases resources immediately instead of waiting for the garbage collector. Once a factory has been disposed, furthercreate(...)invocations may throw aFactoryException. Disposing a previously-disposed factory, however, has no effect.- Overrides:
disposein classAbstractAuthorityFactory- Throws:
FactoryException- if an error occured while disposing the factory.
-
getBackingStoreDescription
Description copied from class:AbstractAuthorityFactoryReturns a description of the underlying backing store, ornullif unknown. This is for example the database software used for storing the data. The default implementation returns alwaysnull.- Overrides:
getBackingStoreDescriptionin classAbstractAuthorityFactory- Returns:
- The description of the underlying backing store, or
null. - Throws:
FactoryException- if a failure occurs while fetching the engine description.
-
getIdentifiedObjectFinder
public IdentifiedObjectFinder getIdentifiedObjectFinder(Class<? extends IdentifiedObject> type) throws FactoryException Returns a finder which can be used for looking up unidentified objects. The default implementation delegates lookup to the underlying backing store and caches the result.- Overrides:
getIdentifiedObjectFinderin classAbstractAuthorityFactory- Parameters:
type- The type of objects to look for. Should be a GeoAPI interface likeGeographicCRS.class, but this method accepts also implementation class. If the type is unknown, useIdentifiedObject.class. A more accurate type may help to speed up the search, since it reduces the amount of tables to scan in some implementations like the factories backed by EPSG database.- Returns:
- A finder to use for looking up unidentified objects.
- Throws:
FactoryException- if the finder can not be created.- Since:
- 2.4
-