diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/OntologyUpdater.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/OntologyUpdater.java index 7c0f445c4..abcb095e7 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/OntologyUpdater.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/ontology/update/OntologyUpdater.java @@ -50,11 +50,6 @@ public class OntologyUpdater { private OntologyChangeLogger logger; private OntologyChangeRecord record; - private OntModel OLD_TBOX_MODEL = null; // TODO change this - - private OntModel oldTBoxAnnotationsModel; - private OntModel newTBoxAnnotationsModel; - public OntologyUpdater(OntologyUpdateSettings settings) { this.settings = settings; this.logger = new SimpleOntologyChangeLogger(settings.getLogFile(), @@ -83,7 +78,7 @@ public class OntologyUpdater { AtomicOntologyChangeLists changes = new AtomicOntologyChangeLists(rawChanges, settings.getOntModelSelector().getTBoxModel(), - OLD_TBOX_MODEL); + settings.getOldTBoxModel()); //updateTBox(changes); //preprocessChanges(changes); @@ -182,7 +177,8 @@ public class OntologyUpdater { } private void updateTBoxAnnotations() throws IOException { - (new TBoxUpdater(oldTBoxAnnotationsModel, newTBoxAnnotationsModel, + (new TBoxUpdater(settings.getOldTBoxAnnotationsModel(), + settings.getNewTBoxAnnotationsModel(), settings.getOntModelSelector().getTBoxModel(), logger, record)) .updateVitroPropertyDefaultValues(); } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/UpdateKnowledgeBase.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/UpdateKnowledgeBase.java index 488d07ca3..0d00aed4f 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/UpdateKnowledgeBase.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/servlet/setup/UpdateKnowledgeBase.java @@ -4,6 +4,7 @@ package edu.cornell.mannlib.vitro.webapp.servlet.setup; import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; import java.util.Iterator; @@ -15,6 +16,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.ontology.OntModelSpec; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.ModelFactory; import com.hp.hpl.jena.rdf.model.RDFNode; @@ -55,10 +57,15 @@ public class UpdateKnowledgeBase implements ServletContextListener { "removedData.rdf"; private final String SPARQL_CONSTRUCTS_DIR = DATA_DIR + "sparqlConstructs/"; private final String MISC_REPLACEMENTS_FILE = DATA_DIR + "miscReplacements.rdf"; + private final String OLD_TBOX_MODEL_DIR = DATA_DIR + "oldVersion/"; + private final String OLD_TBOX_ANNOTATIONS_DIR = DATA_DIR + "oldAnnotations/"; public void contextInitialized(ServletContextEvent sce) { - - /* + + // TODO remove when ready + if (true) { + return; + } ServletContext ctx = sce.getServletContext(); @@ -80,6 +87,11 @@ public class UpdateKnowledgeBase implements ServletContextListener { WebappDaoFactory wadf = (WebappDaoFactory) ctx.getAttribute("webappDaoFactory"); settings.setDefaultNamespace(wadf.getDefaultNamespace()); + OntModel oldTBoxModel = loadModelFromDirectory(ctx.getRealPath(OLD_TBOX_MODEL_DIR)); + settings.setOldTBoxModel(oldTBoxModel); + OntModel oldTBoxAnnotationsModel = loadModelFromDirectory(ctx.getRealPath(OLD_TBOX_ANNOTATIONS_DIR)); + settings.setOldTBoxAnnotationsModel(oldTBoxAnnotationsModel); + try { doMiscAppMetadataReplacements(ctx.getRealPath(MISC_REPLACEMENTS_FILE), oms); (new OntologyUpdater(settings)).update(); @@ -93,7 +105,7 @@ public class UpdateKnowledgeBase implements ServletContextListener { throw new RuntimeException(errMsg, ioe); } - */ + } @@ -134,6 +146,35 @@ public class UpdateKnowledgeBase implements ServletContextListener { } } + private OntModel loadModelFromDirectory(String directoryPath) { + OntModel om = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM); + File directory = new File(directoryPath); + if (!directory.isDirectory()) { + throw new RuntimeException(directoryPath + " must be a directory " + + "containing RDF files."); + } + File[] rdfFiles = directory.listFiles(); + for (int i = 0; i < rdfFiles.length; i++) { + try { + File f = rdfFiles[i]; + FileInputStream fis = new FileInputStream(f); + try { + if (f.getName().endsWith(".n3")) { + om.read(fis, null, "N3"); + } else { + om.read(fis, null, "RDF/XML"); + } + } catch (Exception e) { + log.error("Unable to load RDF from " + f.getName(), e); + } + } catch (FileNotFoundException fnfe) { + log.error(rdfFiles[i].getName() + " not found. Unable to load" + + " RDF from this location."); + } + } + return om; + } + public void contextDestroyed(ServletContextEvent arg0) { // nothing to do }