From e78b020cb5d0d3e601a99da51e66d49ef62e93aa Mon Sep 17 00:00:00 2001 From: Jim Blake Date: Tue, 10 Feb 2015 16:36:35 -0500 Subject: [PATCH] VIVO-948 remove the sdb/metadata models. --- .../webapp/migration/Release18Migrator.java | 1 + .../RemoveObsoleteMetadataGraphs.java | 67 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 webapp/src/edu/cornell/mannlib/vitro/webapp/migration/RemoveObsoleteMetadataGraphs.java diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/migration/Release18Migrator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/migration/Release18Migrator.java index 7707fcaac..e402e3846 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/migration/Release18Migrator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/migration/Release18Migrator.java @@ -16,6 +16,7 @@ public class Release18Migrator implements ServletContextListener { ServletContext ctx = sce.getServletContext(); new FauxPropertiesUpdater(ctx, this).migrate(); + new RemoveObsoleteMetadataGraphs(ctx, this).migrate(); } @Override diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/migration/RemoveObsoleteMetadataGraphs.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/migration/RemoveObsoleteMetadataGraphs.java new file mode 100644 index 000000000..41714d458 --- /dev/null +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/migration/RemoveObsoleteMetadataGraphs.java @@ -0,0 +1,67 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +package edu.cornell.mannlib.vitro.webapp.migration; + +import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess.WhichService.CONFIGURATION; +import static edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess.WhichService.CONTENT; + +import javax.servlet.ServletContext; +import javax.servlet.ServletContextListener; + +import org.apache.log4j.Level; +import org.apache.log4j.Logger; + +import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess; +import edu.cornell.mannlib.vitro.webapp.modelaccess.ModelAccess.WhichService; +import edu.cornell.mannlib.vitro.webapp.rdfservice.impl.jena.RDFServiceJena; +import edu.cornell.mannlib.vitro.webapp.startup.StartupStatus; + +/** + * The graphs http://vitro.mannlib.cornell.edu/ns/vitro/sdb/metadata were used + * in Content models through release 1.7 and in Configuration models in release + * 1.7 + * + * In release 1.8, they area no longer used, and produce annoying warning + * messages. + */ +public class RemoveObsoleteMetadataGraphs { + private static final String OBSOLETE_METADATA_MODEL = "http://vitro.mannlib.cornell.edu/ns/vitro/sdb/metadata"; + + private final ServletContext ctx; + private final ServletContextListener parent; + + public RemoveObsoleteMetadataGraphs(ServletContext ctx, + ServletContextListener parent) { + this.ctx = ctx; + this.parent = parent; + } + + public void migrate() { + StartupStatus ss = StartupStatus.getBean(ctx); + removeMetadataModel(ctx, ss, CONTENT); + removeMetadataModel(ctx, ss, CONFIGURATION); + } + + /** + * Ordinarily, RDFServiceJena will issue a warning when a single triple is + * removed from a blank node. In this case, however, that's exactly what we + * want, so stifle those warnings while we remove these models. + */ + private void removeMetadataModel(ServletContext ctx, StartupStatus ss, + WhichService which) { + Logger rdfServiceLogger = Logger.getLogger(RDFServiceJena.class); + Level rdfServiceLogLevel = rdfServiceLogger.getLevel(); + + rdfServiceLogger.setLevel(Level.ERROR); + try { + ModelAccess.on(ctx).getModelMaker(which) + .removeModel(OBSOLETE_METADATA_MODEL); + } catch (Exception e) { + ss.warning(parent, "Failed to remove '" + OBSOLETE_METADATA_MODEL + + "' from " + which, e); + } finally { + rdfServiceLogger.setLevel(rdfServiceLogLevel); + } + } + +}