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@72: package de.intevation.mxd.reader; rrenkert@72: rrenkert@72: import java.lang.Exception; rrenkert@72: rrenkert@72: import org.w3c.dom.Element; rrenkert@72: rrenkert@72: import org.apache.log4j.Logger; rrenkert@72: rrenkert@72: import com.esri.arcgis.display.ISymbol; rrenkert@72: import com.esri.arcgis.display.IFillSymbol; rrenkert@72: import com.esri.arcgis.display.MultiLayerFillSymbol; rrenkert@72: import com.esri.arcgis.display.SimpleFillSymbol; rrenkert@75: import com.esri.arcgis.display.MarkerFillSymbol; rrenkert@76: import com.esri.arcgis.display.LineFillSymbol; raimund@251: import com.esri.arcgis.display.PictureFillSymbol; rrenkert@72: rrenkert@72: /** rrenkert@72: * Wrapper for fill symbol reader. rrenkert@72: * rrenkert@72: * @author Raimund Renkert rrenkert@72: */ rrenkert@72: public class FillSymbolReader rrenkert@72: extends AbstractSymbolReader { rrenkert@72: rrenkert@72: /** rrenkert@72: * The logger. rrenkert@72: */ rrenkert@72: private static final Logger logger = rrenkert@72: Logger.getLogger(FillSymbolReader.class); rrenkert@72: rrenkert@181: /** rrenkert@181: * Private member. rrenkert@181: */ rrenkert@72: private ISymbol symbol; rrenkert@72: private IFillSymbol fillSymbol; rrenkert@72: rrenkert@181: /** rrenkert@181: * Default constructor. rrenkert@181: */ rrenkert@181: public FillSymbolReader() rrenkert@181: throws Exception { aheinecke@336: logger.debug("constructor()"); rrenkert@72: this.symbol = null; rrenkert@72: this.fillSymbol = null; rrenkert@72: } rrenkert@72: rrenkert@181: /** rrenkert@181: * Constructor with symbol. rrenkert@181: * rrenkert@181: * @param symbol The symbol used to display polygons. rrenkert@181: */ rrenkert@181: public FillSymbolReader(ISymbol symbol) rrenkert@181: throws Exception { aheinecke@336: logger.debug("constructor(ISymbol)"); rrenkert@72: this.symbol = symbol; rrenkert@72: this.fillSymbol = null; rrenkert@72: } rrenkert@72: rrenkert@181: /** rrenkert@181: * Constructor with symbol. rrenkert@181: * rrenkert@181: * @param symbol The symbol used to display polygons. rrenkert@181: */ rrenkert@181: public FillSymbolReader(IFillSymbol symbol) rrenkert@181: throws Exception { aheinecke@336: logger.debug("constructor(ILineSymbol)"); rrenkert@72: this.fillSymbol = symbol; rrenkert@72: this.symbol= null; rrenkert@72: } rrenkert@72: rrenkert@181: /** rrenkert@181: * Read the symbol attributes. rrenkert@181: * rrenkert@181: * @return DOM element containing the symbol attributes. rrenkert@181: */ rrenkert@115: public Element read() { rrenkert@72: ISymbolReader sreader = null; rrenkert@72: if(symbol != null) { rrenkert@115: try { rrenkert@115: if(symbol instanceof SimpleFillSymbol) { rrenkert@115: sreader = new SimpleFillSymbolReader(symbol); rrenkert@115: } rrenkert@115: else if(symbol instanceof MultiLayerFillSymbol) { rrenkert@115: sreader = new MultiLayerFillSymbolReader(symbol); rrenkert@115: } rrenkert@115: else if(symbol instanceof MarkerFillSymbol) { rrenkert@115: sreader = new MarkerFillSymbolReader(symbol); rrenkert@115: } rrenkert@115: else if(symbol instanceof LineFillSymbol) { rrenkert@115: sreader = new LineFillSymbolReader(symbol); rrenkert@115: } raimund@251: else if(symbol instanceof PictureFillSymbol) { raimund@251: sreader = new PictureFillSymbolReader(symbol); raimund@251: } 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@72: } rrenkert@115: catch(Exception e) { rrenkert@115: logger.error( rrenkert@115: "Could not read the symbol " + rrenkert@115: symbol.getClass().toString()); rrenkert@72: return parent; rrenkert@72: } rrenkert@72: } rrenkert@72: else if(fillSymbol != null) { rrenkert@115: try { rrenkert@115: if(fillSymbol instanceof SimpleFillSymbol) { rrenkert@115: sreader = new SimpleFillSymbolReader(fillSymbol); rrenkert@115: } rrenkert@115: else if(fillSymbol instanceof MultiLayerFillSymbol) { rrenkert@115: sreader = new MultiLayerFillSymbolReader(fillSymbol); rrenkert@115: } rrenkert@115: else if(fillSymbol instanceof MarkerFillSymbol) { rrenkert@115: sreader = new MarkerFillSymbolReader(fillSymbol); rrenkert@115: } rrenkert@115: else if(fillSymbol instanceof LineFillSymbol) { rrenkert@115: sreader = new LineFillSymbolReader(fillSymbol); rrenkert@115: } raimund@251: else if(fillSymbol instanceof PictureFillSymbol) { raimund@251: sreader = new PictureFillSymbolReader(fillSymbol); raimund@251: } rrenkert@115: else { rrenkert@115: logger.debug("The reader for type " + rrenkert@115: fillSymbol.getClass().toString() + rrenkert@115: " is not implemented!"); rrenkert@115: return parent; rrenkert@115: } rrenkert@72: } rrenkert@115: catch(Exception e) { rrenkert@115: logger.error( rrenkert@115: "Could not read the symbol " + rrenkert@115: symbol.getClass().toString()); rrenkert@72: return parent; rrenkert@72: } rrenkert@72: } rrenkert@72: else { rrenkert@72: return parent; rrenkert@72: } rrenkert@72: if (sreader != null) { rrenkert@72: sreader.setParent(parent); rrenkert@72: sreader.setUtil(util); rrenkert@72: sreader.read(); rrenkert@72: } rrenkert@72: return parent; rrenkert@72: } rrenkert@72: rrenkert@181: /** rrenkert@181: * Sets the symbol to read. rrenkert@181: * raimund@260: * @param sym The symbol used to display polygons. rrenkert@181: */ rrenkert@72: public void setSymbol(ISymbol sym) { rrenkert@72: this.symbol = sym; rrenkert@72: this.fillSymbol = null; rrenkert@72: } rrenkert@72: rrenkert@181: /** rrenkert@181: * Sets the symbol to read. rrenkert@181: * raimund@260: * @param sym The symbol used to display polygons. rrenkert@181: */ rrenkert@72: public void setSymbol(IFillSymbol sym) { rrenkert@72: this.symbol = null; rrenkert@72: this.fillSymbol = sym; rrenkert@72: } rrenkert@72: 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@72: public boolean canRead(ISymbol sym) { rrenkert@72: if(sym instanceof SimpleFillSymbol || rrenkert@75: sym instanceof MarkerFillSymbol || rrenkert@76: sym instanceof MultiLayerFillSymbol || raimund@251: sym instanceof LineFillSymbol || raimund@251: sym instanceof PictureFillSymbol) { rrenkert@72: return true; rrenkert@72: } rrenkert@72: else { rrenkert@72: return false; rrenkert@72: } rrenkert@72: } rrenkert@72: 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@72: public boolean canRead(IFillSymbol sym) { rrenkert@72: if(sym instanceof SimpleFillSymbol || rrenkert@75: sym instanceof MarkerFillSymbol || rrenkert@76: sym instanceof MultiLayerFillSymbol || raimund@251: sym instanceof LineFillSymbol || raimund@251: sym instanceof PictureFillSymbol) { rrenkert@72: return true; rrenkert@72: } rrenkert@72: else { rrenkert@72: return false; rrenkert@72: } rrenkert@72: } rrenkert@72: } rrenkert@72: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :