comparison 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
comparison
equal deleted inserted replaced
946:854620e52971 947:db8d93cb65fd
1 package de.intevation.flys.artifacts.services; 1 package de.intevation.flys.artifacts.services;
2 2
3 import java.io.InputStream; 3 import java.io.InputStream;
4 import java.io.IOException; 4 import java.io.IOException;
5 import java.io.File;
6 import java.io.FileInputStream;
5 7
6 import java.sql.Connection; 8 import java.sql.Connection;
7 import java.sql.SQLException; 9 import java.sql.SQLException;
8 10
9 import org.w3c.dom.Document; 11 import org.w3c.dom.Document;
16 import de.intevation.artifacts.CallMeta; 18 import de.intevation.artifacts.CallMeta;
17 import de.intevation.artifacts.ServiceFactory; 19 import de.intevation.artifacts.ServiceFactory;
18 20
19 import de.intevation.artifactdatabase.DefaultService; 21 import de.intevation.artifactdatabase.DefaultService;
20 22
23 import de.intevation.artifacts.common.utils.Config;
21 import de.intevation.artifacts.common.utils.XMLUtils; 24 import de.intevation.artifacts.common.utils.XMLUtils;
22 25
23 import de.intevation.artifacts.common.ArtifactNamespaceContext; 26 import de.intevation.artifacts.common.ArtifactNamespaceContext;
24 27
25 import de.intevation.flys.artifacts.services.meta.Builder; 28 import de.intevation.flys.artifacts.services.meta.Builder;
33 public class MetaDataService 36 public class MetaDataService
34 extends DefaultService 37 extends DefaultService
35 { 38 {
36 private static Logger log = Logger.getLogger(MetaDataService.class); 39 private static Logger log = Logger.getLogger(MetaDataService.class);
37 40
41 public static final String XPATH_META_DATA_TEMPLATE =
42 "/artifact-database/metadata/@template";
43
38 public static final String XPATH_RIVER = "/art:river/text()"; 44 public static final String XPATH_RIVER = "/art:river/text()";
39
40 public static final String META_DATA_TEMPLATE = "/metadata/template.xml";
41 45
42 protected Builder builder; 46 protected Builder builder;
43 47
44 public MetaDataService() { 48 public MetaDataService() {
45 } 49 }
98 102
99 @Override 103 @Override
100 public void setup(ServiceFactory factory, Object globalContext) { 104 public void setup(ServiceFactory factory, Object globalContext) {
101 log.debug("MetaDataService.setup"); 105 log.debug("MetaDataService.setup");
102 106
103 InputStream in = getClass().getResourceAsStream(META_DATA_TEMPLATE); 107 String path = Config.getStringXPath(XPATH_META_DATA_TEMPLATE);
104 108
105 if (in == null) { 109 if (path == null) {
106 log.error("cannot get template resource"); 110 log.error("no path to template file given");
107 return; 111 return;
108 } 112 }
109 113
114 path = Config.replaceConfigDir(path);
115
116 File file = new File(path);
117
118 if (!file.isFile() || !file.canRead()) {
119 log.error("Cannot open template file '" + file + "'");
120 return;
121 }
122
123 InputStream in = null;
124
110 try { 125 try {
126 in = new FileInputStream(file);
111 Document template = XMLUtils.parseDocument(in); 127 Document template = XMLUtils.parseDocument(in);
112 if (template == null) { 128 if (template == null) {
113 log.error("cannot parse meta data template"); 129 log.error("cannot parse meta data template");
114 } 130 }
115 else { 131 else {
116 builder = new Builder(template); 132 builder = new Builder(template);
117 } 133 }
134 }
135 catch (IOException ioe) {
136 log.error(ioe);
118 } 137 }
119 finally { 138 finally {
120 try { 139 try {
121 in.close(); 140 in.close();
122 } 141 }

http://dive4elements.wald.intevation.org