dods.dap.Server
Class SDSequence

java.lang.Object
  extended by dods.dap.BaseType
      extended by dods.dap.DConstructor
          extended by dods.dap.DSequence
              extended by dods.dap.Server.SDSequence
All Implemented Interfaces:
dods.dap.ClientIO, RelOps, ServerMethods, Cloneable

public abstract class SDSequence
extends dods.dap.DSequence
implements ServerMethods, RelOps

Holds a DODS Server Sequence value.

Version:
$Revision: 1.3 $
Author:
ndp
See Also:
BaseType

Field Summary
 
Fields inherited from class dods.dap.DSequence
allValues, END_OF_SEQUENCE, START_OF_INSTANCE, varTemplate
 
Constructor Summary
SDSequence()
          Constructs a new SDSequence.
SDSequence(String n)
          Constructs a new SDSequence with name n.
 
Method Summary
 boolean equal(dods.dap.BaseType bt)
          The RelOps interface defines how each type responds to relational operators.
 Vector getRowVector()
          Get the row vector for into which to read a row of data for this sequence.
 boolean greater_eql(dods.dap.BaseType bt)
          The Operator class contains a generalized implementation of this method.
 boolean greater(dods.dap.BaseType bt)
          The Operator class contains a generalized implementation of this method.
 boolean isProject()
          Is the given variable marked as projected?
 boolean isRead()
          Get the value of the Read property.
 boolean isSynthesized()
          Get the value of the Synthesized property.
 boolean less_eql(dods.dap.BaseType bt)
          The Operator class contains a generalized implementation of this method.
 boolean less(dods.dap.BaseType bt)
          The Operator class contains a generalized implementation of this method.
 boolean not_equal(dods.dap.BaseType bt)
          The Operator class contains a generalized implementation of this method.
 void 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.
abstract  boolean read(String datasetName, Object specialO)
          Read a value from the named dataset for this variable.
 boolean regexp(dods.dap.BaseType bt)
          The Operator class contains a generalized implementation of this method.
 void serialize(String dataset, DataOutputStream sink, CEEvaluator ce, Object specialO)
          Server-side serialization for DODS variables (sub-classes of BaseType).
 void setAllReadFlags(boolean state)
          Set the Read property.
 void setProject(boolean state)
          Set the state of this variable's projection.
 void setProject(boolean state, boolean all)
          Set the state of this variable's projection.
 void setRead(boolean state)
          Set the Read property.
 void setSynthesized(boolean state)
          Set the Synthesized property.
 
Methods inherited from class dods.dap.DSequence
addRow, addVariable, checkSemantics, clone, delRow, deserialize, elementCount, externalize, getLevel, getRow, getRowCount, getTypeName, getVar, getVariable, getVariable, getVariables, setLevel, writeMarker
 
Methods inherited from class dods.dap.DConstructor
addVariable
 
Methods inherited from class dods.dap.BaseType
checkSemantics, elementCount, getLongName, getName, getParent, newPrimitiveVector, printDecl, printDecl, printDecl, printDecl, printDecl, printDecl, printDecl, printVal, printVal, printVal, setName, setParent
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SDSequence

public SDSequence()
Constructs a new SDSequence.


SDSequence

public SDSequence(String n)
Constructs a new SDSequence with name n.

Parameters:
n - the name of the variable.
Method Detail

getRowVector

public Vector getRowVector()
                    throws dods.dap.NoSuchVariableException
Get the row vector for into which to read a row of data for this sequence. When serving sequence data to clients the preferred method is to read one row of the sequence at a time in to this vector, evaluate the constraint expression clauses on the current data, and then send it to the client if it satisfies the constraint. The NOT recommended way is to read the ENTIRE sequence into memory prior to sending it (that would be most inefficient).

Returns:
The base (row 0) row vector for this sequence.
Throws:
dods.dap.NoSuchVariableException

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 DODS User Manual for information about this structure.

Overrides:
printDecl in class dods.dap.DSequence
Parameters:
os - The PrintWriter 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,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 DODS applications and text-based clients such as geturl.

Important Note

This method overrides the BaseType method of the same name and type signature and it significantly changes the behavior for all versions of printVal() for this type: All the various versions of printVal() will only print a value, or a value with declaration, if the variable is in the projection.

In other words, if a call to isProject() for a particular variable returns true then printVal() will print a value (or a declaration and a value).

If isProject() for a particular variable returns false then printVal() is basically a No-Op.

Overrides:
printVal in class dods.dap.DSequence
Parameters:
os - the PrintWriter on which to print the value.
space - this value is passed to the printDecl 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), ServerMethods.isProject()

setProject

public void setProject(boolean state,
                       boolean all)
Set the state of this variable's projection. true means that this variable is part of the current projection as defined by the current constraint expression, otherwise the current projection for this variable should be false.

Specified by:
setProject in interface ServerMethods
Parameters:
state - true if the variable is part of the current projection, false otherwise.
all - If true, set the Project property of all the members (and their children, and so on).
See Also:
CEEvaluator

setProject

public void setProject(boolean state)
Set the state of this variable's projection. true means that this variable is part of the current projection as defined by the current constraint expression, otherwise the current projection for this variable should be false.

This is equivalent to setProjection(state, true).

Specified by:
setProject in interface ServerMethods
Parameters:
state - true if the variable is part of the current projection, false otherwise.
See Also:
CEEvaluator

isProject

public boolean isProject()
Is the given variable marked as projected? If the variable is listed in the projection part of a constraint expression, then the CE parser should mark it as projected. When this method is called on such a variable it should return true, otherwise it should return false.

Specified by:
isProject in interface ServerMethods
Returns:
true if the variable is part of the current projections, false otherwise.
See Also:
CEEvaluator, setProject(boolean)

equal

public boolean equal(dods.dap.BaseType bt)
              throws InvalidOperatorException,
                     RegExpException,
                     SBHException
The RelOps interface defines how each type responds to relational operators. Most (all?) types will not have sensible responses to all of the relational operators (e.g. DSequence won't know how to match a regular expression but DString will). For those operators that are nonsensical a class should throw InvalidOperatorException.

Specified by:
equal in interface RelOps
Specified by:
equal in interface ServerMethods
Throws:
InvalidOperatorException
RegExpException
SBHException
See Also:
Operator

not_equal

public boolean not_equal(dods.dap.BaseType bt)
                  throws InvalidOperatorException,
                         RegExpException,
                         SBHException
Description copied from interface: ServerMethods
The Operator class contains a generalized implementation of this method. It should be used unless a localized architecture/implementation requires otherwise.

Specified by:
not_equal in interface RelOps
Specified by:
not_equal in interface ServerMethods
Throws:
InvalidOperatorException
RegExpException
SBHException
See Also:
Operator

greater

public boolean greater(dods.dap.BaseType bt)
                throws InvalidOperatorException,
                       RegExpException,
                       SBHException
Description copied from interface: ServerMethods
The Operator class contains a generalized implementation of this method. It should be used unless a localized architecture/implementation requires otherwise.

Specified by:
greater in interface RelOps
Specified by:
greater in interface ServerMethods
Throws:
InvalidOperatorException
RegExpException
SBHException
See Also:
Operator

greater_eql

public boolean greater_eql(dods.dap.BaseType bt)
                    throws InvalidOperatorException,
                           RegExpException,
                           SBHException
Description copied from interface: ServerMethods
The Operator class contains a generalized implementation of this method. It should be used unless a localized architecture/implementation requires otherwise.

Specified by:
greater_eql in interface RelOps
Specified by:
greater_eql in interface ServerMethods
Throws:
InvalidOperatorException
RegExpException
SBHException
See Also:
Operator

less

public boolean less(dods.dap.BaseType bt)
             throws InvalidOperatorException,
                    RegExpException,
                    SBHException
Description copied from interface: ServerMethods
The Operator class contains a generalized implementation of this method. It should be used unless a localized architecture/implementation requires otherwise.

Specified by:
less in interface RelOps
Specified by:
less in interface ServerMethods
Throws:
InvalidOperatorException
RegExpException
SBHException
See Also:
Operator

less_eql

public boolean less_eql(dods.dap.BaseType bt)
                 throws InvalidOperatorException,
                        RegExpException,
                        SBHException
Description copied from interface: ServerMethods
The Operator class contains a generalized implementation of this method. It should be used unless a localized architecture/implementation requires otherwise.

Specified by:
less_eql in interface RelOps
Specified by:
less_eql in interface ServerMethods
Throws:
InvalidOperatorException
RegExpException
SBHException
See Also:
Operator

regexp

public boolean regexp(dods.dap.BaseType bt)
               throws InvalidOperatorException,
                      RegExpException,
                      SBHException
Description copied from interface: ServerMethods
The Operator class contains a generalized implementation of this method. It should be used unless a localized architecture/implementation requires otherwise.

Specified by:
regexp in interface RelOps
Specified by:
regexp in interface ServerMethods
Throws:
InvalidOperatorException
RegExpException
SBHException
See Also:
Operator

setSynthesized

public void setSynthesized(boolean state)
Set the Synthesized property.

Specified by:
setSynthesized in interface ServerMethods
Parameters:
state - If true then the variable is considered a synthetic variable and no part of DODS will ever try to read it from a file, otherwise if false the variable is considered a normal variable whose value should be read using the read() method. By default this property is false.
See Also:
isSynthesized(), read(String, Object)

isSynthesized

public boolean isSynthesized()
Get the value of the Synthesized property.

Specified by:
isSynthesized in interface ServerMethods
Returns:
true if this is a synthetic variable, false otherwise.

setRead

public void setRead(boolean state)
Set the Read property. A normal variable is read using the read() method. Once read the Read property is true. Use this function to manually set the property value. By default this property is false.

Specified by:
setRead in interface ServerMethods
Parameters:
state - true if the variable has been read, false otherwise.
See Also:
isRead(), read(String, Object)

setAllReadFlags

public void setAllReadFlags(boolean state)
Set the Read property. A normal variable is read using the read() method. Once read the Read property is true. Use this function to manually set the property value. By default this property is false.

Parameters:
state - true if the variable has been read, false otherwise.
See Also:
isRead(), read(String, Object)

isRead

public boolean isRead()
Get the value of the Read property.

Specified by:
isRead in interface ServerMethods
Returns:
true if the variable has been read, false otherwise.
See Also:
read(String, Object), setRead(boolean)

read

public abstract boolean read(String datasetName,
                             Object specialO)
                      throws dods.dap.NoSuchVariableException,
                             IOException,
                             EOFException
Read a value from the named dataset for this variable.

Specified by:
read in interface ServerMethods
Parameters:
datasetName - String identifying the file or other data store from which to read a vaue for this variable.
specialO - This Object is a goody that is used by Server implementations to deliver important, and as yet unknown, stuff to the read method. If you don't need it, make it a null.
Returns:
true if more data remains to be read, otherwise false. This is an abtsract method that must be implemented as part of the installation/localization of a DODS server.
Throws:
IOException
EOFException
dods.dap.NoSuchVariableException

serialize

public void serialize(String dataset,
                      DataOutputStream sink,
                      CEEvaluator ce,
                      Object specialO)
               throws dods.dap.NoSuchVariableException,
                      SDODSException,
                      IOException
Server-side serialization for DODS variables (sub-classes of BaseType). This does not send the entire class as the Java Serializable interface does, rather it sends only the binary data values. Other software is responsible for sending variable type information (see DDS).

Writes data to a DataOutputStream. This method is used on the server side of the DODS client/server connection, and possibly by GUI clients which need to download DODS data, manipulate it, and then re-save it as a binary file.

Specified by:
serialize in interface ServerMethods
Parameters:
sink - a DataOutputStream to write to.
dataset - a String indicated which dataset to read from (Or something else if you so desire).
ce - the CEEvaluator to use in the parse process.
Throws:
IOException - thrown on any OutputStream exception.
dods.dap.NoSuchVariableException
SDODSException
See Also:
BaseType, DDS, ServerDDS