rrenkert@243: /* rrenkert@243: * Copyright (c) 2011 by Intevation GmbH, Germany rrenkert@243: * rrenkert@243: * This file is part of MXD2map. rrenkert@243: * rrenkert@243: * This program is free software under the LGPL (>=v2.1) rrenkert@243: * Read the file LICENCE.txt coming with the software for details rrenkert@243: * or visit http://www.gnu.org/licenses/ if it does not exist. rrenkert@243: * rrenkert@243: * MXD2map has been developed on behalf of the rrenkert@243: * Bundesamt fuer Seeschifffahrt und Hydrographie (BSH) in Hamburg rrenkert@243: * by Intevation GmbH. rrenkert@243: * rrenkert@243: * Authors: rrenkert@243: * Raimund Renkert rrenkert@243: * Bjoern Schilberg rrenkert@243: * Stephan Holl rrenkert@243: */ rrenkert@243: rrenkert@70: package de.intevation.mxd.reader; rrenkert@70: rrenkert@70: import java.lang.Exception; rrenkert@70: rrenkert@70: import org.w3c.dom.Element; rrenkert@70: rrenkert@70: import org.apache.log4j.Logger; rrenkert@70: rrenkert@70: import com.esri.arcgis.display.ISymbol; rrenkert@75: import com.esri.arcgis.display.IMarkerSymbol; rrenkert@71: import com.esri.arcgis.display.SimpleMarkerSymbol; rrenkert@70: import com.esri.arcgis.display.ArrowMarkerSymbol; rrenkert@70: import com.esri.arcgis.display.CharacterMarkerSymbol; rrenkert@70: import com.esri.arcgis.display.PictureMarkerSymbol; rrenkert@70: import com.esri.arcgis.display.MultiLayerMarkerSymbol; rrenkert@70: rrenkert@70: /** rrenkert@70: * Wrapper for marker symbol reader. rrenkert@70: * rrenkert@70: * @author Raimund Renkert rrenkert@70: */ rrenkert@70: public class MarkerSymbolReader rrenkert@70: extends AbstractSymbolReader { rrenkert@70: rrenkert@70: /** rrenkert@70: * The logger. rrenkert@70: */ rrenkert@70: private static final Logger logger = rrenkert@75: Logger.getLogger(MarkerSymbolReader.class); rrenkert@70: rrenkert@181: /** rrenkert@181: * Private member. rrenkert@181: */ rrenkert@70: private ISymbol symbol; rrenkert@75: private IMarkerSymbol markerSymbol; rrenkert@70: rrenkert@181: /** rrenkert@181: * Constructor with symbol. rrenkert@181: * rrenkert@181: * @param symbol The symbol used to display points. rrenkert@181: */ rrenkert@71: public MarkerSymbolReader(ISymbol symbol) rrenkert@71: throws Exception { aheinecke@336: logger.debug("constructor(ISymbol)"); rrenkert@70: this.symbol = symbol; rrenkert@75: this.markerSymbol = null; rrenkert@75: } rrenkert@75: rrenkert@181: /** rrenkert@181: * Constructor with symbol. rrenkert@181: * rrenkert@181: * @param symbol The symbol used to display points. rrenkert@181: */ rrenkert@75: public MarkerSymbolReader(IMarkerSymbol symbol) rrenkert@75: throws Exception { aheinecke@336: logger.debug("constructor(ISymbol)"); rrenkert@75: this.markerSymbol = symbol; rrenkert@75: this.symbol = null; rrenkert@70: } rrenkert@70: rrenkert@181: /** rrenkert@181: * Default constructor. rrenkert@181: */ rrenkert@71: public MarkerSymbolReader() { aheinecke@336: logger.debug("constructor()"); rrenkert@71: this.symbol = null; rrenkert@75: this.markerSymbol = null; rrenkert@71: } rrenkert@71: rrenkert@181: /** rrenkert@181: * Reads the symbol attributes. rrenkert@181: * rrenkert@181: * @return The DOM element containing the attributes. rrenkert@181: */ rrenkert@115: public Element read() { rrenkert@75: logger.debug("read()"); rrenkert@70: ISymbolReader sreader = null; rrenkert@75: rrenkert@75: if(symbol != null) { rrenkert@115: try { rrenkert@115: if(symbol instanceof SimpleMarkerSymbol) { rrenkert@115: sreader = new SimpleMarkerSymbolReader(symbol); rrenkert@115: } rrenkert@115: else if(symbol instanceof ArrowMarkerSymbol) { rrenkert@115: sreader = new ArrowMarkerSymbolReader(symbol); rrenkert@115: } rrenkert@115: else if(symbol instanceof CharacterMarkerSymbol) { rrenkert@115: sreader = new CharacterMarkerSymbolReader(symbol); rrenkert@115: } rrenkert@115: else if(symbol instanceof PictureMarkerSymbol) { rrenkert@115: sreader = new PictureMarkerSymbolReader(symbol); rrenkert@115: } rrenkert@115: else if(symbol instanceof MultiLayerMarkerSymbol) { rrenkert@115: sreader = new MultiLayerMarkerSymbolReader(symbol); rrenkert@115: } rrenkert@115: else { rrenkert@180: logger.debug("The reader for type " + rrenkert@180: symbol.getClass().toString() + rrenkert@115: " is not implemented!"); rrenkert@115: return parent; rrenkert@115: } rrenkert@75: } rrenkert@115: catch(Exception e) { rrenkert@115: logger.error( rrenkert@115: "Could not read the symbol " + rrenkert@115: symbol.getClass().toString()); rrenkert@75: return parent; rrenkert@115: rrenkert@75: } rrenkert@70: } rrenkert@75: else if(markerSymbol != null) { rrenkert@115: try { rrenkert@115: if(markerSymbol instanceof SimpleMarkerSymbol) { rrenkert@115: sreader = new SimpleMarkerSymbolReader(markerSymbol); rrenkert@115: } rrenkert@115: else if(markerSymbol instanceof ArrowMarkerSymbol) { rrenkert@115: sreader = new ArrowMarkerSymbolReader(markerSymbol); rrenkert@115: } rrenkert@115: else if(markerSymbol instanceof CharacterMarkerSymbol) { rrenkert@115: sreader = new CharacterMarkerSymbolReader(markerSymbol); rrenkert@115: } rrenkert@115: else if(markerSymbol instanceof PictureMarkerSymbol) { rrenkert@115: sreader = new PictureMarkerSymbolReader(markerSymbol); rrenkert@115: } rrenkert@115: else if(markerSymbol instanceof MultiLayerMarkerSymbol) { rrenkert@115: sreader = new MultiLayerMarkerSymbolReader(markerSymbol); rrenkert@115: } rrenkert@115: else { rrenkert@180: logger.debug("The reader for type " + rrenkert@180: symbol.getClass().toString() + rrenkert@115: " is not implemented!"); rrenkert@115: return parent; rrenkert@115: } rrenkert@75: } rrenkert@115: catch(Exception e) { rrenkert@115: logger.error( rrenkert@115: "Could not read the symbol " + rrenkert@115: symbol.getClass().toString()); rrenkert@75: return parent; rrenkert@115: rrenkert@75: } rrenkert@70: } rrenkert@70: if (sreader != null) { rrenkert@70: sreader.setParent(parent); rrenkert@70: sreader.setUtil(util); rrenkert@75: sreader.read(); rrenkert@70: } rrenkert@70: return parent; rrenkert@70: } rrenkert@71: rrenkert@181: /** rrenkert@181: * Sets the symbol to read. rrenkert@181: * rrenkert@181: * @param sym The symbol used to display points. rrenkert@181: */ rrenkert@71: public void setSymbol(ISymbol sym) { rrenkert@71: this.symbol = sym; rrenkert@75: this.markerSymbol = null; rrenkert@75: } rrenkert@75: rrenkert@181: /** rrenkert@181: * Sets the symbol to read. rrenkert@181: * rrenkert@181: * @param sym The symbol used to display points. rrenkert@181: */ rrenkert@75: public void setSymbol(IMarkerSymbol sym) { rrenkert@75: this.markerSymbol = sym; rrenkert@75: this.symbol = null; rrenkert@71: } rrenkert@71: rrenkert@181: /** rrenkert@181: * Determine whether this reader can be used to read the symbol. rrenkert@181: * rrenkert@181: * @param sym The ArcGIS symbol. rrenkert@181: */ rrenkert@71: public boolean canRead(ISymbol sym) { rrenkert@71: if(sym instanceof SimpleMarkerSymbol || rrenkert@71: sym instanceof ArrowMarkerSymbol || rrenkert@71: sym instanceof PictureMarkerSymbol || rrenkert@71: sym instanceof CharacterMarkerSymbol || rrenkert@71: sym instanceof MultiLayerMarkerSymbol) { rrenkert@71: return true; rrenkert@71: } rrenkert@71: else { rrenkert@71: return false; rrenkert@71: } rrenkert@71: } rrenkert@71: rrenkert@181: /** rrenkert@181: * Determine whether this reader can be used to read the symbol. rrenkert@181: * rrenkert@181: * @param sym The ArcGIS symbol. rrenkert@181: */ rrenkert@75: public boolean canRead(IMarkerSymbol sym) { rrenkert@75: if(sym instanceof SimpleMarkerSymbol || rrenkert@75: sym instanceof ArrowMarkerSymbol || rrenkert@75: sym instanceof PictureMarkerSymbol || rrenkert@75: sym instanceof CharacterMarkerSymbol || rrenkert@75: sym instanceof MultiLayerMarkerSymbol) { rrenkert@75: return true; rrenkert@75: } rrenkert@75: else { rrenkert@75: return false; rrenkert@75: } rrenkert@75: } rrenkert@70: } rrenkert@180: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :