VIVO-82 Split WebappDaoSetup into ContentModelSetup and ModelMaker setup.
This commit is contained in:
parent
0e34b459e5
commit
416e98f5ab
5 changed files with 82 additions and 56 deletions
|
@ -80,7 +80,7 @@ import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
|
||||||
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceException;
|
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceException;
|
||||||
import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.RDFServiceUtils;
|
import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.RDFServiceUtils;
|
||||||
import edu.cornell.mannlib.vitro.webapp.servlet.setup.JenaDataSourceSetupBase;
|
import edu.cornell.mannlib.vitro.webapp.servlet.setup.JenaDataSourceSetupBase;
|
||||||
import edu.cornell.mannlib.vitro.webapp.servlet.setup.WebappDaoSetup;
|
import edu.cornell.mannlib.vitro.webapp.servlet.setup.ContentModelSetup;
|
||||||
import edu.cornell.mannlib.vitro.webapp.utils.SparqlQueryUtils;
|
import edu.cornell.mannlib.vitro.webapp.utils.SparqlQueryUtils;
|
||||||
import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaIngestUtils;
|
import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaIngestUtils;
|
||||||
import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaIngestUtils.MergeResult;
|
import edu.cornell.mannlib.vitro.webapp.utils.jena.JenaIngestUtils.MergeResult;
|
||||||
|
@ -984,7 +984,7 @@ public class JenaIngestController extends BaseEditController {
|
||||||
log.debug("Connecting to DB at "+jdbcUrl);
|
log.debug("Connecting to DB at "+jdbcUrl);
|
||||||
StoreDesc storeDesc = new StoreDesc(LayoutType.LayoutTripleNodesHash,dbTypeObj) ;
|
StoreDesc storeDesc = new StoreDesc(LayoutType.LayoutTripleNodesHash,dbTypeObj) ;
|
||||||
ServletContext ctx = vreq.getSession().getServletContext();
|
ServletContext ctx = vreq.getSession().getServletContext();
|
||||||
DataSource bds = WebappDaoSetup.makeBasicDataSource(
|
DataSource bds = ContentModelSetup.makeBasicDataSource(
|
||||||
driver, jdbcUrl, username, password, ctx);
|
driver, jdbcUrl, username, password, ctx);
|
||||||
try {
|
try {
|
||||||
VitroJenaSDBModelMaker vsmm = new VitroJenaSDBModelMaker(storeDesc, bds);
|
VitroJenaSDBModelMaker vsmm = new VitroJenaSDBModelMaker(storeDesc, bds);
|
||||||
|
|
|
@ -34,10 +34,7 @@ import edu.cornell.mannlib.vitro.webapp.dao.jena.ModelContext;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.ModelSynchronizer;
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.ModelSynchronizer;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.OntModelSelectorImpl;
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.OntModelSelectorImpl;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.RDFServiceDataset;
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.RDFServiceDataset;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.RDFServiceModelMaker;
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.SpecialBulkUpdateHandlerGraph;
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.SpecialBulkUpdateHandlerGraph;
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroJenaModelMaker;
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.VitroModelSource;
|
|
||||||
import edu.cornell.mannlib.vitro.webapp.dao.jena.WebappDaoFactorySDB;
|
import edu.cornell.mannlib.vitro.webapp.dao.jena.WebappDaoFactorySDB;
|
||||||
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
|
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFService;
|
||||||
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceFactory;
|
import edu.cornell.mannlib.vitro.webapp.rdfservice.RDFServiceFactory;
|
||||||
|
@ -46,12 +43,12 @@ import edu.cornell.mannlib.vitro.webapp.startup.StartupStatus;
|
||||||
import edu.cornell.mannlib.vitro.webapp.utils.jena.InitialJenaModelUtils;
|
import edu.cornell.mannlib.vitro.webapp.utils.jena.InitialJenaModelUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Primarily sets up webapp DAO factories.
|
* Sets up the content models, OntModelSelectors and webapp DAO factories.
|
||||||
*/
|
*/
|
||||||
public class WebappDaoSetup extends JenaDataSourceSetupBase
|
public class ContentModelSetup extends JenaDataSourceSetupBase
|
||||||
implements javax.servlet.ServletContextListener {
|
implements javax.servlet.ServletContextListener {
|
||||||
|
|
||||||
private static final Log log = LogFactory.getLog(WebappDaoSetup.class);
|
private static final Log log = LogFactory.getLog(ContentModelSetup.class);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void contextInitialized(ServletContextEvent sce) {
|
public void contextInitialized(ServletContextEvent sce) {
|
||||||
|
@ -127,12 +124,8 @@ public class WebappDaoSetup extends JenaDataSourceSetupBase
|
||||||
ModelContext.setBaseOntModelSelector(baseOms, ctx); // assertions
|
ModelContext.setBaseOntModelSelector(baseOms, ctx); // assertions
|
||||||
ModelContext.setInferenceOntModelSelector(inferenceOms, ctx); // inferences
|
ModelContext.setInferenceOntModelSelector(inferenceOms, ctx); // inferences
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
log.info("Setting up DAO factories");
|
log.info("Setting up DAO factories");
|
||||||
|
|
||||||
|
|
||||||
ctx.setAttribute("jenaOntModel", unionFullModel);
|
ctx.setAttribute("jenaOntModel", unionFullModel);
|
||||||
|
|
||||||
WebappDaoFactoryConfig config = new WebappDaoFactoryConfig();
|
WebappDaoFactoryConfig config = new WebappDaoFactoryConfig();
|
||||||
|
@ -150,18 +143,6 @@ public class WebappDaoSetup extends JenaDataSourceSetupBase
|
||||||
log.info("Model makers set up");
|
log.info("Model makers set up");
|
||||||
|
|
||||||
ctx.setAttribute("defaultNamespace", getDefaultNamespace(ctx));
|
ctx.setAttribute("defaultNamespace", getDefaultNamespace(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);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private OntModel createNamedModelFromDataset(Dataset dataset, String name) {
|
private OntModel createNamedModelFromDataset(Dataset dataset, String name) {
|
||||||
|
@ -210,6 +191,24 @@ public class WebappDaoSetup extends JenaDataSourceSetupBase
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void loadDataFromFilesystem(OntModel baseABoxModel, OntModel baseTBoxModel, OntModel applicationMetadataModel,
|
||||||
|
ServletContext ctx) {
|
||||||
|
Long startTime = System.currentTimeMillis();
|
||||||
|
log.info("Initializing models from RDF files");
|
||||||
|
|
||||||
|
readOntologyFilesInPathSet(USER_ABOX_PATH, ctx, baseABoxModel);
|
||||||
|
readOntologyFilesInPathSet(USER_TBOX_PATH, ctx, baseTBoxModel);
|
||||||
|
readOntologyFilesInPathSet(USER_APPMETA_PATH, ctx, applicationMetadataModel);
|
||||||
|
|
||||||
|
log.debug(((System.currentTimeMillis() - startTime) / 1000)
|
||||||
|
+ " seconds to read RDF files ");
|
||||||
|
}
|
||||||
|
|
||||||
|
private long secondsSince(long startTime) {
|
||||||
|
return (System.currentTimeMillis() - startTime) / 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ===================================================================== */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If we find a "portal1" portal (and we should), its URI should use the
|
* If we find a "portal1" portal (and we should), its URI should use the
|
||||||
|
@ -258,8 +257,7 @@ public class WebappDaoSetup extends JenaDataSourceSetupBase
|
||||||
return portals;
|
return portals;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean noPortalForNamespace(List<Resource> portals,
|
private boolean noPortalForNamespace(List<Resource> portals, String expectedNamespace) {
|
||||||
String expectedNamespace) {
|
|
||||||
for (Resource portal : portals) {
|
for (Resource portal : portals) {
|
||||||
if(expectedNamespace.equals(portal.getNameSpace())) {
|
if(expectedNamespace.equals(portal.getNameSpace())) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -271,44 +269,18 @@ public class WebappDaoSetup extends JenaDataSourceSetupBase
|
||||||
private void renamePortal(Resource portal, String namespace, Model model) {
|
private void renamePortal(Resource portal, String namespace, Model model) {
|
||||||
model.enterCriticalSection(Lock.WRITE);
|
model.enterCriticalSection(Lock.WRITE);
|
||||||
try {
|
try {
|
||||||
ResourceUtils.renameResource(
|
ResourceUtils.renameResource(portal, namespace + portal.getLocalName());
|
||||||
portal, namespace + portal.getLocalName());
|
|
||||||
} finally {
|
} finally {
|
||||||
model.leaveCriticalSection();
|
model.leaveCriticalSection();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ===================================================================== */
|
/* ===================================================================== */
|
||||||
|
|
||||||
private long secondsSince(long startTime) {
|
|
||||||
return (System.currentTimeMillis() - startTime) / 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void loadDataFromFilesystem(OntModel baseABoxModel, OntModel baseTBoxModel, OntModel applicationMetadataModel,
|
|
||||||
ServletContext ctx) {
|
|
||||||
Long startTime = System.currentTimeMillis();
|
|
||||||
log.info("Initializing models from RDF files");
|
|
||||||
|
|
||||||
readOntologyFilesInPathSet(USER_ABOX_PATH, ctx, baseABoxModel);
|
|
||||||
readOntologyFilesInPathSet(USER_TBOX_PATH, ctx, baseTBoxModel);
|
|
||||||
readOntologyFilesInPathSet(USER_APPMETA_PATH, ctx, applicationMetadataModel);
|
|
||||||
|
|
||||||
log.debug(((System.currentTimeMillis() - startTime) / 1000)
|
|
||||||
+ " seconds to read RDF files ");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* ===================================================================== */
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void contextDestroyed(ServletContextEvent sce) {
|
public void contextDestroyed(ServletContextEvent sce) {
|
||||||
// Nothing to do.
|
// Nothing to do.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -471,7 +471,7 @@ public class JenaDataSourceSetupBase extends JenaBaseDaoCon {
|
||||||
} else if (TripleStoreType.SDB.equals(type)) {
|
} else if (TripleStoreType.SDB.equals(type)) {
|
||||||
StoreDesc storeDesc = new StoreDesc(
|
StoreDesc storeDesc = new StoreDesc(
|
||||||
LayoutType.LayoutTripleNodesHash, DatabaseType.fetch(dbtypeStr));
|
LayoutType.LayoutTripleNodesHash, DatabaseType.fetch(dbtypeStr));
|
||||||
DataSource bds = WebappDaoSetup.makeC3poDataSource(
|
DataSource bds = ContentModelSetup.makeC3poDataSource(
|
||||||
getDbDriverClassName(ctx), jdbcUrl, username, password, ctx);
|
getDbDriverClassName(ctx), jdbcUrl, username, password, ctx);
|
||||||
// DataSource bds = WebappDaoSetup.makeBasicDataSource(
|
// DataSource bds = WebappDaoSetup.makeBasicDataSource(
|
||||||
// getDbDriverClassName(ctx), jdbcUrl, username, password, ctx);
|
// getDbDriverClassName(ctx), jdbcUrl, username, password, ctx);
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
|
||||||
|
package edu.cornell.mannlib.vitro.webapp.servlet.setup;
|
||||||
|
|
||||||
|
import javax.servlet.ServletContext;
|
||||||
|
import javax.servlet.ServletContextEvent;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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");
|
||||||
|
}
|
||||||
|
|
||||||
|
private long secondsSince(long startTime) {
|
||||||
|
return (System.currentTimeMillis() - startTime) / 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ===================================================================== */
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void contextDestroyed(ServletContextEvent sce) {
|
||||||
|
// Nothing to do.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -20,8 +20,8 @@ edu.cornell.mannlib.vitro.webapp.servlet.setup.RDFServiceSetup
|
||||||
|
|
||||||
edu.cornell.mannlib.vitro.webapp.servlet.setup.ApplicationModelSetup
|
edu.cornell.mannlib.vitro.webapp.servlet.setup.ApplicationModelSetup
|
||||||
edu.cornell.mannlib.vitro.webapp.servlet.setup.UserModelSetup
|
edu.cornell.mannlib.vitro.webapp.servlet.setup.UserModelSetup
|
||||||
|
edu.cornell.mannlib.vitro.webapp.servlet.setup.ContentModelSetup
|
||||||
edu.cornell.mannlib.vitro.webapp.servlet.setup.WebappDaoSetup
|
edu.cornell.mannlib.vitro.webapp.servlet.setup.ModelMakerSetup
|
||||||
|
|
||||||
edu.cornell.mannlib.vitro.webapp.servlet.setup.UpdateKnowledgeBase
|
edu.cornell.mannlib.vitro.webapp.servlet.setup.UpdateKnowledgeBase
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue