# HG changeset patch # User Raimund Renkert # Date 1302612238 -7200 # Node ID 472aa36d0e01c440d960ca2b4f6ca3585418f278 # Parent 7873682a1a113b1d2c61b720a8613cf72af89a1a Added a new layer reader and symbol reader. diff -r 7873682a1a11 -r 472aa36d0e01 ChangeLog --- a/ChangeLog Tue Apr 12 14:30:59 2011 +0200 +++ b/ChangeLog Tue Apr 12 14:43:58 2011 +0200 @@ -1,3 +1,15 @@ +2011-04-12 Raimund Renkert + + * src/java/de/intevation/mxd/reader/GdbRasterCatalogLayerReader.java, + src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java: + New. + + * src/java/de/intevation/mxd/reader/MXDReader.java: + Use new layer reader to get layer attributes. + + * src/java/de/intevation/mxd/reader/SimpleRendererReader.java: + Read symbol attributes using the new symbol reader. + 2011-04-12 Raimund Renkert * build.xml: Changed classname for converter entry point. diff -r 7873682a1a11 -r 472aa36d0e01 src/java/de/intevation/mxd/reader/GdbRasterCatalogLayerReader.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/GdbRasterCatalogLayerReader.java Tue Apr 12 14:43:58 2011 +0200 @@ -0,0 +1,87 @@ +package de.intevation.mxd.reader; + +import java.io.IOException; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.carto.ILayer; +import com.esri.arcgis.carto.GdbRasterCatalogLayer; + +import org.w3c.dom.Element; + +import de.intevation.mxd.utils.MapToXMLUtils; + +/** + * Reads Layer information.. + * + * @author Raimund Renkert + */ +public class GdbRasterCatalogLayerReader implements ILayerReader{ + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(GdbRasterCatalogLayerReader.class); + + /** + * Privte member. + */ + private GdbRasterCatalogLayer layer; + private MapToXMLUtils util; + + + public GdbRasterCatalogLayerReader(ILayer layer) + throws Exception { + if(layer instanceof GdbRasterCatalogLayer) + this.layer = (GdbRasterCatalogLayer)layer; + else + throw new Exception("Not an instance of GdbRastaCatalogLayer: " + + layer.getClass().toString()); + } + + /** + * Setter for XML document helper. + * + * @param util The helper for storing map information. + */ + public void setUtil(MapToXMLUtils util){ + this.util = util; + } + + /** + * Reads the Layer content. + * + * @return The layer XML element. + */ + public Element read() + throws IOException { + logger.debug("read()"); + Element layerElement; + try { + layerElement = util.addLayer(); + } + catch(Exception e) { + e.printStackTrace(); + return null; + } + + layerElement.setAttribute("name", layer.getName()); + layerElement.setAttribute("min_scale", + String.valueOf(layer.getMinimumScale())); + layerElement.setAttribute("max_scale", + String.valueOf(layer.getMaximumScale())); + if(layer.isVisible()) { + layerElement.setAttribute("status", "on"); + } + else { + layerElement.setAttribute("status", "off"); + } + + layerElement.setAttribute("definition_query", + layer.getDefinitionExpression()); + + return layerElement; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 7873682a1a11 -r 472aa36d0e01 src/java/de/intevation/mxd/reader/MXDReader.java --- a/src/java/de/intevation/mxd/reader/MXDReader.java Tue Apr 12 14:30:59 2011 +0200 +++ b/src/java/de/intevation/mxd/reader/MXDReader.java Tue Apr 12 14:43:58 2011 +0200 @@ -8,6 +8,7 @@ import com.esri.arcgis.carto.IMap; import com.esri.arcgis.carto.MapDocument; import com.esri.arcgis.carto.FeatureLayer; +import com.esri.arcgis.carto.GdbRasterCatalogLayer; import com.esri.arcgis.carto.IFeatureRenderer; import com.esri.arcgis.carto.SimpleRenderer; import com.esri.arcgis.carto.ClassBreaksRenderer; @@ -101,10 +102,10 @@ for(int i = 0; i < map.getLayerCount();i++){ ILayer layer = map.getLayer(i); try{ - FeatureLayerReader lr = new FeatureLayerReader(layer); - lr.setUtil(util); - Element layerElement = lr.read(); if (layer instanceof FeatureLayer){ + FeatureLayerReader lr = new FeatureLayerReader(layer); + lr.setUtil(util); + Element layerElement = lr.read(); IFeatureRenderer renderer = ((FeatureLayer)layer).getRenderer(); IRendererReader rreader; if(renderer instanceof SimpleRenderer){ @@ -131,6 +132,37 @@ renderer.getClass().toString()); } } + else if(layer instanceof GdbRasterCatalogLayer) { + GdbRasterCatalogLayerReader gclr = + new GdbRasterCatalogLayerReader(layer); + gclr.setUtil(util); + Element layerElement = gclr.read(); + IFeatureRenderer renderer = ((GdbRasterCatalogLayer)layer).getRenderer(); + IRendererReader rreader; + if(renderer instanceof SimpleRenderer){ + rreader = new SimpleRendererReader(renderer); + rreader.setParent(layerElement); + rreader.setUtil(util); + rreader.read(); + } + else if(renderer instanceof ClassBreaksRenderer){ + rreader = new ClassBreakRendererReader(renderer); + rreader.setParent(layerElement); + rreader.setUtil(util); + rreader.read(); + } + else if(renderer instanceof UniqueValueRenderer){ + rreader = new UniqueValueRendererReader(renderer); + rreader.setParent(layerElement); + rreader.setUtil(util); + rreader.read(); + } + else{ + System.out.println("No known renderer!"); + System.out.println("Implement new renderer for " + + renderer.getClass().toString()); + } + } } catch(Exception e){ e.printStackTrace(); diff -r 7873682a1a11 -r 472aa36d0e01 src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java Tue Apr 12 14:43:58 2011 +0200 @@ -0,0 +1,106 @@ +package de.intevation.mxd.reader; + +import java.io.IOException; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.SimpleFillSymbol; +import com.esri.arcgis.display.esriSimpleMarkerStyle; +import com.esri.arcgis.display.IRgbColor; +import com.esri.arcgis.display.RgbColor; + +import org.w3c.dom.Element; + +import de.intevation.mxd.utils.MapToXMLUtils; + +/** + * Reads simple marker symbol information. + * + * @author Raimund Renkert + */ +public class SimpleFillSymbolReader implements ISymbolReader{ + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(SimpleFillSymbolReader.class); + + /** + * Private member. + */ + private Element renderer; + private SimpleFillSymbol symbol; + private MapToXMLUtils util; + + + public SimpleFillSymbolReader(ISymbol symbol) throws Exception{ + logger.debug("contructor()"); + if(symbol instanceof SimpleFillSymbol) + this.symbol = (SimpleFillSymbol)symbol; + else + throw new Exception("Not a SimpleFillSymbol!"); + } + + /** + * Setter for the parent XML element. + * + * @param parent The XML parent node. + */ + public void setParent(Element parent) { + this.renderer = parent; + } + + /** + * Setter for XML document helper. + * + * @param util The helper class for storing map information. + */ + public void setUtil(MapToXMLUtils util) { + this.util = util; + } + + /** + * Reads the symbol attributes. + * + * @return The XML node. + */ + public Element read() + throws IOException { + logger.debug("read()"); + Element symbolElement; + try { + symbolElement = util.addSymbol(renderer); + } + catch(Exception e) { + e.printStackTrace(); + return null; + } + + symbolElement.setAttribute("name", symbol.getNameString()); + if(symbol.getStyle() == esriSimpleMarkerStyle.esriSMSCircle) + symbolElement.setAttribute("style", "point"); + + if(symbol.getColor() instanceof IRgbColor) { + IRgbColor color = (IRgbColor)symbol.getColor(); + symbolElement.setAttribute("color", "(" + color.getRed() + + "," + color.getGreen() + + "," + color.getBlue() + ")"); + symbolElement.setAttribute("transparency", + String.valueOf(color.getTransparency())); + } + else { + RgbColor col = new RgbColor(); + col.setRGB(symbol.getColor().getRGB()); + symbolElement.setAttribute("color", "(" + col.getRed() + + "," + col.getGreen() + + "," + col.getBlue() + ")"); + symbolElement.setAttribute("transparency", + String.valueOf(col.getTransparency())); + } +//TODO read further attributes. + return symbolElement; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 7873682a1a11 -r 472aa36d0e01 src/java/de/intevation/mxd/reader/SimpleRendererReader.java --- a/src/java/de/intevation/mxd/reader/SimpleRendererReader.java Tue Apr 12 14:30:59 2011 +0200 +++ b/src/java/de/intevation/mxd/reader/SimpleRendererReader.java Tue Apr 12 14:43:58 2011 +0200 @@ -6,6 +6,8 @@ import com.esri.arcgis.carto.IFeatureRenderer; import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.SimpleMarkerSymbol; +import com.esri.arcgis.display.SimpleFillSymbol; import com.esri.arcgis.carto.SimpleRenderer; import org.w3c.dom.Element; @@ -24,7 +26,7 @@ * The logger. */ private static final Logger logger = - Logger.getLogger(FeatureLayerReader.class); + Logger.getLogger(SimpleRendererReader.class); /** * Private member. @@ -85,10 +87,18 @@ rendererElement.setAttribute("description", renderer.getDescription()); symbol = renderer.getSymbol(); try{ - ISymbolReader isr= new SimpleMarkerSymbolReader(symbol); - isr.setParent(rendererElement); - isr.setUtil(util); - isr.read(); + if(symbol instanceof SimpleMarkerSymbol){ + ISymbolReader isr= new SimpleMarkerSymbolReader(symbol); + isr.setParent(rendererElement); + isr.setUtil(util); + isr.read(); + } + else if(symbol instanceof SimpleFillSymbol){ + ISymbolReader isr = new SimpleFillSymbolReader(symbol); + isr.setParent(rendererElement); + isr.setUtil(util); + isr.read(); + } return rendererElement; } catch(Exception e){