public class Variable extends CDMNode implements VariableIF, ProxyReader, AttributeContainer
Immutable if setImmutable() was called.
| Modifier and Type | Class and Description |
|---|---|
protected static class |
Variable.Cache
Public by accident.
|
| Modifier and Type | Field and Description |
|---|---|
protected java.util.List<Attribute> |
attributes |
protected Variable.Cache |
cache |
protected DataType |
dataType |
protected static boolean |
debugCaching |
static int |
defaultCoordsSizeToCache |
static int |
defaultSizeToCache |
protected java.util.List<Dimension> |
dimensions |
protected int |
elementSize |
protected int |
hashCode |
protected boolean |
isMetadata |
protected boolean |
isVariableLength |
protected NetcdfFile |
ncfile |
static boolean |
permitCaching
Globally permit or prohibit caching.
|
protected ProxyReader |
proxyReader |
protected int[] |
shape |
protected Section |
shapeAsSection |
protected int |
sizeToCache |
protected java.lang.Object |
spiObject |
annotations, dodsname, group, immutable, parentstruct, shortName, sort| Modifier | Constructor and Description |
|---|---|
protected |
Variable() |
|
Variable(NetcdfFile ncfile,
Group group,
Structure parent,
java.lang.String shortName)
Create a Variable.
|
|
Variable(NetcdfFile ncfile,
Group group,
Structure parent,
java.lang.String shortName,
DataType dtype,
java.lang.String dims)
Create a Variable.
|
|
Variable(Variable from)
Copy constructor.
|
| Modifier and Type | Method and Description |
|---|---|
protected Array |
_read() |
protected Array |
_read(Section section) |
void |
addAll(java.lang.Iterable<Attribute> atts)
Add all; replace old if has same name
|
Attribute |
addAttribute(Attribute att)
Add new or replace old if has same name
|
int |
compareTo(VariableSimpleIF o)
Sort by name
|
protected Variable |
copy() |
void |
createNewCache()
Create a new data cache, use this when you dont want to share the cache.
|
boolean |
equals(java.lang.Object oo)
Instances which have same content are equal.
|
protected java.lang.String |
extraInfo() |
Attribute |
findAttribute(java.lang.String name)
Find an Attribute by name.
|
Attribute |
findAttributeIgnoreCase(java.lang.String name)
Find an Attribute by name, ignoring the case.
|
int |
findDimensionIndex(java.lang.String name)
Find the index of the named Dimension in this Variable.
|
java.util.List<Attribute> |
getAttributes()
Returns the set of attributes for this variable.
|
static java.lang.String |
getDAPName(java.lang.String name,
Variable context) |
static java.lang.String |
getDAPName(Variable v) |
java.lang.String |
getDatasetLocation() |
DataType |
getDataType()
Get the data type of the Variable.
|
java.lang.String |
getDescription()
Get the description of the Variable.
|
Dimension |
getDimension(int i)
Get the ith dimension.
|
java.util.List<Dimension> |
getDimensions()
Get the list of dimensions used by this variable.
|
java.util.List<Dimension> |
getDimensionsAll()
Get list of Dimensions, including parents if any.
|
java.lang.String |
getDimensionsString()
Get the list of Dimension names, space delineated.
|
int |
getElementSize()
Get the number of bytes for one element of this Variable.
|
EnumTypedef |
getEnumTypedef()
Get the EnumTypedef, only use if getDataType.isEnum()
|
java.lang.String |
getNameAndDimensions()
Get the display name plus the dimensions, eg 'float name(dim1, dim2)'
|
java.lang.String |
getNameAndDimensions(boolean strict)
Get the display name plus the dimensions, eg 'float name(dim1, dim2)'
|
void |
getNameAndDimensions(java.util.Formatter buf,
boolean useFullName,
boolean strict)
Add display name plus the dimensions to the StringBuffer
|
void |
getNameAndDimensions(java.lang.StringBuffer buf)
Deprecated.
use getNameAndDimensions(StringBuilder buf)
|
void |
getNameAndDimensions(java.lang.StringBuilder buf)
Get the display name plus the dimensions, eg 'name(dim1, dim2)'
|
void |
getNameAndDimensions(java.lang.StringBuilder buf,
boolean useFullName,
boolean strict)
Add display name plus the dimensions to the StringBuffer
|
protected NetcdfFile |
getNetcdfFile() |
Group |
getParentGroup()
Get the parent group.
|
ProxyReader |
getProxyReader() |
java.util.List<Range> |
getRanges()
Get shape as an List of Range objects.
|
int |
getRank()
Get the number of dimensions of the Variable.
|
protected Array |
getScalarData() |
int[] |
getShape()
Get the shape: length of Variable in each dimension.
|
int |
getShape(int index)
Get the size of the ith dimension
|
int[] |
getShapeAll() |
Section |
getShapeAsSection()
Get shape as a Section object.
|
int[] |
getShapeNotScalar() |
long |
getSize()
Get the total number of elements in the Variable.
|
int |
getSizeToCache()
If total data size is less than SizeToCache in bytes, then cache.
|
java.lang.Object |
getSPobject()
Should not be public.
|
java.lang.String |
getUnitsString()
Get the Unit String for the Variable.
|
boolean |
hasCachedData()
Has data been read and cached.
|
int |
hashCode()
Override Object.hashCode() to implement equals.
|
void |
hashCodeShow(Indent indent) |
void |
invalidateCache()
Invalidate the data cache
|
boolean |
isCaching()
Will this Variable be cached when read.
|
boolean |
isCoordinateVariable()
Calculate if this is a classic coordinate variable: has same name as its first dimension.
|
boolean |
isImmutable()
Is this Variable immutable
|
boolean |
isMetadata()
Is this variable metadata?.
|
boolean |
isScalar()
Whether this is a scalar Variable (rank == 0).
|
boolean |
isUnknownLength()
Deprecated.
use isVariableLength()
|
boolean |
isUnlimited()
Can this variable's size grow?.
|
boolean |
isUnsigned()
Is this Variable unsigned?.
|
boolean |
isVariableLength()
Does this variable have a variable length dimension?
If so, it has as one of its dimensions Dimension.VLEN.
|
java.lang.String |
lookupEnumString(int val)
Lookup the enum string for this value.
|
Array |
read()
Read all the data for this Variable and return a memory resident Array.
|
Array |
read(int[] origin,
int[] shape)
Read a section of the data for this Variable and return a memory resident Array.
|
Array |
read(java.util.List<Range> ranges)
Read a section of the data for this Variable from the netcdf file and return a memory resident Array.
|
Array |
read(Section section)
Read a section of the data for this Variable from the netcdf file and return a memory resident Array.
|
Array |
read(java.lang.String sectionSpec)
Read data section specified by a "section selector", and return a memory resident Array.
|
byte |
readScalarByte()
Get the value as a byte for a scalar Variable.
|
double |
readScalarDouble()
Get the value as a double for a scalar Variable.
|
float |
readScalarFloat()
Get the value as a float for a scalar Variable.
|
int |
readScalarInt()
Get the value as a int for a scalar Variable.
|
long |
readScalarLong()
Get the value as a long for a scalar Variable.
|
short |
readScalarShort()
Get the value as a short for a scalar Variable.
|
java.lang.String |
readScalarString()
Get the value as a String for a scalar Variable.
|
long |
readToByteChannel(Section section,
java.nio.channels.WritableByteChannel wbc) |
long |
readToStream(Section section,
java.io.OutputStream out) |
Array |
reallyRead(Variable client,
CancelTask cancelTask)
public by accident, do not call directly.
|
Array |
reallyRead(Variable client,
Section section,
CancelTask cancelTask)
public by accident, do not call directly.
|
Variable |
reduce(java.util.List<Dimension> dims)
Create a new Variable that is a logical view of this Variable, by
eliminating the specified dimension(s) of length 1.
|
boolean |
remove(Attribute a)
Remove an Attribute : uses the attribute hashCode to find it.
|
boolean |
removeAttribute(java.lang.String attName)
Remove an Attribute by name.
|
boolean |
removeAttributeIgnoreCase(java.lang.String attName)
Remove an Attribute by name, ignoring case
|
void |
resetDimensions()
Reset the dimension array.
|
void |
resetShape()
Use when dimensions have changed, to recalculate the shape.
|
Variable |
section(java.util.List<Range> ranges)
Create a new Variable that is a logical subsection of this Variable.
|
Variable |
section(Section subsection)
Create a new Variable that is a logical subsection of this Variable.
|
void |
setCachedData(Array cacheData) |
void |
setCachedData(Array cacheData,
boolean isMetadata)
Set the data cache
|
void |
setCaching(boolean caching)
Set whether to cache or not.
|
void |
setDataType(DataType dataType)
Set the data type
|
void |
setDimension(int idx,
Dimension dim)
Replace a dimension with an equivalent one.
|
void |
setDimensions(java.util.List<Dimension> dims)
Set the shape with a list of Dimensions.
|
void |
setDimensions(java.lang.String dimString)
Set the dimensions using the dimensions names.
|
void |
setDimensionsAnonymous(int[] shape)
Set the dimensions using all anonymous (unshared) dimensions
|
void |
setElementSize(int elementSize)
Set the element size.
|
void |
setEnumTypedef(EnumTypedef enumTypedef)
Public by accident.
|
Variable |
setImmutable()
Make this immutable.
|
void |
setIsScalar()
Set this Variable to be a scalar
|
java.lang.String |
setName(java.lang.String shortName)
Set the short name, converting to valid CDM object name if needed.
|
void |
setParentGroup(Group group)
Set the parent group.
|
void |
setProxyReader(ProxyReader proxyReader) |
void |
setSizeToCache(int sizeToCache)
Set the sizeToCache.
|
void |
setSPobject(java.lang.Object spiObject)
Should not be public.
|
void |
setUnsigned(boolean b)
Say if this Variable is unsigned.
|
void |
setValues(int npts,
double start,
double incr)
Generate the list of values from a starting value and an increment.
|
void |
setValues(java.util.List<java.lang.String> values)
Set the data values from a list of Strings.
|
Variable |
slice(int dim,
int value)
Create a new Variable that is a logical slice of this Variable, by
fixing the specified dimension at the specified index value.
|
java.lang.String |
toString()
CDL representation of Variable, not strict.
|
java.lang.String |
toStringDebug()
String representation of Variable and its attributes.
|
java.lang.String |
writeCDL(boolean useFullName,
boolean strict)
CDL representation of a Variable.
|
protected void |
writeCDL(java.util.Formatter buf,
Indent indent,
boolean useFullName,
boolean strict) |
annotate, getAnnotation, getAnnotations, getDODSName, getFullName, getFullNameEscaped, getGroup, getImmutable, getName, getParentStructure, getShortName, getSort, isMemberOfStructure, localhash, setDODSName, setImmutable, setParentStructure, setShortName, setSort, unwrapclone, finalize, getClass, notify, notifyAll, wait, wait, waitgetFullName, getFullNameEscaped, getParentStructure, getShortName, isMemberOfStructuregetNamepublic static boolean permitCaching
A true value for this field does not indicate whether a Variable
is caching, only that it's permitted to cache.
public static int defaultSizeToCache
public static int defaultCoordsSizeToCache
protected static boolean debugCaching
protected NetcdfFile ncfile
protected int[] shape
protected Section shapeAsSection
protected DataType dataType
protected int elementSize
protected java.util.List<Dimension> dimensions
protected java.util.List<Attribute> attributes
protected boolean isVariableLength
protected boolean isMetadata
protected Variable.Cache cache
protected int sizeToCache
protected ProxyReader proxyReader
protected int hashCode
protected java.lang.Object spiObject
protected Variable()
public Variable(NetcdfFile ncfile, Group group, Structure parent, java.lang.String shortName)
ncfile - the containing NetcdfFile.group - the containing group; if null, use rootGroupparent - parent Structure, may be nullshortName - variable shortName, must be unique within the Grouppublic Variable(NetcdfFile ncfile, Group group, Structure parent, java.lang.String shortName, DataType dtype, java.lang.String dims)
ncfile - the containing NetcdfFile.group - the containing group; if null, use rootGroupparent - parent Structure, may be nullshortName - variable shortName, must be unique within the Groupdtype - the Variable's DataTypedims - space delimited list of dimension names. may be null or "" for scalars.public Variable(Variable from)
from - copy from this Variable.public static java.lang.String getDAPName(java.lang.String name,
Variable context)
public static java.lang.String getDAPName(Variable v)
public DataType getDataType()
getDataType in interface VariableIFgetDataType in interface VariableSimpleIFpublic int[] getShape()
getShape in interface VariableIFgetShape in interface VariableSimpleIFpublic int[] getShapeNotScalar()
public int getShape(int index)
index - which dimensionpublic long getSize()
getSize in interface VariableIFpublic int getElementSize()
getElementSize in interface VariableIFpublic int getRank()
getRank in interface VariableIFgetRank in interface VariableSimpleIFpublic Group getParentGroup()
getParentGroup in interface VariableIFgetParentGroup in class CDMNodepublic boolean isMetadata()
isMetadata in interface VariableIFpublic boolean isScalar()
isScalar in interface VariableIFpublic boolean isVariableLength()
isVariableLength in interface VariableIFpublic boolean isUnsigned()
isUnsigned in interface VariableIFpublic void setUnsigned(boolean b)
b - unsigned iff b is truepublic boolean isUnlimited()
isUnlimited in interface VariableIFpublic java.util.List<Dimension> getDimensions()
getDimensions in interface VariableIFgetDimensions in interface VariableSimpleIFpublic Dimension getDimension(int i)
getDimension in interface VariableIFi - index of the dimension.public java.lang.String getDimensionsString()
public int findDimensionIndex(java.lang.String name)
findDimensionIndex in interface VariableIFname - the name of the dimensionpublic java.util.List<Attribute> getAttributes()
getAttributes in interface AttributeContainergetAttributes in interface VariableIFgetAttributes in interface VariableSimpleIFpublic Attribute findAttribute(java.lang.String name)
findAttribute in interface VariableIFname - the name of the attributepublic Attribute findAttributeIgnoreCase(java.lang.String name)
findAttributeIgnoreCase in interface VariableIFfindAttributeIgnoreCase in interface VariableSimpleIFname - the name of the attributepublic java.lang.String getDescription()
getDescription in interface VariableIFgetDescription in interface VariableSimpleIFpublic java.lang.String getUnitsString()
getUnitsString in interface VariableIFgetUnitsString in interface VariableSimpleIFpublic java.util.List<Range> getRanges()
getRanges in interface VariableIFpublic Section getShapeAsSection()
getShapeAsSection in interface VariableIFpublic ProxyReader getProxyReader()
public void setProxyReader(ProxyReader proxyReader)
public Variable section(java.util.List<Range> ranges) throws InvalidRangeException
section in interface VariableIFranges - List of type ucar.ma2.Range, with size equal to getRank().
Each Range corresponds to a Dimension, and specifies the section of data to read in that Dimension.
A Range object may be null, which means use the entire dimension.InvalidRangeExceptionpublic Variable section(Section subsection) throws InvalidRangeException
subsection - Section of this variable.
Each Range in the section corresponds to a Dimension, and specifies the section of data to read in that Dimension.
A Range object may be null, which means use the entire dimension.InvalidRangeException - if section not compatible with shapepublic Variable slice(int dim, int value) throws InvalidRangeException
dim - which dimension to fixvalue - at what index valueInvalidRangeException - if dimension or value is illegalpublic Variable reduce(java.util.List<Dimension> dims) throws InvalidRangeException
dims - list of dimensions of length 1 to reduceInvalidRangeException - if dimension or value is illegalprotected Variable copy()
protected NetcdfFile getNetcdfFile()
public java.lang.String lookupEnumString(int val)
val - the integer value of this enumpublic void setEnumTypedef(EnumTypedef enumTypedef)
enumTypedef - set the EnumTypedef, only use if getDataType.isEnum()public EnumTypedef getEnumTypedef()
getEnumTypedef in interface VariableIFpublic Array read(int[] origin, int[] shape) throws java.io.IOException, InvalidRangeException
assert(origin[ii] + shape[ii]*stride[ii] <= Variable.shape[ii]);
read in interface VariableIForigin - int array specifying the starting index. If null, assume all zeroes.shape - int array specifying the extents in each dimension.
This becomes the shape of the returned Array.java.io.IOExceptionInvalidRangeExceptionpublic Array read(java.lang.String sectionSpec) throws java.io.IOException, InvalidRangeException
read in interface VariableIFsectionSpec - specification string, eg "1:2,10,:,1:100:10". May optionally have ().java.io.IOExceptionInvalidRangeExceptionfor sectionSpec syntaxpublic Array read(java.util.List<Range> ranges) throws java.io.IOException, InvalidRangeException
ranges - list of Range specifying the section of data to read.java.io.IOException - if errorInvalidRangeException - if ranges is invalidread(Section)public Array read(Section section) throws java.io.IOException, InvalidRangeException
read in interface VariableIFsection - list of Range specifying the section of data to read.
Must be null or same rank as variable.
If list is null, assume all data.
Each Range corresponds to a Dimension. If the Range object is null, it means use the entire dimension.java.io.IOException - if errorInvalidRangeException - if section is invalidpublic Array read() throws java.io.IOException
read in interface VariableIFjava.io.IOExceptionpublic byte readScalarByte()
throws java.io.IOException
readScalarByte in interface VariableIFjava.io.IOException - if theres an IO Errorjava.lang.UnsupportedOperationException - if not a scalar Variable or one-dimensional of length 1.ForbiddenConversionException - if data type not convertible to bytepublic short readScalarShort()
throws java.io.IOException
readScalarShort in interface VariableIFjava.io.IOException - if theres an IO Errorjava.lang.UnsupportedOperationException - if not a scalar Variable or one-dimensional of length 1.ForbiddenConversionException - if data type not convertible to shortpublic int readScalarInt()
throws java.io.IOException
readScalarInt in interface VariableIFjava.io.IOException - if theres an IO Errorjava.lang.UnsupportedOperationException - if not a scalar Variable or one-dimensional of length 1.ForbiddenConversionException - if data type not convertible to intpublic long readScalarLong()
throws java.io.IOException
readScalarLong in interface VariableIFjava.io.IOException - if theres an IO Errorjava.lang.UnsupportedOperationException - if not a scalar VariableForbiddenConversionException - if data type not convertible to longpublic float readScalarFloat()
throws java.io.IOException
readScalarFloat in interface VariableIFjava.io.IOException - if theres an IO Errorjava.lang.UnsupportedOperationException - if not a scalar Variable or one-dimensional of length 1.ForbiddenConversionException - if data type not convertible to floatpublic double readScalarDouble()
throws java.io.IOException
readScalarDouble in interface VariableIFjava.io.IOException - if theres an IO Errorjava.lang.UnsupportedOperationException - if not a scalar Variable or one-dimensional of length 1.ForbiddenConversionException - if data type not convertible to doublepublic java.lang.String readScalarString()
throws java.io.IOException
readScalarString in interface VariableIFjava.io.IOException - if theres an IO Errorjava.lang.UnsupportedOperationException - if not a scalar or one-dimensional.java.lang.ClassCastException - if data type not DataType.STRING or DataType.CHAR.protected Array getScalarData() throws java.io.IOException
java.io.IOExceptionprotected Array _read() throws java.io.IOException
java.io.IOExceptionpublic Array reallyRead(Variable client, CancelTask cancelTask) throws java.io.IOException
reallyRead in interface ProxyReaderclient - the client VariablecancelTask - user may canceljava.io.IOException - on errorprotected Array _read(Section section) throws java.io.IOException, InvalidRangeException
java.io.IOExceptionInvalidRangeExceptionpublic Array reallyRead(Variable client, Section section, CancelTask cancelTask) throws java.io.IOException, InvalidRangeException
reallyRead in interface ProxyReaderclient - the client Variablesection - the section of data to read.cancelTask - user may canceljava.io.IOException - on errorInvalidRangeException - if section has incorrect rank or illegal shape.public long readToByteChannel(Section section, java.nio.channels.WritableByteChannel wbc) throws java.io.IOException, InvalidRangeException
java.io.IOExceptionInvalidRangeExceptionpublic long readToStream(Section section, java.io.OutputStream out) throws java.io.IOException, InvalidRangeException
java.io.IOExceptionInvalidRangeExceptionpublic java.lang.String getNameAndDimensions()
public java.lang.String getNameAndDimensions(boolean strict)
strict - strictly comply with ncgen syntax, with name escaping. otherwise, get extra info, no escapingpublic void getNameAndDimensions(java.lang.StringBuilder buf)
buf - add info to this StringBuilderpublic void getNameAndDimensions(java.lang.StringBuffer buf)
buf - add info to this StringBufferpublic void getNameAndDimensions(java.lang.StringBuilder buf,
boolean useFullName,
boolean strict)
buf - add info to thisuseFullName - use full name else short name. strict = true implies short namestrict - strictly comply with ncgen syntax, with name escaping. otherwise, get extra info, no escapingpublic void getNameAndDimensions(java.util.Formatter buf,
boolean useFullName,
boolean strict)
getNameAndDimensions in interface VariableIFbuf - add info to thisuseFullName - use full name else short name. strict = true implies short namestrict - strictly comply with ncgen syntax, with name escaping. otherwise, get extra info, no escapingpublic java.lang.String toString()
toString in class java.lang.Objectpublic java.lang.String writeCDL(boolean useFullName,
boolean strict)
useFullName - use full name, else use short namestrict - strictly comply with ncgen syntaxprotected void writeCDL(java.util.Formatter buf,
Indent indent,
boolean useFullName,
boolean strict)
public java.lang.String toStringDebug()
toStringDebug in interface VariableIFprotected java.lang.String extraInfo()
public java.lang.String getDatasetLocation()
public boolean equals(java.lang.Object oo)
equals in class java.lang.Objectpublic int hashCode()
hashCode in class java.lang.Objectpublic void hashCodeShow(Indent indent)
hashCodeShow in class CDMNodepublic int compareTo(VariableSimpleIF o)
compareTo in interface java.lang.Comparable<VariableSimpleIF>public void setDataType(DataType dataType)
dataType - set to this valuepublic java.lang.String setName(java.lang.String shortName)
shortName - set to this valuepublic void setParentGroup(Group group)
setParentGroup in class CDMNodegroup - set to this valuepublic void setElementSize(int elementSize)
elementSize - set to this valuepublic Attribute addAttribute(Attribute att)
addAttribute in interface AttributeContaineratt - add this Attributepublic void addAll(java.lang.Iterable<Attribute> atts)
addAll in interface AttributeContainerpublic boolean remove(Attribute a)
a - remove this attributepublic boolean removeAttribute(java.lang.String attName)
attName - if exists, remove this attributepublic boolean removeAttributeIgnoreCase(java.lang.String attName)
attName - if exists, remove this attributepublic void setDimensions(java.util.List<Dimension> dims)
dims - list of type ucar.nc2.Dimensionpublic void resetShape()
public void setDimensions(java.lang.String dimString)
dimString - : whitespace separated list of dimension names, or '*' for Dimension.UNKNOWN, or number for anon dimension. null or empty String is a scalar.public void resetDimensions()
public void setDimensionsAnonymous(int[] shape)
throws InvalidRangeException
shape - defines the dimension lengths. must be > 0, or -1 for VLENInvalidRangeException - if any shape < 1public void setIsScalar()
public void setDimension(int idx,
Dimension dim)
idx - index into dimension arraydim - to setpublic Variable setImmutable()
public boolean isImmutable()
public java.lang.Object getSPobject()
public void setSPobject(java.lang.Object spiObject)
spiObject - the IOSP objectpublic int getSizeToCache()
public void setSizeToCache(int sizeToCache)
sizeToCache - size at which caching happens. < 0 means use defaultspublic void setCaching(boolean caching)
caching - set if caching.public boolean isCaching()
This will always return false if caching isn't permitted.
public void invalidateCache()
public void setCachedData(Array cacheData)
public void setCachedData(Array cacheData, boolean isMetadata)
cacheData - cache this ArrayisMetadata - : synthesized data, set true if must be saved in NcML output (ie data not actually in the file).public void createNewCache()
public boolean hasCachedData()
public void setValues(int npts,
double start,
double incr)
npts - number of values, must = v.getSize()start - starting valueincr - incrementpublic void setValues(java.util.List<java.lang.String> values)
throws java.lang.IllegalArgumentException
values - list of Stringsjava.lang.IllegalArgumentException - if values array not correct size, or values wont parse to the correct typepublic java.util.List<Dimension> getDimensionsAll()
getDimensionsAll in interface VariableIFpublic int[] getShapeAll()
public boolean isCoordinateVariable()
isCoordinateVariable in interface VariableIFpublic boolean isUnknownLength()