NASA World Wind

gov.nasa.worldwind.data
Class CachedDataRaster

java.lang.Object
  extended by gov.nasa.worldwind.avlist.AVListImpl
      extended by gov.nasa.worldwind.data.CachedDataRaster
All Implemented Interfaces:
AVList, DataRaster, Disposable

public class CachedDataRaster
extends AVListImpl
implements DataRaster

The CachedDataRaster is used to hold data raster's source and metadata, while the actual data raster may not be loaded in to the memory. This is mostly used together with a memory caches. CachedDataRaster actually implements all interfaces of the DataRaster, and acts as a proxy, that loads a real data raster only when it is actually needed.


Nested Class Summary
protected static class CachedDataRaster.ErrorHandlerMode
           
 
Field Summary
protected  MemoryCache.CacheListener cacheListener
           
protected  DataRasterReader dataReader
           
protected  Object dataSource
           
protected  MemoryCache rasterCache
           
protected  Object rasterRetrievalLock
           
protected  Object rasterUsageLock
           
protected  String[] requiredKeys
           
 
Constructor Summary
CachedDataRaster(Object source, AVList params, DataRasterReader reader, MemoryCache cache)
          Create a cached data raster.
 
Method Summary
protected  void assembleMetadata(Object source, AVList params, DataRasterReader reader)
           
protected  String composeExceptionReason(Throwable t)
           
 void dispose()
          Disposes of any internal resources allocated by the object.
protected static void disposeRasters(DataRaster[] rasters)
           
 void drawOnTo(DataRaster canvas)
          Copies this raster into a specified raster.
 DataRasterReader getDataRasterReader()
           
protected  DataRaster[] getDataRasters()
           
 Object getDataSource()
           
 int getHeight()
          Returns the raster's height in raster units.
 AVList getMetadata()
           
 AVList getParams()
           
protected  String[] getRequiredKeysList()
           
 Sector getSector()
          Returns the region covered be the data.
protected  long getSizeInBytes(DataRaster[] rasters)
           
 DataRaster getSubRaster(AVList params)
          Returns a portion of this raster as another raster.
 DataRaster getSubRaster(int width, int height, Sector sector, AVList params)
          Returns a portion of this raster as another raster.
protected static long getTotalUsedMemory()
           
 int getWidth()
          Returns the raster's width in raster units.
protected  boolean hasRequiredMetadata(AVList params, CachedDataRaster.ErrorHandlerMode throwException)
          Validates if params (AVList) has all required keys.
protected  void releaseMemory()
           
 
Methods inherited from class gov.nasa.worldwind.avlist.AVListImpl
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getBooleanValue, getBooleanValue, getChangeSupport, getDoubleValue, getDoubleValue, getEntries, getIntegerValue, getIntegerValue, getLongValue, getLongValue, getRestorableStateForAVPair, getStringValue, getStringValue, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface gov.nasa.worldwind.avlist.AVList
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getEntries, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
 

Field Detail

cacheListener

protected MemoryCache.CacheListener cacheListener

dataReader

protected DataRasterReader dataReader

dataSource

protected Object dataSource

rasterCache

protected MemoryCache rasterCache

rasterRetrievalLock

protected final Object rasterRetrievalLock

rasterUsageLock

protected final Object rasterUsageLock

requiredKeys

protected String[] requiredKeys
Constructor Detail

CachedDataRaster

public CachedDataRaster(Object source,
                        AVList params,
                        DataRasterReader reader,
                        MemoryCache cache)
                 throws IOException,
                        IllegalArgumentException
Create a cached data raster.

Parameters:
source - the location of the local file, expressed as either a String path, a File, or a file URL.
params - metadata as AVList, it is expected to next parameters: AVKey.WIDTH, AVKey.HEIGHT, AVKey.SECTOR, AVKey.PIXEL_FORMAT.

If any of these keys is missing, there will be an attempt made to retrieve missign metadata from the source using the reader.

reader - A reference to a DataRasterReader instance
cache - A reference to a MemoryCache instance
Throws:
IOException - thrown if there is an error to read metadata from the source
IllegalArgumentException - thrown when a source or a reader are null
Method Detail

assembleMetadata

protected void assembleMetadata(Object source,
                                AVList params,
                                DataRasterReader reader)
                         throws IOException,
                                IllegalArgumentException
Throws:
IOException
IllegalArgumentException

composeExceptionReason

protected String composeExceptionReason(Throwable t)

dispose

public void dispose()
Description copied from interface: Disposable
Disposes of any internal resources allocated by the object.

Specified by:
dispose in interface Disposable

disposeRasters

protected static void disposeRasters(DataRaster[] rasters)

drawOnTo

public void drawOnTo(DataRaster canvas)
Description copied from interface: DataRaster
Copies this raster into a specified raster.

Specified by:
drawOnTo in interface DataRaster
Parameters:
canvas - - the raster to copy into.

getDataRasterReader

public DataRasterReader getDataRasterReader()

getDataRasters

protected DataRaster[] getDataRasters()
                               throws IOException,
                                      WWRuntimeException
Throws:
IOException
WWRuntimeException

getDataSource

public Object getDataSource()

getHeight

public int getHeight()
Description copied from interface: DataRaster
Returns the raster's height in raster units.

Specified by:
getHeight in interface DataRaster
Returns:
the raster's height in raster units.

getMetadata

public AVList getMetadata()

getParams

public AVList getParams()

getRequiredKeysList

protected String[] getRequiredKeysList()

getSector

public Sector getSector()
Description copied from interface: DataRaster
Returns the region covered be the data.

Specified by:
getSector in interface DataRaster
Returns:
a sector indicating the region covered by the raster.

getSizeInBytes

protected long getSizeInBytes(DataRaster[] rasters)

getSubRaster

public DataRaster getSubRaster(AVList params)
Description copied from interface: DataRaster
Returns a portion of this raster as another raster. Input values are the desired width and height of the return sub-raster, and the sector to copy from this raster to the sub-raster. The returned raster conforms to EPSG:4326 even if this raster does not.

Specified by:
getSubRaster in interface DataRaster
Parameters:
params - a list of parameters that specify the width, height and sector of the region to return. Specify these values using AVKey.WIDTH, AVKey.HEIGHT and AVKey.SECTOR.
Returns:
the requested raster, or null if the raster could not be created.

getSubRaster

public DataRaster getSubRaster(int width,
                               int height,
                               Sector sector,
                               AVList params)
Description copied from interface: DataRaster
Returns a portion of this raster as another raster. The returned raster conforms to EPSG:4326 even if this raster does not.

Specified by:
getSubRaster in interface DataRaster
Parameters:
width - the width to make the returned sub-raster.
height - the height to make the returned sub-raster.
sector - the sector to copy.
params - a list of parameters that specify the width, height and sector of the region to return. Specify these values using AVKey.WIDTH, AVKey.HEIGHT and AVKey.SECTOR.
Returns:
the requested raster, or null if the raster could not be created.

getTotalUsedMemory

protected static long getTotalUsedMemory()

getWidth

public int getWidth()
Description copied from interface: DataRaster
Returns the raster's width in raster units.

Specified by:
getWidth in interface DataRaster
Returns:
the raster's width in raster units.

hasRequiredMetadata

protected boolean hasRequiredMetadata(AVList params,
                                      CachedDataRaster.ErrorHandlerMode throwException)
                               throws IllegalArgumentException
Validates if params (AVList) has all required keys.

Parameters:
params - AVList of key/value pairs
throwException - specifies weather to throw exception when a key/value is missing, or just return false.
Returns:
TRUE, if all required keys are present in the params list, or both params and required keys are empty, otherwise returns FALSE (if throwException is false)
Throws:
IllegalArgumentException - If a key/value is missing and throwException is set to TRUE

releaseMemory

protected void releaseMemory()

NASA World Wind