public class NetcdfFile extends Object implements ucar.nc2.util.cache.FileCacheable, Closeable
Read-only scientific datasets that are accessible through the netCDF API.
Immutable after setImmutable()
is called. However, reading data is not
thread-safe.
Be sure to close the file when done. Either enclose in a try/finally block:
NetcdfFile ncfile = null; try { ncfile = NetcdfFile.open(fileName); // do stuff } finally { if(ncfile != null) { ncfile.close(); } }
Or better yet, use try-with-resources:
try (NetcdfFile ncfile = NetcdfFile.open(fileName)) { // do stuff }
Each object has a name (aka "full name") that is unique within the entire netcdf file, and a "short name" that is unique within the parent group. These coincide for objects in the root group, and so are backwards compatible with version 3 files.
Modifier and Type | Field and Description |
---|---|
protected ucar.nc2.util.cache.FileCacheIF |
cache |
protected String |
cacheName |
protected static boolean |
debugCompress |
protected static boolean |
debugSPI |
protected List<Dimension> |
dimensions |
protected List<Attribute> |
gattributes |
protected String |
id |
static String |
IOSP_MESSAGE_ADD_RECORD_STRUCTURE |
static String |
IOSP_MESSAGE_CONVERT_RECORD_STRUCTURE |
static String |
IOSP_MESSAGE_RANDOM_ACCESS_FILE |
static String |
IOSP_MESSAGE_REMOVE_RECORD_STRUCTURE |
protected String |
location |
static String |
reservedCdl |
static String |
reservedFullName |
static String |
reservedSectionSpec |
protected Group |
rootGroup |
protected static boolean |
showRequest |
protected IOServiceProvider |
spi |
protected String |
title |
protected List<Variable> |
variables |
Modifier | Constructor and Description |
---|---|
protected |
NetcdfFile()
For subclass construction.
|
protected |
NetcdfFile(IOServiceProvider spi,
RandomAccessFile raf,
String location,
CancelTask cancelTask)
Open an existing netcdf file, passing in the iosp and the raf.
|
protected |
NetcdfFile(IOServiceProvider spi,
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(String filename)
Deprecated.
use NetcdfFile.open( location) or NetcdfDataset.openFile( location)
|
protected |
NetcdfFile(String iospClassName,
Object iospParam,
String location,
int buffer_size,
CancelTask cancelTask)
Open an existing netcdf file (read only), using the specified iosp.
|
|
NetcdfFile(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,
String name,
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,
String shortName,
String dims,
int strlen)
Create a new Variable of type Datatype.CHAR, and add to the given group.
|
Variable |
addVariable(Group g,
String shortName,
DataType dtype,
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 String |
canonicalizeUriString(String location)
Removes the
"file:" or "file://" prefix from the location, if necessary. |
static boolean |
canOpen(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(String fullNameEscaped)
Find an attribute, with the specified (escaped full) name.
|
String |
findAttValueIgnoreCase(Variable v,
String attName,
String defaultValue)
Find a String-valued global or variable Attribute by
Attribute name (ignore case), return the Value of the Attribute.
|
Dimension |
findDimension(String fullName)
Finds a Dimension with the specified full name.
|
Attribute |
findGlobalAttribute(String name)
Look up global Attribute by (full) name.
|
Attribute |
findGlobalAttributeIgnoreCase(String name)
Look up global Attribute by name, ignore case.
|
Group |
findGroup(String fullName)
Find a Group, with the specified (full) name.
|
Variable |
findVariable(Group g,
String shortName) |
Variable |
findVariable(String fullNameEscaped)
Find a Variable, with the specified (escaped full) name.
|
Variable |
findVariableByAttribute(Group g,
String attName,
String attValue) |
void |
finish()
Finish constructing the object model.
|
String |
getCacheName()
Public by accident.
|
String |
getDetailInfo()
Access to iosp debugging info.
|
void |
getDetailInfo(Formatter f) |
List<Dimension> |
getDimensions()
Get the shared Dimensions used in this file.
|
String |
getFileTypeDescription()
Get a human-readable description for this file type.
|
String |
getFileTypeId()
Get the file type id for the underlying data source.
|
String |
getFileTypeVersion()
Get the version of this file type.
|
List<Attribute> |
getGlobalAttributes()
Returns the set of global attributes associated with this file.
|
String |
getId()
Get the globally unique dataset identifier, if it exists.
|
IOServiceProvider |
getIosp()
DO NOT USE - public by accident
|
long |
getLastModified() |
String |
getLocation()
Get the NetcdfFile location.
|
Group |
getRootGroup()
Get the root group.
|
protected StructureDataIterator |
getStructureIterator(Structure s,
int bufferSize) |
String |
getTitle()
Get the human-readable title, if it exists.
|
Dimension |
getUnlimitedDimension()
Return the unlimited (record) dimension, or null if not exist.
|
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 |
iospDeRegister(Class iospClass)
See if a specific IOServiceProvider is registered and if so, remove it.
|
static boolean |
iospRegistered(Class iospClass)
See if a specific IOServiceProvider is registered
|
static void |
main(String[] arg)
debugging - do not use
|
protected static String |
makeFullName(CDMNode v)
Given a CDMNode, create its full name with
appropriate backslash escaping.
|
protected static String |
makeFullName(CDMNode node,
String reservedChars)
Given a CDMNode, create its full name with
appropriate backslash escaping of the specified characters.
|
protected static String |
makeFullNameSectionSpec(CDMNode v)
Given a CDMNode, create its full name with
appropriate backslash escaping for use in a section spec.
|
protected String |
makeFullNameWithString(Group parent,
String name)
Create a synthetic full name from a group plus a string
|
static String |
makeNameUnescaped(String vname)
Unescape any escaped characters in a name.
|
protected Boolean |
makeRecordStructure()
If there is an unlimited dimension, make all variables that use it into a Structure.
|
protected Group |
makeRootGroup() |
static String |
makeValidCDLName(String vname)
Escape special characters in a netcdf short name when
it is intended for use in CDL.
|
static String |
makeValidCdmObjectName(String shortName)
Create a valid CDM object name.
|
static String |
makeValidPathName(String vname)
Escape special characters in a netcdf short name when
it is intended for use in a fullname
|
static String |
makeValidSectionSpecName(String vname)
Escape special characters in a netcdf short name when
it is intended for use in a sectionSpec
|
static NetcdfFile |
open(RandomAccessFile raf,
String location,
CancelTask cancelTask,
Object iospMessage) |
static NetcdfFile |
open(String location)
Open an existing netcdf file (read only).
|
static NetcdfFile |
open(String location,
CancelTask cancelTask)
Open an existing file (read only), with option of cancelling.
|
static NetcdfFile |
open(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(String location,
int buffer_size,
CancelTask cancelTask,
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(String location,
String iospClassName,
int bufferSize,
CancelTask cancelTask,
Object iospMessage)
Open an existing file (read only), specifying which IOSP is to be used.
|
static NetcdfFile |
openInMemory(String filename)
Read a local CDM file into memory.
|
static NetcdfFile |
openInMemory(String name,
byte[] data)
Open an in-memory netcdf file.
|
static NetcdfFile |
openInMemory(String name,
byte[] data,
String iospClassName)
Open an in-memory netcdf file, with a specific iosp.
|
static NetcdfFile |
openInMemory(URI uri)
Read a remote CDM file into memory.
|
void |
reacquire() |
Array |
read(String variableSection,
boolean flatten)
Deprecated.
use readSection(), flatten=false no longer supported
|
List<Array> |
readArrays(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,
String attName,
double defValue) |
int |
readAttributeInteger(Variable v,
String attName,
int defValue) |
protected Array |
readData(Variable v,
Section ranges) |
Array |
readSection(String variableSection)
Read a variable using the given section specification.
|
protected long |
readToByteChannel(Variable v,
Section section,
WritableByteChannel wbc)
Read data from a top level Variable and send data to a WritableByteChannel.
|
protected long |
readToOutputStream(Variable v,
Section section,
OutputStream out) |
static void |
registerIOProvider(Class iospClass)
Register an IOServiceProvider.
|
static void |
registerIOProvider(Class iospClass,
boolean last)
Register an IOServiceProvider.
|
static void |
registerIOProvider(String className)
Register an IOServiceProvider, using its class string name.
|
static void |
registerIOProviderPreferred(Class iospClass,
Class target)
Register an IOServiceProvider.
|
void |
release() |
boolean |
removeDimension(Group g,
String dimName)
Remove a shared Dimension from a Group by name.
|
protected Boolean |
removeRecordStructure() |
boolean |
removeVariable(Group g,
String varName)
Remove a Variable from the given group by name.
|
Object |
sendIospMessage(Object message)
Generic way to send a "message" to the underlying IOSP.
|
protected void |
setCacheName(String cacheName)
Public by accident.
|
static void |
setDebugFlags(DebugFlags debugFlag)
debugging
|
void |
setFileCache(ucar.nc2.util.cache.FileCacheIF cache)
Public by accident.
|
void |
setId(String id)
Set the globally unique dataset identifier.
|
NetcdfFile |
setImmutable()
Make this immutable.
|
void |
setLocation(String location)
Set the location, a URL or local filename.
|
static void |
setProperty(String name,
String value)
Set properties.
|
void |
setTitle(String title)
Set the dataset "human readable" title.
|
protected void |
showCached(Formatter f) |
protected void |
showProxies(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.
|
String |
toNcML(String url)
CDL representation of Netcdf header info, non strict
|
String |
toString()
CDL representation of Netcdf header info, non strict
|
protected String |
toStringDebug(Object o)
Access to iosp debugging info.
|
void |
toStringEnd(PrintWriter pw) |
protected void |
toStringStart(Formatter f,
Indent indent,
boolean strict) |
void |
toStringStart(PrintWriter pw,
boolean strict) |
protected void |
writeCDL(Formatter f,
Indent indent,
boolean strict) |
void |
writeCDL(OutputStream out,
boolean strict)
Write CDL representation to OutputStream.
|
void |
writeCDL(PrintWriter pw,
boolean strict)
Write CDL representation to PrintWriter.
|
void |
writeNcML(OutputStream os,
String uri)
Write the NcML representation: dont show coodinate values
|
void |
writeNcML(Writer writer,
String uri)
Write the NcML representation: dont show coodinate values
|
public static final String IOSP_MESSAGE_ADD_RECORD_STRUCTURE
public static final String IOSP_MESSAGE_CONVERT_RECORD_STRUCTURE
public static final String IOSP_MESSAGE_REMOVE_RECORD_STRUCTURE
public static final String IOSP_MESSAGE_RANDOM_ACCESS_FILE
protected static boolean debugSPI
protected static boolean debugCompress
protected static boolean showRequest
protected String location
protected String id
protected String title
protected String cacheName
protected Group rootGroup
protected ucar.nc2.util.cache.FileCacheIF cache
protected IOServiceProvider spi
public static final String reservedFullName
public static final String reservedSectionSpec
public static final String reservedCdl
public NetcdfFile(String filename) throws IOException
filename
- locationIOException
- if errorpublic NetcdfFile(URL url) throws IOException
url
- HTTP URL locationIOException
- if errorprotected NetcdfFile(String iospClassName, Object iospParam, String location, int buffer_size, CancelTask cancelTask) throws IOException, IllegalAccessException, InstantiationException, 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 cancelClassNotFoundException
- if the iospClassName cannot be foundIllegalAccessException
- if the class or its nullary constructor is not accessible.InstantiationException
- if the class cannot be instatiated, eg if it has no nullary constructorIOException
- if I/O errorprotected NetcdfFile(IOServiceProvider spi, RandomAccessFile raf, String location, CancelTask cancelTask) throws IOException
spi
- use this IOServiceProvider instanceraf
- read from this RandomAccessFilecancelTask
- allow user to cancellocation
- location of dataIOException
- if I/O errorprotected NetcdfFile(IOServiceProvider spi, String location)
spi
- use this IOServiceProvider instancelocation
- location of dataprotected NetcdfFile()
protected NetcdfFile(NetcdfFile ncfile)
ncfile
- copy from herepublic static void registerIOProvider(String className) throws IllegalAccessException, InstantiationException, ClassNotFoundException
className
- Class that implements IOServiceProvider.IllegalAccessException
- if class is not accessible.InstantiationException
- if class doesnt have a no-arg constructor.ClassNotFoundException
- if class not found.public static void registerIOProvider(Class iospClass) throws IllegalAccessException, InstantiationException
iospClass
- Class that implements IOServiceProvider.IllegalAccessException
- if class is not accessible.InstantiationException
- if class doesnt have a no-arg constructor.ClassCastException
- if class doesnt implement IOServiceProvider interface.public static void registerIOProvider(Class iospClass, boolean last) throws IllegalAccessException, InstantiationException
iospClass
- Class that implements IOServiceProvider.last
- true=>insert at the end of the list; otherwise frontIllegalAccessException
- if class is not accessible.InstantiationException
- if class doesnt have a no-arg constructor.ClassCastException
- if class doesnt implement IOServiceProvider interface.public static void registerIOProviderPreferred(Class iospClass, Class target) throws IllegalAccessException, InstantiationException
iospClass
- Class that implements IOServiceProvider.target
- Class to overrideIllegalAccessException
- if class is not accessible.InstantiationException
- if class doesnt have a no-arg constructor.ClassCastException
- if class doesnt implement IOServiceProvider interface.public static boolean iospRegistered(Class iospClass)
iospClass
- Class for which to searchpublic static boolean iospDeRegister(Class iospClass)
iospClass
- Class for which to search and removepublic static void setDebugFlags(DebugFlags debugFlag)
debugFlag
- debug flagspublic static void setProperty(String name, String value)
name
- name of propertyvalue
- value of propertypublic static NetcdfFile open(String location) throws IOException
location
- location of file.IOException
- if errorpublic static NetcdfFile open(String location, CancelTask cancelTask) throws IOException
location
- location of the file.cancelTask
- allow task to be cancelled; may be null.IOException
- if errorpublic static NetcdfFile open(String location, int buffer_size, CancelTask cancelTask) throws IOException
location
- location of file.buffer_size
- RandomAccessFile buffer size, if <= 0, use default sizecancelTask
- allow task to be cancelled; may be null.IOException
- if errorpublic static NetcdfFile open(String location, int buffer_size, CancelTask cancelTask, Object iospMessage) throws 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 nullIOException
- if errorpublic static boolean canOpen(String location) throws IOException
location
- same as openIOException
- on read errorpublic static NetcdfFile open(String location, String iospClassName, int bufferSize, CancelTask cancelTask, Object iospMessage) throws ClassNotFoundException, IllegalAccessException, InstantiationException, 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 nullIOException
- if read errorClassNotFoundException
- cannat find iospClassName in thye class pathInstantiationException
- if class cannot be instantiatedIllegalAccessException
- if class is not accessiblepublic static String canonicalizeUriString(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(String name, byte[] data, String iospClassName) throws IOException, ClassNotFoundException, IllegalAccessException, 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 fileIOException
- if read errorClassNotFoundException
- cannat find iospClassName in the class pathInstantiationException
- if class cannot be instantiatedIllegalAccessException
- if class is not accessiblepublic static NetcdfFile openInMemory(String name, byte[] data) throws IOException
name
- name of the dataset. Typically use the filename or URI.data
- in-memory netcdf fileIOException
- if errorpublic static NetcdfFile openInMemory(String filename) throws IOException
filename
- location of CDM file, must be a local file.IOException
- if error reading filepublic static NetcdfFile openInMemory(URI uri) throws IOException
uri
- location of CDM file, must be accessible through url.toURL().openStream().IOException
- if error reading filepublic static NetcdfFile open(RandomAccessFile raf, String location, CancelTask cancelTask, Object iospMessage) throws IOException
IOException
public void close() throws IOException
close
in interface Closeable
close
in interface AutoCloseable
close
in interface ucar.nc2.util.cache.FileCacheable
IOException
- if error when closingpublic void release() throws IOException
release
in interface ucar.nc2.util.cache.FileCacheable
IOException
public void reacquire() throws IOException
reacquire
in interface ucar.nc2.util.cache.FileCacheable
IOException
public void setFileCache(ucar.nc2.util.cache.FileCacheIF cache)
setFileCache
in interface ucar.nc2.util.cache.FileCacheable
public String getCacheName()
protected void setCacheName(String cacheName)
cacheName
- name in the cache, should be unique for this NetcdfFile. Usually the location.public String getLocation()
getLocation
in interface ucar.nc2.util.cache.FileCacheable
public String getId()
public String getTitle()
public Group getRootGroup()
public List<Variable> getVariables()
public Group findGroup(String fullName)
fullName
- eg "/group/subgroup/wantGroup". Null or empty string returns the root group.public Variable findVariable(String fullNameEscaped)
fullNameEscaped
- eg "/group/subgroup/name1.name2.name".public Variable findVariableByAttribute(Group g, String attName, String attValue)
public 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(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 List<Attribute> getGlobalAttributes()
public Attribute findGlobalAttribute(String name)
name
- the name of the attributepublic Attribute findGlobalAttributeIgnoreCase(String name)
name
- the name of the attributepublic Attribute findAttribute(String fullNameEscaped)
fullNameEscaped
- eg "@attName", "/group/subgroup/@attName" or "/group/subgroup/varname.name2.name@attName"public String findAttValueIgnoreCase(Variable v, String attName, String defaultValue)
v
- the variable or null for global attributeattName
- the (full) name of the attribute, case insensitivedefaultValue
- return this if attribute not foundpublic String toString()
public String toNcML(String url) throws IOException
IOException
public void writeCDL(OutputStream out, boolean strict)
out
- write to this OutputStreamstrict
- if true, make it stricly CDL, otherwise, add a little extra infopublic void writeCDL(PrintWriter pw, boolean strict)
pw
- write to this PrintWriterstrict
- if true, make it stricly CDL, otherwise, add a little extra infopublic void toStringStart(PrintWriter pw, boolean strict)
public void toStringEnd(PrintWriter pw)
public void writeNcML(OutputStream os, String uri) throws IOException
os
- : write to this OutputStream. Will be closed at end of the method.uri
- use this for the url attribute; if null use getLocation(). // ??IOException
- if errorNcMLWriter.writeToStream(org.jdom2.Element, java.io.OutputStream)
public void writeNcML(Writer writer, String uri) throws IOException
writer
- : write to this Writer, should have encoding of UTF-8 if applicable. Will be closed at end of the
method.uri
- use this for the url attribute; if null use getLocation().IOException
- if errorNcMLWriter.writeToWriter(org.jdom2.Element, java.io.Writer)
public boolean syncExtend() throws IOException
IOException
- if errorpublic long getLastModified()
getLastModified
in interface ucar.nc2.util.cache.FileCacheable
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, String name, 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, 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, String shortName, DataType dtype, 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, String shortName, 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, 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 Object sendIospMessage(Object message)
message
- iosp specific message
Special:protected Boolean makeRecordStructure()
protected Boolean removeRecordStructure()
public void setId(String id)
id
- the idpublic void setTitle(String title)
title
- the titlepublic void setLocation(String location)
location
- the locationpublic NetcdfFile setImmutable()
public void empty()
protected Group makeRootGroup()
public void finish()
protected Array readData(Variable v, Section ranges) throws IOException, InvalidRangeException
IOException
InvalidRangeException
public Array readSection(String variableSection) throws IOException, InvalidRangeException
variableSection
- the constraint expression.IOException
- if errorInvalidRangeException
- if variableSection is invalidprotected long readToByteChannel(Variable v, Section section, WritableByteChannel wbc) throws 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 WritableByteChannelIOException
- if read errorInvalidRangeException
- if invalid sectionprotected long readToOutputStream(Variable v, Section section, OutputStream out) throws IOException, InvalidRangeException
IOException
InvalidRangeException
protected StructureDataIterator getStructureIterator(Structure s, int bufferSize) throws IOException
IOException
public List<Array> readArrays(List<Variable> variables) throws IOException
variables
- List of type VariableIOException
- if read errorpublic Array read(String variableSection, boolean flatten) throws IOException, InvalidRangeException
variableSection
- the constraint expression.flatten
- MUST BE TRUEIOException
- if errorInvalidRangeException
- if variableSection is invalidprotected String toStringDebug(Object o)
o
- must be a Variable, Dimension, Attribute, or Grouppublic String getDetailInfo()
public void getDetailInfo(Formatter f)
protected void showCached(Formatter f)
protected void showProxies(Formatter f)
public IOServiceProvider getIosp()
@Nonnull public String getFileTypeId()
public String getFileTypeDescription()
public String getFileTypeVersion()
public static void main(String[] arg) throws Exception
Exception
public static String makeValidCdmObjectName(String shortName)
shortName
- from this namepublic static String makeValidCDLName(String vname)
vname
- the namepublic static String makeValidPathName(String vname)
vname
- the namepublic static String makeValidSectionSpecName(String vname)
vname
- the namepublic static String makeNameUnescaped(String vname)
vname
- the escaped nameprotected static String makeFullName(CDMNode v)
v
- the cdm nodeprotected static String makeFullNameSectionSpec(CDMNode v)
v
- the cdm nodeprotected static String makeFullName(CDMNode node, String reservedChars)
node
- the cdm nodereservedChars
- the set of characters to escape