org.apache.jackrabbit.spi.commons.query
Class LocationStepQueryNode

java.lang.Object
  extended by org.apache.jackrabbit.spi.commons.query.QueryNode
      extended by org.apache.jackrabbit.spi.commons.query.NAryQueryNode<QueryNode>
          extended by org.apache.jackrabbit.spi.commons.query.LocationStepQueryNode
Direct Known Subclasses:
DerefQueryNode

public class LocationStepQueryNode
extends NAryQueryNode<QueryNode>

Defines a location step for querying the path of a node.

/foo -> descendants = false, nameTest = foo
//foo -> descendants = true, nameTest = foo
//* -> descendants = true, nameTest = null
/* -> descendants = false, nameTest = null
/ -> descendants = false, nameTest = ""


Field Summary
static Name EMPTY_NAME
          The empty name used in matching the root node.
static int LAST
          Constant value for position index = last()
static int NONE
          Constant value to indicate no position index
 
Fields inherited from class org.apache.jackrabbit.spi.commons.query.NAryQueryNode
operands
 
Fields inherited from class org.apache.jackrabbit.spi.commons.query.QueryNode
TYPE_AND, TYPE_DEREF, TYPE_EXACT, TYPE_LOCATION, TYPE_NODETYPE, TYPE_NOT, TYPE_OR, TYPE_ORDER, TYPE_PATH, TYPE_PROP_FUNCTION, TYPE_RELATION, TYPE_ROOT, TYPE_TEXTSEARCH
 
Constructor Summary
protected LocationStepQueryNode(QueryNode parent)
          Creates a new LocationStepQueryNode that matches only the empty name (the repository root).
 
Method Summary
 Object accept(QueryNodeVisitor visitor, Object data)
          Accepts a QueryNodeVisitor and calls the appropriate visit method on the visitor depending on the concrete implementation of this QueryNode.
 void addPredicate(QueryNode predicate)
          Adds a predicate node to this location step.
 boolean equals(Object obj)
          Returns true if obj is the same type of QueryNode as this node and is equal to this node.
 boolean getIncludeDescendants()
          Returns true if this location step uses the descendant-or-self axis, false if this step uses the child axis.
 int getIndex()
          Returns the position index for this step.
 Name getNameTest()
          Returns the label of the node for this location step, or null if the name test is '*'.
 QueryNode[] getPredicates()
          Returns the predicate nodes for this location step.
 int getType()
          Returns the type of this query node.
 void setIncludeDescendants(boolean include)
          Sets a new value for the includeDescendants property.
 void setIndex(int index)
          Sets the position index for this step.
 void setNameTest(Name nameTest)
          Sets a new name test.
 
Methods inherited from class org.apache.jackrabbit.spi.commons.query.NAryQueryNode
acceptOperands, addOperand, getNumOperands, getOperands, needsSystemTree, removeOperand
 
Methods inherited from class org.apache.jackrabbit.spi.commons.query.QueryNode
dump, getParent
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LAST

public static final int LAST
Constant value for position index = last()

See Also:
Constant Field Values

NONE

public static final int NONE
Constant value to indicate no position index

See Also:
Constant Field Values

EMPTY_NAME

public static final Name EMPTY_NAME
The empty name used in matching the root node. This is an implementation specific constant as the empty name is not a valid JCR name. TODO: The root location step should be refactored somehow

Constructor Detail

LocationStepQueryNode

protected LocationStepQueryNode(QueryNode parent)
Creates a new LocationStepQueryNode that matches only the empty name (the repository root). The created location step uses only the child axis.

Parameters:
parent - the parent of this query node.
Method Detail

getNameTest

public Name getNameTest()
Returns the label of the node for this location step, or null if the name test is '*'.

Returns:
the label of the node for this location step.

setNameTest

public void setNameTest(Name nameTest)
Sets a new name test.

Parameters:
nameTest - the name test or null to match all names.

getIncludeDescendants

public boolean getIncludeDescendants()
Returns true if this location step uses the descendant-or-self axis, false if this step uses the child axis.

Returns:
true if this step uses the descendant-or-self axis.

setIncludeDescendants

public void setIncludeDescendants(boolean include)
Sets a new value for the includeDescendants property.

Parameters:
include - the new value.
See Also:
getIncludeDescendants()

addPredicate

public void addPredicate(QueryNode predicate)
Adds a predicate node to this location step.

Parameters:
predicate - the node to add.

getPredicates

public QueryNode[] getPredicates()
Returns the predicate nodes for this location step. This method may also return a position predicate.

Returns:
the predicate nodes or an empty array if there are no predicates for this location step.

setIndex

public void setIndex(int index)
Sets the position index for this step. A value of NONE indicates that this location step has no position index assigned. That is, the step selects all same name siblings.

Parameters:
index - the position index.

getIndex

public int getIndex()
Returns the position index for this step. A value of NONE indicates that this location step has no position index assigned. That is, the step selects all same name siblings.

Returns:
the position index for this step.

accept

public Object accept(QueryNodeVisitor visitor,
                     Object data)
              throws RepositoryException
Accepts a QueryNodeVisitor and calls the appropriate visit method on the visitor depending on the concrete implementation of this QueryNode.

Specified by:
accept in class QueryNode
Parameters:
visitor - the visitor to call back.
data - arbitrary data for the visitor.
Returns:
the return value of the visitor.visit() call.
Throws:
RepositoryException

getType

public int getType()
Returns the type of this query node.

Specified by:
getType in class QueryNode
Returns:
the type of this query node.

equals

public boolean equals(Object obj)
Description copied from class: QueryNode
Returns true if obj is the same type of QueryNode as this node and is equal to this node.

Overrides:
equals in class NAryQueryNode<QueryNode>
Parameters:
obj - the reference object with which to compare.
Returns:
true if obj is equal to this; false otherwise.


Copyright © 2011-2013 Adobe Systems Incorporated. All Rights Reserved.