diff src/java/de/intevation/mxd/reader/HashLineSymbolReader.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 18e4f143896b
children a4ab239509f1
line wrap: on
line diff
--- a/src/java/de/intevation/mxd/reader/HashLineSymbolReader.java	Wed Jun 15 16:13:32 2011 +0200
+++ b/src/java/de/intevation/mxd/reader/HashLineSymbolReader.java	Wed Jun 15 16:48:42 2011 +0200
@@ -14,6 +14,7 @@
 import com.esri.arcgis.display.esriLineJoinStyle;
 
 import org.w3c.dom.Element;
+import java.io.IOException;
 
 /**
  * Reads cartoline symbol information.
@@ -61,39 +62,70 @@
      *
      * @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());
-        symbolElement.setAttribute("type", "line");
-        symbolElement.setAttribute("style", "hash");
-        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()));
+        try {
+            symbolElement.setAttribute("name", symbol.getNameString());
         }
-        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()));
+        catch(IOException ioe) {
+            logger.warn("Could not read name. Setting name to \"default\".");
+            symbolElement.setAttribute("name", "default");
         }
-        int cap = symbol.getCap();
+
+        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()));
+            }
+            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()));
+            }
+        }
+        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");
+        }
+        int cap;
+        try {
+            cap = symbol.getCap();
+        }
+        catch(IOException ioe) {
+            logger.warn("Could not read line cap. Setting line cap to \"butt\"");
+            cap = -1;
+        }
         String capStyle = "butt";
         switch(cap) {
             case esriLineCapStyle.esriLCSRound: capStyle = "round"; break;
             case esriLineCapStyle.esriLCSSquare: capStyle = "square"; break;
             default: break;
         }
-        int join = symbol.getJoin();
+
+        int join;
+        try {
+            join = symbol.getJoin();
+        }
+        catch(IOException ioe) {
+            logger.warn(
+                "Could not read line join." +
+                " Setting line join to \"bevel\".");
+            join = -1;
+        }
         String joinStyle = "bevel";
         switch(join) {
             case esriLineJoinStyle.esriLJSRound: joinStyle = "round"; break;
@@ -102,21 +134,64 @@
         }
         symbolElement.setAttribute("cap", capStyle);
         symbolElement.setAttribute("join", joinStyle);
-        symbolElement.setAttribute(
-            "linestart",
-            String.valueOf(symbol.getLineStartOffset()));
-        symbolElement.setAttribute(
-            "miterlimit",
-            String.valueOf(symbol.getMiterLimit()));
-        symbolElement.setAttribute(
-            "offset",
-            String.valueOf(symbol.getOffset()));
-        symbolElement.setAttribute("width", String.valueOf(symbol.getWidth()));
-        ILineSymbol ls = symbol.getHashSymbol();
-        readHashSymbol(ls, symbolElement);
+        try {
+            symbolElement.setAttribute(
+                "linestart",
+                String.valueOf(symbol.getLineStartOffset()));
+        }
+        catch(IOException ioe) {
+            logger.warn(
+                "Could not read line start offset." +
+                " Setting line start offset to 0.");
+            symbolElement.setAttribute("linestart", "0");
+        }
+
+        try {
+            symbolElement.setAttribute(
+                "miterlimit",
+                String.valueOf(symbol.getMiterLimit()));
+        }
+        catch(IOException ioe) {
+            logger.warn(
+                "Could not read miter limit." +
+                " Setting miter limit to 0.");
+            symbolElement.setAttribute("miterlimit", "0");
+        }
+
+        try {
+            symbolElement.setAttribute(
+                "offset",
+                String.valueOf(symbol.getOffset()));
+        }
+        catch(IOException ioe) {
+            logger.warn("Could not read offset. Setting offset to 0.");
+            symbolElement.setAttribute("offset", "0");
+        }
+
+        try {
+            symbolElement.setAttribute(
+                "width",
+                 String.valueOf(symbol.getWidth()));
+        }
+        catch(IOException ioe) {
+            logger.warn("Could not read width. Setting width to 1.");
+            symbolElement.setAttribute("width", "1");
+        }
+
+        try {
+            ILineSymbol ls = symbol.getHashSymbol();
+            readHashSymbol(ls, symbolElement);
+        }
+        catch(Exception e) {
+            logger.warn(
+                "Could not read HashSymbol." +
+                " No fallback symbol defined.");
+        }
 
         //TODO Read further HashLine specific attributes:
         //     LineDecoration, Template.
+        symbolElement.setAttribute("type", "line");
+        symbolElement.setAttribute("style", "hash");
 
         return symbolElement;
     }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)