Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/services/MapInfoService.java @ 4810:5ca2516ebef1
Add rivermap.xml with sample configuration and adapt MapInfoService to use rivermap data instead of floodmap for rivermap.
author | Christian Lins <christian.lins@intevation.de> |
---|---|
date | Thu, 17 Jan 2013 21:06:41 +0100 |
parents | 6aa1b8abe2d3 |
children | a06e443f159a |
comparison
equal
deleted
inserted
replaced
4809:8062b571884d | 4810:5ca2516ebef1 |
---|---|
30 public class MapInfoService extends XMLService { | 30 public class MapInfoService extends XMLService { |
31 | 31 |
32 /** XPath that points to the river.*/ | 32 /** XPath that points to the river.*/ |
33 public static final String XPATH_RIVER = "/mapinfo/river/text()"; | 33 public static final String XPATH_RIVER = "/mapinfo/river/text()"; |
34 | 34 |
35 public static final String XPATH_RIVER_PROJECTION = | 35 public static final String XPATH_MAPTYPE = "/mapinfo/maptype/text()"; |
36 | |
37 private static final String XPATH_RIVER_PROJECTION = | |
36 "/artifact-database/floodmap/river[@name=$river]/srid/@value"; | 38 "/artifact-database/floodmap/river[@name=$river]/srid/@value"; |
37 | 39 |
38 public static final String XPATH_RIVER_BACKGROUND = | 40 private static final String XPATH_RIVER_BACKGROUND = |
39 "/artifact-database/floodmap/river[@name=$river]/background-wms"; | 41 "/artifact-database/floodmap/river[@name=$river]/background-wms"; |
40 | 42 |
41 public static final String XPATH_RIVER_WMS = | 43 private static final String XPATH_RIVER_WMS = |
42 "/artifact-database/floodmap/river[@name=$river]/river-wms"; | 44 "/artifact-database/floodmap/river[@name=$river]/river-wms"; |
43 | 45 |
44 | 46 |
45 /** The logger used in this service.*/ | 47 /** The logger used in this service.*/ |
46 private static Logger logger = Logger.getLogger(MapInfoService.class); | 48 private static Logger logger = Logger.getLogger(MapInfoService.class); |
68 return (Node)XMLUtils.xpath( | 70 return (Node)XMLUtils.xpath( |
69 Config.getConfig(), query, XPathConstants.NODE, | 71 Config.getConfig(), query, XPathConstants.NODE, |
70 null, variables); | 72 null, variables); |
71 } | 73 } |
72 | 74 |
75 protected String xpathMaptypeSwitch(String maptype, String xpath) { | |
76 if (maptype != null) { | |
77 return xpath.replace("floodmap", maptype); | |
78 } | |
79 return xpath; | |
80 } | |
81 | |
73 @Override | 82 @Override |
74 public Document processXML( | 83 public Document processXML( |
75 Document data, | 84 Document data, |
76 GlobalContext globalContext, | 85 GlobalContext globalContext, |
77 CallMeta callMeta | 86 CallMeta callMeta |
82 ElementCreator cr = new ElementCreator(result, null, null); | 91 ElementCreator cr = new ElementCreator(result, null, null); |
83 | 92 |
84 Element mapinfo = cr.create("mapinfo"); | 93 Element mapinfo = cr.create("mapinfo"); |
85 result.appendChild(mapinfo); | 94 result.appendChild(mapinfo); |
86 | 95 |
96 String mapType = extractMaptype(data); | |
87 String river = extractRiver(data); | 97 String river = extractRiver(data); |
88 if (river == null || river.length() == 0) { | 98 if (river == null || river.length() == 0) { |
89 logger.warn("Cannot generate information: river is empty!"); | 99 logger.warn("Cannot generate information: river is empty!"); |
90 return result; | 100 return result; |
91 } | 101 } |
105 } | 115 } |
106 | 116 |
107 Map<String, String> vars = new HashMap<String, String>(); | 117 Map<String, String> vars = new HashMap<String, String>(); |
108 vars.put("river", river); | 118 vars.put("river", river); |
109 | 119 |
110 String sridStr = getStringXPath(XPATH_RIVER_PROJECTION, vars); | 120 String sridStr = getStringXPath( |
121 xpathMaptypeSwitch(mapType, XPATH_RIVER_PROJECTION), vars); | |
111 | 122 |
112 if (sridStr != null && sridStr.length() > 0) { | 123 if (sridStr != null && sridStr.length() > 0) { |
113 Element srid = cr.create("srid"); | 124 Element srid = cr.create("srid"); |
114 cr.addAttr(srid, "value", sridStr); | 125 cr.addAttr(srid, "value", sridStr); |
115 root.appendChild(srid); | 126 root.appendChild(srid); |
116 } | 127 } |
117 | 128 |
118 logger.debug("processXML: " + XMLUtils.toString(root)); | 129 logger.debug("processXML: " + XMLUtils.toString(root)); |
119 root.appendChild( | 130 root.appendChild( |
120 createWMSElement("background-wms", XPATH_RIVER_BACKGROUND, vars, cr)); | 131 createWMSElement("background-wms", |
132 xpathMaptypeSwitch(mapType, XPATH_RIVER_BACKGROUND), vars, cr)); | |
121 root.appendChild( | 133 root.appendChild( |
122 createWMSElement("river-wms", XPATH_RIVER_WMS, vars, cr)); | 134 createWMSElement("river-wms", |
135 xpathMaptypeSwitch(mapType, XPATH_RIVER_WMS), vars, cr)); | |
123 | 136 |
124 return result; | 137 return result; |
125 } | 138 } |
126 | 139 |
127 | 140 |
152 | 165 |
153 protected String extractRiver(Document data) { | 166 protected String extractRiver(Document data) { |
154 return XMLUtils.xpathString( | 167 return XMLUtils.xpathString( |
155 data, XPATH_RIVER, ArtifactNamespaceContext.INSTANCE); | 168 data, XPATH_RIVER, ArtifactNamespaceContext.INSTANCE); |
156 } | 169 } |
170 | |
171 protected String extractMaptype(Document data) { | |
172 return XMLUtils.xpathString( | |
173 data, XPATH_MAPTYPE, ArtifactNamespaceContext.INSTANCE); | |
174 } | |
157 } | 175 } |
158 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 176 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |