# HG changeset patch # User Raimund Renkert # Date 1303226709 -7200 # Node ID 5fc813f40fa51bb5be75fc5774e7958c88684d17 # Parent 34a93dad760433815863bb9d5b17770452c2552b Added CharacterMarkerSymbol reader and extracted the ArrowMarkerSymbol reader. diff -r 34a93dad7604 -r 5fc813f40fa5 ChangeLog --- a/ChangeLog Mon Apr 18 17:51:33 2011 +0200 +++ b/ChangeLog Tue Apr 19 17:25:09 2011 +0200 @@ -1,3 +1,14 @@ +2011-04-19 Raimund Renkert + + Added CharacterMarkerSymbol reader and extracted the ArrowMarkerSymbol + reader. + + * src/java/de/intevation/mxd/reader/MultiLayerMarkerSymbolReader.java: + Extracted the ArrowMarkerSymbol. + * src/java/de/intevation/mxd/reader/ArrowMarkerSymbolReader.java, + src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.java: + New. + 2011-04-18 Raimund Renkert * src/java/de/intevation/mxd/reader/SimpleRendererReader.java: diff -r 34a93dad7604 -r 5fc813f40fa5 src/java/de/intevation/mxd/reader/ArrowMarkerSymbolReader.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/ArrowMarkerSymbolReader.java Tue Apr 19 17:25:09 2011 +0200 @@ -0,0 +1,118 @@ +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.IMarkerSymbol; +import com.esri.arcgis.display.MultiLayerMarkerSymbol; +import com.esri.arcgis.display.ArrowMarkerSymbol; +import com.esri.arcgis.display.IColor; +import com.esri.arcgis.display.RgbColor; + +import org.w3c.dom.Element; +import de.intevation.mxd.utils.MapToXMLUtils; + +/** + * Reads arrow marker symbol information. + * + * @author Raimund Renkert + */ +public class ArrowMarkerSymbolReader implements ISymbolReader{ + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(ArrowMarkerSymbolReader.class); + + /** + * Private member. + */ + private Element renderer; + private ArrowMarkerSymbol symbol; + private MapToXMLUtils util; + + + public ArrowMarkerSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof ArrowMarkerSymbol) { + this.symbol = (ArrowMarkerSymbol)symbol; + } + else { + throw new Exception("Not a ArrowMarkerSymbol!"); + } + } + + /** + * 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; + } + + IColor c = symbol.getColor(); + 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( + "color", + String.valueOf(c.getRGB())); + symbolElement.setAttribute( + "tranparency", + String.valueOf(c.getTransparency())); + symbolElement.setAttribute( + "name", + symbol.getNameString()); + symbolElement.setAttribute( + "length", + String.valueOf(symbol.getLength())); + symbolElement.setAttribute( + "width", + String.valueOf(symbol.getWidth())); + symbolElement.setAttribute("style", "arrow"); + return symbolElement; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 34a93dad7604 -r 5fc813f40fa5 src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/CharacterMarkerSymbolReader.java Tue Apr 19 17:25:09 2011 +0200 @@ -0,0 +1,112 @@ +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.CharacterMarkerSymbol; +import com.esri.arcgis.display.IColor; +import com.esri.arcgis.support.ms.stdole.Font; + +import org.w3c.dom.Element; +import de.intevation.mxd.utils.MapToXMLUtils; + +/** + * Reads character marker symbol information. + * + * @author Raimund Renkert + */ +public class CharacterMarkerSymbolReader implements ISymbolReader{ + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(CharacterMarkerSymbolReader.class); + + /** + * Private member. + */ + private Element renderer; + private CharacterMarkerSymbol symbol; + private MapToXMLUtils util; + + + public CharacterMarkerSymbolReader(ISymbol symbol) + throws Exception { + logger.debug("contructor()"); + if(symbol instanceof CharacterMarkerSymbol) { + this.symbol = (CharacterMarkerSymbol)symbol; + } + else { + throw new Exception("Not a CharacterMarkerSymbol!"); + } + } + + /** + * 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; + } + + IColor c = symbol.getColor(); + 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( + "color", + String.valueOf(c.getRGB())); + symbolElement.setAttribute( + "tranparency", + String.valueOf(c.getTransparency())); + symbolElement.setAttribute( + "name", + symbol.getNameString()); + Font f = symbol.getFont(); +//TODO Read the font attributes. + symbolElement.setAttribute("style", "char"); + return symbolElement; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : diff -r 34a93dad7604 -r 5fc813f40fa5 src/java/de/intevation/mxd/reader/MultiLayerMarkerSymbolReader.java --- a/src/java/de/intevation/mxd/reader/MultiLayerMarkerSymbolReader.java Mon Apr 18 17:51:33 2011 +0200 +++ b/src/java/de/intevation/mxd/reader/MultiLayerMarkerSymbolReader.java Tue Apr 19 17:25:09 2011 +0200 @@ -10,6 +10,7 @@ import com.esri.arcgis.display.IMarkerSymbol; import com.esri.arcgis.display.MultiLayerMarkerSymbol; import com.esri.arcgis.display.ArrowMarkerSymbol; +import com.esri.arcgis.display.CharacterMarkerSymbol; import com.esri.arcgis.display.IColor; import com.esri.arcgis.display.RgbColor; @@ -74,51 +75,32 @@ public Element read() throws IOException { logger.debug("read()"); - Element symbolElement; - try { - symbolElement = util.addSymbol(renderer); - } - catch(Exception e) { - e.printStackTrace(); - return null; - } - for(int i = 0; i < symbol.getLayerCount(); i++) { - IMarkerSymbol sym = symbol.getLayer(i); - if (sym instanceof ArrowMarkerSymbol) { - ArrowMarkerSymbol arrow = (ArrowMarkerSymbol)sym; - IColor c = arrow.getColor(); - symbolElement.setAttribute( - "name", - arrow.getNameString()); - symbolElement.setAttribute( - "length", - String.valueOf(arrow.getLength())); - symbolElement.setAttribute( - "width", - String.valueOf(arrow.getWidth())); - symbolElement.setAttribute( - "angle", - String.valueOf(arrow.getAngle())); - symbolElement.setAttribute( - "size", - String.valueOf(arrow.getSize())); - symbolElement.setAttribute( - "x_offset", - String.valueOf(arrow.getXOffset())); - symbolElement.setAttribute( - "y_offset", - String.valueOf(arrow.getYOffset())); - symbolElement.setAttribute( - "color", - String.valueOf(c.getRGB())); - symbolElement.setAttribute( - "tranparency", - String.valueOf(c.getTransparency())); - symbolElement.setAttribute("style", "arrow"); + try { + ISymbol sym = (ISymbol)symbol.getLayer(i); + + if(sym instanceof ArrowMarkerSymbol) { + ISymbolReader sreader = new ArrowMarkerSymbolReader(sym); + sreader.setParent(renderer); + sreader.setUtil(util); + sreader.read(); + } + if(sym instanceof CharacterMarkerSymbol) { + ISymbolReader sreader = new CharacterMarkerSymbolReader(sym); + sreader.setParent(renderer); + sreader.setUtil(util); + sreader.read(); + } + else { + System.out.println( + "No known instance: " + sym.getClass().toString()); + } + } + catch(Exception e) { + e.printStackTrace(); } } - return symbolElement; + return renderer; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :