Mercurial > mxd2map
diff src/java/de/intevation/mxd/reader/LabelEngineReader.java @ 179:f3a91cd7440b
Added a first version of feature labeling.
author | raimund renkert <raimund.renkert@intevation.de> |
---|---|
date | Fri, 08 Jul 2011 16:32:05 +0200 |
parents | |
children | f4eb506499f5 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/java/de/intevation/mxd/reader/LabelEngineReader.java Fri Jul 08 16:32:05 2011 +0200 @@ -0,0 +1,138 @@ +package de.intevation.mxd.reader; + +import org.apache.log4j.Logger; + +import com.esri.arcgis.carto.ILayer; +import com.esri.arcgis.carto.FeatureLayer; +import com.esri.arcgis.carto.AnnotateLayerPropertiesCollection; +import com.esri.arcgis.carto.IAnnotateLayerProperties; +import com.esri.arcgis.carto.LabelEngineLayerProperties; +import com.esri.arcgis.geodatabase.FeatureClassName; +import com.esri.arcgis.system.IName; +import com.esri.arcgis.system.IPropertySet; +import com.esri.arcgis.display.ITextSymbol; +import com.esri.arcgis.display.TextSymbol; + +import org.w3c.dom.Element; + +import de.intevation.mxd.utils.MapToXMLUtils; +import java.io.IOException; +import com.esri.arcgis.interop.AutomationException; +/** + * Reads Label information. + * + * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> + */ +public class LabelEngineReader { + + /** + * The logger. + */ + private static final Logger logger = + Logger.getLogger(LabelEngineReader.class); + + /** + * Privte member. + */ + private LabelEngineLayerProperties properties; + private MapToXMLUtils util; + private Element parent; + + public LabelEngineReader(IAnnotateLayerProperties prop) + throws Exception { + if(prop instanceof LabelEngineLayerProperties) { + this.properties = (LabelEngineLayerProperties)prop; + } + else { + throw new Exception("Not an instance of LaberEngineLayerProperties: " + + prop.getClass().toString()); + } + } + + /** + * Setter for XML document helper. + * + * @param util The helper for storing map information. + */ + public void setUtil(MapToXMLUtils util) { + this.util = util; + } + + public void setParent(Element parent) { + this.parent = parent; + } + + + + /** + * Reads the Label content. + * + * @return The label XML element. + */ + public Element read() + throws IOException{ + logger.debug("read()"); + Element labelElement; + try { + labelElement = util.addLabel(parent); + } + catch(Exception e) { + logger.error("Failed to create DOM-Element for Label."); + return null; + } + + try { + labelElement.setAttribute("expression", properties.getExpression()); + } + catch(IOException ioe) { + logger.warn("Could not read label expression."); + return null; + } + + try { + labelElement.setAttribute( + "offset", + String.valueOf(properties.getOffset())); + } + catch(IOException ioe) { + logger.warn("Could not read label offset."); + } + + try { + labelElement.setAttribute( + "definition_query", + properties.getWhereClause()); + } + catch(IOException ioe) { + logger.warn("Could not read label where clause."); + } + + try { + labelElement.setAttribute( + "max_scale", + String.valueOf(properties.getAnnotationMaximumScale())); + labelElement.setAttribute( + "min_scale", + String.valueOf(properties.getAnnotationMinimumScale())); + } + catch(IOException ioe) { + logger.warn("Could not read label scale."); + } + + try { + ITextSymbol sym = properties.getSymbol(); + if(sym instanceof TextSymbol) { + TextSymbolReader tsr = new TextSymbolReader(sym); + tsr.setParent(labelElement); + tsr.setUtil(util); + tsr.read(); + } + } + catch(Exception e) { + logger.warn("Could not read label text symbol."); + } + + return labelElement; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :