Query object. * * @author Markus Nix * @package phpcr * @subpackage query */ interface Query { /** * A String constant representing the XPath query language applied to the document view * XML mapping of the workspace. *

* This language must be supported in level 1 repositories. *

* Used when defining a query using {@link QueryManager#createQuery}. * Also among the strings returned by {@link QueryManager#getSupportedQueryLanguages}. */ const XPATH = "xpath"; /** * A String constant representing the SQL query language applied to the database view * of the workspace. *

* This language is optional. *

* Used when defining a query using {@link QueryManager#createQuery}. * Also among the strings returned by {@link QueryManager#getSupportedQueryLanguages}. */ const SQL = "sql"; /** * Executes this query and returns a {@link QueryResult}. * * @return a QueryResult * @throws RepositoryException if an error occurs */ public function execute(); /** * Returns the statement set for this query. Returns null * if no statement is currently set. * * @return the query statement. */ public function getStatement(); /** * Returns the language set for this query. This will be one of the * QueryLanguage constants returned by * QueryManager.getSupportedQueryLanguages(). If the query was created * using a mechanism outside the specification, this method may return 0. * * @return the query language. */ public function getLanguage(); /** * If this is a Query object that has been stored using * storeAsNode($string) (regardless of whether it has * been saved yet) or retrieved using * QueryManager.getQuery($node)), then this method returns * the path of the nt:query node that stores the query. If * this is a transient query (that is, a Query object created * with QueryManager.createQuery($string, $string) but not * yet stored) then this method throws an ItemNotFoundException. * * @return path of persisted node representing this query in content. */ public function getStoredQueryPath(); /** * Creates a node representing this Query in content. * * In a level 1 repository this method throws an * UnsupportedRepositoryOperationException. * * In a level 2 repository it creates a node of type nt:query at absPath * and returns that node. * * In order to persist the newly created node, a save must be performed * that includes the parent of this new node within its scope. In other * words, either a Session.save or an Item.save on the parent or * higher-degree ancestor of absPath must be performed. * * An ItemExistsException will be thrown either immediately (by this * method), or on save, if an item at the specified path already exists * and same-name siblings are not allowed. Implementations may differ * on when this validation is performed. * * A PathNotFoundException will be thrown either immediately , or on * save, if the specified path implies intermediary nodes that do not * exist. Implementations may differ on when this validation is performed. * * A ConstraintViolationExceptionwill be thrown either immediately or * on save, if adding the node would violate a node type or * implementation-specific constraintor if an attempt is made to add * a node as the child of a property. Implementations may differ on when * this validation is performed. * * A VersionException will be thrown either immediately (by this method), * or on save, if the node to which the new child is being added is * versionable and checked-in or is non-versionable but its nearest * versionable ancestor is checked-in. Implementations may differ on when * this validation is performed. * * A LockException will be thrown either immediately (by this method), or * on save, if a lock prevents the addition of the node. Implementations * may differ on when this validation is performed. * * @param absPath path at which to persist this query. * @return the newly created node. * @throws ItemExistsException If an item already exists at the indicated position * @throws PathNotFoundException If the path cannot be found * @throws ConstraintViolationException If creating the node would violate a * node type (or other implementation specific) constraint. * @throws VersionException f the node to which the new child is being * added is versionable and checked-in or is non-versionable but its * nearest versionable ancestor is checked-in and this implementation * performs this validation immediately instead of waiting until save. * @throws LockException if a lock prevents the addition of the node and * this implementation performs this validation immediately instead of * waiting until save. * @throws RepositoryException If another error occurs. */ public function storeAsNode( $absPath ); } ?>