diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaIngestController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaIngestController.java index 6d1b2c346..ea0b70cb2 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaIngestController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/jena/JenaIngestController.java @@ -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.impl.RDFServiceUtils; 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.jena.JenaIngestUtils; 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); StoreDesc storeDesc = new StoreDesc(LayoutType.LayoutTripleNodesHash,dbTypeObj) ; ServletContext ctx = vreq.getSession().getServletContext(); - DataSource bds = WebappDaoSetup.makeBasicDataSource( + DataSource bds = ContentModelSetup.makeBasicDataSource( driver, jdbcUrl, username, password, ctx); try { VitroJenaSDBModelMaker vsmm = new VitroJenaSDBModelMaker(storeDesc, bds); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/WebappDaoSetup.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/ContentModelSetup.java similarity index 91% rename from webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/WebappDaoSetup.java rename to webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/ContentModelSetup.java index 7b198a8f3..4917db06f 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/WebappDaoSetup.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/ContentModelSetup.java @@ -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.OntModelSelectorImpl; 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.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.rdfservice.RDFService; 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; /** - * 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 { - private static final Log log = LogFactory.getLog(WebappDaoSetup.class); + private static final Log log = LogFactory.getLog(ContentModelSetup.class); @Override public void contextInitialized(ServletContextEvent sce) { @@ -127,12 +124,8 @@ public class WebappDaoSetup extends JenaDataSourceSetupBase ModelContext.setBaseOntModelSelector(baseOms, ctx); // assertions ModelContext.setInferenceOntModelSelector(inferenceOms, ctx); // inferences - - - log.info("Setting up DAO factories"); - ctx.setAttribute("jenaOntModel", unionFullModel); WebappDaoFactoryConfig config = new WebappDaoFactoryConfig(); @@ -150,18 +143,6 @@ public class WebappDaoSetup extends JenaDataSourceSetupBase log.info("Model makers set up"); 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) { @@ -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 @@ -258,8 +257,7 @@ public class WebappDaoSetup extends JenaDataSourceSetupBase return portals; } - private boolean noPortalForNamespace(List portals, - String expectedNamespace) { + private boolean noPortalForNamespace(List portals, String expectedNamespace) { for (Resource portal : portals) { if(expectedNamespace.equals(portal.getNameSpace())) { return false; @@ -271,44 +269,18 @@ public class WebappDaoSetup extends JenaDataSourceSetupBase private void renamePortal(Resource portal, String namespace, Model model) { model.enterCriticalSection(Lock.WRITE); try { - ResourceUtils.renameResource( - portal, namespace + portal.getLocalName()); + ResourceUtils.renameResource(portal, namespace + portal.getLocalName()); } finally { 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 public void contextDestroyed(ServletContextEvent sce) { // Nothing to do. } - - - } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/JenaDataSourceSetupBase.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/JenaDataSourceSetupBase.java index fbe8e61f4..f56d75a3d 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/JenaDataSourceSetupBase.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/JenaDataSourceSetupBase.java @@ -471,7 +471,7 @@ public class JenaDataSourceSetupBase extends JenaBaseDaoCon { } else if (TripleStoreType.SDB.equals(type)) { StoreDesc storeDesc = new StoreDesc( LayoutType.LayoutTripleNodesHash, DatabaseType.fetch(dbtypeStr)); - DataSource bds = WebappDaoSetup.makeC3poDataSource( + DataSource bds = ContentModelSetup.makeC3poDataSource( getDbDriverClassName(ctx), jdbcUrl, username, password, ctx); // DataSource bds = WebappDaoSetup.makeBasicDataSource( // getDbDriverClassName(ctx), jdbcUrl, username, password, ctx); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/ModelMakerSetup.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/ModelMakerSetup.java new file mode 100644 index 000000000..8ce03734b --- /dev/null +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/ModelMakerSetup.java @@ -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. + } + } + diff --git a/webapp/web/WEB-INF/resources/startup_listeners.txt b/webapp/web/WEB-INF/resources/startup_listeners.txt index 251a26458..202508ebd 100644 --- a/webapp/web/WEB-INF/resources/startup_listeners.txt +++ b/webapp/web/WEB-INF/resources/startup_listeners.txt @@ -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.UserModelSetup - -edu.cornell.mannlib.vitro.webapp.servlet.setup.WebappDaoSetup +edu.cornell.mannlib.vitro.webapp.servlet.setup.ContentModelSetup +edu.cornell.mannlib.vitro.webapp.servlet.setup.ModelMakerSetup edu.cornell.mannlib.vitro.webapp.servlet.setup.UpdateKnowledgeBase