Package dap4.dap4lib.cdm.nc2
Class DapNetcdfFile
- java.lang.Object
-
- ucar.nc2.NetcdfFile
-
- dap4.dap4lib.cdm.nc2.DapNetcdfFile
-
- All Implemented Interfaces:
Closeable,AutoCloseable,ucar.nc2.util.cache.FileCacheable
public class DapNetcdfFile extends ucar.nc2.NetcdfFileThis class is the work-horse of the client side. It uses a D4DSP instance to obtain access to a DMR and (optionally) a compiled DAP4 data stream. Given that, it constructs a translation to CDM.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classDapNetcdfFile.NullCancelTask
-
Field Summary
Fields Modifier and Type Field Description protected booleanallowCompressionprotected Map<ucar.nc2.Variable,ucar.ma2.Array>arraymapprotected ucar.nc2.util.CancelTaskcancelprotected CDMCompilercdmCompilerprotected ChecksumModechecksummodeprotected booleanclosedprotected DapContextcxtprotected booleandaploadedprotected DapDatasetdmrprotected D4DSPdspprotected Stringdsplocationprotected static DSPRegistrydspregistryDefine a map of known DSP classes.protected Stringlocationprotected static DapNetcdfFile.NullCancelTasknullcancelprotected XURIxuri
-
Constructor Summary
Constructors Constructor Description DapNetcdfFile(String url)Open a Dap4 connectionDapNetcdfFile(String location, ucar.nc2.util.CancelTask cancelTask)Open a Dap4 connection or file via a D4DSP.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Close all resources (files, sockets, etc) associated with this file.voidensuredata()voidensuredmr()Do what is necessary to ensure that DMR and DAP compilation will workD4DSPgetDSP()StringgetLocation()booleanisconstrainable()protected voidloadContext()List<ucar.ma2.Array>readArrays(List<ucar.nc2.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.protected ucar.ma2.ArrayreadData(ucar.nc2.Variable cdmvar, ucar.ma2.Section section)b * Primary read entry point.ucar.ma2.ArrayreadSection(String variableSection)longreadToByteChannel(ucar.nc2.Variable v, ucar.ma2.Section section, WritableByteChannel channel)Read databuffer from a top level Variable and send databuffer to a WritableByteChannel.protected voidverifyChecksums()-
Methods inherited from class ucar.nc2.NetcdfFile
addAttribute, addAttribute, addDimension, addGroup, addLocalFieldsToBuilder, addStringVariable, addVariable, addVariable, addVariableAttribute, builder, canonicalizeUriString, canOpen, empty, findAttribute, findAttValueIgnoreCase, findDimension, findGlobalAttribute, findGlobalAttributeIgnoreCase, findGroup, findVariable, findVariable, findVariableByAttribute, finish, getCacheName, getDetailInfo, getDetailInfo, getDimensions, getFileTypeDescription, getFileTypeId, getFileTypeVersion, getGlobalAttributes, getId, getIosp, getLastModified, getRootGroup, getStructureIterator, getTitle, getUnlimitedDimension, getVariables, hasUnlimitedDimension, iospDeRegister, iospRegistered, makeFullName, makeFullName, makeFullNameSectionSpec, makeFullNameWithString, makeNameUnescaped, makeRecordStructure, makeValidCDLName, makeValidCdmObjectName, makeValidPathName, makeValidSectionSpecName, open, open, open, open, open, open, openInMemory, openInMemory, openInMemory, openInMemory, reacquire, read, readAttributeDouble, readAttributeInteger, readToOutputStream, registerIOProvider, registerIOProvider, registerIOProvider, registerIOProviderPreferred, release, removeDimension, removeRecordStructure, removeVariable, sendIospMessage, setCacheName, setDebugFlags, setFileCache, setId, setImmutable, setLocation, setProperty, setRootGroup, setTitle, showCached, showProxies, syncExtend, toBuilder, toNcml, toString, toStringDebug, writeCDL, writeCDL, writeCDL, writeNcml, writeNcml
-
-
-
-
Field Detail
-
nullcancel
protected static final DapNetcdfFile.NullCancelTask nullcancel
-
dspregistry
protected static DSPRegistry dspregistry
Define a map of known DSP classes.
-
allowCompression
protected boolean allowCompression
-
closed
protected boolean closed
-
location
protected String location
-
cancel
protected ucar.nc2.util.CancelTask cancel
-
dsplocation
protected String dsplocation
-
xuri
protected XURI xuri
-
cxt
protected DapContext cxt
-
dsp
protected D4DSP dsp
-
dmr
protected DapDataset dmr
-
cdmCompiler
protected CDMCompiler cdmCompiler
-
checksummode
protected ChecksumMode checksummode
-
daploaded
protected boolean daploaded
-
arraymap
protected Map<ucar.nc2.Variable,ucar.ma2.Array> arraymap
-
-
Constructor Detail
-
DapNetcdfFile
public DapNetcdfFile(String location, ucar.nc2.util.CancelTask cancelTask) throws IOException
Open a Dap4 connection or file via a D4DSP. Warning: we do not use a Builder because this object is mutable over time.- Parameters:
location- URL for the request. Note that if this is intended to send to a file oriented DSP, then if must be converted to an absolute path. Note also that the URL path should not have any .dap or .dmr extension since using those is the purview of this class.cancelTask- check if task is cancelled; may be null.- Throws:
IOException
-
DapNetcdfFile
public DapNetcdfFile(String url) throws IOException
Open a Dap4 connection- Parameters:
url- URL for the request.- Throws:
IOException
-
-
Method Detail
-
close
public void close() throws IOExceptionClose all resources (files, sockets, etc) associated with this file.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceucar.nc2.util.cache.FileCacheable- Overrides:
closein classucar.nc2.NetcdfFile- Throws:
IOException- if error when closing
-
isconstrainable
public boolean isconstrainable()
- Returns:
- true if we can ask the server to do constraint processing
-
getLocation
public String getLocation()
- Specified by:
getLocationin interfaceucar.nc2.util.cache.FileCacheable- Overrides:
getLocationin classucar.nc2.NetcdfFile
-
getDSP
public D4DSP getDSP()
-
readArrays
public List<ucar.ma2.Array> readArrays(List<ucar.nc2.Variable> variables) throws IOException
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. TODO: optimize to make only a single server call and cache the results.- Overrides:
readArraysin classucar.nc2.NetcdfFile- Parameters:
variables- List of type Variable- Returns:
- List of Array, one for each Variable in the input.
- Throws:
IOException- if read error
-
readToByteChannel
public long readToByteChannel(ucar.nc2.Variable v, ucar.ma2.Section section, WritableByteChannel channel) throws IOException, ucar.ma2.InvalidRangeExceptionRead databuffer from a top level Variable and send databuffer to a WritableByteChannel. Experimental.- Overrides:
readToByteChannelin classucar.nc2.NetcdfFile- Parameters:
v- a top-level Variablesection- the section of databuffer to read. There must be a Range for each Dimension in the variable, in order. Note: no nulls allowed. IOSP may not modify.channel- write databuffer to this WritableByteChannel- Returns:
- the number of databuffer written to the channel
- Throws:
IOException- if read errorucar.ma2.InvalidRangeException- if invalid section
-
readSection
public ucar.ma2.Array readSection(String variableSection) throws IOException, ucar.ma2.InvalidRangeException
- Overrides:
readSectionin classucar.nc2.NetcdfFile- Throws:
IOExceptionucar.ma2.InvalidRangeException
-
readData
protected ucar.ma2.Array readData(ucar.nc2.Variable cdmvar, ucar.ma2.Section section) throws IOException, ucar.ma2.InvalidRangeExceptionb * Primary read entry point. This is the primary implementor of Variable.read.- Overrides:
readDatain classucar.nc2.NetcdfFile- Parameters:
cdmvar- A top-level variablesection- the section of databuffer to read. There must be a Range for each Dimension in the variable, in order. Note: no nulls allowed.- Returns:
- An Array object for accessing the databuffer
- Throws:
IOException- if read errorucar.ma2.InvalidRangeException- if invalid section
-
loadContext
protected void loadContext()
-
verifyChecksums
protected void verifyChecksums() throws DapException- Throws:
DapException
-
ensuredmr
public void ensuredmr() throws IOExceptionDo what is necessary to ensure that DMR and DAP compilation will work- Throws:
IOException
-
ensuredata
public void ensuredata() throws IOException- Throws:
IOException
-
-