Mercurial > mxd2map
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; }