NASA World Wind

gov.nasa.worldwind.cache
Class ShapeDataCache

java.lang.Object
  extended by gov.nasa.worldwind.cache.ShapeDataCache
All Implemented Interfaces:
Iterable<ShapeDataCache.ShapeDataCacheEntry>

public class ShapeDataCache
extends Object
implements Iterable<ShapeDataCache.ShapeDataCacheEntry>

Provides a mechanism to manage globe-specific representations of shapes. Typically used to manage per-globe state when the application associates the same shape with multiple WorldWindows.

This cache limits the amount of time an entry remains in the cache unused. The maximum unused time may be specified. Entries unused within the specified duration are removed from the cache each time getEntry(gov.nasa.worldwind.globes.Globe) is called.


Nested Class Summary
static class ShapeDataCache.ShapeDataCacheEntry
           
 
Field Summary
protected  HashMap<Globe,ShapeDataCache.ShapeDataCacheEntry> entries
          This cache's map of entries.
protected  long maxTimeSinceLastUsed
          The maximum number of milliseconds an entry may remain in the cache without being used.
 
Constructor Summary
ShapeDataCache(long maxTimeSinceLastUsed)
          Construct a cache with a specified entry lifetime.
 
Method Summary
 void addEntry(ShapeDataCache.ShapeDataCacheEntry entry)
          Adds a specified entry to the cache or replaces an entry associated with the same globe.
 void clearExtents()
          Set to null the extent field of all entries in this cache.
 ShapeDataCache.ShapeDataCacheEntry getEntry(Globe globe)
          Retrieves a specified entry from the cache.
 Iterator<ShapeDataCache.ShapeDataCacheEntry> iterator()
           
 void removeAllEntries()
          Remove all entries from this cache.
 void setAllExpired(boolean isExpired)
          Set all entries in this cache to a specified expiration state.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

entries

protected HashMap<Globe,ShapeDataCache.ShapeDataCacheEntry> entries
This cache's map of entries. Typically one entry per open window.


maxTimeSinceLastUsed

protected long maxTimeSinceLastUsed
The maximum number of milliseconds an entry may remain in the cache without being used.

Constructor Detail

ShapeDataCache

public ShapeDataCache(long maxTimeSinceLastUsed)
Construct a cache with a specified entry lifetime.

Parameters:
maxTimeSinceLastUsed - the maximum number of milliseconds an entry may remain in the cache without being used.
Method Detail

addEntry

public void addEntry(ShapeDataCache.ShapeDataCacheEntry entry)
Adds a specified entry to the cache or replaces an entry associated with the same globe.

Parameters:
entry - the entry to add. If null, the cache remains unchanged.

clearExtents

public void clearExtents()
Set to null the extent field of all entries in this cache.


getEntry

public ShapeDataCache.ShapeDataCacheEntry getEntry(Globe globe)
Retrieves a specified entry from the cache.

Note: Each time this method is called the cache is cleared of dead entries, as defined by their last-used time relative to this cache's maximum unused time.

Parameters:
globe - the globe the entry is associated with.
Returns:
the entry if it exists, otherwise null.

iterator

public Iterator<ShapeDataCache.ShapeDataCacheEntry> iterator()
Specified by:
iterator in interface Iterable<ShapeDataCache.ShapeDataCacheEntry>

removeAllEntries

public void removeAllEntries()
Remove all entries from this cache.


setAllExpired

public void setAllExpired(boolean isExpired)
Set all entries in this cache to a specified expiration state.

Parameters:
isExpired - the expiration state.

NASA World Wind