VIVO-773 clean up the structure of the model makers
This commit is contained in:
parent
4ffb7bce87
commit
68cfef81cd
9 changed files with 133 additions and 231 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
// ----------------------------------------------------------------------
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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 {}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
%>
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue