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 :

http://dive4elements.wald.intevation.org