org.apache.jackrabbit.core.query
Class LocationStepQueryNode

java.lang.Object
  extended byorg.apache.jackrabbit.core.query.QueryNode
      extended byorg.apache.jackrabbit.core.query.NAryQueryNode
          extended byorg.apache.jackrabbit.core.query.LocationStepQueryNode
Direct Known Subclasses:
DerefQueryNode

public class LocationStepQueryNode
extends NAryQueryNode

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 QName 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.core.query.NAryQueryNode
operands
 
Fields inherited from class org.apache.jackrabbit.core.query.QueryNode
TYPE_AND, TYPE_DEREF, TYPE_EXACT, TYPE_LOCATION, TYPE_NODETYPE, TYPE_NOT, TYPE_OR, TYPE_ORDER, TYPE_PATH, TYPE_RELATION, TYPE_ROOT, TYPE_TEXTSEARCH
 
Constructor Summary
LocationStepQueryNode(QueryNode parent)
          Creates a new LocationStepQueryNode that matches only the empty name (the repository root).
LocationStepQueryNode(QueryNode parent, QName nameTest, boolean descendants)
          Creates a new LocationStepQueryNode with a reference to its parent.
 
Method Summary
 Object accept(QueryNodeVisitor visitor, Object data)
          Accepts a QueryNodeVisitor and calls the apropriate 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.
 QName 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(QName nameTest)
          Sets a new name test.
 
Methods inherited from class org.apache.jackrabbit.core.query.NAryQueryNode
acceptOperands, addOperand, getNumOperands, getOperands, removeOperand
 
Methods inherited from class org.apache.jackrabbit.core.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 QName 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

public LocationStepQueryNode(QueryNode parent,
                             QName nameTest,
                             boolean descendants)
Creates a new LocationStepQueryNode with a reference to its parent.

Parameters:
parent - the parent of this LocationStepQueryNode.
nameTest - the name test or null if this step should match all names.
descendants - if true this location step uses the descendant-or-self axis; otherwise the child axis.

LocationStepQueryNode

public 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.

Method Detail

getNameTest

public QName 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(QName 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:
{@link #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)
Accepts a QueryNodeVisitor and calls the apropriate 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.

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


Copyright © 2004-2006 The Apache Software Foundation. All Rights Reserved.