package com.mysema.rdfbean.jena; import java.util.ArrayList; import java.util.Collections; import java.util.List; import com.hp.hpl.jena.query.Dataset; import com.hp.hpl.jena.query.Query; import com.hp.hpl.jena.query.QueryExecution; import com.hp.hpl.jena.query.QueryExecutionFactory; import com.hp.hpl.jena.sparql.core.Var; import com.hp.hpl.jena.sparql.engine.binding.Binding; import com.hp.hpl.jena.sparql.engine.binding.BindingMap; import com.mysema.rdfbean.model.NODE; import com.mysema.rdfbean.model.SPARQLQuery; /** * @author tiwe * */ public abstract class AbstractQueryImpl implements SPARQLQuery { protected final Query query; private final Dataset dataset; protected final JenaDialect dialect; private final List<Var> vars = new ArrayList<Var>(); private final Binding binding = new BindingMap(); public AbstractQueryImpl(Query query, Dataset dataset, JenaDialect dialect) { this.query = query; this.dataset = dataset; this.dialect = dialect; } @Override public void setBinding(String variable, NODE node) { Var var = Var.alloc(variable); vars.add(var); binding.add(var, dialect.getNode(node)); } @Override public void setMaxQueryTime(int secs) { // TODO Auto-generated method stub } protected QueryExecution createExecution() { query.setBindings(vars, Collections.singletonList(binding)); return QueryExecutionFactory.create(query, dataset); } }