Package opendap.dap
Class DStructure
- java.lang.Object
-
- opendap.dap.DAPNode
-
- opendap.dap.BaseType
-
- opendap.dap.DConstructor
-
- opendap.dap.DStructure
-
- All Implemented Interfaces:
Serializable
,Cloneable
,ClientIO
- Direct Known Subclasses:
DDS
public class DStructure extends DConstructor implements ClientIO
ADStructure
in OPeNDAP can hold N instances of any of the other datatypes, including other structures.- See Also:
BaseType
,DConstructor
, Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class opendap.dap.DAPNode
DAPNode.CloneMap
-
-
Field Summary
Fields Modifier and Type Field Description protected Vector
vars
The variables in thisDStructure
, stored in aVector
ofBaseType
objects.-
Fields inherited from class opendap.dap.DAPNode
_nameClear, _nameEncoded, log
-
-
Constructor Summary
Constructors Constructor Description DStructure()
Constructs a newDStructure
.DStructure(String n)
Constructs a newDStructure
with namen
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addVariable(BaseType v, int part)
Adds a variable to the container.void
checkSemantics(boolean all)
Checks for internal consistency.DAPNode
cloneDAG(DAPNode.CloneMap map)
Returns a clone of thisStructure
.void
deserialize(DataInputStream source, ServerVersion sv, StatusUI statusUI)
Reads data from aDataInputStream
.int
elementCount(boolean leaves)
Returns the number of variables contained in this object.void
externalize(DataOutputStream sink)
Writes data to aDataOutputStream
.String
getTypeName()
Returns the OPeNDAP type name of the class instance as aString
.BaseType
getVar(int index)
Gets the indexed variable.int
getVarCount()
Get the number of contained variables (for use with getVar()BaseType
getVariable(String name)
Returns the named variable.Enumeration
getVariables()
Return an Enumeration that can be used to iterate over the members of a Structure.Vector
getVariableSet()
Return an the Vector of vars for the structurevoid
printDecl(PrintWriter os, String space, boolean print_semi, boolean constrained)
Write the variable's declaration in a C-style syntax.void
printVal(PrintWriter os, String space, boolean print_decl_p)
Prints the value of the variable, with its declaration.-
Methods inherited from class opendap.dap.DConstructor
addVariable, printXML, someChildHasAttributes
-
Methods inherited from class opendap.dap.BaseType
addAttributeAlias, addAttributeContainer, appendAttribute, appendAttribute, appendAttributeContainer, checkSemantics, delAttribute, delAttribute, elementCount, getAttribute, getAttribute, getAttributeNames, getAttributeTable, getLongName, hasAttributes, newPrimitiveVector, printAttributes, printAttributes, printAttributes, printAttributes, printConstraint, printDecl, printDecl, printDecl, printDecl, printDecl, printDecl, printDecl, printVal, printVal, printVal, printXML, printXML, printXML, printXML, setClearName
-
Methods inherited from class opendap.dap.DAPNode
clone, cloneDAG, getClearName, getEncodedName, getParent, isProject, setEncodedName, setParent, setProject, setProject, setProjected
-
-
-
-
Field Detail
-
vars
protected Vector vars
The variables in thisDStructure
, stored in aVector
ofBaseType
objects.
-
-
Constructor Detail
-
DStructure
public DStructure()
Constructs a newDStructure
.
-
DStructure
public DStructure(String n)
Constructs a newDStructure
with namen
.- Parameters:
n
- the name of the variable.
-
-
Method Detail
-
getTypeName
public String getTypeName()
Returns the OPeNDAP type name of the class instance as aString
.- Specified by:
getTypeName
in classBaseType
- Returns:
- the OPeNDAP type name of the class instance as a
String
.
-
elementCount
public int elementCount(boolean leaves)
Returns the number of variables contained in this object. For simple and vector type variables, it always returns 1. To count the number of simple-type variable in the variable tree rooted at this variable, setleaves
totrue
.- Overrides:
elementCount
in classBaseType
- Parameters:
leaves
- If true, count all the simple types in the `tree' of variables rooted at this variable.- Returns:
- the number of contained variables.
-
addVariable
public void addVariable(BaseType v, int part)
Adds a variable to the container.- Specified by:
addVariable
in classDConstructor
- Parameters:
v
- the variable to add.part
- ignored forDSequence
.
-
getVariable
public BaseType getVariable(String name) throws NoSuchVariableException
Returns the named variable.- Specified by:
getVariable
in classDConstructor
- Parameters:
name
- the name of the variable.- Returns:
- the named variable.
- Throws:
NoSuchVariableException
- if the named variable does not exist in this container.
-
getVar
public BaseType getVar(int index) throws NoSuchVariableException
Gets the indexed variable. For a DStructure this returns theBaseType
from theindex
th column from the internal storageVector
.- Specified by:
getVar
in classDConstructor
- Parameters:
index
- the index of the variable in theVector
Vars.- Returns:
- the indexed variable.
- Throws:
NoSuchVariableException
- if the named variable does not exist in this container.
-
getVarCount
public int getVarCount()
Get the number of contained variables (for use with getVar()- Specified by:
getVarCount
in classDConstructor
- Returns:
- the number of contained variables
-
getVariables
public Enumeration getVariables()
Return an Enumeration that can be used to iterate over the members of a Structure. This implementation provides access to the elements of the Structure. Each Object returned by the Enumeration can be cast to a BaseType.- Specified by:
getVariables
in classDConstructor
- Returns:
- An Enumeration
-
getVariableSet
public Vector getVariableSet()
Return an the Vector of vars for the structure- Returns:
- A Vector of BaseType
-
checkSemantics
public void checkSemantics(boolean all) throws BadSemanticsException
Checks for internal consistency. ForDStructure
, verify that the variables have unique names.- Overrides:
checkSemantics
in classBaseType
- Parameters:
all
- for complex constructor types, this flag indicates whether to check the semantics of the member variables, too.- Throws:
BadSemanticsException
- if semantics are bad, explains why.- See Also:
BaseType.checkSemantics(boolean)
-
printDecl
public void printDecl(PrintWriter os, String space, boolean print_semi, boolean constrained)
Write the variable's declaration in a C-style syntax. This function is used to create textual representation of the Data Descriptor Structure (DDS). See The OPeNDAP User Manual for information about this structure.- Overrides:
printDecl
in classBaseType
- Parameters:
os
- ThePrintWriter
on which to print the declaration.space
- Each line of the declaration will begin with the characters in this string. Usually used for leading spaces.print_semi
- a boolean value indicating whether to print a semicolon at the end of the declaration.constrained
- a boolean value indicating whether to print the declartion dependent on the projection information. This is only used by Server side code.- See Also:
BaseType.printDecl(PrintWriter, String, boolean)
-
printVal
public void printVal(PrintWriter os, String space, boolean print_decl_p)
Prints the value of the variable, with its declaration. This function is primarily intended for debugging OPeNDAP applications and text-based clients such as geturl.- Specified by:
printVal
in classBaseType
- Parameters:
os
- thePrintWriter
on which to print the value.space
- this value is passed to theprintDecl
method, and controls the leading spaces of the output.print_decl_p
- a boolean value controlling whether the variable declaration is printed as well as the value.- See Also:
BaseType.printVal(PrintWriter, String, boolean)
-
deserialize
public void deserialize(DataInputStream source, ServerVersion sv, StatusUI statusUI) throws IOException, EOFException, DataReadException
Reads data from aDataInputStream
. This method is only used on the client side of the OPeNDAP client/server connection.- Specified by:
deserialize
in interfaceClientIO
- Parameters:
source
- aDataInputStream
to read from.sv
- theServerVersion
returned by the server.statusUI
- theStatusUI
object to use for GUI updates and user cancellation notification (may be null).- Throws:
EOFException
- if EOF is found before the variable is completely deserialized.IOException
- thrown on any other InputStream exception.DataReadException
- if an unexpected value was read.- See Also:
ClientIO.deserialize(DataInputStream, ServerVersion, StatusUI)
-
externalize
public void externalize(DataOutputStream sink) throws IOException
Writes data to aDataOutputStream
. This method is used primarily by GUI clients which need to download OPeNDAP data, manipulate it, and then re-save it as a binary file.- Specified by:
externalize
in interfaceClientIO
- Parameters:
sink
- aDataOutputStream
to write to.- Throws:
IOException
- thrown on anyOutputStream
exception.
-
cloneDAG
public DAPNode cloneDAG(DAPNode.CloneMap map) throws CloneNotSupportedException
Returns a clone of thisStructure
. See DAPNode.cloneDag()- Overrides:
cloneDAG
in classBaseType
- Parameters:
map
- track previously cloned nodes- Returns:
- a clone of this object.
- Throws:
CloneNotSupportedException
-
-