org.apache.jackrabbit.core.query
Interface QueryHandler

All Known Implementing Classes:
AbstractQueryHandler

public interface QueryHandler

Defines an interface for the actual node indexing and query execution. The goal is to allow different implementations based on the persistent manager in use. Some persistent model might allow to execute a query in an optimized manner, e.g. database persistence.


Method Summary
 void addNode(NodeState node)
          Adds a Node to the search index.
 void close()
          Closes this QueryHandler and frees resources attached to this handler.
 ExecutableQuery createExecutableQuery(SessionImpl session, ItemManager itemMgr, String statement, String language)
          Creates a new query by specifying the query statement itself and the language in which the query is stated.
 void deleteNode(NodeId id)
          Deletes the Node with id from the search index.
 QueryHandlerContext getContext()
          Returns the query handler context that passed in init(QueryHandlerContext).
 void init(QueryHandlerContext context)
          Initializes this query handler.
 void updateNodes(NodeIdIterator remove, NodeStateIterator add)
          Updates the index in an atomic operation.
 

Method Detail

init

public void init(QueryHandlerContext context)
          throws IOException
Initializes this query handler. This method is called after the QueryHandler is instantiated.

Parameters:
context - the context for this query handler.
Throws:
IOException - if an error occurs during initialization.

getContext

public QueryHandlerContext getContext()
Returns the query handler context that passed in init(QueryHandlerContext).

Returns:
the query handler context.

addNode

public void addNode(NodeState node)
             throws RepositoryException,
                    IOException
Adds a Node to the search index.

Parameters:
node - the NodeState to add.
Throws:
RepositoryException - if an error occurs while indexing the node.
IOException - if an error occurs while adding the node to the index.

deleteNode

public void deleteNode(NodeId id)
                throws IOException
Deletes the Node with id from the search index.

Parameters:
id - the id of the node to delete.
Throws:
IOException - if an error occurs while deleting the node.

updateNodes

public void updateNodes(NodeIdIterator remove,
                        NodeStateIterator add)
                 throws RepositoryException,
                        IOException
Updates the index in an atomic operation. Some nodes may be removed and added again in the same updateNodes() call, which is equivalent to an node update.

Parameters:
remove - Iterator of NodeIds of nodes to delete
add - Iterator of NodeState instance to add to the index.
Throws:
RepositoryException - if an error occurs while indexing a node.
IOException - if an error occurs while updating the index.

close

public void close()
           throws IOException
Closes this QueryHandler and frees resources attached to this handler.

Throws:
IOException

createExecutableQuery

public ExecutableQuery createExecutableQuery(SessionImpl session,
                                             ItemManager itemMgr,
                                             String statement,
                                             String language)
                                      throws InvalidQueryException
Creates a new query by specifying the query statement itself and the language in which the query is stated. If the query statement is syntactically invalid, given the language specified, an InvalidQueryException is thrown. language must specify a query language string from among those returned by QueryManager.getSupportedQueryLanguages(); if it is not then an InvalidQueryException is thrown.

Parameters:
session - the session of the current user creating the query object.
itemMgr - the item manager of the current user.
statement - the query statement.
language - the syntax of the query statement.
Returns:
A Query object.
Throws:
InvalidQueryException - if statement is invalid or language is unsupported.


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