edu.wisc.ssec.mcidasv.data.hydra
Class GranuleAggregation

java.lang.Object
  extended by edu.wisc.ssec.mcidasv.data.hydra.GranuleAggregation
All Implemented Interfaces:
MultiDimensionReader

public class GranuleAggregation
extends Object
implements MultiDimensionReader

Provides a view and operations on a set of contiguous data granules as if they were a single granule. This file needs to implement the same signatures NetCDFFile does, but for aggregations of consecutive granules.

Author:
tommyj

Field Summary
private  String crossTrackDimensionName
           
(package private)  HashMap<Integer,ArrayList<ucar.ma2.Range>> granCutRanges
           
(package private)  HashMap<Integer,Integer> granCutScans
           
private  int granuleCount
           
private  String inTrackDimensionName
           
private  String inTrackGeoDimensionName
           
private  boolean isEDR
           
private static org.slf4j.Logger logger
           
(package private)  ArrayList<NetCDFFile> ncdfal
           
(package private)  ArrayList<ucar.nc2.NetcdfFile> nclist
           
private  String origName
           
private  LinkedHashSet<String> products
           
(package private)  HashMap<String,QualityFlag> qfMap
           
(package private)  HashMap<String,int[]> varAggrDimLengths
           
(package private)  ArrayList<HashMap<String,Class>> varDataTypeList
           
(package private)  ArrayList<HashMap<String,String[]>> varDimNamesList
           
(package private)  HashMap<String,HashMap<Integer,Integer>> varGranInTrackLengths
           
(package private)  ArrayList<HashMap<String,ucar.nc2.Variable>> varMapList
           
(package private)  HashMap<String,RangeProcessor> varToRangeProcessor
           
 
Constructor Summary
GranuleAggregation(ArrayList<NetCDFFile> ncdfal, LinkedHashSet<String> products, String inTrackDimensionName, String crossTrackDimensionName)
           
GranuleAggregation(ArrayList<NetCDFFile> ncdfal, LinkedHashSet<String> products, String inTrackDimensionName, String crossTrackDimensionName, boolean isEDR)
           
GranuleAggregation(ArrayList<NetCDFFile> ncdfal, LinkedHashSet<String> products, String inTrackDimensionName, String inTrackGeoDimensionName, String crossTrackDimensionName)
           
GranuleAggregation(ArrayList<NetCDFFile> ncdfal, LinkedHashSet<String> products, String inTrackDimensionName, String inTrackGeoDimensionName, String crossTrackDimensionName, boolean isEDR)
           
 
Method Summary
 void addRangeProcessor(String arrayName, RangeProcessor rangeProcessor)
           
 void close()
           
 Object getArray(String array_name, int[] start, int[] count, int[] stride)
           
 HDFArray getArrayAttribute(String array_name, String attr_name)
           
 Class getArrayType(String array_name)
           
 byte[] getByteArray(String array_name, int[] start, int[] count, int[] stride)
           
 int[] getDimensionLengths(String array_name)
           
 String[] getDimensionNames(String array_name)
           
 double[] getDoubleArray(String array_name, int[] start, int[] count, int[] stride)
           
 float[] getFloatArray(String array_name, int[] start, int[] count, int[] stride)
           
 HDFArray getGlobalAttribute(String attr_name)
           
 int[] getIntArray(String array_name, int[] start, int[] count, int[] stride)
           
private  int getInTrackIndex(ucar.nc2.Variable v)
          Based on the names of the variable dimensions, determine the in-track index
 ArrayList<NetCDFFile> getReaders()
           
 short[] getShortArray(String array_name, int[] start, int[] count, int[] stride)
           
 HashMap getVarMap()
           
private  void init(ArrayList<NetCDFFile> ncdfal)
           
 boolean isEDR()
           
private  String mapNameIfQualityFlag(String array_name)
           
private  Object processArray(String array_name, Class arrayType, int granIdx, Object values, RangeProcessor rngProcessor, int[] start, int[] count)
           
private  Object readArray(String array_name, int[] start, int[] count, int[] stride)
           
 void setEDR(boolean isEDR)
           
 void setQfMap(HashMap<String,QualityFlag> qfMap)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

private static final org.slf4j.Logger logger

nclist

ArrayList<ucar.nc2.NetcdfFile> nclist

ncdfal

ArrayList<NetCDFFile> ncdfal

varMapList

ArrayList<HashMap<String,ucar.nc2.Variable>> varMapList

varDimNamesList

ArrayList<HashMap<String,String[]>> varDimNamesList

varDataTypeList

ArrayList<HashMap<String,Class>> varDataTypeList

varGranInTrackLengths

HashMap<String,HashMap<Integer,Integer>> varGranInTrackLengths

varAggrDimLengths

HashMap<String,int[]> varAggrDimLengths

granCutRanges

HashMap<Integer,ArrayList<ucar.ma2.Range>> granCutRanges

granCutScans

HashMap<Integer,Integer> granCutScans

qfMap

HashMap<String,QualityFlag> qfMap

varToRangeProcessor

HashMap<String,RangeProcessor> varToRangeProcessor

granuleCount

private int granuleCount

inTrackDimensionName

private String inTrackDimensionName

inTrackGeoDimensionName

private String inTrackGeoDimensionName

crossTrackDimensionName

private String crossTrackDimensionName

products

private LinkedHashSet<String> products

origName

private String origName

isEDR

private boolean isEDR
Constructor Detail

GranuleAggregation

public GranuleAggregation(ArrayList<NetCDFFile> ncdfal,
                          LinkedHashSet<String> products,
                          String inTrackDimensionName,
                          String inTrackGeoDimensionName,
                          String crossTrackDimensionName,
                          boolean isEDR)
                   throws Exception
Throws:
Exception

GranuleAggregation

public GranuleAggregation(ArrayList<NetCDFFile> ncdfal,
                          LinkedHashSet<String> products,
                          String inTrackDimensionName,
                          String inTrackGeoDimensionName,
                          String crossTrackDimensionName)
                   throws Exception
Throws:
Exception

GranuleAggregation

public GranuleAggregation(ArrayList<NetCDFFile> ncdfal,
                          LinkedHashSet<String> products,
                          String inTrackDimensionName,
                          String crossTrackDimensionName)
                   throws Exception
Throws:
Exception

GranuleAggregation

public GranuleAggregation(ArrayList<NetCDFFile> ncdfal,
                          LinkedHashSet<String> products,
                          String inTrackDimensionName,
                          String crossTrackDimensionName,
                          boolean isEDR)
                   throws Exception
Throws:
Exception
Method Detail

getArrayType

public Class getArrayType(String array_name)
Specified by:
getArrayType in interface MultiDimensionReader

getDimensionNames

public String[] getDimensionNames(String array_name)
Specified by:
getDimensionNames in interface MultiDimensionReader

getDimensionLengths

public int[] getDimensionLengths(String array_name)
Specified by:
getDimensionLengths in interface MultiDimensionReader

mapNameIfQualityFlag

private String mapNameIfQualityFlag(String array_name)

isEDR

public boolean isEDR()
Returns:
the isEDR

setEDR

public void setEDR(boolean isEDR)
Parameters:
isEDR - the isEDR to set

getFloatArray

public float[] getFloatArray(String array_name,
                             int[] start,
                             int[] count,
                             int[] stride)
                      throws Exception
Specified by:
getFloatArray in interface MultiDimensionReader
Throws:
Exception

getIntArray

public int[] getIntArray(String array_name,
                         int[] start,
                         int[] count,
                         int[] stride)
                  throws Exception
Specified by:
getIntArray in interface MultiDimensionReader
Throws:
Exception

getDoubleArray

public double[] getDoubleArray(String array_name,
                               int[] start,
                               int[] count,
                               int[] stride)
                        throws Exception
Specified by:
getDoubleArray in interface MultiDimensionReader
Throws:
Exception

getShortArray

public short[] getShortArray(String array_name,
                             int[] start,
                             int[] count,
                             int[] stride)
                      throws Exception
Specified by:
getShortArray in interface MultiDimensionReader
Throws:
Exception

getByteArray

public byte[] getByteArray(String array_name,
                           int[] start,
                           int[] count,
                           int[] stride)
                    throws Exception
Specified by:
getByteArray in interface MultiDimensionReader
Throws:
Exception

getArray

public Object getArray(String array_name,
                       int[] start,
                       int[] count,
                       int[] stride)
                throws Exception
Specified by:
getArray in interface MultiDimensionReader
Throws:
Exception

getGlobalAttribute

public HDFArray getGlobalAttribute(String attr_name)
                            throws Exception
Specified by:
getGlobalAttribute in interface MultiDimensionReader
Throws:
Exception

getArrayAttribute

public HDFArray getArrayAttribute(String array_name,
                                  String attr_name)
                           throws Exception
Specified by:
getArrayAttribute in interface MultiDimensionReader
Throws:
Exception

close

public void close()
           throws Exception
Specified by:
close in interface MultiDimensionReader
Throws:
Exception

init

private void init(ArrayList<NetCDFFile> ncdfal)
           throws Exception
Throws:
Exception

getInTrackIndex

private int getInTrackIndex(ucar.nc2.Variable v)
Based on the names of the variable dimensions, determine the in-track index

Parameters:
dimNames - names of dimensions - should match static strings in relevant classes
Returns:
correct index (0 or greater), or -1 if error

readArray

private Object readArray(String array_name,
                         int[] start,
                         int[] count,
                         int[] stride)
                  throws Exception
Throws:
Exception

setQfMap

public void setQfMap(HashMap<String,QualityFlag> qfMap)
Parameters:
qfMap - the qfMap to set

getVarMap

public HashMap getVarMap()

getReaders

public ArrayList<NetCDFFile> getReaders()

processArray

private Object processArray(String array_name,
                            Class arrayType,
                            int granIdx,
                            Object values,
                            RangeProcessor rngProcessor,
                            int[] start,
                            int[] count)

addRangeProcessor

public void addRangeProcessor(String arrayName,
                              RangeProcessor rangeProcessor)