data migration improvements

This commit is contained in:
brianjlowe 2013-09-23 15:56:27 -04:00
parent f76ee886d5
commit 32925441bc

View file

@ -103,86 +103,80 @@ public class UpdateKnowledgeBase implements ServletContextListener {
OntModel newTBoxAnnotationsModel = loadModelFromDirectory(createDirectory(homeDir, "rdf", "tbox", "firsttime").toString()); OntModel newTBoxAnnotationsModel = loadModelFromDirectory(createDirectory(homeDir, "rdf", "tbox", "firsttime").toString());
settings.setNewTBoxAnnotationsModel(newTBoxAnnotationsModel); settings.setNewTBoxAnnotationsModel(newTBoxAnnotationsModel);
settings.setRDFService(RDFServiceUtils.getRDFServiceFactory(ctx).getRDFService()); settings.setRDFService(RDFServiceUtils.getRDFServiceFactory(ctx).getRDFService());
boolean tryMigrateDisplay = true; boolean tryMigrateDisplay = true;
try { try {
//Display model tbox and display metadata //Display model tbox and display metadata
//old display model tbox model //old display model tbox model
OntModel oldDisplayModelTboxModel = loadModelFromFile(ctx.getRealPath(OLD_DISPLAYMODEL_TBOX_PATH)); OntModel oldDisplayModelTboxModel = loadModelFromFile(ctx.getRealPath(OLD_DISPLAYMODEL_TBOX_PATH));
settings.setOldDisplayModelTboxModel(oldDisplayModelTboxModel); settings.setOldDisplayModelTboxModel(oldDisplayModelTboxModel);
//new display model tbox model //new display model tbox model
OntModel newDisplayModelTboxModel = loadModelFromFile(ctx.getRealPath(NEW_DISPLAYMODEL_TBOX_PATH)); OntModel newDisplayModelTboxModel = loadModelFromFile(ctx.getRealPath(NEW_DISPLAYMODEL_TBOX_PATH));
settings.setNewDisplayModelTboxModel(newDisplayModelTboxModel); settings.setNewDisplayModelTboxModel(newDisplayModelTboxModel);
//old display model display model metadata //old display model display model metadata
OntModel oldDisplayModelDisplayMetadataModel = loadModelFromFile(ctx.getRealPath(OLD_DISPLAYMODEL_DISPLAYMETADATA_PATH)); OntModel oldDisplayModelDisplayMetadataModel = loadModelFromFile(ctx.getRealPath(OLD_DISPLAYMODEL_DISPLAYMETADATA_PATH));
settings.setOldDisplayModelDisplayMetadataModel(oldDisplayModelDisplayMetadataModel); settings.setOldDisplayModelDisplayMetadataModel(oldDisplayModelDisplayMetadataModel);
//new display model display model metadata //new display model display model metadata
OntModel newDisplayModelDisplayMetadataModel = loadModelFromFile(ctx.getRealPath(NEW_DISPLAYMODEL_DISPLAYMETADATA_PATH)); OntModel newDisplayModelDisplayMetadataModel = loadModelFromFile(ctx.getRealPath(NEW_DISPLAYMODEL_DISPLAYMETADATA_PATH));
settings.setNewDisplayModelDisplayMetadataModel(newDisplayModelDisplayMetadataModel); settings.setNewDisplayModelDisplayMetadataModel(newDisplayModelDisplayMetadataModel);
//Get new display model //Get new display model
OntModel newDisplayModelFromFile = loadModelFromFile(ctx.getRealPath(NEW_DISPLAYMODEL_PATH)); OntModel newDisplayModelFromFile = loadModelFromFile(ctx.getRealPath(NEW_DISPLAYMODEL_PATH));
settings.setNewDisplayModelFromFile(newDisplayModelFromFile); settings.setNewDisplayModelFromFile(newDisplayModelFromFile);
OntModel loadedAtStartupFiles = loadModelFromDirectory(ctx.getRealPath(LOADED_STARTUPT_DISPLAYMODEL_DIR)); OntModel loadedAtStartupFiles = loadModelFromDirectory(ctx.getRealPath(LOADED_STARTUPT_DISPLAYMODEL_DIR));
settings.setLoadedAtStartupDisplayModel(loadedAtStartupFiles); settings.setLoadedAtStartupDisplayModel(loadedAtStartupFiles);
OntModel oldDisplayModelVivoListView = loadModelFromFile(ctx.getRealPath(OLD_DISPLAYMODEL_VIVOLISTVIEW_PATH)); OntModel oldDisplayModelVivoListView = loadModelFromFile(ctx.getRealPath(OLD_DISPLAYMODEL_VIVOLISTVIEW_PATH));
settings.setVivoListViewConfigDisplayModel(oldDisplayModelVivoListView); settings.setVivoListViewConfigDisplayModel(oldDisplayModelVivoListView);
} catch (ModelFileNotFoundException e) { } catch (ModelFileNotFoundException e) {
// expected if no display migration was intended // expected if no display migration was intended
tryMigrateDisplay = false; tryMigrateDisplay = false;
} catch (Exception e) { } catch (Exception e) {
log.info("Unable to read display model migration files. ", e); log.info("Unable to read display model migration files. ", e);
tryMigrateDisplay = false; tryMigrateDisplay = false;
} }
try {
KnowledgeBaseUpdater ontologyUpdater = new KnowledgeBaseUpdater(settings); KnowledgeBaseUpdater ontologyUpdater = new KnowledgeBaseUpdater(settings);
boolean requiredUpdate = ontologyUpdater.updateRequired(ctx);
try {
if (!ontologyUpdater.updateRequired(ctx)) { try {
log.info("No data migration required."); ctx.setAttribute(KBM_REQURIED_AT_STARTUP, Boolean.TRUE);
} else { log.info("Data migration required");
ctx.setAttribute(KBM_REQURIED_AT_STARTUP, Boolean.TRUE); migrationChangesMade = ontologyUpdater.update(ctx);
log.info("Data migration required"); if (tryMigrateDisplay) {
migrationChangesMade = ontologyUpdater.update(ctx); try {
if (tryMigrateDisplay) { migrateDisplayModel(settings);
try { log.info("Migrated display model");
migrateDisplayModel(settings); } catch (Exception e) {
log.info("Migrated display model"); log.warn("unable to successfully update display model: " + e.getMessage());
} catch (Exception e) { }
log.warn("unable to successfully update display model: " + e.getMessage()); }
} // reload the display model since the TBoxUpdater may have
} // modified it
// reload the display model since the TBoxUpdater may have new ApplicationModelSetup().contextInitialized(sce);
// modified it } catch (Exception ioe) {
new ApplicationModelSetup().contextInitialized(sce); ss.fatal(this, "Exception updating knowledge base for ontology changes: ", ioe);
} }
} catch (Exception ioe) {
ss.fatal(this, "Exception updating knowledge base for ontology changes: ", ioe); SimpleReasoner simpleReasoner = (SimpleReasoner) sce.getServletContext()
} .getAttribute(SimpleReasoner.class.getName());
} catch (Throwable t){ if (simpleReasoner != null) {
ss.fatal(this, "Exception updating knowledge base for ontology changes: ", t); if ( (requiredUpdate && migrationChangesMade)
} || JenaDataSourceSetupBase.isFirstStartup()) {
} catch (Throwable t) { log.info("ABox inference recompute required.");
ss.fatal(this, "Exception updating knowledge base for ontology changes: ", t); simpleReasoner.recompute();
} else if (SimpleReasonerSetup.isRecomputeRequired(sce.getServletContext()) || migrationChangesMade) {
log.info("starting ABox inference recompute in a separate thread.");
new Thread(
new ABoxRecomputer(
simpleReasoner),"ABoxRecomputer").start();
}
}
} catch (Throwable t){
ss.fatal(this, "Exception updating knowledge base for ontology changes: ", t);
} }
if (SimpleReasonerSetup.isRecomputeRequired(sce.getServletContext())) {
log.info("ABox inference recompute required.");
SimpleReasoner simpleReasoner = (SimpleReasoner) sce.getServletContext()
.getAttribute(SimpleReasoner.class.getName());
if (simpleReasoner != null) {
if (JenaDataSourceSetupBase.isFirstStartup() || migrationChangesMade) {
simpleReasoner.recompute();
} else {
log.info("starting ABox inference recompute in a separate thread.");
new Thread(
new ABoxRecomputer(
simpleReasoner),"ABoxRecomputer").start();
}
}
}
} }