diff src/java/de/intevation/mxd/writer/MapScriptWriter.java @ 340:dbfcb0b69a63

* contrib/installer/example/example/template.map: Switch to latin1 encoding * contrib/installer/example/example/mapfile_header.include: Remove shapepath, data is now referenced relative to the mapfile
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 09 Nov 2012 16:54:16 +0100
parents ef1cac2854e3
children
line wrap: on
line diff
--- a/src/java/de/intevation/mxd/writer/MapScriptWriter.java	Thu Nov 08 12:46:16 2012 +0100
+++ b/src/java/de/intevation/mxd/writer/MapScriptWriter.java	Fri Nov 09 16:54:16 2012 +0100
@@ -119,6 +119,7 @@
         String fontSet = fonts.getAbsolutePath();
         fontSet = fontSet.replaceAll("\\\\", "/");
         map.setFontSet(fontSet);
+
     }
 
     /**
@@ -278,8 +279,13 @@
             "/mxd/map",
             XPathConstants.NODE);
         NodeList list = mapNode.getElementsByTagName("layer");
-        for(int i = 0; i < list.getLength(); i++) {
+        for(int i = list.getLength() - 1; i >= 0; i--) {
             Element layerElement = (Element)list.item(i);
+            if (layerElement.getAttribute("type") == "annotation" &&
+                layerElement.getElementsByTagName("feature").getLength() == 0) {
+                logger.debug("Ignoring empty annotation Layer.");
+                continue;
+            }
             layerObj layer = new layerObj(map);
             NodeList renderer = layerElement.getElementsByTagName("renderer");
 
@@ -858,15 +864,22 @@
     private String createExpression(Element ce, int index, String prefixToRemove,
             boolean isShapeFile) {
         String expression = "(";
-        int count = 0;
+        int field_count = 0;
+        int value_count = 0;
         try {
-            count = Integer.parseInt(ce.getAttribute("field_count"));
+            field_count = Integer.parseInt(ce.getAttribute("field_count"));
         }
         catch(NumberFormatException nfe) {
             return "";
         }
+        try {
+            value_count = Integer.parseInt(ce.getAttribute("value_count"));
+        }
+        catch(NumberFormatException nfe) {
+            value_count = field_count;
+        }
 
-        if(count == 1) {
+        if(field_count == 1) {
            //Create single field expression.
            try {
                 //If no exception is thrown, the expression value is a number.
@@ -903,18 +916,19 @@
         }
         else {
             //Create a multi field expression.
-            for (int i = 0; i < count; i++) {
+            for (int i = 0; i < field_count; i++) {
                 try {
                     //If no exception is thrown, the expression values are
                     //numbers.
+
                     Double.parseDouble(ce.getAttribute("value_" + i));
                     expression += "[";
                     expression += sanitizeAttribute(ce.getAttribute("expression_field_" + i),
-                                      prefixToRemove, prefix, isShapeFile);
+                            prefixToRemove, prefix, isShapeFile);
                     expression += "]";
                     expression += " " + ce.getAttribute("expression_operator");
                     expression += " " + ce.getAttribute("value_" + i);
-                    if (i < count - 1) {
+                    if (i < field_count - 1) {
                         expression += " AND ";
                     }
                     else {
@@ -925,11 +939,11 @@
                     //The expression values are strings.
                     expression += "\"[";
                     expression += sanitizeAttribute(ce.getAttribute("expression_field_" + i),
-                                      prefixToRemove, prefix, isShapeFile);
+                            prefixToRemove, prefix, isShapeFile);
                     expression += "]\"";
                     expression += " " + ce.getAttribute("expression_operator");
                     expression += " \"" + ce.getAttribute("value_" + i);
-                    if (i < count - 1) {
+                    if (i < field_count - 1) {
                         expression += "\" AND ";
                     }
                     else {
@@ -937,6 +951,7 @@
                     }
                 }
             }
+
         }
         return expression;
     }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)