package org.etk.orm.plugins.query;
/**
* The query builder allows to create queries.
*
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
* @version $Revision$
*/
public interface QueryBuilder<O> {
/**
* <p>Set the where clause of the query.</p>
*
* @param where the where clause
* @return this builder
* @throws NullPointerException if the argument is null
*/
QueryBuilder<O> where(String where) throws NullPointerException;
/**
* <p>Set the order by clause of the query.</p>
*
* @param orderBy the order by clause
* @return this builder
* @throws NullPointerException if the argument is null
*/
QueryBuilder<O> orderBy(String orderBy) throws NullPointerException;
/**
* <p>Compute and returns the <tt>ObjectQuery</tt> for this builder.</p>
*
* @return this object query
* @throws IllegalStateException if the builder cannot build the query
*/
Query<O> get() throws IllegalStateException;
}