Class ThreadedAuthorityFactory
- All Implemented Interfaces:
AuthorityFactory,Factory,BufferedFactory,Factory,RegistrableFactory
createFoo(String) methods first
looks if a previously created object exists for the given code. If such an object exists, it is returned. Otherwise,
the object creation is delegated to the authority factory specified at creation
time, and the result is cached in this buffered factory.
Objects are cached by strong references, up to the amount of objects specified at construction time. If a greater amount of objects are cached, the oldest ones will be retained through a weak reference instead of a strong one. This means that this buffered factory will continue to returns them as long as they are in use somewhere else in the Java virtual machine, but will be discarted (and recreated on the fly if needed) otherwise.
- Since:
- 2.4
- Author:
- Martin Desruisseaux (IRD)
-
Field Summary
Fields inherited from class ReferencingFactory
LOGGERFields inherited from class AbstractFactory
hints, MAXIMUM_PRIORITY, MINIMUM_PRIORITY, NORMAL_PRIORITY, priority -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedConstructs an instance wrapping the specified factory with a default number of entries to keep by strong reference.protectedThreadedAuthorityFactory(AbstractAuthorityFactory factory, int maxStrongReferences) Constructs an instance wrapping the specified factory. -
Method Summary
Modifier and TypeMethodDescriptioncreateCartesianCS(String code) Returns a cartesian coordinate system from a code.createCompoundCRS(String code) Returns a 3D coordinate reference system from a code.Returns an operation from a single operation code.Returns an arbitrary coordinate reference system from a code.createCoordinateSystem(String code) Returns an arbitrary coordinate system from a code.Returns a coordinate system axis from a code.createCylindricalCS(String code) Returns a cylindrical coordinate system from a code.createDatum(String code) Returns an arbitrary datum from a code.createDerivedCRS(String code) Returns a derived coordinate reference system from a code.createEllipsoid(String code) Returns an ellipsoid from a code.createEllipsoidalCS(String code) Returns an ellipsoidal coordinate system from a code.createEngineeringCRS(String code) Returns an engineering coordinate reference system from a code.createEngineeringDatum(String code) Returns an engineering datum from a code.createExtent(String code) Returns an extent (usually an area of validity) from a code.createFromCoordinateReferenceSystemCodes(String sourceCode, String targetCode) Returns an operation from coordinate reference system codes.createGeocentricCRS(String code) Returns a geocentric coordinate reference system from a code.createGeodeticDatum(String code) Returns a geodetic datum from a code.createGeographicCRS(String code) Returns a geographic coordinate reference system from a code.createImageCRS(String code) Returns an image coordinate reference system from a code.createImageDatum(String code) Returns an image datum from a code.createObject(String code) Returns an arbitrary object from a code.createOperationMethod(String code) Returns an operation method from a code.Returns a parameter descriptor from a code.createPolarCS(String code) Returns a polar coordinate system from a code.createPrimeMeridian(String code) Returns a prime meridian from a code.createProjectedCRS(String code) Returns a projected coordinate reference system from a code.createSphericalCS(String code) Returns a spherical coordinate system from a code.createTemporalCRS(String code) Returns a temporal coordinate reference system from a code.createTemporalDatum(String code) Returns a temporal datum from a code.createTimeCS(String code) Returns a temporal coordinate system from a code.Unit<?>createUnit(String code) Returns an unit from a code.createVerticalCRS(String code) Returns a vertical coordinate reference system from a code.createVerticalCS(String code) Returns a vertical coordinate system from a code.createVerticalDatum(String code) Returns a vertical datum 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 underlying 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 unknow.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.Returns the vendor responsible for creating the underlying factory implementation.Methods inherited from class AbstractAuthorityFactory
noSuchAuthorityCode, trimAuthorityMethods inherited from class ReferencingFactory
ensureNonNullMethods inherited from class AbstractFactory
addImplementationHints, equals, getImplementationHints, getPriority, hashCode, onDeregistration, onRegistration, toStringMethods inherited from interface Factory
getImplementationHints
-
Constructor Details
-
ThreadedAuthorityFactory
Constructs an instance wrapping the specified factory with a default number of entries to keep by strong reference.This constructor is protected because subclasses must declare which of the
DatumAuthorityFactory,CSAuthorityFactory,CRSAuthorityFactoryandCoordinateOperationAuthorityFactoryinterfaces they choose to implement.- Parameters:
factory- The factory to cache. Can not benull.
-
ThreadedAuthorityFactory
Constructs an instance wrapping the specified factory. ThemaxStrongReferencesargument specify the maximum number of objects to keep by strong reference. If a greater amount of objects are created, then the strong references for the oldest ones are replaced by weak references.This constructor is protected because subclasses must declare which of the
DatumAuthorityFactory,CSAuthorityFactory,CRSAuthorityFactoryandCoordinateOperationAuthorityFactoryinterfaces they choose to implement.- Parameters:
factory- The factory to cache. Can not benull.maxStrongReferences- The maximum number of objects to keep by strong reference.
-
-
Method Details
-
getVendor
Returns the vendor responsible for creating the underlying factory implementation.- Specified by:
getVendorin interfaceFactory- Overrides:
getVendorin classReferencingFactory- Returns:
- The vendor for this factory implementation.
-
getAuthority
Returns the organization or party responsible for definition and maintenance of the underlying database.- Specified by:
getAuthorityin interfaceAuthorityFactory- Specified by:
getAuthorityin classAbstractAuthorityFactory- Returns:
- The organization reponsible for definition of the database.
-
getBackingStoreDescription
Returns a description of the underlying backing store, ornullif unknow. This is for example the database software used for storing the data.- Overrides:
getBackingStoreDescriptionin classAbstractAuthorityFactory- Returns:
- The description of the underlying backing store, or
null. - Throws:
FactoryException- if a failure occured while fetching the engine description.
-
getAuthorityCodes
public Set<String> getAuthorityCodes(Class<? extends IdentifiedObject> type) throws FactoryException Returns the set of authority codes of the given type. Thetypeargument specify the base class.- 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 {@linkplain java.util.Collections.emptySet() empty set}.
- Throws:
FactoryException- if access to the underlying database failed.
-
getDescriptionText
Gets 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.
-
createObject
Returns an arbitrary object from a 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:
-
createDatum
Returns an arbitrary datum from a code.- Overrides:
createDatumin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The datum for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.- See Also:
-
createEngineeringDatum
Returns an engineering datum from a code.- Overrides:
createEngineeringDatumin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The datum for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.- See Also:
-
createImageDatum
Returns an image datum from a code.- Overrides:
createImageDatumin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The datum for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.- See Also:
-
createVerticalDatum
Returns a vertical datum from a code.- Overrides:
createVerticalDatumin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The datum for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.- See Also:
-
createTemporalDatum
Returns a temporal datum from a code.- Overrides:
createTemporalDatumin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The datum for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.- See Also:
-
createGeodeticDatum
Returns a geodetic datum from a code.- Overrides:
createGeodeticDatumin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The datum for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.- See Also:
-
createEllipsoid
Returns an ellipsoid from a code.- Overrides:
createEllipsoidin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The ellipsoid for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.- See Also:
-
createPrimeMeridian
Returns a prime meridian from a code.- Overrides:
createPrimeMeridianin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The prime meridian for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.- See Also:
-
createExtent
Returns an extent (usually an area of validity) from a code.- Overrides:
createExtentin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The extent for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createCoordinateSystem
Returns an arbitrary coordinate system from a code.- Overrides:
createCoordinateSystemin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createCartesianCS
Returns a cartesian coordinate system from a code.- Overrides:
createCartesianCSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createPolarCS
Returns a polar coordinate system from a code.- Overrides:
createPolarCSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createCylindricalCS
Returns a cylindrical coordinate system from a code.- Overrides:
createCylindricalCSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createSphericalCS
Returns a spherical coordinate system from a code.- Overrides:
createSphericalCSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createEllipsoidalCS
Returns an ellipsoidal coordinate system from a code.- Overrides:
createEllipsoidalCSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createVerticalCS
Returns a vertical coordinate system from a code.- Overrides:
createVerticalCSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createTimeCS
Returns a temporal coordinate system from a code.- Overrides:
createTimeCSin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The coordinate system for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createCoordinateSystemAxis
Returns a coordinate system axis from a code.- Overrides:
createCoordinateSystemAxisin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The axis for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createUnit
Returns an unit from a code.- Overrides:
createUnitin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The unit 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 Returns an arbitrary coordinate reference system from a code.- 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)
-
createCompoundCRS
Returns a 3D coordinate reference system from a code.- 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.
-
createDerivedCRS
Returns a derived coordinate reference system from a code.- 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
Returns an engineering coordinate reference system from a code.- 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.
-
createGeographicCRS
Returns a geographic coordinate reference system from a code.- 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:
-
createGeocentricCRS
Returns a geocentric coordinate reference system from a code.- 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:
-
createImageCRS
Returns an image coordinate reference system from a code.- 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
Returns a projected coordinate reference system from a code.- 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
Returns a temporal coordinate reference system from a code.- 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
Returns a vertical coordinate reference system from a code.- 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:
-
createParameterDescriptor
Returns a parameter descriptor from a code.- Overrides:
createParameterDescriptorin 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.
-
createOperationMethod
Returns an operation method from a code.- Overrides:
createOperationMethodin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The operation method for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createCoordinateOperation
Returns an operation from a single operation code.- Overrides:
createCoordinateOperationin classAbstractAuthorityFactory- Parameters:
code- Value allocated by authority.- Returns:
- The operation for the given code.
- Throws:
NoSuchAuthorityCodeException- if the specifiedcodewas not found.FactoryException- if the object creation failed for some other reason.
-
createFromCoordinateReferenceSystemCodes
public Set<CoordinateOperation> createFromCoordinateReferenceSystemCodes(String sourceCode, String targetCode) throws FactoryException Returns an operation from coordinate reference system codes.- Overrides:
createFromCoordinateReferenceSystemCodesin classAbstractAuthorityFactory- Parameters:
sourceCode- Coded value of source coordinate reference system.targetCode- Coded value of target coordinate reference system.- Returns:
- The operations from
sourceCRStotargetCRS. - Throws:
NoSuchAuthorityCodeException- if a specified code was not found.FactoryException- if the object creation failed for some other reason.
-
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.
-
dispose
Releases resources immediately instead of waiting for the garbage collector.- Overrides:
disposein classAbstractAuthorityFactory- Throws:
FactoryException- if an error occured while disposing the factory.
-