package org.aksw.jena_sparql_api.compare; import org.aksw.jena_sparql_api.core.QueryExecutionFactory; import org.aksw.jena_sparql_api.core.QueryExecutionFactoryBackQuery; import org.apache.jena.query.Query; import org.apache.jena.query.QueryExecution; /** * A query execution factory, which generates query executions * that delay execution * * * @author Claus Stadler * * * Date: 7/26/11 * Time: 10:27 AM */ public class QueryExecutionFactoryCompare extends QueryExecutionFactoryBackQuery { // We need to be able to parse queries in order to get the ordering private QueryExecutionFactory a; private QueryExecutionFactory b; // Whether to remove limit and offset from queries private boolean removeSlices = false; public QueryExecutionFactoryCompare(QueryExecutionFactory a, QueryExecutionFactory b) { this(a, b, false); } public QueryExecutionFactoryCompare(QueryExecutionFactory a, QueryExecutionFactory b, boolean removesSlices) { this.a = a; this.b = b; this.removeSlices = removesSlices; } @Override public QueryExecutionCompare createQueryExecution(Query query) { if(removeSlices) { query = (Query)query.clone(); query.setLimit(Query.NOLIMIT); query.setOffset(Query.NOLIMIT); } //boolean isOrdered = !query.getOrderBy().isEmpty(); QueryExecution qea = a.createQueryExecution(query); QueryExecution qeb = b.createQueryExecution(query); QueryExecutionCompare result = new QueryExecutionCompare(query, qea, qeb, false); //QueryExecution result = QueryExecutionWrapper.wrap(tmp); return result; } @Override public QueryExecutionCompare createQueryExecution(String queryString) { return (QueryExecutionCompare)super.createQueryExecution(queryString); } /* @Override public QueryExecution createQueryExecution(String queryString) { return new QueryExecutionCompare(a.createQueryExecution(queryString), b.createQueryExecution(queryString), false); }*/ @Override public String getId() { return "compare(" + a.getId() + ", " + b.getId() + ")"; } @Override public String getState() { return null; //To change body of implemented methods use File | Settings | File Templates. } }