// Path: src/joquery/core/QueryException.java
// public class QueryException extends Exception
// {
//     public QueryException(String message)
//     {
//         super(message);
//     }
// 
//     public QueryException(String message, Throwable cause)
//     {
//         super(message, cause);
//     }
// }


import joquery.core.QueryException;
import java.util.function.Function;
package joquery;



/**
 * User: Adipa
 * Date: 10/6/12
 * Time: 9:31 PM
 */
public interface Query<T,W extends Query<T,W>>
{
    W from(Iterable<T> list);

    W where();

    W select();

// Path: src/joquery/core/QueryException.java
// public class QueryException extends Exception
// {
//     public QueryException(String message)
//     {
//         super(message);
//     }
// 
//     public QueryException(String message, Throwable cause)
//     {
//         super(message, cause);
//     }
// }


// Path: src/joquery/Query.java
import joquery.core.QueryException;
import java.util.function.Function;

package joquery;



/**
 * User: Adipa
 * Date: 10/6/12
 * Time: 9:31 PM
 */
public interface Query<T,W extends Query<T,W>>
{
    W from(Iterable<T> list);

    W where();

    W select();

	W exec(Function<T,?> property) throws QueryException;