VIVO-773 clean up the structure of the model makers

This commit is contained in:
Jim Blake 2014-05-21 11:34:46 -04:00
parent 4ffb7bce87
commit 68cfef81cd
9 changed files with 133 additions and 231 deletions

View file

@ -2,6 +2,9 @@
package edu.cornell.mannlib.vitro.webapp.controller.jena;
import static edu.cornell.mannlib.vitro.webapp.dao.ModelAccess.ModelMakerID.CONFIGURATION;
import static edu.cornell.mannlib.vitro.webapp.dao.ModelAccess.ModelMakerID.CONTENT;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@ -10,7 +13,6 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URI;
import java.net.URISyntaxException;
import java.sql.SQLException;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Arrays;
@ -29,7 +31,6 @@ import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.logging.Log;
@ -55,10 +56,7 @@ import com.hp.hpl.jena.rdf.model.ResIterator;
import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.ResourceFactory;
import com.hp.hpl.jena.rdf.model.Statement;
import com.hp.hpl.jena.sdb.StoreDesc;
import com.hp.hpl.jena.sdb.sql.JDBC;
import com.hp.hpl.jena.sdb.store.DatabaseType;
import com.hp.hpl.jena.sdb.store.LayoutType;
import com.hp.hpl.jena.shared.Lock;
import com.hp.hpl.jena.util.iterator.ClosableIterator;
@ -72,7 +70,6 @@ import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess.ModelID;
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.RDFServiceModelMaker;
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaModelMaker;
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;
@ -80,7 +77,6 @@ import edu.cornell.mannlib.vitro.webapp.rdfservice.ChangeSet;
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceException;
import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.RDFServiceUtils;
import edu.cornell.mannlib.vitro.webapp.servlet.setup.ContentModelSetup;
import edu.cornell.mannlib.vitro.webapp.servlet.setup.JenaDataSourceSetupBase;
import edu.cornell.mannlib.vitro.webapp.utils.SparqlQueryUtils;
import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaIngestUtils;
@ -201,7 +197,7 @@ public class JenaIngestController extends BaseEditController {
maker = getVitroJenaModelMaker(vreq);
request.setAttribute("modelNames", maker.listModels().toList());
request.setAttribute("vitroJenaModelMaker", maker);
request.setAttribute("jenaIngestModelMaker", maker);
RequestDispatcher rd = request.getRequestDispatcher(
Controllers.BASIC_JSP);
@ -232,15 +228,15 @@ public class JenaIngestController extends BaseEditController {
}
private void processRDBModelsRequest(VitroRequest vreq, ModelMaker maker, String modelType) {
ModelMaker vjmm = (ModelMaker) getServletContext().getAttribute("vitroJenaModelMaker");
vreq.getSession().setAttribute("vitroJenaModelMaker", vjmm);
ModelMaker vjmm = ModelAccess.on(getServletContext()).getModelMaker(CONFIGURATION);
vreq.getSession().setAttribute("jenaIngestModelMaker", vjmm);
setUsingMainStoreForIngest(vreq, AUXILIARY_STORE_STATE);
showModelList(vreq, vjmm, "rdb");
}
private void processSDBModelsRequest(VitroRequest vreq, ModelMaker maker, String modelType) {
ModelMaker vsmm = (ModelMaker) getServletContext().getAttribute("vitroJenaSDBModelMaker");
vreq.getSession().setAttribute("vitroJenaModelMaker", vsmm);
ModelMaker vsmm = ModelAccess.on(getServletContext()).getModelMaker(CONTENT);
vreq.getSession().setAttribute("jenaIngestModelMaker", vsmm);
setUsingMainStoreForIngest(vreq, MAIN_STORE_STATE);
showModelList(vreq, vsmm, "sdb");
}
@ -353,8 +349,6 @@ public class JenaIngestController extends BaseEditController {
if (modelName != null) {
doDetachModel(modelName,maker);
}
//request.setAttribute("title","Ingest Menu");
//request.setAttribute("bodyJsp",INGEST_MENU_JSP);
showModelList(vreq, maker, modelType);
}
@ -430,11 +424,7 @@ public class JenaIngestController extends BaseEditController {
String jdbcUrl = vreq.getParameter("jdbcUrl");
String tripleStore = vreq.getParameter("tripleStore");
if (jdbcUrl != null) {
try {
doConnectDB(vreq);
} catch (SQLException sqle) {
throw new RuntimeException("Unable to connect to DB", sqle);
}
doConnectDB(vreq);
if ("SDB".equals(tripleStore)) {
getServletContext().setAttribute("modelT", "sdb");
getServletContext().setAttribute("info", "SDB models");
@ -738,7 +728,7 @@ public class JenaIngestController extends BaseEditController {
}
protected ModelMaker getVitroJenaModelMaker(HttpServletRequest request){
return JenaIngestController.getVitroJenaModelMaker(request,getServletContext());
return getVitroJenaModelMaker(request,getServletContext());
}
@ -964,45 +954,18 @@ public class JenaIngestController extends BaseEditController {
return tempModel.size();
}
public void doConnectDB(VitroRequest vreq) throws SQLException {
String jdbcUrl = vreq.getParameter("jdbcUrl");
String username = vreq.getParameter("username");
String password = vreq.getParameter("password");
String dbType = vreq.getParameter("dbType");
public void doConnectDB(VitroRequest vreq) {
String tripleStore = vreq.getParameter("tripleStore");
DatabaseType dbTypeObj = null;
if ("MySQL".equals(dbType)) {
jdbcUrl += (jdbcUrl.contains("?")) ? "&" : "?";
jdbcUrl += "useUnicode=yes&characterEncoding=utf8";
}
dbTypeObj = DatabaseType.fetch(dbType);
String driver = loadDriver(dbTypeObj);
log.debug("Connecting to DB at "+jdbcUrl);
StoreDesc storeDesc = new StoreDesc(LayoutType.LayoutTripleNodesHash,dbTypeObj) ;
ServletContext ctx = vreq.getSession().getServletContext();
DataSource bds = ContentModelSetup.makeBasicDataSource(
driver, jdbcUrl, username, password, ctx);
try {
VitroJenaSDBModelMaker vsmm = new VitroJenaSDBModelMaker(storeDesc, bds);
VitroJenaModelMaker vjmm = new VitroJenaModelMaker(jdbcUrl, username, password, dbType, ctx);
getServletContext().setAttribute("vitroJenaSDBModelMaker", vsmm);
getServletContext().setAttribute("vitroJenaModelMaker", vjmm);
if("SDB".equals(tripleStore))
vreq.getSession().setAttribute("vitroJenaModelMaker",vsmm);
else
vreq.getSession().setAttribute("vitroJenaModelMaker",vjmm);
} catch (SQLException sqle) {
throw new RuntimeException("Unable to create SDB ModelMaker", sqle);
ServletContext ctx = getServletContext();
ModelMaker vjmm = ModelAccess.on(ctx).getModelMaker(CONFIGURATION);
ModelMaker vsmm = ModelAccess.on(ctx).getModelMaker(CONTENT);
if("SDB".equals(tripleStore)) {
vreq.getSession().setAttribute("jenaIngestModelMaker",vsmm);
} else {
vreq.getSession().setAttribute("jenaIngestModelMaker",vjmm);
}
}
private String loadDriver(DatabaseType dbType) {
String driverName = JDBC.getDriver(dbType);
JDBC.loadDriver(driverName);
return driverName;
}
public void doSubtractModels(VitroRequest vreq) {
String modela = vreq.getParameter("modela");
String modelb = vreq.getParameter("modelb");
@ -1322,8 +1285,8 @@ public class JenaIngestController extends BaseEditController {
}
protected static ModelMaker getVitroJenaModelMaker(HttpServletRequest request, ServletContext context) {
ModelMaker myVjmm = (ModelMaker) request.getSession().getAttribute("vitroJenaModelMaker");
myVjmm = (myVjmm == null) ? (ModelMaker) context.getAttribute("vitroJenaSDBModelMaker") : myVjmm;
ModelMaker myVjmm = (ModelMaker) request.getSession().getAttribute("jenaIngestModelMaker");
myVjmm = (myVjmm == null) ? ModelAccess.on(context).getModelMaker(CONTENT) : myVjmm;
return new VitroJenaSpecialModelMaker(myVjmm, request);
}
}

View file

@ -13,6 +13,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.rdf.model.ModelMaker;
import edu.cornell.mannlib.vitro.webapp.dao.jena.OntModelSelector;
@ -70,6 +71,10 @@ public class ModelAccess {
BASE, UNION, UNFILTERED_BASE, UNFILTERED_UNION
}
public enum ModelMakerID {
CONTENT, CONFIGURATION
}
private enum Scope {
CONTEXT, SESSION, REQUEST
}
@ -122,6 +127,8 @@ public class ModelAccess {
private final Map<ModelID, OntModel> modelMap = new EnumMap<>(ModelID.class);
private final Map<FactoryID, WebappDaoFactory> factoryMap = new EnumMap<>(
FactoryID.class);
private final Map<ModelMakerID, ModelMaker> modelMakerMap = new EnumMap<>(
ModelMakerID.class);
public ModelAccess(Scope scope, ModelAccess parent) {
this.scope = scope;
@ -263,6 +270,30 @@ public class ModelAccess {
ModelID.UNION_TBOX, ModelID.UNION_FULL);
}
// ----------------------------------------------------------------------
// Accessing the ModelMakers
// ----------------------------------------------------------------------
public ModelMaker getModelMaker(ModelMakerID id) {
if (modelMakerMap.containsKey(id)) {
log.debug("Using " + id + " modelMaker from " + scope);
return modelMakerMap.get(id);
} else if (parent != null) {
return parent.getModelMaker(id);
} else {
log.warn("No modelMaker found for " + id);
return null;
}
}
public void setModelMaker(ModelMakerID id, ModelMaker modelMaker) {
if (modelMaker == null) {
modelMakerMap.remove(id);
} else {
modelMakerMap.put(id, modelMaker);
}
}
// ----------------------------------------------------------------------
// Helper classes
// ----------------------------------------------------------------------

View file

@ -70,22 +70,6 @@ public class VitroJenaModelMaker implements ModelMaker {
modelCache = new HashMap<String,Model>();
}
// public VitroJenaModelMaker(ModelMaker mm, HttpServletRequest request) {
// this.innerModelMaker = mm;
// if (mm instanceof VitroJenaModelMaker) {
// log.debug("Using cache from inner model maker ");
// this.modelCache = ((VitroJenaModelMaker)mm).getCache();
// } else {
// log.debug("Creating new cache");
// this.modelCache = new HashMap<String,Model>();
// }
// this.request = request;
// }
//
// public ModelMaker getInnerModelMaker() {
// return this.innerModelMaker;
// }
protected HashMap<String,Model> getCache() {
return this.modelCache;
}

View file

@ -1,31 +1,33 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration;
import static edu.cornell.mannlib.vitro.webapp.dao.ModelAccess.ModelMakerID.CONTENT;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelMaker;
import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess;
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroModelSource;
import edu.cornell.mannlib.vitro.webapp.servlet.setup.JenaDataSourceSetupBase;
public class IdModelSelector implements ModelSelector {
public class IdModelSelector implements ModelSelector{
private final String name;
private final String name;
public IdModelSelector(String name){
if( name == null )
throw new IllegalArgumentException("Name of model must not be null.");
this.name = name;
}
@Override
public Model getModel(HttpServletRequest request, ServletContext context) {
VitroModelSource mSource = JenaDataSourceSetupBase.getVitroModelSource(context);
Model m = mSource.getModel( name );
return m;
}
public IdModelSelector(String name) {
if (name == null)
throw new IllegalArgumentException(
"Name of model must not be null.");
this.name = name;
}
@Override
public Model getModel(HttpServletRequest request, ServletContext context) {
ModelMaker modelMaker = ModelAccess.on(context).getModelMaker(CONTENT);
VitroModelSource mSource = new VitroModelSource(modelMaker, context);
return mSource.getModel(name);
}
}

View file

@ -2,8 +2,10 @@
package edu.cornell.mannlib.vitro.webapp.servlet.setup;
import static edu.cornell.mannlib.vitro.webapp.dao.ModelAccess.ModelMakerID.CONFIGURATION;
import static edu.cornell.mannlib.vitro.webapp.dao.ModelAccess.ModelMakerID.CONTENT;
import java.beans.PropertyVetoException;
import java.sql.SQLException;
import javax.servlet.ServletContext;
import javax.sql.DataSource;
@ -33,14 +35,12 @@ import com.mchange.v2.c3p0.ComboPooledDataSource;
import edu.cornell.mannlib.vitro.webapp.config.ConfigurationProperties;
import edu.cornell.mannlib.vitro.webapp.dao.DisplayVocabulary;
import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess;
import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary;
import edu.cornell.mannlib.vitro.webapp.dao.jena.JenaBaseDaoCon;
import edu.cornell.mannlib.vitro.webapp.dao.jena.RDBGraphGenerator;
import edu.cornell.mannlib.vitro.webapp.dao.jena.RegeneratingGraph;
import edu.cornell.mannlib.vitro.webapp.dao.jena.SDBGraphGenerator;
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaModelMaker;
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaSDBModelMaker;
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroModelSource;
public class JenaDataSourceSetupBase extends JenaBaseDaoCon {
private static final String VITRO_DEFAULT_NAMESPACE = "Vitro.defaultNamespace";
@ -130,7 +130,7 @@ public class JenaDataSourceSetupBase extends JenaBaseDaoCon {
static final OntModelSpec DB_ONT_MODEL_SPEC = OntModelSpec.OWL_MEM;
static final OntModelSpec MEM_ONT_MODEL_SPEC = OntModelSpec.OWL_MEM;
private String getJdbcUrl(ServletContext ctx) {
protected String getJdbcUrl(ServletContext ctx) {
String jdbcUrl = ConfigurationProperties.getBean(ctx).getProperty(
"VitroConnection.DataSource.url");
@ -376,76 +376,6 @@ public class JenaDataSourceSetupBase extends JenaBaseDaoCon {
return dbModel;
}
private static String getRdfFormat(String filename){
String defaultformat = "RDF/XML";
if( filename == null )
return defaultformat;
else if( filename.endsWith("n3") )
return "N3";
else if( filename.endsWith("ttl") )
return "TURTLE";
else
return defaultformat;
}
private static VitroJenaModelMaker vjmm = null;
private static ModelMaker vsmm = null;
private static VitroModelSource vms = null;
private static final String sdbModelMaker = "vitroJenaSDBModelMaker";
private static final String rdbModelMaker = "vitroJenaModelMaker";
private static final String vitroModelSource = "vitroModelSource";
//bdc34: is there any good reason that this doesn't just return the objects instead
//of oddly passing them around as static properties on this class?
protected void makeModelMakerFromConnectionProperties(TripleStoreType type,
ServletContext ctx) {
String jdbcUrl = getJdbcUrl(ctx);
String dbtypeStr = ConfigurationProperties.getBean(ctx).getProperty(
"VitroConnection.DataSource.dbtype","MySQL");
String username = ConfigurationProperties.getBean(ctx).getProperty(
"VitroConnection.DataSource.username");
String password = ConfigurationProperties.getBean(ctx).getProperty(
"VitroConnection.DataSource.password");
if (TripleStoreType.RDB.equals(type)){
vjmm = new VitroJenaModelMaker(
jdbcUrl, username, password, dbtypeStr, ctx);
} else if (TripleStoreType.SDB.equals(type)) {
StoreDesc storeDesc = new StoreDesc(
LayoutType.LayoutTripleNodesHash, DatabaseType.fetch(dbtypeStr));
DataSource bds = ContentModelSetup.makeC3poDataSource(
getDbDriverClassName(ctx), jdbcUrl, username, password, ctx);
// DataSource bds = WebappDaoSetup.makeBasicDataSource(
// getDbDriverClassName(ctx), jdbcUrl, username, password, ctx);
// bds.setMaxActive(4); // for now, the SDB model makers should not use more
// // than a small handful of connections
// bds.setMaxIdle(2);
try {
vsmm = new VitroJenaSDBModelMaker(storeDesc, bds);
} catch (SQLException sqle) {
log.error("Unable to set up SDB ModelMaker", sqle);
}
}
return;
}
public static void setVitroJenaModelMaker(VitroJenaModelMaker vjmm,
ServletContext ctx){
ctx.setAttribute(rdbModelMaker, vjmm);
}
public static void setVitroJenaSDBModelMaker(ModelMaker vsmm,
ServletContext ctx){
ctx.setAttribute(sdbModelMaker, vsmm);
}
public static void setVitroModelSource(VitroModelSource vms,ServletContext ctx) {
ctx.setAttribute( vitroModelSource, vms);
}
protected String getDefaultNamespace(ServletContext ctx) {
String dns = ConfigurationProperties.getBean(ctx).getProperty(
VITRO_DEFAULT_NAMESPACE);
@ -457,18 +387,6 @@ public class JenaDataSourceSetupBase extends JenaBaseDaoCon {
}
}
protected VitroJenaModelMaker getVitroJenaModelMaker(){
return vjmm;
}
protected ModelMaker getVitroJenaSDBModelMaker(){
return vsmm;
}
public static VitroModelSource getVitroModelSource(ServletContext ctx){
return (VitroModelSource)ctx.getAttribute(vitroModelSource);
}
private static String getDbType(ServletContext ctx) {
return ConfigurationProperties.getBean(ctx).getProperty( // database type
"VitroConnection.DataSource.dbtype", "MySQL");
@ -558,4 +476,5 @@ public class JenaDataSourceSetupBase extends JenaBaseDaoCon {
public static Store getApplicationStore(ServletContext ctx) {
return (Store) ctx.getAttribute(STORE_ATTR);
}
}

View file

@ -2,12 +2,19 @@
package edu.cornell.mannlib.vitro.webapp.servlet.setup;
import static edu.cornell.mannlib.vitro.webapp.dao.ModelAccess.ModelMakerID.CONFIGURATION;
import static edu.cornell.mannlib.vitro.webapp.dao.ModelAccess.ModelMakerID.CONTENT;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import edu.cornell.mannlib.vitro.webapp.config.ConfigurationProperties;
import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess;
import edu.cornell.mannlib.vitro.webapp.dao.jena.RDFServiceModelMaker;
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaModelMaker;
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroModelSource;
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceFactory;
import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.RDFServiceUtils;
import edu.cornell.mannlib.vitro.webapp.startup.StartupStatus;
@ -15,40 +22,44 @@ import edu.cornell.mannlib.vitro.webapp.startup.StartupStatus;
/**
* Sets up the content models, OntModelSelectors and webapp DAO factories.
*/
public class ModelMakerSetup extends JenaDataSourceSetupBase
implements javax.servlet.ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext ctx = sce.getServletContext();
StartupStatus ss = StartupStatus.getBean(ctx);
long begin = System.currentTimeMillis();
RDFServiceFactory rdfServiceFactory = RDFServiceUtils.getRDFServiceFactory(ctx);
makeModelMakerFromConnectionProperties(TripleStoreType.RDB, ctx);
VitroJenaModelMaker vjmm = getVitroJenaModelMaker();
setVitroJenaModelMaker(vjmm, ctx);
makeModelMakerFromConnectionProperties(TripleStoreType.SDB, ctx);
RDFServiceModelMaker vsmm = new RDFServiceModelMaker(rdfServiceFactory);
setVitroJenaSDBModelMaker(vsmm, ctx);
//bdc34: I have no reason for vsmm vs vjmm.
//I don't know what are the implications of this choice.
setVitroModelSource( new VitroModelSource(vsmm,ctx), ctx);
ss.info(this, secondsSince(begin) + " seconds to set up models and DAO factories");
}
public class ModelMakerSetup extends JenaDataSourceSetupBase implements
javax.servlet.ServletContextListener {
private static final Log log = LogFactory.getLog(ModelMakerSetup.class);
private long secondsSince(long startTime) {
return (System.currentTimeMillis() - startTime) / 1000;
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext ctx = sce.getServletContext();
StartupStatus ss = StartupStatus.getBean(ctx);
createConfigurationModelMaker(ctx);
createContentModelMaker(ctx);
ss.info(this, "Created model makers and model source");
}
/* ===================================================================== */
@Override
public void contextDestroyed(ServletContextEvent sce) {
// Nothing to do.
}
}
private void createConfigurationModelMaker(ServletContext ctx) {
String jdbcUrl = getJdbcUrl(ctx);
String dbtypeStr = ConfigurationProperties.getBean(ctx).getProperty(
"VitroConnection.DataSource.dbtype", "MySQL");
String username = ConfigurationProperties.getBean(ctx).getProperty(
"VitroConnection.DataSource.username");
String password = ConfigurationProperties.getBean(ctx).getProperty(
"VitroConnection.DataSource.password");
VitroJenaModelMaker vjmm = new VitroJenaModelMaker(jdbcUrl, username,
password, dbtypeStr, ctx);
ModelAccess.on(ctx).setModelMaker(CONFIGURATION, vjmm);
}
private void createContentModelMaker(ServletContext ctx) {
RDFServiceFactory rdfServiceFactory = RDFServiceUtils
.getRDFServiceFactory(ctx);
RDFServiceModelMaker vsmm = new RDFServiceModelMaker(rdfServiceFactory);
ModelAccess.on(ctx).setModelMaker(CONTENT, vsmm);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
// Nothing to do.
}
}

View file

@ -29,22 +29,20 @@ import com.hp.hpl.jena.rdf.model.Resource;
import com.hp.hpl.jena.rdf.model.ResourceFactory;
import com.hp.hpl.jena.shared.Lock;
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaModelMaker;
public class JenaIngestWorkflowProcessor {
private static final Log log = LogFactory.getLog(JenaIngestWorkflowProcessor.class.getName());
private Individual workflowInd;
private ModelMaker vitroJenaModelMaker;
private ModelMaker modelMaker;
private Map<String,Literal> varMap;
private List<ActionHandler> actionHandlerList;
private JenaIngestUtils utils;
public JenaIngestWorkflowProcessor(Individual workflowInd, ModelMaker vitroJenaModelMaker) {
public JenaIngestWorkflowProcessor(Individual workflowInd, ModelMaker modelMaker) {
this.varMap = new HashMap<String,Literal>();
this.workflowInd = workflowInd;
this.vitroJenaModelMaker = vitroJenaModelMaker;
this.modelMaker = modelMaker;
actionHandlerList = new LinkedList<ActionHandler>();
actionHandlerList.add(new ClearModelAction());
actionHandlerList.add(new AddModelsAction());
@ -153,7 +151,7 @@ public class JenaIngestWorkflowProcessor {
String modelNameStr = ((Literal)modelInd.getPropertyValue(WorkflowOntology.modelName).as(Literal.class)).getLexicalForm();
// false = strict mode off, i.e.,
// if a model already exists of the given name, return it. Otherwise, create a new one.
return vitroJenaModelMaker.createModel(modelNameStr,false);
return modelMaker.createModel(modelNameStr,false);
}
private interface ActionResult {}

View file

@ -1,6 +1,8 @@
<!-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<%@page import="com.hp.hpl.jena.vocabulary.OWL"%>
<%@page import="com.hp.hpl.jena.rdf.model.ModelMaker"%>
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.ModelAccess"%>
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.ModelAccess.ModelMakerID"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
@ -136,24 +138,15 @@ td {
<ul class="clean">
<%
try {
if (request.getSession() != null
&& application.getAttribute("vitroJenaModelMaker") != null) {
ModelMaker maker = (ModelMaker) application
.getAttribute("vitroJenaModelMaker");
for (Iterator it = maker.listModels(); it.hasNext();) {
String modelName = (String) it.next();
ModelMaker maker = ModelAccess.on(application).getModelMaker(ModelMakerID.CONFIGURATION);
for (Iterator it = maker.listModels(); it.hasNext();) {
String modelName = (String) it.next();
%>
<li>
<input type="checkbox" name="sourceModelName"
value="<%=modelName%>" /><%=modelName%></li>
<%
}
} else {
%><li>
could not find named models in session
</li>
<%
}
}
} catch (Exception ex) {
%><li>
could not find named models in ModelMaker

View file

@ -4,6 +4,7 @@
<%@ page import="com.hp.hpl.jena.ontology.OntModel"%>
<%@ page import="com.hp.hpl.jena.rdf.model.ModelMaker"%>
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.ModelAccess"%>
<%@ page import="edu.cornell.mannlib.vitro.webapp.dao.ModelAccess.ModelMakerID"%>
<%@ page import="com.hp.hpl.jena.shared.Lock"%>
<%@ page import="java.util.Iterator"%>
<%@ page import="java.util.List"%>
@ -17,7 +18,7 @@
<vitro:confirmAuthorization />
<%
ModelMaker maker = (ModelMaker) request.getAttribute("vitroJenaModelMaker");
ModelMaker maker = ModelAccess.on(getServletContext()).getModelMaker(ModelMakerID.CONFIGURATION);
%>