package org.springmodules.jcr;
import java.util.List;
import java.util.Map;
import javax.jcr.Item;
import javax.jcr.Node;
import javax.jcr.ValueFactory;
import javax.jcr.query.QueryResult;
import org.xml.sax.ContentHandler;
/**
* Interface used for delimiting Jcr operations based on what the underlying repository supports
* (in this case model 1 operations).
*
* Normally not used but useful for casting to restrict access in some situations.
* @author Costin Leau
*
*/
public interface JcrModel1Operations {
/**
* @see javax.jcr.Session#getAttribute(java.lang.String)
*/
public Object getAttribute(String name);
/**
* @see javax.jcr.Session#getAttributeNames()
*/
public String[] getAttributeNames();
/**
* @see javax.jcr.Session#getImportContentHandler(java.lang.String, int)
*/
public ContentHandler getImportContentHandler(String parentAbsPath, int uuidBehavior);
/**
* @see javax.jcr.Session#getItem(java.lang.String)
*/
public Item getItem(String absPath);
/**
* @see javax.jcr.Session#getNamespacePrefix(java.lang.String)
*/
public String getNamespacePrefix(String uri);
/**
* @see javax.jcr.Session#getNamespacePrefixes()
*/
public String[] getNamespacePrefixes();
/**
* @see javax.jcr.Session#getNamespaceURI(java.lang.String)
*/
public String getNamespaceURI(String prefix);
/**
* @see javax.jcr.Session#getNodeByUUID(java.lang.String)
*/
public Node getNodeByUUID(String uuid);
/**
* @see javax.jcr.Session#getRootNode();
*/
public Node getRootNode();
/**
* @see javax.jcr.Session#getUserID()
*/
public String getUserID();
/**
* @see javax.jcr.Session#getValueFactory()
*/
public ValueFactory getValueFactory();
/**
* @see javax.jcr.Session#isLive()
*/
public boolean isLive();
/**
* @see javax.jcr.Session#itemExists(java.lang.String)
*/
public boolean itemExists(String absPath);
/**
* Execute a persistent query from the given node.
*
* @see javax.jcr.query.QueryManager#getQuery(javax.jcr.Node)
* @param node node to be dumped
* @return query result
*/
public QueryResult query(Node node);
/**
* Execute a query with the given strings with XPATH as default language.
* It's the same as #query(java.lang.String, java.lang.String)
*
* @see javax.jcr.query.QueryManager#createQuery(java.lang.String, java.lang.String)
* @param statement query statement
* @return query result
*/
public QueryResult query(String statement);
/**
* Execute a query with the given strings.
*
* @see javax.jcr.query.QueryManager#createQuery(java.lang.String, java.lang.String)
* @param statement query statement
* @param language language statement
* @return query result
*/
public QueryResult query(String statement, String language);
/**
* Default method for doing multiple queries. It assumes the language is
* XPATH and that errors will not be ignored.
*
* @param list a list of queries that will be executed against the
* repository
* @return a map containing the queries as keys and results as values
*/
public Map query(final List list);
/**
* Utility method for executing a list of queries against the repository.
* Reads the queries given and returns the results in a map.
*
* <p/> If possible the map will be a LinkedHashSet on JDK 1.4+, otherwise
* LinkedHashSet from Commons collections 3.1 if the package is found. If
* the above fails a HashMap will be returned.
*
* @see org.springframework.core.CollectionFactory
*
* @param list list of queries
* @param language language of the queries. If null XPATH is assumed.
* @param ignoreErrors if true it will populate unfound nodes with null
* @return a map containing the queries as keys and results as values
*/
public Map query(final List list, final String language, final boolean ignoreErrors);
}