/** Returns the coordinate reference system for the given code. */ @Override public CoordinateReferenceSystem createCoordinateReferenceSystem(String code) throws FactoryException { if (code != null) { code = code.trim(); if (code.equalsIgnoreCase("WGS84(DD)")) { return DefaultGeographicCRS.WGS84; } } assert !AUTHORITY_LESS.contains(code) : code; return super.createCoordinateReferenceSystem(code); } }
/** Returns an ellipsoid from a code. */ @Override public synchronized Ellipsoid createEllipsoid(final String code) throws FactoryException { final Ellipsoid ellipsoid; final String key = trimAuthority(code); final Object cached = objectCache.get(key); if (cached instanceof Ellipsoid) { ellipsoid = (Ellipsoid) cached; } else { ellipsoid = getBackingStore().createEllipsoid(code); } objectCache.put(key, ellipsoid); return ellipsoid; }
boolean isAvailable() { try { return getBackingStore().isAvailable(); } catch (FactoryNotFoundException exception) { final Citation citation = getAuthority(); final Collection titles = citation.getAlternateTitles(); InternationalString title = citation.getTitle();
/** * Returns the direct dependencies. The returned list contains the backing store specified at * construction time, or the exception if it can't be obtained. */ @Override Collection<? super AuthorityFactory> dependencies() { Object factory; try { factory = getBackingStore(); } catch (FactoryException e) { factory = e; } return Collections.singleton(factory); }
/** * Constructs an instance wrapping the specified factory. The {@code 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. * * <p>This constructor is protected because subclasses must declare which of the {@link * DatumAuthorityFactory}, {@link CSAuthorityFactory}, {@link CRSAuthorityFactory} and {@link * CoordinateOperationAuthorityFactory} interfaces they choose to implement. * * @param factory The factory to cache. Can not be {@code null}. * @param maxStrongReferences The maximum number of objects to keep by strong reference. */ protected ThreadedAuthorityFactory( AbstractAuthorityFactory factory, final int maxStrongReferences) { super(factory.getPriority()); while (factory instanceof ThreadedAuthorityFactory) { factory = ((ThreadedAuthorityFactory) factory).backingStore; } this.backingStore = factory; this.objectCache = new OldReferencingObjectCache(maxStrongReferences); completeHints(); }
/** * Returns a description of the underlying backing store, or {@code null} if unknow. This is for * example the database software used for storing the data. * * @throws FactoryException if a failure occured while fetching the engine description. */ @Override public String getBackingStoreDescription() throws FactoryException { return getBackingStore().getBackingStoreDescription(); }
/** Returns a derived coordinate reference system from a code. */ @Override public synchronized DerivedCRS createDerivedCRS(final String code) throws FactoryException { final DerivedCRS crs; final String key = trimAuthority(code); final Object cached = objectCache.get(key); if (cached instanceof DerivedCRS) { crs = (DerivedCRS) cached; } else { crs = getBackingStore().createDerivedCRS(code); } objectCache.put(key, crs); return crs; }
/** * Gets a description of the object corresponding to a code. * * @param code Value allocated by authority. * @return A description of the object, or {@code null} if the object corresponding to the * specified {@code code} has no description. * @throws NoSuchAuthorityCodeException if the specified {@code code} was not found. * @throws FactoryException if the query failed for some other reason. */ public InternationalString getDescriptionText(final String code) throws FactoryException { return getBackingStore().getDescriptionText(code); }
/** Returns an image datum from a code. */ @Override public synchronized ImageDatum createImageDatum(final String code) throws FactoryException { final ImageDatum datum; final String key = trimAuthority(code); final Object cached = objectCache.get(key); if (cached instanceof ImageDatum) { datum = (ImageDatum) cached; } else { datum = getBackingStore().createImageDatum(code); } objectCache.put(key, datum); return datum; }
/** * Returns the set of authority codes of the given type. The {@code type} argument specify the * base class. * * @param type The spatial reference objects type. * @return 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#EMPTY_SET empty set}. * @throws FactoryException if access to the underlying database failed. */ public Set<String> getAuthorityCodes(final Class type) throws FactoryException { return getBackingStore().getAuthorityCodes(type); }
/** Returns a cartesian coordinate system from a code. */ @Override public synchronized CartesianCS createCartesianCS(final String code) throws FactoryException { final CartesianCS cs; final String key = trimAuthority(code); final Object cached = objectCache.get(key); if (cached instanceof CartesianCS) { cs = (CartesianCS) cached; } else { cs = getBackingStore().createCartesianCS(code); } objectCache.put(key, cs); return cs; }
/** * 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. */ @Override public synchronized IdentifiedObjectFinder getIdentifiedObjectFinder( final Class<? extends IdentifiedObject> type) throws FactoryException { return new Finder(getBackingStore().getIdentifiedObjectFinder(type)); }
/** Returns a polar coordinate system from a code. */ @Override public synchronized PolarCS createPolarCS(final String code) throws FactoryException { final PolarCS cs; final String key = trimAuthority(code); final Object cached = objectCache.get(key); if (cached instanceof PolarCS) { cs = (PolarCS) cached; } else { cs = getBackingStore().createPolarCS(code); } objectCache.put(key, cs); return cs; }
/** Returns an unit from a code. */ @Override public synchronized Unit<?> createUnit(final String code) throws FactoryException { final Unit<?> unit; final String key = trimAuthority(code); final Object cached = objectCache.get(key); if (cached instanceof Unit) { unit = (Unit) cached; } else { unit = getBackingStore().createUnit(code); } objectCache.put(key, unit); return unit; }
/** Returns an image coordinate reference system from a code. */ @Override public synchronized ImageCRS createImageCRS(final String code) throws FactoryException { final ImageCRS crs; final String key = trimAuthority(code); final Object cached = objectCache.get(key); if (cached instanceof ImageCRS) { crs = (ImageCRS) cached; } else { crs = getBackingStore().createImageCRS(code); } objectCache.put(key, crs); return crs; }
/** Returns an arbitrary coordinate reference system from a code. */ @Override public synchronized CoordinateReferenceSystem createCoordinateReferenceSystem(final String code) throws FactoryException { final CoordinateReferenceSystem crs; final String key = trimAuthority(code); final Object cached = objectCache.get(key); if (cached instanceof CoordinateReferenceSystem) { crs = (CoordinateReferenceSystem) cached; } else { crs = getBackingStore().createCoordinateReferenceSystem(code); } objectCache.put(key, crs); return crs; }
/** Returns a geographic coordinate reference system from a code. */ @Override public synchronized GeographicCRS createGeographicCRS(final String code) throws FactoryException { final GeographicCRS crs; final String key = trimAuthority(code); final Object cached = objectCache.get(key); if (cached instanceof GeographicCRS) { crs = (GeographicCRS) cached; } else { crs = getBackingStore().createGeographicCRS(code); } objectCache.put(key, crs); return crs; }
/** Returns an operation method from a code. */ @Override public synchronized OperationMethod createOperationMethod(final String code) throws FactoryException { final OperationMethod method; final String key = trimAuthority(code); final Object cached = objectCache.get(key); if (cached instanceof OperationMethod) { method = (OperationMethod) cached; } else { method = getBackingStore().createOperationMethod(code); } objectCache.put(key, method); return method; }
/** Returns a vertical coordinate system from a code. */ @Override public synchronized VerticalCS createVerticalCS(final String code) throws FactoryException { final VerticalCS cs; final String key = trimAuthority(code); final Object cached = objectCache.get(key); if (cached instanceof VerticalCS) { cs = (VerticalCS) cached; } else { cs = getBackingStore().createVerticalCS(code); } objectCache.put(key, cs); return cs; }
/** Returns a temporal coordinate reference system from a code. */ @Override public synchronized TemporalCRS createTemporalCRS(final String code) throws FactoryException { final TemporalCRS crs; final String key = trimAuthority(code); final Object cached = objectCache.get(key); if (cached instanceof TemporalCRS) { crs = (TemporalCRS) cached; } else { crs = getBackingStore().createTemporalCRS(code); } objectCache.put(key, crs); return crs; }