org.globus.rsl
Class RslNode

java.lang.Object
  extended by org.globus.rsl.AbstractRslNode
      extended by org.globus.rsl.RslNode

public class RslNode
extends AbstractRslNode

This class represents a RSL parse tree. It is composed of variable definitions (bindings), relations, and sub-specifications (sub nodes).


Field Summary
protected  java.util.Map _bindings
           
protected  java.util.Map _relations
           
 
Fields inherited from class org.globus.rsl.AbstractRslNode
_operator, _specifications, AND, MULTI, OR
 
Constructor Summary
RslNode()
           
RslNode(int operator)
           
 
Method Summary
 boolean add(Bindings bindings)
           
 boolean add(NameOpValue relation)
           
 AbstractRslNode evaluate(java.util.Map symbolTable)
          Evalutes the rsl tree against the specified symbol table.
 java.util.Map getBindings()
          Returns the variable definitions.
 Bindings getBindings(java.lang.String attribute)
          Returns the variable definitions associated wit the given attribute.
 NameOpValue getParam(java.lang.String attribute)
          Returns the relation associated with the given attribute.
 java.util.Map getRelations()
          Returns the relations.
 void mergeTo(AbstractRslNode dstNode)
           
 Bindings put(Bindings bindings)
           
 NameOpValue put(NameOpValue relation)
           
 Bindings removeBindings(java.lang.String attribute)
          Removes a bindings list for the specified attribute.
 NameOpValue removeParam(java.lang.String attribute)
          Removes a relation for the specified attribute.
 void toRSL(java.lang.StringBuffer buf, boolean explicitConcat)
          Produces a RSL representation of node.
 
Methods inherited from class org.globus.rsl.AbstractRslNode
add, canonicalize, evaluate, getOperator, getOperatorAsString, getOperatorAsString, getSpecifications, merge, removeSpecification, setOperator, toRSL, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_relations

protected java.util.Map _relations

_bindings

protected java.util.Map _bindings
Constructor Detail

RslNode

public RslNode()

RslNode

public RslNode(int operator)
Method Detail

put

public Bindings put(Bindings bindings)

add

public boolean add(Bindings bindings)
Specified by:
add in class AbstractRslNode

put

public NameOpValue put(NameOpValue relation)

add

public boolean add(NameOpValue relation)
Specified by:
add in class AbstractRslNode

mergeTo

public void mergeTo(AbstractRslNode dstNode)
Overrides:
mergeTo in class AbstractRslNode

getParam

public NameOpValue getParam(java.lang.String attribute)
Returns the relation associated with the given attribute.

Specified by:
getParam in class AbstractRslNode
Parameters:
attribute - the attribute of the relation.
Returns:
the relation for the attribute. Null, if not found.

getBindings

public Bindings getBindings(java.lang.String attribute)
Returns the variable definitions associated wit the given attribute.

Specified by:
getBindings in class AbstractRslNode
Parameters:
attribute - the attribute of the variable deinitions.
Returns:
the variable deinitions for the attribute. Null, if not found.

removeParam

public NameOpValue removeParam(java.lang.String attribute)
Removes a relation for the specified attribute.

Specified by:
removeParam in class AbstractRslNode
Parameters:
attribute - the attribute name for the relation to remove.
Returns:
the relation that was removed.

removeBindings

public Bindings removeBindings(java.lang.String attribute)
Removes a bindings list for the specified attribute.

Specified by:
removeBindings in class AbstractRslNode
Parameters:
attribute - the attribute name for the bindings.
Returns:
the bindings that were removed.

getRelations

public java.util.Map getRelations()
Returns the relations.

Returns:
the map of relations.

getBindings

public java.util.Map getBindings()
Returns the variable definitions.

Returns:
the map of variable definitions.

evaluate

public AbstractRslNode evaluate(java.util.Map symbolTable)
                         throws RslEvaluationException
Evalutes the rsl tree against the specified symbol table. All the variable definitions are first evaluated because they might update the symbol table. Then all the relations followed by the sub-specifications are evaluated.

Specified by:
evaluate in class AbstractRslNode
Parameters:
symbolTable - the symbol table to evalute variables against.
Returns:
the evaluated rsl tree.
Throws:
RslEvaluationException - If an error occured during rsl evaluation.

toRSL

public void toRSL(java.lang.StringBuffer buf,
                  boolean explicitConcat)
Produces a RSL representation of node.

Specified by:
toRSL in class AbstractRslNode
Parameters:
buf - buffer to add the RSL representation to.
explicitConcat - if true explicit concatination will be used in RSL strings.