Interface SubClause

All Superinterfaces:
Clause
All Known Implementing Classes:
BTFunctionClause, DereferenceClause, ValueClause

public interface SubClause extends Clause
Represents a sub-clause of the selection portion of a constraint expression. A sub-clause is any part of a constraint that can be evaluated to a BaseType value. For instance, the constraint "var1>=function(var2,var3)" would have sub clauses "var1" and "function(var2,var3)". The latter would in turn have the sub-clauses "var2" and "var3".

A given instance of SubClause may change the value it returns when evaluated multiple times, but should not change the class of BaseType it returns. This allows function and operator clauses to do type-checking using the getValue() method.

The parser supports several kinds of sub-clause. These are described in the ClauseFactory interface.

See TopLevelClause for more about the parsing of clauses.

See CEEValuator for an explanation of how Clauses are evaluated on data.

See Also:
  • Method Summary

    Modifier and Type
    Method
    Description
    opendap.dap.BaseType
    Evaluates the clause, first calling evaluate() on any sub-clauses it contains.
    Returns the Clause which contains this subclause.
    opendap.dap.BaseType
    Returns a BaseType containing the current value of the sub-clause.
    void
    setParent(Clause parent)
    Sets the parent of this subclause.

    Methods inherited from interface opendap.servers.Clause

    getChildren, isConstant, isDefined, printConstraint
  • Method Details

    • getParent

      Clause getParent()
      Returns the Clause which contains this subclause. The clause returned may be a TopLevelClause or another SubClause.
    • getValue

      opendap.dap.BaseType getValue()
      Returns a BaseType containing the current value of the sub-clause. Sub-clauses that are not constant have an undefined value until the evaluate() method has been called. However, in such circumstances this method is still useful, as it indicates which class of BaseType the sub-clause will evaluate to. Implementations of this method should never return null.
    • evaluate

      opendap.dap.BaseType evaluate() throws DAP2ServerSideException
      Evaluates the clause, first calling evaluate() on any sub-clauses it contains. Implementations of this method should flag the clause as "defined" if the evaluation is successful.
      Throws:
      DAP2ServerSideException - Thrown if the evaluation fails for any reason.
    • setParent

      void setParent(Clause parent)
      Sets the parent of this subclause. Used during parsing.