Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MetaDataService.java @ 947:db8d93cb65fd
Made meta data template configurable.
flys-artifacts/trunk@2363 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 19 Jul 2011 16:39:32 +0000 |
parents | 24b53f9aa9dc |
children | 0881cd4be773 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MetaDataService.java Tue Jul 19 16:14:52 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MetaDataService.java Tue Jul 19 16:39:32 2011 +0000 @@ -2,6 +2,8 @@ import java.io.InputStream; import java.io.IOException; +import java.io.File; +import java.io.FileInputStream; import java.sql.Connection; import java.sql.SQLException; @@ -18,6 +20,7 @@ import de.intevation.artifactdatabase.DefaultService; +import de.intevation.artifacts.common.utils.Config; import de.intevation.artifacts.common.utils.XMLUtils; import de.intevation.artifacts.common.ArtifactNamespaceContext; @@ -35,10 +38,11 @@ { private static Logger log = Logger.getLogger(MetaDataService.class); + public static final String XPATH_META_DATA_TEMPLATE = + "/artifact-database/metadata/@template"; + public static final String XPATH_RIVER = "/art:river/text()"; - public static final String META_DATA_TEMPLATE = "/metadata/template.xml"; - protected Builder builder; public MetaDataService() { @@ -100,14 +104,26 @@ public void setup(ServiceFactory factory, Object globalContext) { log.debug("MetaDataService.setup"); - InputStream in = getClass().getResourceAsStream(META_DATA_TEMPLATE); + String path = Config.getStringXPath(XPATH_META_DATA_TEMPLATE); - if (in == null) { - log.error("cannot get template resource"); + if (path == null) { + log.error("no path to template file given"); return; } + path = Config.replaceConfigDir(path); + + File file = new File(path); + + if (!file.isFile() || !file.canRead()) { + log.error("Cannot open template file '" + file + "'"); + return; + } + + InputStream in = null; + try { + in = new FileInputStream(file); Document template = XMLUtils.parseDocument(in); if (template == null) { log.error("cannot parse meta data template"); @@ -116,6 +132,9 @@ builder = new Builder(template); } } + catch (IOException ioe) { + log.error(ioe); + } finally { try { in.close();