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@68: package de.intevation.mxd.reader; rrenkert@68: rrenkert@68: import org.apache.log4j.Logger; rrenkert@68: rrenkert@68: import com.esri.arcgis.display.ISymbol; rrenkert@68: import com.esri.arcgis.display.IFillSymbol; rrenkert@68: import com.esri.arcgis.display.MultiLayerFillSymbol; rrenkert@68: rrenkert@68: import org.w3c.dom.Element; rrenkert@68: rrenkert@68: /** rrenkert@68: * Reads multi layer line symbol information. rrenkert@68: * rrenkert@68: * @author Raimund Renkert rrenkert@68: */ rrenkert@80: public class MultiLayerFillSymbolReader rrenkert@80: extends AbstractSymbolReader { rrenkert@68: rrenkert@68: /** rrenkert@68: * The logger. rrenkert@68: */ rrenkert@68: private static final Logger logger = rrenkert@68: Logger.getLogger(MultiLayerFillSymbolReader.class); rrenkert@68: rrenkert@68: /** rrenkert@68: * Private member. rrenkert@68: */ rrenkert@68: private MultiLayerFillSymbol symbol; rrenkert@68: rrenkert@181: /** rrenkert@181: * Constructor with symbol. rrenkert@181: * rrenkert@181: * @param symbol The symbol used to display polygons. rrenkert@181: */ rrenkert@68: public MultiLayerFillSymbolReader(ISymbol symbol) rrenkert@68: throws Exception { aheinecke@336: logger.debug("constructor()"); rrenkert@68: if(symbol instanceof MultiLayerFillSymbol) { rrenkert@68: this.symbol = (MultiLayerFillSymbol)symbol; rrenkert@68: } rrenkert@68: else { rrenkert@68: throw new Exception("Not a MultiLayerFillSymbol!"); rrenkert@68: } rrenkert@68: } rrenkert@68: rrenkert@181: /** rrenkert@181: * Constructor with symbol. rrenkert@181: * rrenkert@181: * @param symbol The symbol used to display polygons. rrenkert@181: */ rrenkert@68: public MultiLayerFillSymbolReader(IFillSymbol symbol) rrenkert@68: throws Exception { aheinecke@336: logger.debug("constructor()"); rrenkert@68: if(symbol instanceof MultiLayerFillSymbol) { rrenkert@68: this.symbol = (MultiLayerFillSymbol)symbol; rrenkert@68: } rrenkert@68: else { rrenkert@68: throw new Exception("Not a MultiLayerFillSymbol!"); rrenkert@68: } rrenkert@68: } rrenkert@68: rrenkert@68: /** rrenkert@68: * Reads the symbol attributes. rrenkert@68: * rrenkert@68: * @return The XML node. rrenkert@68: */ rrenkert@115: public Element read() { rrenkert@68: logger.debug("read()"); rrenkert@115: try { rrenkert@115: for(int i = 0; i < symbol.getLayerCount(); i++) { rrenkert@115: ISymbol sym = (ISymbol)symbol.getLayer(i); rrenkert@68: rrenkert@115: FillSymbolReader fsr = new FillSymbolReader(); rrenkert@115: if(fsr.canRead(sym)) { rrenkert@115: fsr.setSymbol(sym); rrenkert@115: fsr.setParent(parent); rrenkert@115: fsr.setUtil(util); rrenkert@115: fsr.read(); rrenkert@115: } rrenkert@115: else { rrenkert@115: logger.debug("The type of " + sym.getClass().toString() + rrenkert@115: " is not implemented!"); rrenkert@115: } rrenkert@68: } rrenkert@115: } rrenkert@115: catch(Exception e) { rrenkert@115: logger.error( rrenkert@115: "Could not read the symbol " + rrenkert@115: symbol.getClass().toString()); rrenkert@68: } rrenkert@80: return parent; rrenkert@68: } rrenkert@68: } rrenkert@68: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :