org.qtitools.qti.node.expression.operator
Class CustomOperator

java.lang.Object
  extended by org.qtitools.qti.node.AbstractNode
      extended by org.qtitools.qti.node.AbstractObject
          extended by org.qtitools.qti.node.expression.AbstractExpression
              extended by org.qtitools.qti.node.expression.operator.CustomOperator
All Implemented Interfaces:
java.io.Serializable, Expression, ExpressionParent, XmlNode, XmlObject, Validatable

public class CustomOperator
extends AbstractExpression

The custom operator provides an extension mechanism for defining operations not currently supported by this specification.

use the class attr to point to A java class (fully qualified) that implements Expression (and possibly extends AbstractExpression). If you do extend AbstractExpression, set the CLASS_TAG to "customOperator", or override relevant methods required for validation that might call getType() to stop unsupportedExpression exceptions at runtime.

Author:
Jonathon Hare
See Also:
Serialized Form

Field Summary
static java.lang.String ATTR_CLASS_NAME
          Name of the class attribute in xml schema.
static java.lang.String ATTR_DEFINITION_NAME
          Name of the definition attribute in xml schema.
static java.lang.String CLASS_TAG
          Name of this class in xml schema.
 
Fields inherited from class org.qtitools.qti.node.expression.AbstractExpression
logger
 
Fields inherited from interface org.qtitools.qti.node.expression.Expression
DISPLAY_NAME
 
Fields inherited from interface org.qtitools.qti.node.XmlNode
INDENT, NEW_LINE, SIMPLE_NAME_INNER_SEPARATOR, SIMPLE_NAMES_SEPARATOR
 
Constructor Summary
CustomOperator(ExpressionParent parent)
          Constructs expression.
 
Method Summary
protected  Value evaluateSelf(int depth)
          Evaluates this expression.
 java.lang.String getClassAttr()
          Gets value of class attribute.
 java.lang.String getClassTag()
          Gets QTI class name of this node.
 java.lang.String getDefinition()
          Gets value of definition attribute.
 BaseType[] getProducedBaseTypes()
          Gets list of all possible produced baseTypes after evaluation (possible baseTypes of evaluated result).
 Cardinality[] getProducedCardinalities()
          Gets list of all possible produced cardinalities after evaluation (possible cardinalities of evaluated result).
 BaseType[] getRequiredBaseTypes(int index)
          Gets list of all acceptable baseTypes which can child expression at given position produce.
 Cardinality[] getRequiredCardinalities(int index)
          Gets list of all acceptable cardinalities which can child expression at given position produce.
protected  void loadAttributes(org.w3c.dom.Node node)
          Loads all attributes from given xml source.
 void setClassAttr(java.lang.String name)
          Sets value of class attribute.
 void setDefinition(java.lang.String name)
          Sets value of definition attribute.
 ValidationResult validate()
          Validates this object.
 
Methods inherited from class org.qtitools.qti.node.expression.AbstractExpression
evaluate, getBaseType, getCardinality, getChildren, getFirstChild, getParent, getParentRequiredBaseTypes, getParentRequiredCardinalities, getProducedNumericalBaseTypes, getRequiredSameBaseTypes, getRequiredSameCardinalities, getSecondChild, getType, getValue, isAnyChildNull, isNull, isVariable, reset, toString
 
Methods inherited from class org.qtitools.qti.node.AbstractObject
getParentItem, getParentResult, getParentTest, setParent
 
Methods inherited from class org.qtitools.qti.node.AbstractNode
attrToXmlString, bodyToXmlString, getAttributes, getFullName, getIndent, getNode, getNode, getNode, getNodeGroups, getParentRoot, getSimpleName, getSourceFile, getSourceNode, getSourceString, getSourceUrl, hasChildNodes, load, load, load, load, readChild, readChildren, setParent, setSourceFile, setSourceNode, setSourceString, setSourceUrl, toXmlString, toXmlString, validateAttributes, validateChildren
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.qtitools.qti.node.XmlObject
getParentItem, getParentResult, getParentTest, setParent
 
Methods inherited from interface org.qtitools.qti.node.XmlNode
getAttributes, getFullName, getNodeGroups, getParentRoot, getSimpleName, getSourceFile, getSourceNode, getSourceString, getSourceUrl, hasChildNodes, load, load, load, load, setSourceFile, setSourceNode, setSourceString, setSourceUrl, toXmlString, toXmlString
 

Field Detail

CLASS_TAG

public static final java.lang.String CLASS_TAG
Name of this class in xml schema.

See Also:
Constant Field Values

ATTR_CLASS_NAME

public static final java.lang.String ATTR_CLASS_NAME
Name of the class attribute in xml schema.

See Also:
Constant Field Values

ATTR_DEFINITION_NAME

public static final java.lang.String ATTR_DEFINITION_NAME
Name of the definition attribute in xml schema.

See Also:
Constant Field Values
Constructor Detail

CustomOperator

public CustomOperator(ExpressionParent parent)
Constructs expression.

Parameters:
parent - parent of this expression
Method Detail

getClassTag

public java.lang.String getClassTag()
Description copied from interface: XmlNode
Gets QTI class name of this node.

QTI class name has very important role during loading/saving nodes.

For example: Java class name is AssessmentTest; QTI class name is assessmentTest.

Specified by:
getClassTag in interface XmlNode
Specified by:
getClassTag in class AbstractNode
Returns:
QTI class name of this node

getClassAttr

public java.lang.String getClassAttr()
Gets value of class attribute.

Returns:
value of class attribute

setClassAttr

public void setClassAttr(java.lang.String name)
Sets value of class attribute.


getDefinition

public java.lang.String getDefinition()
Gets value of definition attribute.

Returns:
value of definition attribute

setDefinition

public void setDefinition(java.lang.String name)
Sets value of definition attribute.


getProducedBaseTypes

public BaseType[] getProducedBaseTypes()
Description copied from interface: Expression
Gets list of all possible produced baseTypes after evaluation (possible baseTypes of evaluated result). Result of this method can change in time.

Static example is expression or. Expression or can produce only boolean baseType and it cannot change.

Dynamic example is expression variable. Expression variable can produce any baseType before evaluation. After evaluation it produces baseType of its result (and it can change every evaluation call!).

Null expression, empty containers (multiple, ordered, record), or NULL values produces all baseTypes. So they are compatible with anything.

Specified by:
getProducedBaseTypes in interface Expression
Overrides:
getProducedBaseTypes in class AbstractExpression
Returns:
list of all possible produced baseTypes after evaluation

getProducedCardinalities

public Cardinality[] getProducedCardinalities()
Description copied from interface: Expression
Gets list of all possible produced cardinalities after evaluation (possible cardinalities of evaluated result). Result of this method can change in time.

Static example is expression or. Expression or can produce only single cardinality and it cannot change.

Dynamic example is expression variable. Expression variable can produce any cardinality before evaluation. After evaluation it produces cardinality of its result (and it can change every evaluation call!).

Null expression, empty containers (multiple, ordered, record), or NULL values produces all cardinalities. So they are compatible with anything.

Specified by:
getProducedCardinalities in interface Expression
Overrides:
getProducedCardinalities in class AbstractExpression
Returns:
list of all possible produced cardinalities after evaluation

getRequiredBaseTypes

public BaseType[] getRequiredBaseTypes(int index)
Description copied from interface: ExpressionParent
Gets list of all acceptable baseTypes which can child expression at given position produce.

Result of this method can change in time.

Static example is expression or. Expression or accepts only boolean baseType for any index.

Dynamic example is expression match. Expression match accepts any baseType of its children. but this baseType must be same for all its children.

Specified by:
getRequiredBaseTypes in interface ExpressionParent
Overrides:
getRequiredBaseTypes in class AbstractExpression
Parameters:
index - position of child expression in this parent
Returns:
list of all acceptable baseTypes which can child expression at given position produce

getRequiredCardinalities

public Cardinality[] getRequiredCardinalities(int index)
Description copied from interface: ExpressionParent
Gets list of all acceptable cardinalities which can child expression at given position produce.

For example delete expression returns single cardinality for index 0 and list of multiple and ordered cardinality for index 1.

Result of this method can change in time.

Static example is expression or. Expression or accepts only single cardinality for any index.

Dynamic example is expression match. Expression match accepts any cardinality of its children, but this cardinality must be same for all its children.

Specified by:
getRequiredCardinalities in interface ExpressionParent
Overrides:
getRequiredCardinalities in class AbstractExpression
Parameters:
index - position of child expression in this parent
Returns:
list of all possible cardinalities which can child expression at given position produce

evaluateSelf

protected Value evaluateSelf(int depth)
Description copied from class: AbstractExpression
Evaluates this expression. All children must be already evaluated. Contains no checks.

Specified by:
evaluateSelf in class AbstractExpression
Parameters:
depth - depth of this expression in expression tree (root's depth = 0)
Returns:
result of evaluation

validate

public ValidationResult validate()
Description copied from interface: Validatable
Validates this object.

Specified by:
validate in interface Validatable
Overrides:
validate in class AbstractExpression
Returns:
validation result

loadAttributes

protected void loadAttributes(org.w3c.dom.Node node)
Description copied from class: AbstractNode
Loads all attributes from given xml source.

Overrides:
loadAttributes in class AbstractNode
Parameters:
node - xml source


Copyright © 2009. All Rights Reserved.