|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
ObjectAbstractFactory
ReferencingFactory
AbstractAuthorityFactory
CachedAuthorityDecorator
public final class CachedAuthorityDecorator
An authority factory that caches all objects created by delegate factories. This class is set up to cache the full complement of referencing objects: In many cases a single implementation will be used for several the authority factory interfaces - but this is not a requirement.
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 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.
Field Summary |
---|
Fields inherited from class ReferencingFactory |
---|
LOGGER |
Fields inherited from class AbstractFactory |
---|
hints, MAXIMUM_PRIORITY, MINIMUM_PRIORITY, NORMAL_PRIORITY, priority |
Constructor Summary | |
---|---|
|
CachedAuthorityDecorator(AuthorityFactory factory)
Constructs an instance wrapping the specified factory with a default cache. |
protected |
CachedAuthorityDecorator(AuthorityFactory factory,
ObjectCache cache)
Constructs an instance wrapping the specified factory. |
Method Summary | |
---|---|
protected static ObjectCache |
createCache(Hints hints)
Utility method used to produce cache based on hint |
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. |
EngineeringCRS |
createEngineeringCRS(String code)
Creates a engineering coordinate reference system from a code. |
EngineeringDatum |
createEngineeringDatum(String code)
Creates a engineering datum from a code. |
Set |
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. |
void |
dispose()
Releases resources immediately instead of waiting for the garbage collector. |
Citation |
getAuthority()
Returns the organization or party responsible for definition and maintenance of the database. |
Set |
getAuthorityCodes(Class type)
|
String |
getBackingStoreDescription()
Returns a description of the underlying backing store, or null if unknown. |
InternationalString |
getDescriptionText(String code)
|
IdentifiedObjectFinder |
getIdentifiedObjectFinder(Class type)
Returns a finder which can be used for looking up unidentified objects. |
protected String |
toKey(String code)
|
Methods inherited from class AbstractAuthorityFactory |
---|
createExtent, createOperationMethod, createParameterDescriptor, noSuchAuthorityCode, trimAuthority |
Methods inherited from class ReferencingFactory |
---|
ensureNonNull, getVendor |
Methods inherited from class AbstractFactory |
---|
addImplementationHints, equals, getImplementationHints, getPriority, hashCode, onDeregistration, onRegistration, toString |
Methods inherited from class Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Methods inherited from interface Factory |
---|
getVendor |
Methods inherited from interface Factory |
---|
getVendor |
Methods inherited from interface Factory |
---|
getVendor |
Methods inherited from interface Factory |
---|
getVendor |
Methods inherited from interface Factory |
---|
getVendor |
Methods inherited from interface Factory |
---|
getImplementationHints |
Constructor Detail |
---|
public CachedAuthorityDecorator(AuthorityFactory factory)
The provided authority factory must implement
DatumAuthorityFactory
, CSAuthorityFactory
,
CRSAuthorityFactory
and
CoordinateOperationAuthorityFactory
.
factory
- The factory to cache. Can not be null
.protected CachedAuthorityDecorator(AuthorityFactory factory, ObjectCache cache)
maxStrongReferences
argument 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
,
CRSAuthorityFactory
SearchableAuthorityFactory
and
CoordinateOperationAuthorityFactory
interfaces they choose to
implement.
factory
- The factory to cache. Can not be null
.maxStrongReferences
- The maximum number of objects to keep by strong reference.Method Detail |
---|
protected static ObjectCache createCache(Hints hints) throws FactoryRegistryException
FactoryRegistryException
protected String toKey(String code)
public IdentifiedObject createObject(String code) throws FactoryException
AbstractAuthorityFactory
Datum
, CoordinateSystem
, CoordinateReferenceSystem
or
CoordinateOperation
. 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.
createObject
in interface AuthorityFactory
createObject
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.AbstractAuthorityFactory.createCoordinateReferenceSystem(java.lang.String)
,
AbstractAuthorityFactory.createDatum(java.lang.String)
,
AbstractAuthorityFactory.createEllipsoid(java.lang.String)
,
AbstractAuthorityFactory.createUnit(java.lang.String)
public Citation getAuthority()
AbstractAuthorityFactory
getAuthority
in interface AuthorityFactory
getAuthority
in class AbstractAuthorityFactory
public Set getAuthorityCodes(Class type) throws FactoryException
getAuthorityCodes
in interface AuthorityFactory
FactoryException
public InternationalString getDescriptionText(String code) throws FactoryException
getDescriptionText
in interface AuthorityFactory
FactoryException
public CompoundCRS createCompoundCRS(String code) throws FactoryException
AbstractAuthorityFactory
createCompoundCRS
in interface CRSAuthorityFactory
createCompoundCRS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.public CoordinateReferenceSystem createCoordinateReferenceSystem(String code) throws FactoryException
AbstractAuthorityFactory
createGeographicCRS(code)
instead of createCoordinateReferenceSystem(code)
if the caller
know he is asking for a geographic coordinate reference system).
createCoordinateReferenceSystem
in interface CRSAuthorityFactory
createCoordinateReferenceSystem
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.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)
public DerivedCRS createDerivedCRS(String code) throws FactoryException
AbstractAuthorityFactory
createDerivedCRS
in interface CRSAuthorityFactory
createDerivedCRS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.public EngineeringCRS createEngineeringCRS(String code) throws FactoryException
AbstractAuthorityFactory
createEngineeringCRS
in interface CRSAuthorityFactory
createEngineeringCRS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.public GeocentricCRS createGeocentricCRS(String code) throws FactoryException
AbstractAuthorityFactory
createGeocentricCRS
in interface CRSAuthorityFactory
createGeocentricCRS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed.AbstractAuthorityFactory.createGeodeticDatum(java.lang.String)
public GeographicCRS createGeographicCRS(String code) throws FactoryException
AbstractAuthorityFactory
createGeographicCRS
in interface CRSAuthorityFactory
createGeographicCRS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.AbstractAuthorityFactory.createGeodeticDatum(java.lang.String)
public ImageCRS createImageCRS(String code) throws FactoryException
AbstractAuthorityFactory
createImageCRS
in interface CRSAuthorityFactory
createImageCRS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.public ProjectedCRS createProjectedCRS(String code) throws FactoryException
AbstractAuthorityFactory
createProjectedCRS
in interface CRSAuthorityFactory
createProjectedCRS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.AbstractAuthorityFactory.createGeodeticDatum(java.lang.String)
public TemporalCRS createTemporalCRS(String code) throws FactoryException
AbstractAuthorityFactory
createTemporalCRS
in interface CRSAuthorityFactory
createTemporalCRS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.AbstractAuthorityFactory.createTemporalDatum(java.lang.String)
public VerticalCRS createVerticalCRS(String code) throws FactoryException
AbstractAuthorityFactory
createVerticalCRS
in interface CRSAuthorityFactory
createVerticalCRS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.AbstractAuthorityFactory.createVerticalDatum(java.lang.String)
public CartesianCS createCartesianCS(String code) throws FactoryException
AbstractAuthorityFactory
createCoordinateSystem(code)
.
createCartesianCS
in interface CSAuthorityFactory
createCartesianCS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.public CoordinateSystem createCoordinateSystem(String code) throws FactoryException
AbstractAuthorityFactory
createObject(code)
.
createCoordinateSystem
in interface CSAuthorityFactory
createCoordinateSystem
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.public CoordinateSystemAxis createCoordinateSystemAxis(String code) throws FactoryException
AbstractAuthorityFactory
createObject(code)
.
createCoordinateSystemAxis
in interface CSAuthorityFactory
createCoordinateSystemAxis
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.public CylindricalCS createCylindricalCS(String code) throws FactoryException
AbstractAuthorityFactory
createCoordinateSystem(code)
.
createCylindricalCS
in interface CSAuthorityFactory
createCylindricalCS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.public EllipsoidalCS createEllipsoidalCS(String code) throws FactoryException
AbstractAuthorityFactory
createCoordinateSystem(code)
.
createEllipsoidalCS
in interface CSAuthorityFactory
createEllipsoidalCS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.public PolarCS createPolarCS(String code) throws FactoryException
AbstractAuthorityFactory
createCoordinateSystem(code)
.
createPolarCS
in interface CSAuthorityFactory
createPolarCS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.public SphericalCS createSphericalCS(String code) throws FactoryException
AbstractAuthorityFactory
createCoordinateSystem(code)
.
createSphericalCS
in interface CSAuthorityFactory
createSphericalCS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.public TimeCS createTimeCS(String code) throws FactoryException
AbstractAuthorityFactory
createCoordinateSystem(code)
.
createTimeCS
in interface CSAuthorityFactory
createTimeCS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.public Unit<?> createUnit(String code) throws FactoryException
AbstractAuthorityFactory
createObject(code)
.
createUnit
in interface CSAuthorityFactory
createUnit
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.public VerticalCS createVerticalCS(String code) throws FactoryException
AbstractAuthorityFactory
createCoordinateSystem(code)
.
createVerticalCS
in interface CSAuthorityFactory
createVerticalCS
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.public Datum createDatum(String code) throws FactoryException
AbstractAuthorityFactory
createObject(code)
.
createDatum
in interface DatumAuthorityFactory
createDatum
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.AbstractAuthorityFactory.createGeodeticDatum(java.lang.String)
,
AbstractAuthorityFactory.createVerticalDatum(java.lang.String)
,
AbstractAuthorityFactory.createTemporalDatum(java.lang.String)
public Ellipsoid createEllipsoid(String code) throws FactoryException
AbstractAuthorityFactory
createObject(code)
.
createEllipsoid
in interface DatumAuthorityFactory
createEllipsoid
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.AbstractAuthorityFactory.createGeodeticDatum(java.lang.String)
public EngineeringDatum createEngineeringDatum(String code) throws FactoryException
AbstractAuthorityFactory
createDatum(code)
.
createEngineeringDatum
in interface DatumAuthorityFactory
createEngineeringDatum
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.AbstractAuthorityFactory.createEngineeringCRS(java.lang.String)
public GeodeticDatum createGeodeticDatum(String code) throws FactoryException
AbstractAuthorityFactory
createDatum(code)
.
createGeodeticDatum
in interface DatumAuthorityFactory
createGeodeticDatum
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.AbstractAuthorityFactory.createEllipsoid(java.lang.String)
,
AbstractAuthorityFactory.createPrimeMeridian(java.lang.String)
,
AbstractAuthorityFactory.createGeographicCRS(java.lang.String)
,
AbstractAuthorityFactory.createProjectedCRS(java.lang.String)
public ImageDatum createImageDatum(String code) throws FactoryException
AbstractAuthorityFactory
createDatum(code)
.
createImageDatum
in interface DatumAuthorityFactory
createImageDatum
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.AbstractAuthorityFactory.createImageCRS(java.lang.String)
public PrimeMeridian createPrimeMeridian(String code) throws FactoryException
AbstractAuthorityFactory
createObject(code)
.
createPrimeMeridian
in interface DatumAuthorityFactory
createPrimeMeridian
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.AbstractAuthorityFactory.createGeodeticDatum(java.lang.String)
public TemporalDatum createTemporalDatum(String code) throws FactoryException
AbstractAuthorityFactory
createDatum(code)
.
createTemporalDatum
in interface DatumAuthorityFactory
createTemporalDatum
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.AbstractAuthorityFactory.createTemporalCRS(java.lang.String)
public VerticalDatum createVerticalDatum(String code) throws FactoryException
AbstractAuthorityFactory
createDatum(code)
.
createVerticalDatum
in interface DatumAuthorityFactory
createVerticalDatum
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.AbstractAuthorityFactory.createVerticalCRS(java.lang.String)
public CoordinateOperation createCoordinateOperation(String code) throws FactoryException
AbstractAuthorityFactory
createCoordinateOperation
in interface CoordinateOperationAuthorityFactory
createCoordinateOperation
in class AbstractAuthorityFactory
code
- Value allocated by authority.
NoSuchAuthorityCodeException
- if the specified code
was not found.
FactoryException
- if the object creation failed for some other reason.public Set createFromCoordinateReferenceSystemCodes(String sourceCode, String targetCode) throws FactoryException
AbstractAuthorityFactory
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.
createFromCoordinateReferenceSystemCodes
in interface CoordinateOperationAuthorityFactory
createFromCoordinateReferenceSystemCodes
in class AbstractAuthorityFactory
sourceCode
- Coded value of source coordinate reference system.targetCode
- Coded value of target coordinate reference system.
sourceCRS
to targetCRS
.
NoSuchAuthorityCodeException
- if a specified code was not found.
FactoryException
- if the object creation failed for some other reason.public IdentifiedObjectFinder getIdentifiedObjectFinder(Class type) throws FactoryException
AbstractAuthorityFactory
AUTHORITY[...]
" element in
Well Known Text terminology.
getIdentifiedObjectFinder
in class AbstractAuthorityFactory
type
- The type of objects to look for. Should be a GeoAPI interface like
GeographicCRS.class
, but this method accepts also implementation
class. If the type is unknown, use IdentifiedObject.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.
FactoryException
- if the finder can not be created.public void dispose() throws FactoryException
AbstractAuthorityFactory
create(...)
invocations
may throw a FactoryException
. Disposing a previously-disposed factory,
however, has no effect.
dispose
in class AbstractAuthorityFactory
FactoryException
- if an error occured while disposing the factory.public String getBackingStoreDescription() throws FactoryException
AbstractAuthorityFactory
null
if unknown.
This is for example the database software used for storing the data.
The default implementation returns always null
.
getBackingStoreDescription
in class AbstractAuthorityFactory
null
.
FactoryException
- if a failure occurs while fetching the engine description.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |