Mercurial > mxd2map
diff src/java/de/intevation/mxd/reader/MultiLayerFillSymbolReader.java @ 68:686a88eb531d
Added multi layer fill symbol reader.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Thu, 26 May 2011 12:30:07 +0200 |
parents | |
children | b41fcf268827 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/MultiLayerFillSymbolReader.java Thu May 26 12:30:07 2011 +0200 @@ -0,0 +1,117 @@ +package de.intevation.mxd.reader; + +import java.io.IOException; + +import java.awt.Color; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.display.ISymbol; +import com.esri.arcgis.display.IFillSymbol; +import com.esri.arcgis.display.MultiLayerFillSymbol; +import com.esri.arcgis.display.SimpleFillSymbol; +import com.esri.arcgis.display.MarkerFillSymbol; +import com.esri.arcgis.display.PictureFillSymbol; +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 multi layer line symbol information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class MultiLayerFillSymbolReader implements ISymbolReader{ + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(MultiLayerFillSymbolReader.class); + + /** + * Private member. + */ + private Element renderer; + private MultiLayerFillSymbol symbol; + private MapToXMLUtils util; + + + public MultiLayerFillSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof MultiLayerFillSymbol) { + this.symbol = (MultiLayerFillSymbol)symbol; + } + else { + throw new Exception("Not a MultiLayerFillSymbol!"); + } + } + + + public MultiLayerFillSymbolReader(IFillSymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof MultiLayerFillSymbol) { + this.symbol = (MultiLayerFillSymbol)symbol; + } + else { + throw new Exception("Not a MultiLayerFillSymbol!"); + } + } + + /** + * 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()"); + for(int i = 0; i < symbol.getLayerCount(); i++) { + try { + ISymbol sym = (ISymbol)symbol.getLayer(i); + + if(sym instanceof SimpleFillSymbol) { + ISymbolReader sreader = new SimpleFillSymbolReader(sym); + sreader.setParent(renderer); + sreader.setUtil(util); + sreader.read(); + } + else { + logger.debug("The type of " + sym.getClass().toString() + + " is not implemented!"); + System.out.println( + "No known instance: " + sym.getClass().toString()); + } + } + catch(Exception e) { + e.printStackTrace(); + return null; + } + } + return renderer; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :