Mercurial > dive4elements > gnv-client
view gnv-artifacts/src/main/java/de/intevation/gnv/utils/MetaWriter.java @ 652:078ba6799bd2
Cleanup imports
gnv-artifacts/trunk@743 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sat, 06 Mar 2010 08:25:14 +0000 |
parents | bb0aa1f81280 |
children | 6eccb68a8b99 |
line wrap: on
line source
package de.intevation.gnv.utils; import de.intevation.artifacts.ArtifactNamespaceContext; import de.intevation.artifacts.CallContext; import de.intevation.artifactdatabase.XMLUtils; import de.intevation.gnv.artifacts.context.GNVArtifactContext; import de.intevation.gnv.wms.LayerInfo; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; /** * @author Ingo Weinzierl (ingo.weinzierl@intevation.de) */ public class MetaWriter { private static Logger logger = Logger.getLogger(MetaWriter.class); public static final String NODE_MAPSERVER = "mapserver"; public static final String NODE_SERVER = "server"; public static final String NODE_MAP = "map"; public static final String META_FILE_NAME = "meta.xml"; public static final String ISOLINES_NAME = "isolines.shp"; public static final String POLYGON_NAME = "polygons.shp"; private MetaWriter() { } public static Document writeHorizontalcrosssectionMeta( CallContext context, String uuid, String path, String paramType) { Document meta = XMLUtils.newDocument(); XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator( meta, ArtifactNamespaceContext.NAMESPACE_URI, ArtifactNamespaceContext.NAMESPACE_PREFIX); Element root = creator.create("meta"); meta.appendChild(root); writeAbstractMeta(context, meta, root); writePolygonMeta(context, meta, root, uuid, path, paramType); writeIsolineMeta(context, meta, root, uuid, path, paramType); try { File metaFile = new File(path, META_FILE_NAME); if (!metaFile.createNewFile() || !metaFile.canWrite()) { logger.error("Error while writing meta file: "+metaFile.toString()); return null; } OutputStream out = null; boolean success = false; try { out = new FileOutputStream(metaFile); success = XMLUtils.toStream(meta, out); } finally { if (out != null) { try { out.close(); } catch (IOException ioe) {} } } if (!success && metaFile.exists()) { metaFile.delete(); } return success ? meta : null; } catch (FileNotFoundException fnfe) { logger.error(fnfe); } catch (IOException ioe) { logger.error(ioe, ioe); } return meta; } public static void writeAbstractMeta( CallContext callContext, Document document, Element meta ) { XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator( document, ArtifactNamespaceContext.NAMESPACE_URI, ArtifactNamespaceContext.NAMESPACE_PREFIX); GNVArtifactContext context = (GNVArtifactContext) callContext.globalContext(); String server = (String) context.get(GNVArtifactContext.MAPSERVER_SERVER_PATH_KEY); String map = (String) context.get(GNVArtifactContext.MAPSERVER_MAP_PATH_KEY); logger.debug("MAPSERVER PATH: " + server); logger.debug("MAP PATH: " + map); Element mapserver = creator.create(NODE_MAPSERVER); Element serverPath = creator.create(NODE_SERVER); Element mapPath = creator.create(NODE_MAP); mapPath.setTextContent(map); serverPath.setTextContent(server); mapserver.appendChild(serverPath); mapserver.appendChild(mapPath); meta.appendChild(mapserver); } public static void writePolygonMeta( CallContext context, Document document, Element meta, String uuid, String path, String paramType ) { XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator( document, ArtifactNamespaceContext.NAMESPACE_URI, ArtifactNamespaceContext.NAMESPACE_PREFIX); Element layer = creator.create(LayerInfo.LAYER); Element model = creator.create(LayerInfo.LAYER_MODEL); Element name = creator.create(LayerInfo.LAYER_NAME); Element type = creator.create(LayerInfo.LAYER_TYPE); Element status = creator.create(LayerInfo.LAYER_STATUS); Element data = creator.create(LayerInfo.LAYER_DATA); model.setTextContent(paramType); name.setTextContent(uuid); type.setTextContent("POLYGON"); status.setTextContent("DEFAULT"); data.setTextContent(POLYGON_NAME); layer.appendChild(model); layer.appendChild(name); layer.appendChild(type); layer.appendChild(status); layer.appendChild(data); meta.appendChild(layer); } public static void writeIsolineMeta( CallContext context, Document document, Element meta, String uuid, String path, String paramType ) { XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator( document, ArtifactNamespaceContext.NAMESPACE_URI, ArtifactNamespaceContext.NAMESPACE_PREFIX); Element layer = creator.create(LayerInfo.LAYER); Element model = creator.create(LayerInfo.LAYER_MODEL); Element name = creator.create(LayerInfo.LAYER_NAME); Element type = creator.create(LayerInfo.LAYER_TYPE); Element status = creator.create(LayerInfo.LAYER_STATUS); Element data = creator.create(LayerInfo.LAYER_DATA); model.setTextContent(paramType+"_isolines"); name.setTextContent(uuid); type.setTextContent("LINE"); status.setTextContent("DEFAULT"); data.setTextContent(ISOLINES_NAME); layer.appendChild(model); layer.appendChild(name); layer.appendChild(type); layer.appendChild(status); layer.appendChild(data); meta.appendChild(layer); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :