rrenkert@36: package de.intevation.mxd.reader; rrenkert@36: rrenkert@36: import org.apache.log4j.Logger; rrenkert@36: rrenkert@36: import com.esri.arcgis.carto.ILayer; rrenkert@36: import com.esri.arcgis.carto.GdbRasterCatalogLayer; rrenkert@36: rrenkert@36: import org.w3c.dom.Element; rrenkert@117: import java.io.IOException; rrenkert@36: import de.intevation.mxd.utils.MapToXMLUtils; rrenkert@36: rrenkert@36: /** rrenkert@43: * Reads Layer information. rrenkert@36: * rrenkert@36: * @author Raimund Renkert rrenkert@36: */ rrenkert@43: public class GdbRasterCatalogLayerReader rrenkert@43: implements ILayerReader { rrenkert@36: rrenkert@36: /** rrenkert@36: * The logger. rrenkert@36: */ rrenkert@36: private static final Logger logger = rrenkert@36: Logger.getLogger(GdbRasterCatalogLayerReader.class); rrenkert@36: rrenkert@36: /** rrenkert@36: * Privte member. rrenkert@36: */ rrenkert@36: private GdbRasterCatalogLayer layer; rrenkert@36: private MapToXMLUtils util; rrenkert@36: rrenkert@36: rrenkert@36: public GdbRasterCatalogLayerReader(ILayer layer) rrenkert@36: throws Exception { rrenkert@43: if(layer instanceof GdbRasterCatalogLayer) { rrenkert@36: this.layer = (GdbRasterCatalogLayer)layer; rrenkert@43: } rrenkert@43: else { rrenkert@36: throw new Exception("Not an instance of GdbRastaCatalogLayer: " + rrenkert@36: layer.getClass().toString()); rrenkert@43: } rrenkert@36: } rrenkert@36: rrenkert@36: /** rrenkert@36: * Setter for XML document helper. rrenkert@36: * rrenkert@36: * @param util The helper for storing map information. rrenkert@36: */ rrenkert@43: public void setUtil(MapToXMLUtils util) { rrenkert@36: this.util = util; rrenkert@36: } rrenkert@36: rrenkert@36: /** rrenkert@36: * Reads the Layer content. rrenkert@36: * rrenkert@36: * @return The layer XML element. rrenkert@36: */ rrenkert@118: public Element read() rrenkert@118: throws IOException { rrenkert@36: logger.debug("read()"); rrenkert@36: rrenkert@117: Element layerElement; rrenkert@117: try { rrenkert@117: layerElement = util.addLayer(); rrenkert@117: } rrenkert@117: catch(Exception e) { rrenkert@117: logger.error( rrenkert@117: "Could not create DOM element for layer." + rrenkert@117: "Stopped reading layer."); rrenkert@118: throw new IOException( rrenkert@118: this.getClass()+toString() + rrenkert@118: "Error creating dom element"); rrenkert@117: } rrenkert@117: rrenkert@117: try { rrenkert@117: layerElement.setAttribute("name", layer.getName()); rrenkert@117: } rrenkert@117: catch(IOException ioe) { rrenkert@117: logger.warn( rrenkert@117: "Could not read layer name. " + rrenkert@117: "Setting layer name to \"default\"."); rrenkert@117: layerElement.setAttribute("name", "default"); rrenkert@117: } rrenkert@117: rrenkert@117: try { rrenkert@117: layerElement.setAttribute("min_scale", rrenkert@117: String.valueOf(layer.getMinimumScale())); rrenkert@117: } rrenkert@117: catch(IOException ioe) { rrenkert@117: logger.warn( rrenkert@117: "Could not read minimum layer scale." + rrenkert@117: "Setting minimum layer scale to 1000"); rrenkert@117: layerElement.setAttribute("min_scale", "1000"); rrenkert@117: } rrenkert@117: rrenkert@117: try { rrenkert@117: layerElement.setAttribute("max_scale", rrenkert@117: String.valueOf(layer.getMaximumScale())); rrenkert@117: } rrenkert@117: catch(IOException ioe) { rrenkert@117: logger.warn( rrenkert@117: "Could not read maximum layer scale." + rrenkert@117: "Setting maximum layer scale to 1000000"); rrenkert@117: layerElement.setAttribute("max_scale", "1000000"); rrenkert@117: } rrenkert@117: rrenkert@117: try { rrenkert@117: if(layer.isVisible()) { rrenkert@117: layerElement.setAttribute("status", "on"); rrenkert@117: } rrenkert@117: else { rrenkert@117: layerElement.setAttribute("status", "off"); rrenkert@117: } rrenkert@117: } rrenkert@117: catch(IOException ioe) { rrenkert@117: logger.warn( rrenkert@117: "Could not read layer status." + rrenkert@117: " Setting layer status to \"on\""); rrenkert@36: layerElement.setAttribute("status", "on"); rrenkert@36: } rrenkert@117: rrenkert@117: try { rrenkert@117: layerElement.setAttribute("definition_query", rrenkert@117: layer.getDefinitionExpression()); rrenkert@36: } rrenkert@117: catch(IOException ioe) { rrenkert@117: logger.warn( rrenkert@117: "Could not read layer definition query." + rrenkert@117: "Setting empty definition query."); rrenkert@117: layerElement.setAttribute("definition_query", ""); rrenkert@117: } rrenkert@36: return layerElement; rrenkert@36: } rrenkert@36: } rrenkert@36: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :