Mercurial > mxd2map
diff src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.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 | c285ed08b72c |
children | a4ab239509f1 |
line wrap: on
line diff
--- a/src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.java Wed Jun 15 16:13:32 2011 +0200 +++ b/src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.java Wed Jun 15 16:48:42 2011 +0200 @@ -9,9 +9,9 @@ import com.esri.arcgis.display.IRgbColor; import com.esri.arcgis.display.RgbColor; - import org.w3c.dom.Element; import java.awt.Color; +import java.io.IOException; /** * Reads character marker symbol information. @@ -59,62 +59,120 @@ * * @return The XML node. */ - public Element read() - throws Exception { + public Element read() { logger.debug("read()"); Element symbolElement = util.addSymbol(parent); - symbolElement.setAttribute( - "angle", - String.valueOf(symbol.getAngle())); - symbolElement.setAttribute( - "size", - String.valueOf(symbol.getSize())); - symbolElement.setAttribute( - "x_offset", - String.valueOf(symbol.getXOffset())); - symbolElement.setAttribute( - "y_offset", - String.valueOf(symbol.getYOffset())); - symbolElement.setAttribute( - "name", - symbol.getNameString()); - symbolElement.setAttribute( - "char", - String.valueOf(symbol.getCharacterIndex())); - - 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 { + symbolElement.setAttribute( + "angle", + String.valueOf(symbol.getAngle())); } - 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 angle. Setting angle to 0."); + symbolElement.setAttribute("angle", "0"); } - Font f = symbol.getFont(); - symbolElement.setAttribute("font", f.getName()); - symbolElement.setAttribute("char_set", String.valueOf(f.getCharset())); - symbolElement.setAttribute("bold", String.valueOf(f.getBold())); - symbolElement.setAttribute("italic", String.valueOf(f.getItalic())); - symbolElement.setAttribute("font_size", String.valueOf(f.getSize())); - symbolElement.setAttribute( - "strike_through", - String.valueOf(f.getStrikethrough())); - symbolElement.setAttribute("weight", String.valueOf(f.getWeight())); + try { + symbolElement.setAttribute( + "size", + String.valueOf(symbol.getSize())); + } + catch(IOException ioe) { + logger.warn("Could not read size. Setting size to 1"); + symbolElement.setAttribute("size", "1"); + } + + try { + symbolElement.setAttribute( + "x_offset", + String.valueOf(symbol.getXOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read x-offset. Setting x-offset to 0."); + symbolElement.setAttribute("x_offset", "0"); + } + + try { + symbolElement.setAttribute( + "y_offset", + String.valueOf(symbol.getYOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read y-offset. Setting y-offset to 0."); + symbolElement.setAttribute("y_offset", "0"); + } + + try { + symbolElement.setAttribute( + "name", + symbol.getNameString()); + } + catch(IOException ioe) { + logger.warn("Could not read name. Setting name to \"default\""); + symbolElement.setAttribute("name", "default"); + } + + try { + symbolElement.setAttribute( + "char", + String.valueOf(symbol.getCharacterIndex())); + } + catch(IOException ioe) { + logger.warn( + "Could not read character." + + " Setting character number to 60"); + symbolElement.setAttribute("char", "60"); + } + + 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())); + } + } + 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"); + } + + try { + Font f = symbol.getFont(); + symbolElement.setAttribute("font", f.getName()); + symbolElement.setAttribute("char_set", String.valueOf(f.getCharset())); + symbolElement.setAttribute("bold", String.valueOf(f.getBold())); + symbolElement.setAttribute("italic", String.valueOf(f.getItalic())); + symbolElement.setAttribute("font_size", String.valueOf(f.getSize())); + symbolElement.setAttribute( + "strike_through", + String.valueOf(f.getStrikethrough())); + symbolElement.setAttribute("weight", String.valueOf(f.getWeight())); + } + catch(IOException ioe) { + logger.warn("Could not read font. Setting font to \"Unknown\"."); + symbolElement.setAttribute("font", "Unknown"); + } symbolElement.setAttribute("style", "char"); symbolElement.setAttribute("type", "marker"); return symbolElement;