NIHVIVO-1363 Clean up logic for creating the Dataset to run the query against.
This commit is contained in:
parent
d464426554
commit
6a52b1c1f2
1 changed files with 61 additions and 32 deletions
|
@ -7,10 +7,12 @@ import java.io.OutputStream;
|
||||||
import java.io.Writer;
|
import java.io.Writer;
|
||||||
import java.net.URLDecoder;
|
import java.net.URLDecoder;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import javax.servlet.RequestDispatcher;
|
import javax.servlet.RequestDispatcher;
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
|
@ -137,42 +139,69 @@ public class SparqlQueryServlet extends BaseEditController {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
DataSource dataSource = DatasetFactory.create() ;
|
Dataset dataset = chooseDatasetForQuery(vreq);
|
||||||
Dataset dataset = null;
|
|
||||||
ModelMaker maker = (ModelMaker) getServletContext().getAttribute("vitroJenaModelMaker");
|
|
||||||
|
|
||||||
boolean someModelSet = false;
|
executeQuery(response, resultFormatParam, rdfResultFormatParam, queryParam, dataset);
|
||||||
String models[] = request.getParameterValues("sourceModelName");
|
|
||||||
if( models != null && models.length > 0 ){
|
|
||||||
OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
|
|
||||||
for( String modelName : models ){
|
|
||||||
Model modelNamed = maker.getModel(modelName);
|
|
||||||
if( modelNamed != null ){
|
|
||||||
dataSource.addNamedModel(modelName, modelNamed) ;
|
|
||||||
// For now, people expect to query these graphs without using
|
|
||||||
// FROM NAMED, so we'll also add to the background
|
|
||||||
ontModel.addSubModel(modelNamed);
|
|
||||||
someModelSet = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (someModelSet) {
|
|
||||||
|
|
||||||
dataSource.setDefaultModel(ontModel);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if( ! someModelSet ){
|
|
||||||
dataset = vreq.getDataset();
|
|
||||||
if(dataset==null){
|
|
||||||
dataSource.setDefaultModel(model) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
executeQuery(response, resultFormatParam, rdfResultFormatParam, queryParam, (dataset != null) ? dataset : dataSource);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Dataset chooseDatasetForQuery(VitroRequest vreq) {
|
||||||
|
Map<String, Model> modelMap = getModelsFromRequest(vreq);
|
||||||
|
if (!modelMap.isEmpty()) {
|
||||||
|
return buildDataSetFromNamedModels(modelMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
Dataset dataset = vreq.getDataset();
|
||||||
|
if (dataset != null) {
|
||||||
|
return dataset;
|
||||||
|
}
|
||||||
|
|
||||||
|
DataSource dataSource = DatasetFactory.create();
|
||||||
|
dataSource.setDefaultModel(vreq.getJenaOntModel());
|
||||||
|
return dataSource;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, Model> getModelsFromRequest(HttpServletRequest request) {
|
||||||
|
String modelNames[] = request.getParameterValues("sourceModelName");
|
||||||
|
if ((modelNames != null) && (modelNames.length > 0)) {
|
||||||
|
return Collections.emptyMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
ModelMaker maker = (ModelMaker) getServletContext().getAttribute(
|
||||||
|
"vitroJenaModelMaker");
|
||||||
|
|
||||||
|
Map<String, Model> map = new HashMap<String, Model>();
|
||||||
|
for (String modelName : modelNames) {
|
||||||
|
Model model = maker.getModel(modelName);
|
||||||
|
if (model != null) {
|
||||||
|
map.put(modelName, model);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dataset buildDataSetFromNamedModels(Map<String, Model> modelMap) {
|
||||||
|
DataSource dataSource = DatasetFactory.create();
|
||||||
|
for (String name : modelMap.keySet()) {
|
||||||
|
Model model = modelMap.get(name);
|
||||||
|
dataSource.addNamedModel(name, model);
|
||||||
|
}
|
||||||
|
|
||||||
|
// For now, people expect to query these graphs without using
|
||||||
|
// FROM NAMED, so we'll also add to the background
|
||||||
|
OntModel ontModel = ModelFactory
|
||||||
|
.createOntologyModel(OntModelSpec.OWL_MEM);
|
||||||
|
for (String name : modelMap.keySet()) {
|
||||||
|
Model model = modelMap.get(name);
|
||||||
|
ontModel.addSubModel(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
dataSource.setDefaultModel(ontModel);
|
||||||
|
return dataSource;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void executeQuery(HttpServletResponse response, String resultFormatParam, String rdfResultFormatParam, String queryParam, Dataset dataset ) throws IOException {
|
private void executeQuery(HttpServletResponse response, String resultFormatParam, String rdfResultFormatParam, String queryParam, Dataset dataset ) throws IOException {
|
||||||
|
|
||||||
ResultSetFormat rsf = null;
|
ResultSetFormat rsf = null;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue