# HG changeset patch # User Raimund Renkert # Date 1308155847 -7200 # Node ID c8a1361ddd38ae163542140eafac93ad88e3ec08 # Parent fb93f20478ccd647e66475b13a43ae439d9de5e5 Improved exceptionhandlin for renderer reader. diff -r fb93f20478cc -r c8a1361ddd38 ChangeLog --- a/ChangeLog Wed Jun 15 16:48:42 2011 +0200 +++ b/ChangeLog Wed Jun 15 18:37:27 2011 +0200 @@ -1,3 +1,11 @@ +2011-06-15 Raimund Renkert + + * src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java, + src/java/de/intevation/mxd/reader/IRendererReader.java, + src/java/de/intevation/mxd/reader/SimpleRendererReader.java, + src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java: + Improved exception handling. + 2011-06-15 Raimund Renkert Improved exception handling. diff -r fb93f20478cc -r c8a1361ddd38 src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java --- a/src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java Wed Jun 15 16:48:42 2011 +0200 +++ b/src/java/de/intevation/mxd/reader/ClassBreakRendererReader.java Wed Jun 15 18:37:27 2011 +0200 @@ -11,6 +11,7 @@ import org.w3c.dom.Element; import de.intevation.mxd.utils.MapToXMLUtils; +import java.io.IOException; /** * Reads the ClassBreaksRender Object Attributes. @@ -66,53 +67,72 @@ * * @return The XML node. */ - public Element read() - throws Exception { + public Element read() { logger.debug("read()"); - for(int i = 0; i < renderer.getBreakCount(); i++){ - Element rendererElement = util.addRenderer(layer); - rendererElement.setAttribute("value", - String.valueOf(renderer.getBreak(i))); - rendererElement.setAttribute( - "field_count", - String.valueOf(renderer.getFieldCount())); - for(int j = 0; j < renderer.getFieldCount(); j++) { - rendererElement.setAttribute( - "expression_field_" + j, - renderer.getField(j)); - - } - rendererElement.setAttribute( - "min_value", - String.valueOf(renderer.getMinimumBreak())); - rendererElement.setAttribute("expression_operator", "<="); + int count = 0; + try { + count = renderer.getBreakCount(); + } + catch(IOException ioe) { + logger.warn( + "No break symbols found in renderer." + + " Stopped reading this renderer."); + return layer; + } - ISymbol sym = renderer.getSymbol(i); - MarkerSymbolReader markerReader = new MarkerSymbolReader(); - LineSymbolReader lineReader = new LineSymbolReader(); - FillSymbolReader fillReader = new FillSymbolReader(); - if(markerReader.canRead(sym)) { - markerReader.setSymbol(sym); - markerReader.setUtil(util); - markerReader.setParent(rendererElement); - markerReader.read(); + for(int i = 0; i < count; i++){ + Element rendererElement = util.addRenderer(layer); + try { + rendererElement.setAttribute("value", + String.valueOf(renderer.getBreak(i))); + + rendererElement.setAttribute( + "field_count", + String.valueOf(renderer.getFieldCount())); + for(int j = 0; j < renderer.getFieldCount(); j++) { + rendererElement.setAttribute( + "expression_field_" + j, + renderer.getField(j)); + + } + rendererElement.setAttribute( + "min_value", + String.valueOf(renderer.getMinimumBreak())); + rendererElement.setAttribute("expression_operator", "<="); + + ISymbol sym = renderer.getSymbol(i); + MarkerSymbolReader markerReader = new MarkerSymbolReader(); + LineSymbolReader lineReader = new LineSymbolReader(); + FillSymbolReader fillReader = new FillSymbolReader(); + if(markerReader.canRead(sym)) { + markerReader.setSymbol(sym); + markerReader.setUtil(util); + markerReader.setParent(rendererElement); + markerReader.read(); + } + else if(lineReader.canRead(sym)) { + lineReader.setSymbol(sym); + lineReader.setUtil(util); + lineReader.setParent(rendererElement); + lineReader.read(); + } + else if(fillReader.canRead(sym)) { + fillReader.setSymbol(sym); + fillReader.setUtil(util); + fillReader.setParent(rendererElement); + fillReader.read(); + } + else { + logger.debug("Not a known symbol type: " + + sym.getClass().toString()); + } } - else if(lineReader.canRead(sym)) { - lineReader.setSymbol(sym); - lineReader.setUtil(util); - lineReader.setParent(rendererElement); - lineReader.read(); - } - else if(fillReader.canRead(sym)) { - fillReader.setSymbol(sym); - fillReader.setUtil(util); - fillReader.setParent(rendererElement); - fillReader.read(); - } - else { - logger.debug("Not a known symbol type: " + - sym.getClass().toString()); + catch(Exception e) { + logger.error( + "Could not read data for " + i + + ". break of renderer. Stopped reading this renderer."); + return layer; } } return layer; diff -r fb93f20478cc -r c8a1361ddd38 src/java/de/intevation/mxd/reader/IRendererReader.java --- a/src/java/de/intevation/mxd/reader/IRendererReader.java Wed Jun 15 16:48:42 2011 +0200 +++ b/src/java/de/intevation/mxd/reader/IRendererReader.java Wed Jun 15 18:37:27 2011 +0200 @@ -13,7 +13,7 @@ */ public interface IRendererReader{ - Element read() throws Exception; + Element read(); void setParent(Element parent); void setUtil(MapToXMLUtils util); diff -r fb93f20478cc -r c8a1361ddd38 src/java/de/intevation/mxd/reader/SimpleRendererReader.java --- a/src/java/de/intevation/mxd/reader/SimpleRendererReader.java Wed Jun 15 16:48:42 2011 +0200 +++ b/src/java/de/intevation/mxd/reader/SimpleRendererReader.java Wed Jun 15 18:37:27 2011 +0200 @@ -7,6 +7,7 @@ import com.esri.arcgis.carto.SimpleRenderer; import org.w3c.dom.Element; +import java.io.IOException; import de.intevation.mxd.utils.MapToXMLUtils; @@ -67,39 +68,65 @@ * * @return The XML node. */ - public Element read() - throws Exception { + public Element read() { logger.debug("read()"); Element rendererElement; rendererElement = util.addRenderer(layer); - rendererElement.setAttribute("label", renderer.getLabel()); - rendererElement.setAttribute("description", renderer.getDescription()); - symbol = renderer.getSymbol(); - - MarkerSymbolReader markerReader = new MarkerSymbolReader(); - LineSymbolReader lineReader = new LineSymbolReader(); - FillSymbolReader fillReader = new FillSymbolReader(); - if(markerReader.canRead(symbol)) { - markerReader.setSymbol(symbol); - markerReader.setUtil(util); - markerReader.setParent(rendererElement); - markerReader.read(); + try { + rendererElement.setAttribute("label", renderer.getLabel()); } - else if(lineReader.canRead(symbol)) { - lineReader.setSymbol(symbol); - lineReader.setUtil(util); - lineReader.setParent(rendererElement); - lineReader.read(); + catch(IOException ioe) { + logger.warn( + "Could not read label name." + + "Setting label name to \"default-label\""); + rendererElement.setAttribute("label", "default-label"); } - else if(fillReader.canRead(symbol)) { - fillReader.setSymbol(symbol); - fillReader.setUtil(util); - fillReader.setParent(rendererElement); - fillReader.read(); + + try { + rendererElement.setAttribute( + "description", + renderer.getDescription()); } - else { - logger.debug("No known Symbol type: " + symbol.getClass().toString()); + catch(IOException ioe) { + logger.warn( + "Could not read description." + + " Setting empty description."); + rendererElement.setAttribute("description", ""); + } + + try { + symbol = renderer.getSymbol(); + + MarkerSymbolReader markerReader = new MarkerSymbolReader(); + LineSymbolReader lineReader = new LineSymbolReader(); + FillSymbolReader fillReader = new FillSymbolReader(); + if(markerReader.canRead(symbol)) { + markerReader.setSymbol(symbol); + markerReader.setUtil(util); + markerReader.setParent(rendererElement); + markerReader.read(); + } + else if(lineReader.canRead(symbol)) { + lineReader.setSymbol(symbol); + lineReader.setUtil(util); + lineReader.setParent(rendererElement); + lineReader.read(); + } + else if(fillReader.canRead(symbol)) { + fillReader.setSymbol(symbol); + fillReader.setUtil(util); + fillReader.setParent(rendererElement); + fillReader.read(); + } + else { + logger.debug( + "No known Symbol type: " + + symbol.getClass().toString()); + } + } + catch(Exception e) { + logger.error("Could not read symbol. Stopped reading renderer."); } return layer; } diff -r fb93f20478cc -r c8a1361ddd38 src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java --- a/src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java Wed Jun 15 16:48:42 2011 +0200 +++ b/src/java/de/intevation/mxd/reader/UniqueValueRendererReader.java Wed Jun 15 18:37:27 2011 +0200 @@ -7,6 +7,7 @@ import com.esri.arcgis.carto.UniqueValueRenderer; import org.w3c.dom.Element; +import java.io.IOException; import de.intevation.mxd.utils.MapToXMLUtils; @@ -66,53 +67,68 @@ * * @return The parent XML node. */ - public Element read() - throws Exception { + public Element read() { logger.debug("read()"); - for(int i = 0; i < renderer.getClassCount() - 1; i++) { + int count = 0; + try { + count = renderer.getClassCount(); + } + catch(IOException ioe) { + logger.error("Could not read class count. Stopped reading renderer."); + return layer; + } + for(int i = 0; i < count - 1; i++) { Element rendererElement = util.addRenderer(layer); - String value = renderer.getValue(i); - rendererElement.setAttribute("name", renderer.esri_getClass(i)); - rendererElement.setAttribute("description", - renderer.getDescription(value)); - rendererElement.setAttribute("value", value); - rendererElement.setAttribute("label", renderer.getLabel(value)); - rendererElement.setAttribute( - "field_count", - String.valueOf(renderer.getFieldCount())); - for(int j = 0; j < renderer.getFieldCount(); j++) { + try { + String value = renderer.getValue(i); + rendererElement.setAttribute("name", renderer.esri_getClass(i)); + rendererElement.setAttribute("description", + renderer.getDescription(value)); + rendererElement.setAttribute("value", value); + rendererElement.setAttribute("label", renderer.getLabel(value)); rendererElement.setAttribute( - "expression_field_" + j, - renderer.getField(j)); - } - rendererElement.setAttribute("expression_operator", "="); + "field_count", + String.valueOf(renderer.getFieldCount())); + for(int j = 0; j < renderer.getFieldCount(); j++) { + rendererElement.setAttribute( + "expression_field_" + j, + renderer.getField(j)); + } + rendererElement.setAttribute("expression_operator", "="); - ISymbol sym = renderer.getSymbol(value); - MarkerSymbolReader markerReader = new MarkerSymbolReader(); - LineSymbolReader lineReader = new LineSymbolReader(); - FillSymbolReader fillReader = new FillSymbolReader(); - if(markerReader.canRead(sym)) { - markerReader.setSymbol(sym); - markerReader.setUtil(util); - markerReader.setParent(rendererElement); - markerReader.read(); + ISymbol sym = renderer.getSymbol(value); + MarkerSymbolReader markerReader = new MarkerSymbolReader(); + LineSymbolReader lineReader = new LineSymbolReader(); + FillSymbolReader fillReader = new FillSymbolReader(); + if(markerReader.canRead(sym)) { + markerReader.setSymbol(sym); + markerReader.setUtil(util); + markerReader.setParent(rendererElement); + markerReader.read(); + } + else if(lineReader.canRead(sym)) { + lineReader.setSymbol(sym); + lineReader.setUtil(util); + lineReader.setParent(rendererElement); + lineReader.read(); + } + else if(fillReader.canRead(sym)) { + fillReader.setSymbol(sym); + fillReader.setUtil(util); + fillReader.setParent(rendererElement); + fillReader.read(); + } + else { + logger.debug("Not a known symbol type: " + + sym.getClass().toString()); + } } - else if(lineReader.canRead(sym)) { - lineReader.setSymbol(sym); - lineReader.setUtil(util); - lineReader.setParent(rendererElement); - lineReader.read(); - } - else if(fillReader.canRead(sym)) { - fillReader.setSymbol(sym); - fillReader.setUtil(util); - fillReader.setParent(rendererElement); - fillReader.read(); - } - else { - logger.debug("Not a known symbol type: " + - sym.getClass().toString()); + catch(Exception e) { + logger.error( + "Could not read unique value data." + + e.toString()); + return layer; } } return layer;