VIVO-773 continue clean up of model makers

This commit is contained in:
Jim Blake 2014-05-21 13:08:36 -04:00
parent 68cfef81cd
commit c44df14ec1
7 changed files with 27 additions and 546 deletions

View file

@ -69,9 +69,6 @@ import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess;
import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess.ModelID; import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess.ModelID;
import edu.cornell.mannlib.vitro.webapp.dao.OntologyDao; import edu.cornell.mannlib.vitro.webapp.dao.OntologyDao;
import edu.cornell.mannlib.vitro.webapp.dao.jena.RDFServiceGraph; import edu.cornell.mannlib.vitro.webapp.dao.jena.RDFServiceGraph;
import edu.cornell.mannlib.vitro.webapp.dao.jena.RDFServiceModelMaker;
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaSDBModelMaker;
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaSpecialModelMaker;
import edu.cornell.mannlib.vitro.webapp.dao.jena.event.EditEvent; import edu.cornell.mannlib.vitro.webapp.dao.jena.event.EditEvent;
import edu.cornell.mannlib.vitro.webapp.rdfservice.ChangeSet; import edu.cornell.mannlib.vitro.webapp.rdfservice.ChangeSet;
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService; import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
@ -86,7 +83,6 @@ import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaOutputUtils;
import edu.cornell.mannlib.vitro.webapp.utils.jena.WorkflowOntology; import edu.cornell.mannlib.vitro.webapp.utils.jena.WorkflowOntology;
public class JenaIngestController extends BaseEditController { public class JenaIngestController extends BaseEditController {
private static final Log log = LogFactory.getLog(JenaIngestController.class); private static final Log log = LogFactory.getLog(JenaIngestController.class);
private static final String INGEST_MENU_JSP = "/jenaIngest/ingestMenu.jsp"; private static final String INGEST_MENU_JSP = "/jenaIngest/ingestMenu.jsp";
@ -113,9 +109,7 @@ public class JenaIngestController extends BaseEditController {
private static final String RENAME_RESOURCE = "/jenaIngest/renameResource.jsp"; private static final String RENAME_RESOURCE = "/jenaIngest/renameResource.jsp";
private static final String RENAME_RESULT = "/jenaIngest/renameResult.jsp"; private static final String RENAME_RESULT = "/jenaIngest/renameResult.jsp";
private static final String CREATED_GRAPH_BASE_URI = "http://vitro.mannlib.cornell.edu/a/graph/"; private static final String CREATED_GRAPH_BASE_URI = "http://vitro.mannlib.cornell.edu/a/graph/";
public static final boolean MAIN_STORE_STATE = true; private static final String WHICH_MODEL_MAKER = "jenaIngestModelMakerID";
public static final boolean AUXILIARY_STORE_STATE = false;
private static final String INGEST_STORE_ATTR = JenaIngestController.class.getName() + ".isUsingMainStoreForIngest";
private static final Map<String, Model> attachedModels = new HashMap<String, Model>(); private static final Map<String, Model> attachedModels = new HashMap<String, Model>();
@ -129,7 +123,7 @@ public class JenaIngestController extends BaseEditController {
VitroRequest vreq = new VitroRequest(request); VitroRequest vreq = new VitroRequest(request);
ModelMaker maker = getVitroJenaModelMaker(vreq); ModelMaker maker = getVitroJenaModelMaker(vreq);
String modelType = getModelType(vreq, maker); String modelType = getModelType(vreq);
String actionStr = vreq.getParameter("action"); String actionStr = vreq.getParameter("action");
actionStr = (actionStr != null) ? actionStr : ""; actionStr = (actionStr != null) ? actionStr : "";
@ -197,7 +191,6 @@ public class JenaIngestController extends BaseEditController {
maker = getVitroJenaModelMaker(vreq); maker = getVitroJenaModelMaker(vreq);
request.setAttribute("modelNames", maker.listModels().toList()); request.setAttribute("modelNames", maker.listModels().toList());
request.setAttribute("jenaIngestModelMaker", maker);
RequestDispatcher rd = request.getRequestDispatcher( RequestDispatcher rd = request.getRequestDispatcher(
Controllers.BASIC_JSP); Controllers.BASIC_JSP);
@ -214,30 +207,19 @@ public class JenaIngestController extends BaseEditController {
showModelList(vreq, maker, modelType); showModelList(vreq, maker, modelType);
} }
public static boolean isUsingMainStoreForIngest(VitroRequest vreq) { public static boolean isUsingMainStoreForIngest(HttpServletRequest req) {
Boolean storeState = (Boolean) vreq.getSession().getAttribute(INGEST_STORE_ATTR); return CONFIGURATION != req.getSession().getAttribute(WHICH_MODEL_MAKER);
if (storeState == null) {
return MAIN_STORE_STATE;
} else {
return storeState;
}
}
private void setUsingMainStoreForIngest(VitroRequest vreq, boolean storeState) {
vreq.getSession().setAttribute(INGEST_STORE_ATTR, storeState);
} }
private void processRDBModelsRequest(VitroRequest vreq, ModelMaker maker, String modelType) { private void processRDBModelsRequest(VitroRequest vreq, ModelMaker maker, String modelType) {
ModelMaker vjmm = ModelAccess.on(getServletContext()).getModelMaker(CONFIGURATION); ModelMaker vjmm = ModelAccess.on(getServletContext()).getModelMaker(CONFIGURATION);
vreq.getSession().setAttribute("jenaIngestModelMaker", vjmm); vreq.getSession().setAttribute(WHICH_MODEL_MAKER, CONFIGURATION);
setUsingMainStoreForIngest(vreq, AUXILIARY_STORE_STATE);
showModelList(vreq, vjmm, "rdb"); showModelList(vreq, vjmm, "rdb");
} }
private void processSDBModelsRequest(VitroRequest vreq, ModelMaker maker, String modelType) { private void processSDBModelsRequest(VitroRequest vreq, ModelMaker maker, String modelType) {
ModelMaker vsmm = ModelAccess.on(getServletContext()).getModelMaker(CONTENT); ModelMaker vsmm = ModelAccess.on(getServletContext()).getModelMaker(CONTENT);
vreq.getSession().setAttribute("jenaIngestModelMaker", vsmm); vreq.getSession().setAttribute(WHICH_MODEL_MAKER, CONTENT);
setUsingMainStoreForIngest(vreq, MAIN_STORE_STATE);
showModelList(vreq, vsmm, "sdb"); showModelList(vreq, vsmm, "sdb");
} }
@ -727,27 +709,10 @@ public class JenaIngestController extends BaseEditController {
} }
} }
protected ModelMaker getVitroJenaModelMaker(HttpServletRequest request){ protected String getModelType(VitroRequest vreq) {
return getVitroJenaModelMaker(request,getServletContext());
}
protected Model getModel( String name, HttpServletRequest request ){
return JenaIngestController.getModel(name, request, getServletContext());
}
protected String getModelType(VitroRequest vreq, ModelMaker maker) {
String modelType = vreq.getParameter("modelType"); String modelType = vreq.getParameter("modelType");
maker = (maker instanceof VitroJenaSpecialModelMaker)
? ((VitroJenaSpecialModelMaker) maker).getInnerModelMaker()
: maker;
if (modelType == null) { if (modelType == null) {
if (maker instanceof RDFServiceModelMaker) { if (isUsingMainStoreForIngest(vreq)) {
modelType = "sdb";
} else if (maker instanceof VitroJenaSDBModelMaker) {
modelType = "sdb"; modelType = "sdb";
} else { } else {
modelType = "rdb"; modelType = "rdb";
@ -956,13 +921,10 @@ public class JenaIngestController extends BaseEditController {
public void doConnectDB(VitroRequest vreq) { public void doConnectDB(VitroRequest vreq) {
String tripleStore = vreq.getParameter("tripleStore"); String tripleStore = vreq.getParameter("tripleStore");
ServletContext ctx = getServletContext();
ModelMaker vjmm = ModelAccess.on(ctx).getModelMaker(CONFIGURATION);
ModelMaker vsmm = ModelAccess.on(ctx).getModelMaker(CONTENT);
if("SDB".equals(tripleStore)) { if("SDB".equals(tripleStore)) {
vreq.getSession().setAttribute("jenaIngestModelMaker",vsmm); vreq.getSession().setAttribute(WHICH_MODEL_MAKER,CONTENT);
} else { } else {
vreq.getSession().setAttribute("jenaIngestModelMaker",vjmm); vreq.getSession().setAttribute(WHICH_MODEL_MAKER,CONFIGURATION);
} }
} }
@ -1242,12 +1204,6 @@ public class JenaIngestController extends BaseEditController {
if(modelType.equals("rdb")){ if(modelType.equals("rdb")){
vreq.setAttribute("modelType", "rdb"); vreq.setAttribute("modelType", "rdb");
vreq.setAttribute("infoLine", "RDB models"); vreq.setAttribute("infoLine", "RDB models");
} else if (maker instanceof VitroJenaSDBModelMaker ||
(maker instanceof VitroJenaSpecialModelMaker &&
((VitroJenaSpecialModelMaker) maker).getInnerModelMaker()
instanceof VitroJenaSDBModelMaker)) {
vreq.setAttribute("modelType", "sdb");
vreq.setAttribute("infoLine", "SDB models");
} else { } else {
vreq.setAttribute("modelType", "sdb"); vreq.setAttribute("modelType", "sdb");
vreq.setAttribute("infoLine", "main store models"); vreq.setAttribute("infoLine", "main store models");
@ -1272,7 +1228,7 @@ public class JenaIngestController extends BaseEditController {
} }
public static Model getModel(String name, HttpServletRequest request, ServletContext context) { public static Model getModel(String name, HttpServletRequest request) {
if ("vitro:jenaOntModel".equals(name)) { if ("vitro:jenaOntModel".equals(name)) {
return ModelAccess.on(request.getSession()).getJenaOntModel(); return ModelAccess.on(request.getSession()).getJenaOntModel();
} else if ("vitro:baseOntModel".equals(name)) { } else if ("vitro:baseOntModel".equals(name)) {
@ -1280,13 +1236,20 @@ public class JenaIngestController extends BaseEditController {
} else if ("vitro:inferenceOntModel".equals(name)) { } else if ("vitro:inferenceOntModel".equals(name)) {
return ModelAccess.on(request.getSession()).getInferenceOntModel(); return ModelAccess.on(request.getSession()).getInferenceOntModel();
} else { } else {
return getVitroJenaModelMaker(request,context).getModel(name); return getVitroJenaModelMaker(request).getModel(name);
} }
} }
protected static ModelMaker getVitroJenaModelMaker(HttpServletRequest request, ServletContext context) { protected static ModelMaker getVitroJenaModelMaker(HttpServletRequest req){
ModelMaker myVjmm = (ModelMaker) request.getSession().getAttribute("jenaIngestModelMaker"); ServletContext ctx = req.getSession().getServletContext();
myVjmm = (myVjmm == null) ? ModelAccess.on(context).getModelMaker(CONTENT) : myVjmm; if (isUsingMainStoreForIngest(req)) {
return new VitroJenaSpecialModelMaker(myVjmm, request); return ModelAccess.on(ctx).getModelMaker(CONTENT);
} else {
return ModelAccess.on(ctx).getModelMaker(CONFIGURATION);
} }
} }
}

View file

@ -261,7 +261,7 @@ public class RDFUploadController extends JenaIngestController {
} finally { } finally {
rdfService.close(); rdfService.close();
} }
String modelType = getModelType(request, maker); String modelType = getModelType(request);
showModelList(request, maker, modelType); showModelList(request, maker, modelType);
} }

View file

@ -40,7 +40,6 @@ import edu.cornell.mannlib.vitro.webapp.dao.jena.OntModelSelector;
* VitroModelSource.openModelIfPresent(string) * VitroModelSource.openModelIfPresent(string)
* ServletContext.getAttribute("pelletOntModel") * ServletContext.getAttribute("pelletOntModel")
* VitroJenaModelMaker * VitroJenaModelMaker
* VitroJenaSpecialModelMaker
* JenaDataSourceSetupBase.getApplicationDataSource(ctx) * JenaDataSourceSetupBase.getApplicationDataSource(ctx)
* JenaDataSourceSetupBase.getStartupDataset() * JenaDataSourceSetupBase.getStartupDataset()
* HttpSession.getAttribute("jenaAuditModel") * HttpSession.getAttribute("jenaAuditModel")

View file

@ -1,346 +0,0 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.webapp.dao.jena;
import java.sql.SQLException;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import javax.sql.DataSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.hp.hpl.jena.graph.Graph;
import com.hp.hpl.jena.graph.GraphMaker;
import com.hp.hpl.jena.graph.Node;
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.query.QueryFactory;
import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.rdf.model.ModelMaker;
import com.hp.hpl.jena.rdf.model.ModelReader;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.rdf.model.StmtIterator;
import com.hp.hpl.jena.sdb.SDBFactory;
import com.hp.hpl.jena.sdb.Store;
import com.hp.hpl.jena.sdb.StoreDesc;
import com.hp.hpl.jena.sdb.sql.SDBConnection;
import com.hp.hpl.jena.sdb.util.StoreUtils;
import com.hp.hpl.jena.util.iterator.ExtendedIterator;
import com.hp.hpl.jena.util.iterator.WrappedIterator;
import com.hp.hpl.jena.vocabulary.RDFS;
public class VitroJenaSDBModelMaker implements ModelMaker {
private final static Log log = LogFactory.getLog(VitroJenaSDBModelMaker.class);
private StoreDesc storeDesc = null;
private DataSource ds = null;
private SDBConnection conn = null;
private SDBGraphConnectionGenerator connGen = null;
public static final String METADATA_MODEL_URI =
"http://vitro.mannlib.cornell.edu/ns/vitro/sdb/metadata";
public static final String HAS_NAMED_MODEL_URI =
"http://vitro.mannlib.cornell.edu/ns/vitro/sdb/hasNamedModel";
private Resource sdbResource; // a resource representing the SDB database
public VitroJenaSDBModelMaker(StoreDesc storeDesc, DataSource ds)
throws SQLException {
this.storeDesc = storeDesc;
this.ds = ds;
connGen = new SDBGraphConnectionGenerator(ds);
Store store = getStore();
try {
setUpMetadata(store);
} finally {
store.close();
}
}
private static final int MAX_TRIES = 10;
private Store getStore() {
Store store = null;
boolean goodStore = false;
int tries = 0;
while (!goodStore && tries < MAX_TRIES) {
tries++;
if (conn == null) {
try {
conn = new SDBConnection(connGen.generateConnection());
} catch (SQLException sqle) {
throw new RuntimeException(
"Unable to get SQL connection", sqle);
}
}
store = SDBFactory.connectStore(conn, storeDesc);
try {
if (!StoreUtils.isFormatted(store)) {
// initialize the store
try {
store.getTableFormatter().create();
store.getTableFormatter().truncate();
} catch (Exception e) {
throw new RuntimeException(
"Unable to format store for " +
"VitroJenaSDBModelMaker", e);
}
}
} catch (SQLException sqle) {
conn.close();
conn = null;
}
if (conn != null) {
if (isWorking(store)) {
goodStore = true;
} else {
conn.close();
conn = null;
}
}
}
if (store == null) {
throw new RuntimeException(
"Unable to connect to SDB store after " +
MAX_TRIES + " attempts");
}
return store;
}
Model getMetadataModel() {
return getModel(METADATA_MODEL_URI);
}
private void setUpMetadata(Store store) {
Model metadataModel = getMetadataModel();
if (metadataModel.size() == 0) {
// set up the model name metadata to avoid expensive calls to
// listNames()
Resource sdbRes = metadataModel.createResource();
this.sdbResource = sdbRes;
Iterator nameIt = SDBFactory.connectDataset(store).listNames();
while (nameIt.hasNext()) {
String name = (String) nameIt.next();
metadataModel.add(sdbResource,metadataModel.getProperty(
HAS_NAMED_MODEL_URI),name);
}
} else {
StmtIterator stmtIt = metadataModel.listStatements(
(Resource) null, metadataModel.getProperty(
HAS_NAMED_MODEL_URI),(RDFNode) null);
if (stmtIt.hasNext()) {
Statement stmt = stmtIt.nextStatement();
sdbResource = stmt.getSubject();
}
stmtIt.close();
}
}
private boolean isWorking(Store store) {
Dataset d = SDBFactory.connectDataset(store);
try {
String validationQuery = "ASK { <" + RDFS.Resource.getURI() + "> " +
" <" + RDFS.isDefinedBy.getURI() + "> " +
" <" + RDFS.Resource.getURI() + "> }";
Query q = QueryFactory.create(validationQuery);
QueryExecution qe = QueryExecutionFactory.create(q, d);
try {
qe.execAsk();
return true;
} catch (Exception e) {
log.error(e, e);
return false;
} finally {
qe.close();
}
} finally {
d.close();
}
}
public void close() {
getStore().close();
}
public Model createModel(String modelName) {
Model model = getModel(modelName);
Model metadataModel = getMetadataModel();
try {
metadataModel.add(
sdbResource,metadataModel.getProperty(
HAS_NAMED_MODEL_URI), modelName);
} finally {
metadataModel.close();
}
return model;
}
public Model createModel(String arg0, boolean arg1) {
// TODO Figure out if we can offer a "create if not found" option using SDB
return createModel(arg0);
}
public GraphMaker getGraphMaker() {
throw new UnsupportedOperationException(
"GraphMaker not supported by " + this.getClass().getName());
}
public boolean hasModel(String arg0) {
Model metadataModel = getMetadataModel();
try {
StmtIterator stmtIt = metadataModel.listStatements(
sdbResource, metadataModel.getProperty(
HAS_NAMED_MODEL_URI), arg0);
try {
return stmtIt.hasNext();
} finally {
if (stmtIt != null) {
stmtIt.close();
}
}
} finally {
metadataModel.close();
}
}
public ExtendedIterator<String> listModels() {
Model metadataModel = getMetadataModel();
try {
return listModelNames(metadataModel);
} finally {
metadataModel.close();
}
}
private ExtendedIterator<String> listModelNames(Model metadataModel) {
Set<String> modelNameSet = new HashSet<String>();
Iterator<RDFNode> metadataNameIt = metadataModel.listObjectsOfProperty(
metadataModel.getProperty(HAS_NAMED_MODEL_URI));
while (metadataNameIt.hasNext()) {
RDFNode rdfNode = metadataNameIt.next();
if (rdfNode.isLiteral()) {
modelNameSet.add(((Literal) rdfNode).getLexicalForm());
}
}
Iterator<Node> storeNameIt = StoreUtils.storeGraphNames(getStore());
while (storeNameIt.hasNext()){
Node node = storeNameIt.next();
modelNameSet.add(node.getURI());
}
List<String> modelNameList = new ArrayList<String>();
modelNameList.addAll(modelNameSet);
Collections.sort(modelNameList, Collator.getInstance());
return WrappedIterator.create(modelNameList.iterator());
}
public Model openModel(String arg0, boolean arg1) {
return SDBFactory.connectNamedModel(getStore(),arg0);
}
public void removeModel(String arg0) {
Model m = getModel(arg0);
m.removeAll(null,null,null);
Model metadataModel = getMetadataModel();
try {
metadataModel.remove(sdbResource, metadataModel.getProperty(
HAS_NAMED_MODEL_URI),metadataModel.createLiteral(arg0));
} finally {
metadataModel.close();
}
}
public Model addDescription(Model arg0, Resource arg1) {
throw new UnsupportedOperationException(
"addDescription not supported by " + this.getClass().getName());
}
public Model createModelOver(String arg0) {
throw new UnsupportedOperationException(
"createModelOver not supported by " + this.getClass().getName());
}
public Model getDescription() {
throw new UnsupportedOperationException(
"createModelOver not supported by " + this.getClass().getName());
}
public Model getDescription(Resource arg0) {
throw new UnsupportedOperationException(
"getDescription not supported by "+this.getClass().getName());
}
public Model openModel() {
return SDBFactory.connectDefaultModel(getStore());
}
public Model createDefaultModel() {
return SDBFactory.connectDefaultModel(getStore());
}
public Model createFreshModel() {
throw new UnsupportedOperationException(
"createFreshModel not supported by " + this.getClass().getName());
}
/**
* @deprecated
*/
public Model createModel() {
return SDBFactory.connectDefaultModel(getStore());
}
/**
* @deprecated
*/
public Model getModel() {
return SDBFactory.connectDefaultModel(getStore());
}
public Model openModel(String arg0) {
return SDBFactory.connectDefaultModel(getStore());
}
public Model openModelIfPresent(String arg0) {
return (this.hasModel(arg0))
? SDBFactory.connectNamedModel(getStore(),arg0)
: null;
}
public Model getModel(String modelName) {
SDBGraphGenerator graphGen = new SDBGraphGenerator(
connGen, storeDesc, modelName);
Graph g = new RegeneratingGraph(
SDBFactory.connectNamedGraph(getStore(), modelName), graphGen);
return ModelFactory.createModelForGraph(g);
}
public Model getModel(String arg0, ModelReader arg1) {
throw new UnsupportedOperationException(
"getModel(String, ModelReader) not supported by " +
this.getClass().getName());
}
}

View file

@ -1,131 +0,0 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.webapp.dao.jena;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.hp.hpl.jena.graph.GraphMaker;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelMaker;
import com.hp.hpl.jena.rdf.model.ModelReader;
import com.hp.hpl.jena.util.iterator.ExtendedIterator;
import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess;
/**
* Wraps a model maker and returns Models from the servlet context when
* certain model URIs are requested
* @author bjl23
*
*/
public class VitroJenaSpecialModelMaker implements ModelMaker {
private static final Log log = LogFactory.getLog(VitroJenaSpecialModelMaker.class.getName());
private ModelMaker innerModelMaker;
private HttpServletRequest request;
public VitroJenaSpecialModelMaker(ModelMaker mm, HttpServletRequest request) {
this.innerModelMaker = mm;
this.request = request;
}
public ModelMaker getInnerModelMaker() {
return this.innerModelMaker;
}
public void close() {
innerModelMaker.close();
}
public Model createModel(String arg0) {
return innerModelMaker.createModel(arg0);
}
public Model createModel(String arg0, boolean arg1) {
Model specialModel = getSpecialModel(arg0);
return (specialModel != null) ? specialModel : innerModelMaker.createModel(arg0,arg1);
}
public GraphMaker getGraphMaker() {
return innerModelMaker.getGraphMaker();
}
public boolean hasModel(String arg0) {
return ( (getSpecialModel(arg0) != null) || innerModelMaker.hasModel(arg0) );
}
/**
* Won't list the special models
*/
public ExtendedIterator listModels() {
return innerModelMaker.listModels();
}
public Model openModel(String arg0, boolean arg1) {
Model specialModel = getSpecialModel(arg0);
return (specialModel != null) ? specialModel : innerModelMaker.openModel(arg0,arg1);
}
public void removeModel(String arg0) {
innerModelMaker.removeModel(arg0);
}
public Model createModelOver(String arg0) {
Model specialModel = getSpecialModel(arg0);
return (specialModel != null) ? specialModel : createModelOver(arg0);
}
public Model createDefaultModel() {
return innerModelMaker.createDefaultModel();
}
public Model createFreshModel() {
return innerModelMaker.createFreshModel();
}
public Model openModel(String arg0) {
Model specialModel = getSpecialModel(arg0);
return (specialModel != null) ? specialModel : innerModelMaker.openModel(arg0);
}
public Model openModelIfPresent(String arg0) {
Model specialModel = getSpecialModel(arg0);
return (specialModel != null) ? specialModel : innerModelMaker.openModelIfPresent(arg0);
}
public Model getModel(String arg0) {
Model specialModel = getSpecialModel(arg0);
return (specialModel != null) ? specialModel : innerModelMaker.getModel(arg0);
}
public Model getModel(String arg0, ModelReader arg1) {
Model specialModel = getSpecialModel(arg0);
return (specialModel != null) ? specialModel : innerModelMaker.getModel(arg0,arg1);
}
/**
* This will trap for strings like "vitro:jenaOntModel" and return the
* appropriate in-memory model used by the current webapp context.
* To use this functionality, the VitroJenaModelMaker must be constructed
* with a VitroRequest parameter
*/
private Model getSpecialModel(String modelName) {
if (request != null) {
if ("vitro:jenaOntModel".equals(modelName)) {
return ModelAccess.on(request.getSession()).getJenaOntModel();
} else if ("vitro:baseOntModel".equals(modelName)) {
return ModelAccess.on(request.getSession()).getBaseOntModel();
} else if ("vitro:inferenceOntModel".equals(modelName)) {
return ModelAccess.on(request.getSession()).getInferenceOntModel();
} else {
return null;
}
}
return null;
}
}

View file

@ -27,7 +27,7 @@ public abstract class DataGetterBase implements DataGetter {
}else if( CONTEXT_DISPLAY_MODEL.equals(modelName)){ }else if( CONTEXT_DISPLAY_MODEL.equals(modelName)){
return ModelAccess.on(context).getDisplayModel(); return ModelAccess.on(context).getDisplayModel();
}else if( ! StringUtils.isEmpty( modelName)){ }else if( ! StringUtils.isEmpty( modelName)){
Model model = JenaIngestController.getModel( modelName, vreq, context); Model model = JenaIngestController.getModel( modelName, vreq);
if( model == null ) if( model == null )
throw new IllegalAccessError("Cannot get model <" + modelName +"> for DataGetter."); throw new IllegalAccessError("Cannot get model <" + modelName +"> for DataGetter.");
else else

View file

@ -29,11 +29,7 @@ function init(){
<td> <td>
<form name="sdbform" action="ingest" method="get"> <form name="sdbform" action="ingest" method="get">
<input type="hidden" name="action" value="sdbModels"/> <input type="hidden" name="action" value="sdbModels"/>
<% if ("SDB models".equals(request.getAttribute("infoLine"))) { %>
<input type="submit" name="submit" value="SDB Models"/>
<% } else { %>
<input type="submit" name="submit" value="Main Store Models"/> <input type="submit" name="submit" value="Main Store Models"/>
<% } %>
</form> </form>
</td> </td>
<td> <td>