Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/utils/ThemeUtil.java @ 2616:27cc95e65f18
Defined a style for WSPLGEN layers which are now modifiable.
flys-artifacts/trunk@4200 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Thu, 05 Apr 2012 07:21:58 +0000 |
parents | 41037d51c8b6 |
children | 8aaa7f4ce06a |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/utils/ThemeUtil.java Wed Apr 04 18:30:44 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/utils/ThemeUtil.java Thu Apr 05 07:21:58 2012 +0000 @@ -5,12 +5,17 @@ import java.awt.Color; import java.awt.Font; +import javax.xml.xpath.XPathConstants; + import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; import de.intevation.artifacts.common.utils.XMLUtils; import de.intevation.flys.artifacts.model.MapserverStyle; import de.intevation.flys.artifacts.model.MapserverStyle.Clazz; +import de.intevation.flys.artifacts.model.MapserverStyle.Expression; import de.intevation.flys.artifacts.model.MapserverStyle.Style; import de.intevation.flys.artifacts.model.MapserverStyle.Label; @@ -80,6 +85,9 @@ public final static String XPATH_SHOW_MAXIMUM = "/theme/field[@name='showmaximum']/@default"; + public final static String XPATH_WSPLGEN_FIELDS = + "/theme[@name='WSPLGEN']/field"; + /** Parse string to be boolean with default if empty or unrecognized. */ public static boolean parseBoolean(String value, boolean defaultsTo) { @@ -404,6 +412,62 @@ } + public static String createWSPLGENStyle(Document theme) { + NodeList categories = (NodeList) XMLUtils.xpath( + theme, + XPATH_WSPLGEN_FIELDS, + XPathConstants.NODESET); + + return createWSPLGENStyle(categories).toString(); + } + + protected static MapserverStyle createWSPLGENStyle(NodeList categories) { + MapserverStyle ms = new MapserverStyle(); + + for (int i = 0, n = categories.getLength(); i < n; i++) { + Element cat = (Element) categories.item(i); + String color = cat.getAttribute("default"); + String name = cat.getAttribute("name"); + + String expr; + + try { + int length = name.length(); + int idx = Integer.valueOf(name.substring(length-1, length)); + + expr = createWSPLGENExpression(idx); + } + catch (NumberFormatException nfe) { + logger.warn("Error while parsing WSPLGEN category.", nfe); + continue; + } + + Clazz c = new Clazz(expr); + Style s = new Style(); + s.setColor(color.replace(",", "")); + s.setSize(5); + + c.addItem(new Expression("(" + expr + ")")); + c.addItem(s); + + ms.addClazz(c); + } + + return ms; + } + + + protected static String createWSPLGENExpression(int idx) { + if (idx < 5) { + int lower = idx - 1; + return "[DIFF] >= " + lower + " AND [DIFF] < " + idx; + } + else { + return "[DIFF] >= 4"; + } + } + + public static String createMapserverStyle(Document theme) { String symbol = getSymbol(theme); String backcolor = getBackgroundColorString(theme);