edu.wisc.ssec.mcidasv.data
Class McIdasXDataSource

java.lang.Object
  extended by ucar.unidata.collab.SharableImpl
      extended by ucar.unidata.data.DataSourceImpl
          extended by edu.wisc.ssec.mcidasv.data.McIdasXDataSource
All Implemented Interfaces:
Sharable, DataSource, DataSourceFactory, XmlPersistable

public class McIdasXDataSource
extends DataSourceImpl

Used to cache a data choice and its data

Version:
$Revision$
Author:
IDV development team

Nested Class Summary
 class McIdasXDataSource.FrameDataInfo
          Class FrameDataInfo Holds an index and a McIdasFrame
 
Field Summary
(package private)  DisplayControlImpl dci
           
private  List frameList
          list of McIDAS-X frames
private  List frameNumbers
          list of frames to load
private  boolean hasImagePreview
           
private  int lastPreview
           
private  McIdasXInfo mcidasxInfo
          McIDAS-X connection info
private  Image theImage
           
private  List twoDCategories
          list of 2D categories
private  List twoDTimeSeriesCategories
          list of 2D time series categories
private  double[][] values
          image data arrays
 
Fields inherited from class ucar.unidata.data.DataSourceImpl
changeDataPathsCbx, dataCacheKey, dataChoices, geoSelectionPanel, haveBeenUnPersisted, okToContinue, PARAM_SHOW_HIDE, PARAM_SHOW_NO, PARAM_SHOW_YES
 
Fields inherited from interface ucar.unidata.data.DataSource
DATAPATH_DATE_FORMAT, DATAPATH_DATE_PATTERN, MOST_RECENT, ordinalNames, PROP_AUTOCREATEDISPLAY, PROP_BASEDIRECTORY, PROP_CACHEABLE, PROP_DATACHOICENAME, PROP_DISPLAYPROPERTIES, PROP_DOCUMENTLINKS, PROP_FILEPATTERN, PROP_GEOLOCATION, PROP_ICON, PROP_NAME, PROP_POLLINFO, PROP_RESOLVERURL, PROP_SERVICE_HTTP, PROP_SUBPROPERTIES, PROP_TIMELABELS, PROP_TITLE
 
Constructor Summary
McIdasXDataSource()
          Default bean constructor; does nothing
McIdasXDataSource(DataSourceDescriptor descriptor, String name, Hashtable properties)
          Create a McIdasXDataSource
 
Method Summary
 void doMakeDataChoices()
          Create the set of DataChoice that represent the data held by this data source.
private  void doMakeDataChoices(CompositeDataChoice composite)
          Make the data choices and add them to the given composite
protected  Data getDataInner(DataChoice dataChoice, DataCategory category, DataSelection dataSelection, Hashtable requestProperties)
           
 String getDataName()
          Get the name for the main data object
private  DisplayControlImpl getDisplayControlImpl()
           
 McIdasFrame getFrame(int frameNumber)
          Get a frame from the frameList based on frame number
private  McIdasFrame getFrame(Object object)
          A utility method that helps us deal with legacy bundles that used to have String file names as the id of a data choice.
 List getFrameNumbers()
          Get frame numbers
 SingleBandedImage getMcIdasFrame(int frameNumber, FrameComponentInfo frameComponentInfo, FrameDirtyInfo frameDirtyInfo)
           
private  SingleBandedImage getMcIdasSequence(int frameNumber, FrameComponentInfo frameComponentInfo, FrameDirtyInfo frameDirtyInfo)
          make a time series from selected McIdas-X frames
 McIdasXInfo getMcIdasXInfo()
          Get McIdasXInfo object
 List getTwoDCategories()
          Return the list of DataCategory used for single time step data.
 List getTwoDTimeSeriesCategories()
          Return the list of DataCategory used for multiple time step data.
 void initAfterCreation()
          Gets called after creation.
 void initAfterUnpersistence()
          This is called after this datasource has been fully created and initialized after being unpersisted by the XmlEncoder.
private  void initConnection()
          Initialize the connection to McIdas-X.
protected  void initDataSelectionComponents(List<DataSelectionComponent> components, DataChoice dataChoice)
           
private  void makeCategories()
          Initialize the DataCategory objects that this data source uses.
 List makeFrames(List inFrameNumbers)
          Make a list of McIDAS-X frames
private  void makePreviewImage(DataChoice dataChoice)
           
 void setFrame(int frameNumber, McIdasFrame inFrame)
          Set a frame in the framelist based on frame number
protected  boolean shouldCache(Data data)
           
private  List sortChoices(List choices)
          Sort the list of data choices on their frame numbers
 
Methods inherited from class ucar.unidata.data.DataSourceImpl
addActions, addDataChangeListener, addDataChoice, addPropertiesTabs, addReloadTab, applyFieldMask, applyProperties, beginWritingDataToLocalDisk, canAddCurrentName, canCacheDataToDisk, canChangeData, canDoAllLevels, canDoFieldMask, canDoGeoSelection, canDoGeoSelectionMap, canDoGeoSelectionStride, canPoll, canSaveDataToLocalDisk, canShowParameter, checkForInitAfterUnPersistence, clearCachedData, clearFileCache, clearTimes, convertSourceFile, convertToFilesIfDirectory, createAutoDisplay, createCacheKey, createElement, decrOutstandingGetDataCalls, doDirectory, doMakeDateTimes, doMakeGeoSelectionPanel, doMakeGeoSelectionPanel, doMakeGeoSelectionPanel, doMakeGeoSubsetPropertiesComponent, doRemove, endWritingDataToLocalDisk, equals, expandIfNeeded, findDataChoice, findDataChoices, flushCache, getAbsoluteDateTimes, getActions, getAlias, getAllDateTimes, getAllDateTimes, getAllLevels, getAllLevels, getAllTimesForTimeDriver, getCache, getCache, getCacheClearDelay, getCacheDataToDisk, getCompositeDataChoices, getData, getData, getDataCachePath, getDataChangeListeners, getDataChoices, getDataContext, getDataInner, getDataIsEditable, getDataPaths, getDataPrefix, getDataSelection, getDataSelectionComponents, getDataSource, getDateTimes, getDateTimeSelection, getDefaultSave, getDescription, getDescriptor, getErrorMessage, getEverChangedName, getExtraGeoSelectionComponent, getExtraTimesComponent, getFileFilterForPolling, getFullDescription, getid, getIdv, getInError, getLocalDirectory, getLocationForPolling, getLocationsForPolling, getMostRecentFiles, getName, getNameForDataSource, getNeedToShowErrorToUser, getNextId, getOutstandingGetDataCalls, getPartialDescription, getPassword, getPathsThatCanBeRelative, getPollingInfo, getProperties, getPropertiesComponents, getPropertiesHeader, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getProperty, getRelativePaths, getSampleDataProjection, getSaveDataFileLabel, getSelectedDateTimes, getSelectedDateTimes, getTimesFromDataSelection, getTmpPaths, getTypeName, getUserName, handlePropertiesAction, hasPollingInfo, holdsDateTimes, holdsIndices, identifiedBy, identifiedByName, incrOutstandingGetDataCalls, initAfter, initDataChoice, initFromXml, isPolling, loadFieldMask, loadFieldMask, loadLatestFile, logException, logException, makeDerivedDataChoices, makeSaveLocalActions, newFileFromPolling, newFilesFromPolling, notifyDataChange, propertiesChanged, putCache, putCache, reloadData, reloadData, reloadProperties, removeCache, removeDataChangeListener, removeDataChoice, removeProperty, replaceDataChoice, resetTmpState, saveDataToLocalDisk, saveDataToLocalDisk, saveDataToLocalDisk, selectTimesFromList, setAlias, setAskToUpdate, setCacheClearDelay, setCacheDataToDisk, setDataEditableStrings, setDataIsEditable, setDataIsRelative, setDataRelativeStrings, setDataSelection, setDateTimeSelection, setDefaultSave, setDescription, setDescriptor, setDirectory, setEverChangedName, setInError, setInError, setInError, setName, setNewFiles, setObjectProperties, setObjectProperty, setPassword, setPollingInfo, setPollLocation, setProperties, setProperty, setProperty, setRelativePaths, setTemplateName, setTmpPaths, setUserName, shouldCache, showPasswordDialog, showPropertiesDialog, showPropertiesDialog, showPropertiesDialog, showWaitDialog, tick, toString, toStringTruncated, updateDetailsText, updateState, writeFieldMaskFile, writeFieldMaskFile
 
Methods inherited from class ucar.unidata.collab.SharableImpl
applySharableProperties, doShare, doShare, doShareExternal, doShareInternal, getReceiveShareTime, getSharablePropertiesComponent, getShareGroup, getSharing, getUniqueId, initSharable, receiveShareData, removeSharable, setReceiveShareTime, setShareGroup, setSharing, setUniqueId, showSharableDialog
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ucar.unidata.data.DataSource
getUniqueId
 

Field Detail

frameNumbers

private List frameNumbers
list of frames to load


frameList

private List frameList
list of McIDAS-X frames


mcidasxInfo

private McIdasXInfo mcidasxInfo
McIDAS-X connection info


twoDCategories

private List twoDCategories
list of 2D categories


twoDTimeSeriesCategories

private List twoDTimeSeriesCategories
list of 2D time series categories


values

private double[][] values
image data arrays


hasImagePreview

private boolean hasImagePreview

theImage

private Image theImage

lastPreview

private int lastPreview

dci

DisplayControlImpl dci
Constructor Detail

McIdasXDataSource

public McIdasXDataSource()
Default bean constructor; does nothing


McIdasXDataSource

public McIdasXDataSource(DataSourceDescriptor descriptor,
                         String name,
                         Hashtable properties)
Create a McIdasXDataSource

Parameters:
descriptor - the datasource descriptor
name - my name
properties - my properties
Method Detail

makeFrames

public List makeFrames(List inFrameNumbers)
Make a list of McIDAS-X frames

Parameters:
frames - List of frame numbers
Returns:
ImageDataset

getFrame

public McIdasFrame getFrame(int frameNumber)
Get a frame from the frameList based on frame number


setFrame

public void setFrame(int frameNumber,
                     McIdasFrame inFrame)
Set a frame in the framelist based on frame number


initAfterUnpersistence

public void initAfterUnpersistence()
This is called after this datasource has been fully created and initialized after being unpersisted by the XmlEncoder.

Specified by:
initAfterUnpersistence in interface DataSource
Overrides:
initAfterUnpersistence in class DataSourceImpl

initAfterCreation

public void initAfterCreation()
Gets called after creation. Initialize the connection

Specified by:
initAfterCreation in interface DataSource
Overrides:
initAfterCreation in class DataSourceImpl

initConnection

private void initConnection()
Initialize the connection to McIdas-X. This gets called when the data source is newly created or decoded form a bundle.


shouldCache

protected boolean shouldCache(Data data)
Overrides:
shouldCache in class DataSourceImpl

initDataSelectionComponents

protected void initDataSelectionComponents(List<DataSelectionComponent> components,
                                           DataChoice dataChoice)
Overrides:
initDataSelectionComponents in class DataSourceImpl

makePreviewImage

private void makePreviewImage(DataChoice dataChoice)

getDataInner

protected Data getDataInner(DataChoice dataChoice,
                            DataCategory category,
                            DataSelection dataSelection,
                            Hashtable requestProperties)
                     throws VisADException,
                            RemoteException
Overrides:
getDataInner in class DataSourceImpl
Parameters:
dataChoice - The data choice that identifies the requested data.
category - The data category of the request.
dataSelection - Identifies any subsetting of the data.
requestProperties - Hashtable that holds any detailed request properties.
Returns:
The data
Throws:
RemoteException - Java RMI problem
VisADException - VisAD problem

getMcIdasSequence

private SingleBandedImage getMcIdasSequence(int frameNumber,
                                            FrameComponentInfo frameComponentInfo,
                                            FrameDirtyInfo frameDirtyInfo)
                                     throws VisADException,
                                            RemoteException
make a time series from selected McIdas-X frames

Throws:
VisADException
RemoteException

getDisplayControlImpl

private DisplayControlImpl getDisplayControlImpl()

getFrameNumbers

public List getFrameNumbers()
Get frame numbers

Returns:
frame numbers

getDataName

public String getDataName()
Get the name for the main data object

Returns:
name of main data object

getMcIdasXInfo

public McIdasXInfo getMcIdasXInfo()
Get McIdasXInfo object

Returns:
mcidasxInfo

makeCategories

private void makeCategories()
Initialize the DataCategory objects that this data source uses.


getTwoDCategories

public List getTwoDCategories()
Return the list of DataCategory used for single time step data.

Returns:
A list of categories.

getTwoDTimeSeriesCategories

public List getTwoDTimeSeriesCategories()
Return the list of DataCategory used for multiple time step data.

Returns:
A list of categories.

doMakeDataChoices

public void doMakeDataChoices()
Create the set of DataChoice that represent the data held by this data source. We create one top-level CompositeDataChoice that represents all of the image time steps. We create a set of children DirectDataChoice, one for each time step.

Overrides:
doMakeDataChoices in class DataSourceImpl

doMakeDataChoices

private void doMakeDataChoices(CompositeDataChoice composite)
Make the data choices and add them to the given composite

Parameters:
composite - The parent data choice to add to

sortChoices

private List sortChoices(List choices)
Sort the list of data choices on their frame numbers

Parameters:
choices - The data choices
Returns:
The data choices sorted

getFrame

private McIdasFrame getFrame(Object object)
A utility method that helps us deal with legacy bundles that used to have String file names as the id of a data choice.

Parameters:
object - May be an AddeImageDescriptor (for new bundles) or a String that is converted to an image descriptor.
Returns:
The image descriptor.

getMcIdasFrame

public SingleBandedImage getMcIdasFrame(int frameNumber,
                                        FrameComponentInfo frameComponentInfo,
                                        FrameDirtyInfo frameDirtyInfo)
                                 throws VisADException,
                                        RemoteException
Throws:
VisADException
RemoteException