public class NetcdfFile extends java.lang.Object implements FileCacheable, java.io.Closeable
Be sure to close the file when done, best practice is to enclose in a try/finally block:
NetcdfFile ncfile = null; try { ncfile = NetcdfFile.open(fileName); ... } finally { ncfile.close(); }
Modifier and Type | Field and Description |
---|---|
protected FileCacheIF |
cache |
protected java.lang.String |
cacheName |
protected static boolean |
debugCompress |
protected static boolean |
debugSPI |
protected java.util.List<Dimension> |
dimensions |
protected java.util.List<Attribute> |
gattributes |
protected java.lang.String |
id |
static java.lang.String |
IOSP_MESSAGE_ADD_RECORD_STRUCTURE |
static java.lang.String |
IOSP_MESSAGE_CONVERT_RECORD_STRUCTURE |
static java.lang.String |
IOSP_MESSAGE_RANDOM_ACCESS_FILE |
static java.lang.String |
IOSP_MESSAGE_REMOVE_RECORD_STRUCTURE |
protected java.lang.String |
location |
static java.lang.String |
reservedCdl |
static java.lang.String |
reservedFullName |
static java.lang.String |
reservedSectionSpec |
protected Group |
rootGroup |
protected static boolean |
showRequest |
protected IOServiceProvider |
spi |
protected java.lang.String |
title |
protected java.util.List<Variable> |
variables |
Modifier | Constructor and Description |
---|---|
protected |
NetcdfFile()
For subclass construction.
|
protected |
NetcdfFile(IOServiceProvider spi,
RandomAccessFile raf,
java.lang.String location,
CancelTask cancelTask)
Open an existing netcdf file, passing in the iosp and the raf.
|
protected |
NetcdfFile(IOServiceProvider spi,
java.lang.String location)
Open an existing netcdf file (read only) , but dont do nuttin else
Use NetcdfFileSubclass to access this constructor
|
protected |
NetcdfFile(NetcdfFile ncfile)
Copy constructor, used by NetcdfDataset.
|
|
NetcdfFile(java.lang.String filename)
Deprecated.
use NetcdfFile.open( location) or NetcdfDataset.openFile( location)
|
protected |
NetcdfFile(java.lang.String iospClassName,
java.lang.Object iospParam,
java.lang.String location,
int buffer_size,
CancelTask cancelTask)
Open an existing netcdf file (read only), using the specified iosp.
|
|
NetcdfFile(java.net.URL url)
Deprecated.
use NetcdfFile.open( http:location) or NetcdfDataset.openFile( http:location)
|
Modifier and Type | Method and Description |
---|---|
Attribute |
addAttribute(Group parent,
Attribute att)
Add an attribute to a group.
|
Attribute |
addAttribute(Group parent,
java.lang.String name,
java.lang.String value)
Add optional String attribute to a group.
|
Dimension |
addDimension(Group parent,
Dimension d)
Add a shared Dimension to a Group.
|
Group |
addGroup(Group parent,
Group g)
Add a group to the parent group.
|
Variable |
addStringVariable(Group g,
java.lang.String shortName,
java.lang.String dims,
int strlen)
Create a new Variable of type Datatype.CHAR, and add to the given group.
|
Variable |
addVariable(Group g,
java.lang.String shortName,
DataType dtype,
java.lang.String dims)
Create a new Variable, and add to the given group.
|
Variable |
addVariable(Group g,
Variable v)
Add a Variable to the given group.
|
Attribute |
addVariableAttribute(Variable v,
Attribute att)
Add a variable attribute.
|
static java.lang.String |
canonicalizeUriString(java.lang.String location)
Removes the
"file:" or "file://" prefix from the location, if necessary. |
static boolean |
canOpen(java.lang.String location)
Find out if the file can be opened, but dont actually open it.
|
void |
close()
Close all resources (files, sockets, etc) associated with this file.
|
void |
empty()
Completely empty the objects in the netcdf file.
|
Attribute |
findAttribute(java.lang.String fullNameEscaped)
Find an attribute, with the specified (escaped full) name.
|
java.lang.String |
findAttValueIgnoreCase(Variable v,
java.lang.String attName,
java.lang.String defaultValue)
Find a String-valued global or variable Attribute by
Attribute name (ignore case), return the Value of the Attribute.
|
Dimension |
findDimension(java.lang.String fullName)
Finds a Dimension with the specified full name.
|
Attribute |
findGlobalAttribute(java.lang.String name)
Look up global Attribute by (full) name.
|
Attribute |
findGlobalAttributeIgnoreCase(java.lang.String name)
Look up global Attribute by name, ignore case.
|
Group |
findGroup(java.lang.String fullName)
Find a Group, with the specified (full) name.
|
Variable |
findVariable(Group g,
java.lang.String shortName) |
Variable |
findVariable(java.lang.String fullNameEscaped)
Find a Variable, with the specified (escaped full) name.
|
Variable |
findVariableByAttribute(Group g,
java.lang.String attName,
java.lang.String attValue) |
void |
finish()
Finish constructing the object model.
|
java.lang.String |
getCacheName()
Public by accident.
|
java.lang.String |
getDetailInfo()
Access to iosp debugging info.
|
void |
getDetailInfo(java.util.Formatter f) |
java.util.List<Dimension> |
getDimensions()
Get the shared Dimensions used in this file.
|
java.lang.String |
getFileTypeDescription()
Get a human-readable description for this file type.
|
java.lang.String |
getFileTypeId()
Get the file type id for the underlying data source.
|
java.lang.String |
getFileTypeVersion()
Get the version of this file type.
|
java.util.List<Attribute> |
getGlobalAttributes()
Returns the set of global attributes associated with this file.
|
java.lang.String |
getId()
Get the globally unique dataset identifier, if it exists.
|
IOServiceProvider |
getIosp()
DO NOT USE - public by accident
|
long |
getLastModified()
Returns the time that the underlying file(s) were last modified.
|
java.lang.String |
getLocation()
Get the NetcdfFile location.
|
Group |
getRootGroup()
Get the root group.
|
protected StructureDataIterator |
getStructureIterator(Structure s,
int bufferSize) |
java.lang.String |
getTitle()
Get the human-readable title, if it exists.
|
Dimension |
getUnlimitedDimension()
Return the unlimited (record) dimension, or null if not exist.
|
java.util.List<Variable> |
getVariables()
Get all of the variables in the file, in all groups.
|
boolean |
hasUnlimitedDimension()
Return true if this file has one or more unlimited (record) dimension.
|
static boolean |
iospRegistered(java.lang.Class iospClass)
See if a specific IOServiceProvider is registered
|
static void |
main(java.lang.String[] arg)
debugging - do not use
|
protected static java.lang.String |
makeFullName(CDMNode v)
Given a CDMNode, create its full name with
appropriate backslash escaping.
|
protected static java.lang.String |
makeFullName(CDMNode node,
java.lang.String reservedChars)
Given a CDMNode, create its full name with
appropriate backslash escaping of the specified characters.
|
protected static java.lang.String |
makeFullNameSectionSpec(CDMNode v)
Given a CDMNode, create its full name with
appropriate backslash escaping for use in a section spec.
|
protected java.lang.String |
makeFullNameWithString(Group parent,
java.lang.String name)
Create a synthetic full name from a group plus a string
|
static java.lang.String |
makeNameUnescaped(java.lang.String vname)
Unescape any escaped characters in a name.
|
protected java.lang.Boolean |
makeRecordStructure()
If there is an unlimited dimension, make all variables that use it into a Structure.
|
protected Group |
makeRootGroup() |
static java.lang.String |
makeValidCDLName(java.lang.String vname)
Escape special characters in a netcdf short name when
it is intended for use in CDL.
|
static java.lang.String |
makeValidCdmObjectName(java.lang.String shortName)
Create a valid CDM object name.
|
static java.lang.String |
makeValidPathName(java.lang.String vname)
Escape special characters in a netcdf short name when
it is intended for use in a fullname
|
static java.lang.String |
makeValidSectionSpecName(java.lang.String vname)
Escape special characters in a netcdf short name when
it is intended for use in a sectionSpec
|
static NetcdfFile |
open(RandomAccessFile raf,
java.lang.String location,
CancelTask cancelTask,
java.lang.Object iospMessage) |
static NetcdfFile |
open(java.lang.String location)
Open an existing netcdf file (read only).
|
static NetcdfFile |
open(java.lang.String location,
CancelTask cancelTask)
Open an existing file (read only), with option of cancelling.
|
static NetcdfFile |
open(java.lang.String location,
int buffer_size,
CancelTask cancelTask)
Open an existing file (read only), with option of cancelling, setting the RandomAccessFile buffer size for efficiency.
|
static NetcdfFile |
open(java.lang.String location,
int buffer_size,
CancelTask cancelTask,
java.lang.Object iospMessage)
Open an existing file (read only), with option of cancelling, setting the RandomAccessFile buffer size for efficiency,
with an optional special object for the iosp.
|
static NetcdfFile |
open(java.lang.String location,
java.lang.String iospClassName,
int bufferSize,
CancelTask cancelTask,
java.lang.Object iospMessage)
Open an existing file (read only), specifying which IOSP is to be used.
|
static NetcdfFile |
openInMemory(java.lang.String filename)
Read a local CDM file into memory.
|
static NetcdfFile |
openInMemory(java.lang.String name,
byte[] data)
Open an in-memory netcdf file.
|
static NetcdfFile |
openInMemory(java.lang.String name,
byte[] data,
java.lang.String iospClassName)
Open an in-memory netcdf file, with a specific iosp.
|
static NetcdfFile |
openInMemory(java.net.URI uri)
Read a remote CDM file into memory.
|
void |
reacquire() |
Array |
read(java.lang.String variableSection,
boolean flatten)
Deprecated.
use readSection(), flatten=false no longer supported
|
java.util.List<Array> |
readArrays(java.util.List<Variable> variables)
Do a bulk read on a list of Variables and
return a corresponding list of Array that contains the results
of a full read on each Variable.
|
double |
readAttributeDouble(Variable v,
java.lang.String attName,
double defValue) |
int |
readAttributeInteger(Variable v,
java.lang.String attName,
int defValue) |
protected Array |
readData(Variable v,
Section ranges) |
Array |
readSection(java.lang.String variableSection)
Read a variable using the given section specification.
|
protected long |
readToByteChannel(Variable v,
Section section,
java.nio.channels.WritableByteChannel wbc)
Read data from a top level Variable and send data to a WritableByteChannel.
|
protected long |
readToOutputStream(Variable v,
Section section,
java.io.OutputStream out) |
static void |
registerIOProvider(java.lang.Class iospClass)
Register an IOServiceProvider.
|
static void |
registerIOProvider(java.lang.Class iospClass,
boolean last)
Register an IOServiceProvider.
|
static void |
registerIOProvider(java.lang.String className)
Register an IOServiceProvider, using its class string name.
|
void |
release() |
boolean |
removeDimension(Group g,
java.lang.String dimName)
Remove a shared Dimension from a Group by name.
|
protected java.lang.Boolean |
removeRecordStructure() |
boolean |
removeVariable(Group g,
java.lang.String varName)
Remove a Variable from the given group by name.
|
java.lang.Object |
sendIospMessage(java.lang.Object message)
Generic way to send a "message" to the underlying IOSP.
|
protected void |
setCacheName(java.lang.String cacheName)
Public by accident.
|
static void |
setDebugFlags(DebugFlags debugFlag)
debugging
|
void |
setFileCache(FileCacheIF cache)
Public by accident.
|
void |
setId(java.lang.String id)
Set the globally unique dataset identifier.
|
NetcdfFile |
setImmutable()
Make this immutable.
|
void |
setLocation(java.lang.String location)
Set the location, a URL or local filename.
|
static void |
setProperty(java.lang.String name,
java.lang.String value)
Set properties.
|
void |
setTitle(java.lang.String title)
Set the dataset "human readable" title.
|
protected void |
showCached(java.util.Formatter f) |
protected void |
showProxies(java.util.Formatter f) |
boolean |
syncExtend()
Extend the file if needed, in a way that is compatible with the current metadata, that is,
does not invalidate structural metadata held by the application.
|
java.lang.String |
toString()
CDL representation of Netcdf header info, non strict
|
protected java.lang.String |
toStringDebug(java.lang.Object o)
Access to iosp debugging info.
|
void |
toStringEnd(java.io.PrintWriter pw) |
protected void |
toStringStart(java.util.Formatter f,
Indent indent,
boolean strict) |
void |
toStringStart(java.io.PrintWriter pw,
boolean strict) |
protected void |
writeCDL(java.util.Formatter f,
Indent indent,
boolean strict) |
void |
writeCDL(java.io.OutputStream out,
boolean strict)
Write CDL representation to OutputStream.
|
void |
writeCDL(java.io.PrintWriter pw,
boolean strict)
Write CDL representation to PrintWriter.
|
void |
writeNcML(java.io.OutputStream os,
java.lang.String uri)
Write the NcML representation: dont show coodinate values
|
void |
writeNcML(java.io.Writer writer,
java.lang.String uri)
Write the NcML representation: dont show coodinate values
|
public static final java.lang.String IOSP_MESSAGE_ADD_RECORD_STRUCTURE
public static final java.lang.String IOSP_MESSAGE_CONVERT_RECORD_STRUCTURE
public static final java.lang.String IOSP_MESSAGE_REMOVE_RECORD_STRUCTURE
public static final java.lang.String IOSP_MESSAGE_RANDOM_ACCESS_FILE
protected static boolean debugSPI
protected static boolean debugCompress
protected static boolean showRequest
protected java.lang.String location
protected java.lang.String id
protected java.lang.String title
protected java.lang.String cacheName
protected Group rootGroup
protected FileCacheIF cache
protected IOServiceProvider spi
protected java.util.List<Variable> variables
protected java.util.List<Dimension> dimensions
protected java.util.List<Attribute> gattributes
public static final java.lang.String reservedFullName
public static final java.lang.String reservedSectionSpec
public static final java.lang.String reservedCdl
public NetcdfFile(java.lang.String filename) throws java.io.IOException
filename
- locationjava.io.IOException
- if errorpublic NetcdfFile(java.net.URL url) throws java.io.IOException
url
- HTTP URL locationjava.io.IOException
- if errorprotected NetcdfFile(java.lang.String iospClassName, java.lang.Object iospParam, java.lang.String location, int buffer_size, CancelTask cancelTask) throws java.io.IOException, java.lang.IllegalAccessException, java.lang.InstantiationException, java.lang.ClassNotFoundException
iospClassName
- the name of the class implementing IOServiceProvideriospParam
- parameter to pass to the IOSP (before open is called)location
- location of file. This is a URL string, or a local pathname.buffer_size
- use this buffer size on the RandomAccessFilecancelTask
- allow user to canceljava.lang.ClassNotFoundException
- if the iospClassName cannot be foundjava.lang.IllegalAccessException
- if the class or its nullary constructor is not accessible.java.lang.InstantiationException
- if the class cannot be instatiated, eg if it has no nullary constructorjava.io.IOException
- if I/O errorprotected NetcdfFile(IOServiceProvider spi, RandomAccessFile raf, java.lang.String location, CancelTask cancelTask) throws java.io.IOException
spi
- use this IOServiceProvider instanceraf
- read from this RandomAccessFilecancelTask
- allow user to cancellocation
- location of datajava.io.IOException
- if I/O errorprotected NetcdfFile(IOServiceProvider spi, java.lang.String location)
spi
- use this IOServiceProvider instancelocation
- location of dataprotected NetcdfFile()
protected NetcdfFile(NetcdfFile ncfile)
ncfile
- copy from herepublic static void registerIOProvider(java.lang.String className) throws java.lang.IllegalAccessException, java.lang.InstantiationException, java.lang.ClassNotFoundException
className
- Class that implements IOServiceProvider.java.lang.IllegalAccessException
- if class is not accessible.java.lang.InstantiationException
- if class doesnt have a no-arg constructor.java.lang.ClassNotFoundException
- if class not found.public static void registerIOProvider(java.lang.Class iospClass) throws java.lang.IllegalAccessException, java.lang.InstantiationException
iospClass
- Class that implements IOServiceProvider.java.lang.IllegalAccessException
- if class is not accessible.java.lang.InstantiationException
- if class doesnt have a no-arg constructor.java.lang.ClassCastException
- if class doesnt implement IOServiceProvider interface.public static void registerIOProvider(java.lang.Class iospClass, boolean last) throws java.lang.IllegalAccessException, java.lang.InstantiationException
iospClass
- Class that implements IOServiceProvider.last
- true=>insert at the end of the list; otherwise frontjava.lang.IllegalAccessException
- if class is not accessible.java.lang.InstantiationException
- if class doesnt have a no-arg constructor.java.lang.ClassCastException
- if class doesnt implement IOServiceProvider interface.public static boolean iospRegistered(java.lang.Class iospClass)
iospClass
- Class for which to searchpublic static void setDebugFlags(DebugFlags debugFlag)
debugFlag
- debug flagspublic static void setProperty(java.lang.String name, java.lang.String value)
name
- name of propertyvalue
- value of propertypublic static NetcdfFile open(java.lang.String location) throws java.io.IOException
location
- location of file.java.io.IOException
- if errorpublic static NetcdfFile open(java.lang.String location, CancelTask cancelTask) throws java.io.IOException
location
- location of the file.cancelTask
- allow task to be cancelled; may be null.java.io.IOException
- if errorpublic static NetcdfFile open(java.lang.String location, int buffer_size, CancelTask cancelTask) throws java.io.IOException
location
- location of file.buffer_size
- RandomAccessFile buffer size, if <= 0, use default sizecancelTask
- allow task to be cancelled; may be null.java.io.IOException
- if errorpublic static NetcdfFile open(java.lang.String location, int buffer_size, CancelTask cancelTask, java.lang.Object iospMessage) throws java.io.IOException
location
- location of file. This may be a
buffer_size
- RandomAccessFile buffer size, if <= 0, use default sizecancelTask
- allow task to be cancelled; may be null.iospMessage
- special iosp tweaking (sent before open is called), may be nulljava.io.IOException
- if errorpublic static boolean canOpen(java.lang.String location) throws java.io.IOException
location
- same as openjava.io.IOException
- on read errorpublic static NetcdfFile open(java.lang.String location, java.lang.String iospClassName, int bufferSize, CancelTask cancelTask, java.lang.Object iospMessage) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException, java.io.IOException
location
- location of fileiospClassName
- fully qualified class name of the IOSP class to handle this filebufferSize
- RandomAccessFile buffer size, if <= 0, use default sizecancelTask
- allow task to be cancelled; may be null.iospMessage
- special iosp tweaking (sent before open is called), may be nulljava.io.IOException
- if read errorjava.lang.ClassNotFoundException
- cannat find iospClassName in thye class pathjava.lang.InstantiationException
- if class cannot be instantiatedjava.lang.IllegalAccessException
- if class is not accessiblepublic static java.lang.String canonicalizeUriString(java.lang.String location)
"file:"
or "file://"
prefix from the location, if necessary. Also replaces
back slashes with forward slashes.location
- a URI string.public static NetcdfFile openInMemory(java.lang.String name, byte[] data, java.lang.String iospClassName) throws java.io.IOException, java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException
name
- name of the dataset. Typically use the filename or URI.data
- in-memory netcdf fileiospClassName
- fully qualified class name of the IOSP class to handle this filejava.io.IOException
- if read errorjava.lang.ClassNotFoundException
- cannat find iospClassName in the class pathjava.lang.InstantiationException
- if class cannot be instantiatedjava.lang.IllegalAccessException
- if class is not accessiblepublic static NetcdfFile openInMemory(java.lang.String name, byte[] data) throws java.io.IOException
name
- name of the dataset. Typically use the filename or URI.data
- in-memory netcdf filejava.io.IOException
- if errorpublic static NetcdfFile openInMemory(java.lang.String filename) throws java.io.IOException
filename
- location of CDM file, must be a local file.java.io.IOException
- if error reading filepublic static NetcdfFile openInMemory(java.net.URI uri) throws java.io.IOException
uri
- location of CDM file, must be accessible through url.toURL().openStream().java.io.IOException
- if error reading filepublic static NetcdfFile open(RandomAccessFile raf, java.lang.String location, CancelTask cancelTask, java.lang.Object iospMessage) throws java.io.IOException
java.io.IOException
public void close() throws java.io.IOException
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
close
in interface FileCacheable
java.io.IOException
- if error when closingpublic void release() throws java.io.IOException
release
in interface FileCacheable
java.io.IOException
public void reacquire() throws java.io.IOException
reacquire
in interface FileCacheable
java.io.IOException
public void setFileCache(FileCacheIF cache)
setFileCache
in interface FileCacheable
cache
- must store this, use it on close as above.public java.lang.String getCacheName()
protected void setCacheName(java.lang.String cacheName)
cacheName
- name in the cache, should be unique for this NetcdfFile. Usually the location.public java.lang.String getLocation()
getLocation
in interface FileCacheable
public java.lang.String getId()
public java.lang.String getTitle()
public Group getRootGroup()
public java.util.List<Variable> getVariables()
public Group findGroup(java.lang.String fullName)
fullName
- eg "/group/subgroup/wantGroup". Null or empty string returns the root group.public Variable findVariable(java.lang.String fullNameEscaped)
fullNameEscaped
- eg "/group/subgroup/name1.name2.name".public Variable findVariableByAttribute(Group g, java.lang.String attName, java.lang.String attValue)
public java.util.List<Dimension> getDimensions()
If the dimensions are in a group, the dimension name will have the group name, in order to disambiguate the dimensions. This means that a Variable's dimensions will not match Dimensions in this list. Therefore it is better to get the shared Dimensions directly from the Groups.
public Dimension findDimension(java.lang.String fullName)
fullName
will be treated as if it were there. In other words, the first name token in
fullName
is treated as the short name of a Group or Dimension, relative to the root group.fullName
- Dimension full name, e.g. "/group/subgroup/dim".null
if it wasn't found.public boolean hasUnlimitedDimension()
public Dimension getUnlimitedDimension()
public java.util.List<Attribute> getGlobalAttributes()
public Attribute findGlobalAttribute(java.lang.String name)
name
- the name of the attributepublic Attribute findGlobalAttributeIgnoreCase(java.lang.String name)
name
- the name of the attributepublic Attribute findAttribute(java.lang.String fullNameEscaped)
fullNameEscaped
- eg "@attName", "/group/subgroup/@attName" or "/group/subgroup/varname.name2.name@attName"public java.lang.String findAttValueIgnoreCase(Variable v, java.lang.String attName, java.lang.String defaultValue)
v
- the variable or null for global attributeattName
- the (full) name of the attribute, case insensitivedefaultValue
- return this if attribute not foundpublic double readAttributeDouble(Variable v, java.lang.String attName, double defValue)
public int readAttributeInteger(Variable v, java.lang.String attName, int defValue)
public java.lang.String toString()
toString
in class java.lang.Object
public void writeCDL(java.io.OutputStream out, boolean strict)
out
- write to this OutputStreamstrict
- if true, make it stricly CDL, otherwise, add a little extra infopublic void writeCDL(java.io.PrintWriter pw, boolean strict)
pw
- write to this PrintWriterstrict
- if true, make it stricly CDL, otherwise, add a little extra infopublic void toStringStart(java.io.PrintWriter pw, boolean strict)
public void toStringEnd(java.io.PrintWriter pw)
protected void writeCDL(java.util.Formatter f, Indent indent, boolean strict)
protected void toStringStart(java.util.Formatter f, Indent indent, boolean strict)
public void writeNcML(java.io.OutputStream os, java.lang.String uri) throws java.io.IOException
os
- : write to this Output Stream.uri
- use this for the url attribute; if null use getLocation(). // ??java.io.IOException
- if errorNCdumpW.writeNcML(ucar.nc2.NetcdfFile, java.io.Writer, boolean, java.lang.String)
public void writeNcML(java.io.Writer writer, java.lang.String uri) throws java.io.IOException
writer
- : write to this Writer, should have encoding of UTF-8 if applicableuri
- use this for the url attribute; if null use getLocation().java.io.IOException
- if errorNCdumpW.writeNcML(ucar.nc2.NetcdfFile, java.io.Writer, boolean, java.lang.String)
public boolean syncExtend() throws java.io.IOException
java.io.IOException
- if errorpublic long getLastModified()
FileCacheable
FileFactory
.getLastModified
in interface FileCacheable
long
value representing the time the file(s) were last modified or 0L
if the
last-modified time couldn't be determined for any reason.public Attribute addAttribute(Group parent, Attribute att)
parent
- add to this group. If group is null, use root groupatt
- add this attributepublic Attribute addAttribute(Group parent, java.lang.String name, java.lang.String value)
parent
- add to this group. If group is null, use root groupname
- attribute name, may not be nullvalue
- attribute value, may be null, in which case, do not adddpublic Group addGroup(Group parent, Group g)
parent
- add to this group. If group is null, use root groupg
- add this grouppublic Dimension addDimension(Group parent, Dimension d)
parent
- add to this group. If group is null, use root groupd
- add this Dimensionpublic boolean removeDimension(Group g, java.lang.String dimName)
g
- remove from this group. If group is null, use root groupdimName
- name of Dimension to remove.public Variable addVariable(Group g, Variable v)
g
- add to this group. If group is null, use root groupv
- add this Variablepublic Variable addVariable(Group g, java.lang.String shortName, DataType dtype, java.lang.String dims)
g
- add to this group. If group is null, use root groupshortName
- short name of the Variabledtype
- data type of the Variabledims
- list of dimension namespublic Variable addStringVariable(Group g, java.lang.String shortName, java.lang.String dims, int strlen)
g
- add to this group. If group is null, use root groupshortName
- short name of the Variabledims
- list of dimension namesstrlen
- dimension length of the inner (fastest changing) dimensionpublic boolean removeVariable(Group g, java.lang.String varName)
g
- remove from this group. If group is null, use root groupvarName
- name of variable to remove.public Attribute addVariableAttribute(Variable v, Attribute att)
v
- add to this Variable.att
- add this attributepublic java.lang.Object sendIospMessage(java.lang.Object message)
message
- iosp specific message
Special:protected java.lang.Boolean makeRecordStructure()
protected java.lang.Boolean removeRecordStructure()
public void setId(java.lang.String id)
id
- the idpublic void setTitle(java.lang.String title)
title
- the titlepublic void setLocation(java.lang.String location)
location
- the locationpublic NetcdfFile setImmutable()
public void empty()
protected Group makeRootGroup()
public void finish()
protected Array readData(Variable v, Section ranges) throws java.io.IOException, InvalidRangeException
java.io.IOException
InvalidRangeException
public Array readSection(java.lang.String variableSection) throws java.io.IOException, InvalidRangeException
variableSection
- the constraint expression.java.io.IOException
- if errorInvalidRangeException
- if variableSection is invalidprotected long readToByteChannel(Variable v, Section section, java.nio.channels.WritableByteChannel wbc) throws java.io.IOException, InvalidRangeException
v
- a top-level Variablesection
- the section of data to read.
There must be a Range for each Dimension in the variable, in order.
Note: no nulls allowed. IOSP may not modify.wbc
- write data to this WritableByteChanneljava.io.IOException
- if read errorInvalidRangeException
- if invalid sectionprotected long readToOutputStream(Variable v, Section section, java.io.OutputStream out) throws java.io.IOException, InvalidRangeException
java.io.IOException
InvalidRangeException
protected StructureDataIterator getStructureIterator(Structure s, int bufferSize) throws java.io.IOException
java.io.IOException
public java.util.List<Array> readArrays(java.util.List<Variable> variables) throws java.io.IOException
variables
- List of type Variablejava.io.IOException
- if read errorpublic Array read(java.lang.String variableSection, boolean flatten) throws java.io.IOException, InvalidRangeException
variableSection
- the constraint expression.flatten
- MUST BE TRUEjava.io.IOException
- if errorInvalidRangeException
- if variableSection is invalidprotected java.lang.String toStringDebug(java.lang.Object o)
o
- must be a Variable, Dimension, Attribute, or Grouppublic java.lang.String getDetailInfo()
public void getDetailInfo(java.util.Formatter f)
protected void showCached(java.util.Formatter f)
protected void showProxies(java.util.Formatter f)
public IOServiceProvider getIosp()
public java.lang.String getFileTypeId()
public java.lang.String getFileTypeDescription()
public java.lang.String getFileTypeVersion()
public static void main(java.lang.String[] arg) throws java.lang.Exception
java.lang.Exception
public static java.lang.String makeValidCdmObjectName(java.lang.String shortName)
shortName
- from this namepublic static java.lang.String makeValidCDLName(java.lang.String vname)
vname
- the namepublic static java.lang.String makeValidPathName(java.lang.String vname)
vname
- the namepublic static java.lang.String makeValidSectionSpecName(java.lang.String vname)
vname
- the namepublic static java.lang.String makeNameUnescaped(java.lang.String vname)
vname
- the escaped nameprotected static java.lang.String makeFullName(CDMNode v)
v
- the cdm nodeprotected static java.lang.String makeFullNameSectionSpec(CDMNode v)
v
- the cdm nodeprotected static java.lang.String makeFullName(CDMNode node, java.lang.String reservedChars)
node
- the cdm nodereservedChars
- the set of characters to escapeprotected java.lang.String makeFullNameWithString(Group parent, java.lang.String name)
parent
- parent groupname
- synthetic name string