# HG changeset patch # User raimund renkert # Date 1311172069 -7200 # Node ID 21610527185649c49d156b14ca5dba88551fce48 # Parent 8ced5ff9113d464a3ec33df3b2998ea7b18944c7# Parent 43f1cbdcd59766399ffdd34e7361706c2d4cf4b6 Merged with Stephans commits. diff -r 43f1cbdcd597 -r 216105271856 ChangeLog --- a/ChangeLog Wed Jul 20 15:53:01 2011 +0200 +++ b/ChangeLog Wed Jul 20 16:27:49 2011 +0200 @@ -24,6 +24,35 @@ 2011-07-20 Raimund Renkert + * build.xml: + Added target "jar-norevision" to create a jar file without the + revision hash. + +2011-07-20 Raimund Renkert + + * src/java/de/intevation/mxd/writer/SymbolWriter.java: + Lookup symbol font in fontset and print out a warning if the font is + missing. + +2011-07-20 Raimund Renkert + + * src/java/de/intevation/mxd/writer/MarkerStyleWriter.java: + Added offset attributes to marker style symbols. + +2011-07-20 Raimund Renkert + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Do not write layer with empty CLASS objects. + +2011-07-20 Raimund Renkert + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Added string manipulator that replaces german umlauts and trims a + string. + Use this validator for mapserver relevant names and strings. + +2011-07-20 Raimund Renkert + * src/java/de/intevation/mxd/reader/MapScriptWriter.java: Add quotes to expression if the value is a string. diff -r 43f1cbdcd597 -r 216105271856 build.xml --- a/build.xml Wed Jul 20 15:53:01 2011 +0200 +++ b/build.xml Wed Jul 20 16:27:49 2011 +0200 @@ -32,7 +32,7 @@ - + @@ -59,7 +59,7 @@ - + @@ -69,6 +69,16 @@ + + + + + + + + + + diff -r 43f1cbdcd597 -r 216105271856 src/java/de/intevation/mxd/writer/MapScriptWriter.java --- a/src/java/de/intevation/mxd/writer/MapScriptWriter.java Wed Jul 20 15:53:01 2011 +0200 +++ b/src/java/de/intevation/mxd/writer/MapScriptWriter.java Wed Jul 20 16:27:49 2011 +0200 @@ -190,15 +190,20 @@ for(int i = 0; i < list.getLength(); i++) { Element layerElement = (Element)list.item(i); layerObj layer = new layerObj(map); + NodeList renderer = layerElement.getElementsByTagName("renderer"); + if (renderer.getLength() == 0) { + continue; + } //The layer name. String lname = layerElement.getAttribute("name"); lname = lname.replaceAll(" ", ""); - layer.setName(lname); + layer.setName(validateString(lname)); layer.setUnits(units.swigValue()); - layer.setMetaData("wms_title", layerElement.getAttribute("name")); + layer.setMetaData("wms_title", validateString(lname)); if(layerElement.hasAttribute("group")) { - layer.setGroup(layerElement.getAttribute("group")); + String group = layerElement.getAttribute("group"); + layer.setGroup(validateString(group)); } //The layer status. @@ -332,8 +337,10 @@ Element classElement = (Element)list.item(i); classObj co = new classObj(layer); String name = classElement.getAttribute("label"); + name = validateString(name); if (name.equals("")) { name = layerElement.getAttribute("name"); + name = validateString(name); if (list.getLength() > 1) { name += "-" + i; } @@ -558,4 +565,21 @@ } return expression; } + + /** + * Replaces german umlauts and removes leading and trailing whitespaces. + * + * @param s String + */ + private String validateString (String s) { + if (s.equals("")) { + return ""; + } + String tmp = s.trim(); + tmp = tmp.replace ("ö", "oe"); + tmp = tmp.replace ("ä", "ae"); + tmp = tmp.replace ("ü", "ue"); + tmp = tmp.replace ("ß", "ss"); + return tmp; + } } diff -r 43f1cbdcd597 -r 216105271856 src/java/de/intevation/mxd/writer/MarkerStyleWriter.java --- a/src/java/de/intevation/mxd/writer/MarkerStyleWriter.java Wed Jul 20 15:53:01 2011 +0200 +++ b/src/java/de/intevation/mxd/writer/MarkerStyleWriter.java Wed Jul 20 16:27:49 2011 +0200 @@ -100,6 +100,32 @@ logger.warn("Error setting outline width."); } } + + if (symbolElement.hasAttribute("x_offset")) { + try { + double val = + Double.parseDouble(symbolElement.getAttribute("x_offset")); + double r = Math.round(val); + style.setOffsetx(r); + } + catch (NumberFormatException nfe) { + logger.warn("Error setting the symbol x-offset"); + } + } + if (symbolElement.hasAttribute("y_offset")) { + try { + double val = + Double.parseDouble(symbolElement.getAttribute("y_offset")); + double r = Math.round(val); + //In ArcGIS positive y offset values move the symbol upwards, + //in Mapserver positive values move downwards. + r = -r; + style.setOffsety(r); + } + catch (NumberFormatException nfe) { + logger.warn("Error setting the symbol y-offset."); + } + } String symType = symbolElement.getAttribute("style"); if(symType.equals("point") || symType.equals("arrow") || diff -r 43f1cbdcd597 -r 216105271856 src/java/de/intevation/mxd/writer/SymbolWriter.java --- a/src/java/de/intevation/mxd/writer/SymbolWriter.java Wed Jul 20 15:53:01 2011 +0200 +++ b/src/java/de/intevation/mxd/writer/SymbolWriter.java Wed Jul 20 16:27:49 2011 +0200 @@ -11,6 +11,8 @@ import edu.umn.gis.mapscript.symbolSetObj; import edu.umn.gis.mapscript.lineObj; import edu.umn.gis.mapscript.pointObj; +import edu.umn.gis.mapscript.fontSetObj; +import edu.umn.gis.mapscript.hashTableObj; import edu.umn.gis.mapscript.MS_SYMBOL_TYPE; import java.io.File; @@ -154,6 +156,17 @@ String font = symbolElement.getAttribute("font"); //Remove all blank character to match the mapserver fonts.txt. font = font.replaceAll(" ", ""); + fontSetObj fso = this.map.getFontset(); + hashTableObj fonts = fso.getFonts(); + String mapFont = fonts.get(font,""); + if (mapFont == null || mapFont.equals("")) { + logger.warn( + "Could not find font " + font + " in font set. " + + "Setting FreeSans as symbol font." + + "Please add " + font + " to fonts.txt and replace the alias " + + "in symbol \"" + symbolElement.getAttribute("name") + "\"."); + font = "FreeSans"; + } symbol.setName(symbolElement.getAttribute("name")); symbol.setFont(font); symbol.setType(MS_SYMBOL_TYPE.MS_SYMBOL_TRUETYPE.swigValue());