changeset 36:472aa36d0e01

Added a new layer reader and symbol reader.
author Raimund Renkert <rrenkert@intevation.de>
date Tue, 12 Apr 2011 14:43:58 +0200
parents 7873682a1a11
children c14a92c7628d
files ChangeLog src/java/de/intevation/mxd/reader/GdbRasterCatalogLayerReader.java src/java/de/intevation/mxd/reader/MXDReader.java src/java/de/intevation/mxd/reader/SimpleFillSymbolReader.java src/java/de/intevation/mxd/reader/SimpleRendererReader.java
diffstat 5 files changed, 255 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- 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 <raimund.renkert@intevation.de>
+
+	* 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 <raimund.renkert@intevation.de>
 
 	* build.xml: Changed classname for converter entry point.
--- /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 <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
+ */
+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 :
--- 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();
--- /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 <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
+ */
+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 :
--- 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){
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)