package org.qi4j.spi.query; import java.util.Iterator; import java.util.Map; import org.qi4j.api.composite.Composite; import org.qi4j.api.query.grammar.OrderBy; import org.qi4j.functional.Specification; /** * Query Source, used in QueryBuilder SPI. */ public interface QuerySource { <T> T find( Class<T> resultType, Specification<Composite> whereClause, Iterable<OrderBy> orderBySegments, Integer firstResult, Integer maxResults, Map<String, Object> variables ); <T> long count( Class<T> resultType, Specification<Composite> whereClause, Iterable<OrderBy> orderBySegments, Integer firstResult, Integer maxResults, Map<String, Object> variables ); <T> Iterator<T> iterator( Class<T> resultType, Specification<Composite> whereClause, Iterable<OrderBy> orderBySegments, Integer firstResult, Integer maxResults, Map<String, Object> variables ); }