Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MetaDataService.java @ 415:7c018f466d6d
Datacage: Added river parameter to meta data services.
flys-artifacts/trunk@1879 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 10 May 2011 12:43:12 +0000 |
parents | fc3cf0ef777e |
children | 24b53f9aa9dc |
comparison
equal
deleted
inserted
replaced
414:0385bcc4229a | 415:7c018f466d6d |
---|---|
7 import java.sql.SQLException; | 7 import java.sql.SQLException; |
8 | 8 |
9 import org.w3c.dom.Document; | 9 import org.w3c.dom.Document; |
10 | 10 |
11 import org.apache.log4j.Logger; | 11 import org.apache.log4j.Logger; |
12 | |
13 import java.util.Map; | |
14 import java.util.HashMap; | |
12 | 15 |
13 import de.intevation.artifacts.CallMeta; | 16 import de.intevation.artifacts.CallMeta; |
14 import de.intevation.artifacts.ServiceFactory; | 17 import de.intevation.artifacts.ServiceFactory; |
15 | 18 |
16 import de.intevation.artifactdatabase.DefaultService; | 19 import de.intevation.artifactdatabase.DefaultService; |
28 public class MetaDataService | 31 public class MetaDataService |
29 extends DefaultService | 32 extends DefaultService |
30 { | 33 { |
31 private static Logger log = Logger.getLogger(MetaDataService.class); | 34 private static Logger log = Logger.getLogger(MetaDataService.class); |
32 | 35 |
36 public static final String XPATH_RIVER = "//river/@name"; | |
37 | |
33 public static final String META_DATA_TEMPLATE = "/metadata/template.xml"; | 38 public static final String META_DATA_TEMPLATE = "/metadata/template.xml"; |
34 | 39 |
35 protected Builder builder; | 40 protected Builder builder; |
36 | 41 |
37 public MetaDataService() { | 42 public MetaDataService() { |
43 } | |
44 | |
45 protected static Map<String, Object> extractParameters(Document data) { | |
46 HashMap<String, Object> parameters = new HashMap<String, Object>(); | |
47 | |
48 String river = XMLUtils.xpathString(data, XPATH_RIVER, null); | |
49 | |
50 if (river == null || (river = river.trim()).length() == 0) { | |
51 river = "%"; // matches all rivers | |
52 } | |
53 | |
54 parameters.put("river", river); | |
55 | |
56 return parameters; | |
38 } | 57 } |
39 | 58 |
40 @Override | 59 @Override |
41 public Document process( | 60 public Document process( |
42 Document data, | 61 Document data, |
50 if (builder == null) { | 69 if (builder == null) { |
51 log.error("MetaDataService is not setup properly."); | 70 log.error("MetaDataService is not setup properly."); |
52 return result; | 71 return result; |
53 } | 72 } |
54 | 73 |
74 final Map<String, Object> parameters = extractParameters(data); | |
75 | |
55 Session session = SessionHolder.acquire(); | 76 Session session = SessionHolder.acquire(); |
56 try { | 77 try { |
57 session.doWork(new Work() { | 78 session.doWork(new Work() { |
58 @Override | 79 @Override |
59 public void execute(Connection connection) | 80 public void execute(Connection connection) |
60 throws SQLException | 81 throws SQLException |
61 { | 82 { |
62 log.debug("MetaDataService.execute"); | 83 log.debug("MetaDataService.execute"); |
63 builder.build(connection, result); | 84 builder.build(connection, result, parameters); |
64 } | 85 } |
65 }); | 86 }); |
66 } | 87 } |
67 finally { | 88 finally { |
68 session.close(); | 89 session.close(); |