# HG changeset patch # User Ingo Weinzierl # Date 1319812944 0 # Node ID 1636686070f71ddd90f078d3a5c9d74c85c55368 # Parent 49ad801076e48d1569b5bbd17f1cd3f603d86142 Initial commit to support styles in maps. flys-artifacts/trunk@3116 c6561f87-3c4e-4783-a992-168aeb5c3f6f diff -r 49ad801076e4 -r 1636686070f7 flys-artifacts/ChangeLog --- a/flys-artifacts/ChangeLog Fri Oct 28 13:48:02 2011 +0000 +++ b/flys-artifacts/ChangeLog Fri Oct 28 14:42:24 2011 +0000 @@ -1,3 +1,27 @@ +2011-10-28 Ingo Weinzierl + + * doc/conf/themes.xml: Added a default theme for the riveraxis used in the + floodmap. + + * src/main/java/de/intevation/flys/artifacts/model/MapserverStyle.java: + New. This class is used by ThemeUtil to create a style which is + compatible for Mapserver- + + * src/main/java/de/intevation/flys/utils/ThemeUtil.java: Added a method to + retrieve a Mapserver compatible style (as string) based on a given + Document (that comes from CollectionItem's attribute). + + * src/main/java/de/intevation/flys/artifacts/model/LayerInfo.java: + Implemented the setStyle() and getStyle() methods. + + * src/main/java/de/intevation/flys/utils/MapfileGenerator.java: Added a + new parameter 'style' to createDatabaseLayer(). This parameter is set on + LayerInfo. + + * src/main/java/de/intevation/flys/exports/MapGenerator.java: Create + Mapserver compatible styles and call createDatabaseLayer() with this + style. + 2011-10-28 Ingo Weinzierl * doc/conf/artifacts/winfo.xml: Defined "floodmap.riveraxis" and diff -r 49ad801076e4 -r 1636686070f7 flys-artifacts/doc/conf/themes.xml --- a/flys-artifacts/doc/conf/themes.xml Fri Oct 28 13:48:02 2011 +0000 +++ b/flys-artifacts/doc/conf/themes.xml Fri Oct 28 14:42:24 2011 +0000 @@ -541,6 +541,15 @@ + + + + + + + + + @@ -595,5 +604,6 @@ + diff -r 49ad801076e4 -r 1636686070f7 flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/LayerInfo.java --- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/LayerInfo.java Fri Oct 28 13:48:02 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/LayerInfo.java Fri Oct 28 14:42:24 2011 +0000 @@ -10,6 +10,7 @@ protected String group; protected String groupTitle; protected String title; + protected String style; public LayerInfo( @@ -77,11 +78,13 @@ } + public void setStyle(String style) { + this.style = style; + } + + public String getStyle() { - // TODO IMPLEMENT ME - // The style of a layer depends on the theme that might be configured - // by the user (stored in the attribute of the CollectionItem). - return null; + return style; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 49ad801076e4 -r 1636686070f7 flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/MapserverStyle.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/MapserverStyle.java Fri Oct 28 14:42:24 2011 +0000 @@ -0,0 +1,64 @@ +package de.intevation.flys.artifacts.model; + +import java.util.ArrayList; +import java.util.List; + + +public class MapserverStyle { + + public static class Clazz { + protected String name; + protected String outlinecolor; + protected int size; + + public Clazz(String name) { + this.name = name; + } + + public void setOutlineColor(String outlinecolor) { + this.outlinecolor = outlinecolor; + } + + public void setSize(int size) { + this.size = size; + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("CLASS\n"); + sb.append("NAME \"" + name + "\"\n"); + sb.append("STYLE\n"); + sb.append("SIZE " + String.valueOf(size) + "\n"); + sb.append("OUTLINECOLOR \"" + outlinecolor + "\"\n"); + sb.append("END\n"); + sb.append("END\n"); + + return sb.toString(); + } + } // end of Clazz + + + protected List classes; + + + public MapserverStyle() { + classes = new ArrayList(); + } + + public void addClazz(Clazz clazz) { + if (clazz != null) { + classes.add(clazz); + } + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + + for (Clazz clazz: classes) { + sb.append(clazz.toString()); + } + + return sb.toString(); + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 49ad801076e4 -r 1636686070f7 flys-artifacts/src/main/java/de/intevation/flys/exports/MapGenerator.java --- a/flys-artifacts/src/main/java/de/intevation/flys/exports/MapGenerator.java Fri Oct 28 13:48:02 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/MapGenerator.java Fri Oct 28 14:42:24 2011 +0000 @@ -29,6 +29,7 @@ import de.intevation.flys.artifacts.model.WMSLayerFacet; import de.intevation.flys.utils.GeometryUtils; import de.intevation.flys.utils.MapfileGenerator; +import de.intevation.flys.utils.ThemeUtil; public class MapGenerator implements OutGenerator, FacetTypes { @@ -109,7 +110,7 @@ createBarriersLayer(flys, wms); } else { - createDatabaseLayer(flys, wms); + createDatabaseLayer(flys, wms, attr); } } else { @@ -144,7 +145,11 @@ } - protected void createDatabaseLayer(FLYSArtifact flys, WMSLayerFacet wms) { + protected void createDatabaseLayer( + FLYSArtifact flys, + WMSLayerFacet wms, + Document attr + ) { logger.debug("createDatabaseLayer for facet: " + wms.getName()); MapfileGenerator mfg = MapfileGenerator.getInstance(); @@ -159,7 +164,10 @@ } if (wms instanceof WMSDBLayerFacet) { - mfg.createDatabaseLayer(flys, (WMSDBLayerFacet) wms); + mfg.createDatabaseLayer( + flys, + (WMSDBLayerFacet) wms, + ThemeUtil.createMapserverStyle(attr)); } else { logger.warn("Cannot create DB layer from: " + wms.getClass()); diff -r 49ad801076e4 -r 1636686070f7 flys-artifacts/src/main/java/de/intevation/flys/utils/MapfileGenerator.java --- a/flys-artifacts/src/main/java/de/intevation/flys/utils/MapfileGenerator.java Fri Oct 28 13:48:02 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/utils/MapfileGenerator.java Fri Oct 28 14:42:24 2011 +0000 @@ -466,7 +466,11 @@ * @param flys The FLYSArtifact that owns wms. * @param wms The WMSLayerFacet that contains information for the layer. */ - public void createDatabaseLayer(FLYSArtifact flys, WMSDBLayerFacet wms) + public void createDatabaseLayer( + FLYSArtifact flys, + WMSDBLayerFacet wms, + String style + ) throws FileNotFoundException, IOException { logger.debug("createDatabaseLayer"); @@ -477,6 +481,7 @@ wms.getFilter(), wms.getData(), wms.getDescription()); + layerinfo.setStyle(style); String name = MS_LAYER_PREFIX + wms.getName(); diff -r 49ad801076e4 -r 1636686070f7 flys-artifacts/src/main/java/de/intevation/flys/utils/ThemeUtil.java --- a/flys-artifacts/src/main/java/de/intevation/flys/utils/ThemeUtil.java Fri Oct 28 13:48:02 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/utils/ThemeUtil.java Fri Oct 28 14:42:24 2011 +0000 @@ -9,6 +9,9 @@ import de.intevation.artifacts.common.utils.XMLUtils; +import de.intevation.flys.artifacts.model.MapserverStyle; +import de.intevation.flys.artifacts.model.MapserverStyle.Clazz; + /** * Utility to deal with themes and their representations. @@ -284,13 +287,33 @@ } + public static String getLineColorString(Document theme) { + return XMLUtils.xpathString(theme, XPATH_LINE_COLOR, null); + } + + /** * Gets color from color field. * @param theme the theme document. * @return color. */ public static Color parseLineColorField(Document theme) { - String color = XMLUtils.xpathString(theme, XPATH_LINE_COLOR, null); - return parseRGB(color); + return parseRGB(getLineColorString(theme)); + } + + + public static String createMapserverStyle(Document theme) { + String linecolor = getLineColorString(theme); + int linewidth = parseLineWidth(theme); + + MapserverStyle ms = new MapserverStyle(); + + Clazz c = new Clazz(" "); + c.setOutlineColor(linecolor); + c.setSize(linewidth); + + ms.addClazz(c); + + return ms.toString(); } }