package org.aksw.jena_sparql_api.pagination.core;
import org.aksw.jena_sparql_api.core.QueryExecutionFactory;
import org.aksw.jena_sparql_api.core.QueryExecutionFactoryBackQuery;
import org.aksw.jena_sparql_api.http.QueryExecutionFactoryHttp;
import org.aksw.jena_sparql_api.pagination.extra.PaginationQueryIterator;
import org.apache.jena.query.Query;
import org.apache.jena.query.QueryExecution;
/**
* @author Claus Stadler
* <p/>
* Date: 7/26/11
* Time: 11:41 PM
*/
public class QueryExecutionFactoryPaginated
extends QueryExecutionFactoryBackQuery
{
public static final long DEFAULT_PAGE_SIZE = 1000;
private QueryExecutionFactory decoratee;
private long pageSize;
public QueryExecutionFactoryPaginated(QueryExecutionFactory decoratee) {
this(decoratee, PaginationUtils.adjustPageSize(decoratee, DEFAULT_PAGE_SIZE));
}
public QueryExecutionFactoryPaginated(QueryExecutionFactory decoratee, long pageSize) {
// Executes an ?s ?p ?o query with limit set to pageSize to
// reduce it if necessary
//this.pageSize = PaginationUtils.adjustPageSize(decoratee, pageSize);
this.pageSize = pageSize;
this.decoratee = decoratee;
}
@Override
public QueryExecution createQueryExecution(Query query) {
query = query.cloneQuery();
PaginationQueryIterator queryIterator = new PaginationQueryIterator(query, pageSize);
return new QueryExecutionIterated(query, decoratee, queryIterator);
}
/*
@Override
public QueryExecution createQueryExecution(String queryString) {
return decoratee.createQueryExecution(queryString);
}*/
@Override
public String getId() {
return decoratee.getId();
}
@Override
public String getState() {
return decoratee.getState();
}
public long getPageSize() {
return pageSize;
}
public static void main(String[] args) {
QueryExecutionFactory factory = new QueryExecutionFactoryHttp("http://linkedgeodata.org/sparql", "http://linkedgeodata.org");
QueryExecutionFactoryPaginated fp = new QueryExecutionFactoryPaginated(factory, 10000);
System.out.println(fp.getPageSize());
/*
QueryExecution qe = fp.createQueryExecution(CannedQueryUtils.spoTemplate());
ResultSet rs = qe.execSelect();
while(rs.hasNext()) {
System.out.println(rs.next());
}
qe.close();
*/
}
}