package injection;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

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.query.QuerySolution;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.update.GraphStore;
import com.hp.hpl.jena.update.GraphStoreFactory;
import com.hp.hpl.jena.update.UpdateRequest;

public abstract class SampleBase {
	
	public void executeUpdate(UpdateRequest update, Model model){
		GraphStore graphStore = GraphStoreFactory.create();
		graphStore.setDefaultGraph(model.getGraph());
		graphStore.execute(update);
	}
	
	public QuerySolution retrieveFirstResult(Query query, Model model){
		QueryExecution qe = QueryExecutionFactory.create(query, model);
		ResultSet results = qe.execSelect();

		if(!results.hasNext())
			return null;
		else{
			QuerySolution solution = results.nextSolution();
			return solution;
		}
	}
	
	public Model loadModel(String filePath) throws Exception{
		InputStream in = new FileInputStream(new File(filePath));

		Model model = ModelFactory.createMemModelMaker().createModel("");
		model.read(in,null);
		in.close();
		return model;
	}
}
