diff src/java/de/intevation/mxd/reader/MarkerFillSymbolReader.java @ 115:fb93f20478cc

Improved exception handling for symbol reader.
author Raimund Renkert <rrenkert@intevation.de>
date Wed, 15 Jun 2011 16:48:42 +0200
parents 59e06c405a9a
children a4ab239509f1
line wrap: on
line diff
--- a/src/java/de/intevation/mxd/reader/MarkerFillSymbolReader.java	Wed Jun 15 16:13:32 2011 +0200
+++ b/src/java/de/intevation/mxd/reader/MarkerFillSymbolReader.java	Wed Jun 15 16:48:42 2011 +0200
@@ -14,6 +14,7 @@
 import com.esri.arcgis.display.RgbColor;
 
 import org.w3c.dom.Element;
+import java.io.IOException;
 
 /**
  * Reads marker line symbol information.
@@ -62,28 +63,72 @@
      *
      * @return The XML node.
      */
-    public Element read()
-    throws Exception {
+    public Element read() {
         logger.debug("read()");
 
         Element symbolElement = util.addSymbol(parent);
 
-        symbolElement.setAttribute("name", symbol.getNameString());
+        try {
+            symbolElement.setAttribute("name", symbol.getNameString());
+        }
+        catch(IOException ioe) {
+            logger.warn("Could not read name. Setting name to \"default\".");
+            symbolElement.setAttribute("name", "default");
+        }
         symbolElement.setAttribute("style", "fill");
-        symbolElement.setAttribute(
-            "xoffset",
-            String.valueOf(symbol.getXOffset()));
-        symbolElement.setAttribute(
-            "yoffset",
-            String.valueOf(symbol.getYOffset()));
-        symbolElement.setAttribute(
-            "xseparation",
-            String.valueOf(symbol.getXSeparation()));
-        symbolElement.setAttribute(
-            "yseparation",
-            String.valueOf(symbol.getYSeparation()));
 
-        int style = symbol.getStyle();
+        try {
+           symbolElement.setAttribute(
+               "xoffset",
+               String.valueOf(symbol.getXOffset()));
+        }
+        catch(IOException ioe) {
+            logger.warn("Could not read x-offset. Setting x-offset to 0");
+            symbolElement.setAttribute("xoffset", "0");
+        }
+
+        try {
+            symbolElement.setAttribute(
+                "yoffset",
+                String.valueOf(symbol.getYOffset()));
+        }
+        catch(IOException ioe) {
+            logger.warn("Could not read y-offset. Setting y-offset to 0.");
+            symbolElement.setAttribute("yoffset", "0");
+        }
+
+        try {
+            symbolElement.setAttribute(
+                "xseparation",
+                String.valueOf(symbol.getXSeparation()));
+        }
+        catch(IOException ioe) {
+            logger.warn(
+                "Could not read x-separation." +
+                " Setting x-separation to 0.");
+            symbolElement.setAttribute("xseparation", "0");
+        }
+
+        try {
+            symbolElement.setAttribute(
+                "yseparation",
+                String.valueOf(symbol.getYSeparation()));
+        }
+        catch(IOException ioe) {
+            logger.warn(
+                "Could not read y-separation." + 
+                " Setting y-separation to 0.");
+            symbolElement.setAttribute("yseparation", "0");
+        }
+
+        int style;
+        try {
+            style = symbol.getStyle();
+        }
+        catch(IOException ioe) {
+            logger.warn("Could not read style. Setting style to \"empty\"");
+            style = -1;
+        }
         switch(style) {
             case esriSimpleFillStyle.esriSFSCross:
                 symbolElement.setAttribute("fillstyle", "cross"); break;
@@ -103,52 +148,72 @@
             default: symbolElement.setAttribute("fillstyle", "empty");
         }
 
-        if(symbol.getColor() instanceof IRgbColor) {
-            IRgbColor color = (IRgbColor)symbol.getColor();
-            Color c = new Color (
-                color.getRed(),
-                color.getGreen(),
-                color.getBlue());
-            symbolElement.setAttribute("color", String.valueOf(c.getRGB()));
-            symbolElement.setAttribute("transparency",
-                String.valueOf(color.getTransparency()));
+        try {
+            if(symbol.getColor() instanceof IRgbColor) {
+                IRgbColor color = (IRgbColor)symbol.getColor();
+                Color c = new Color (
+                    color.getRed(),
+                    color.getGreen(),
+                    color.getBlue());
+                symbolElement.setAttribute("color", String.valueOf(c.getRGB()));
+                symbolElement.setAttribute("transparency",
+                    String.valueOf(color.getTransparency()));
+            }
+            else {
+                RgbColor col = new RgbColor();
+                col.setRGB(symbol.getColor().getRGB());
+                Color c = new Color (
+                    col.getRed(),
+                    col.getGreen(),
+                    col.getBlue());
+                symbolElement.setAttribute("color", String.valueOf(c.getRGB()));
+                symbolElement.setAttribute("transparency",
+                    String.valueOf(col.getTransparency()));
+            }
         }
-        else {
-            RgbColor col = new RgbColor();
-            col.setRGB(symbol.getColor().getRGB());
-            Color c = new Color (
-                col.getRed(),
-                col.getGreen(),
-                col.getBlue());
-            symbolElement.setAttribute("color", String.valueOf(c.getRGB()));
-            symbolElement.setAttribute("transparency",
-                String.valueOf(col.getTransparency()));
+        catch(IOException ioe) {
+            logger.warn(
+                "Could not read color." +
+                " Setting color to black with no transparency.");
+            Color black = new Color (0, 0, 0);
+            symbolElement.setAttribute("color", String.valueOf(black.getRGB()));
+            symbolElement.setAttribute("transparency", "-1");
         }
 
-        ILineSymbol ls = symbol.getOutline();
-        LineSymbolReader lsr = new LineSymbolReader();
-        if(lsr.canRead(ls)) {
-            lsr.setSymbol(ls);
-            lsr.setUtil(util);
-            lsr.setParent(symbolElement);
-            lsr.read();
+        try {
+            ILineSymbol ls = symbol.getOutline();
+            LineSymbolReader lsr = new LineSymbolReader();
+            if(lsr.canRead(ls)) {
+                lsr.setSymbol(ls);
+                lsr.setUtil(util);
+                lsr.setParent(symbolElement);
+                lsr.read();
+            }
+            else {
+                logger.debug("The type of " + ls.getClass().toString() +
+                             " is not implemented!");
+            }
         }
-        else {
-            logger.debug("The type of " + ls.getClass().toString() +
-                         " is not implemented!");
+        catch(Exception e) {
+            logger.warn("Could not read outline. No fallback defined.");
         }
 
-        IMarkerSymbol sym = symbol.getMarkerSymbol();
-        MarkerSymbolReader msr = new MarkerSymbolReader();
-        if(msr.canRead(sym)) {
-            msr.setSymbol(sym);
-            msr.setParent(symbolElement);
-            msr.setUtil(util);
-            msr.read();
+        try {
+            IMarkerSymbol sym = symbol.getMarkerSymbol();
+            MarkerSymbolReader msr = new MarkerSymbolReader();
+            if(msr.canRead(sym)) {
+                msr.setSymbol(sym);
+                msr.setParent(symbolElement);
+                msr.setUtil(util);
+                msr.read();
+            }
+            else {
+                logger.debug("The type of " + sym.getClass().toString() +
+                             " is not implemented!");
+            }
         }
-        else {
-            logger.debug("The type of " + sym.getClass().toString() +
-                         " is not implemented!");
+        catch(Exception e) {
+            logger.warn("Could not read marker symbol. No fallback defined.");
         }
         return parent;
     }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)