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