view gnv-artifacts/src/main/java/de/intevation/gnv/state/layer/LayerOutputState.java @ 626:61f688a69a55

Split up export modes from output modes. gnv-artifacts/trunk@700 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 23 Feb 2010 11:47:08 +0000
parents 93978859fa9e
children 4fc97074eb90
line wrap: on
line source
/**
 *
 */
package de.intevation.gnv.state.layer;

import java.io.OutputStream;
import java.util.Collection;
import java.util.Iterator;

import org.apache.log4j.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Node;

import de.intevation.artifactdatabase.Config;
import de.intevation.artifactdatabase.XMLUtils;
import de.intevation.artifacts.ArtifactNamespaceContext;
import de.intevation.artifacts.CallContext;
import de.intevation.gnv.geobackend.base.Result;
import de.intevation.gnv.state.InputData;
import de.intevation.gnv.state.OutputStateBase;
import de.intevation.gnv.state.exception.StateException;

/**
 * @author Tim Englich <tim.englich@intevation.de>
 *
 */
public class LayerOutputState extends OutputStateBase {

    /**
     * the logger, used to log exceptions and additonaly information
     */
    private static Logger log = Logger.getLogger(LayerOutputState.class);
    
    /**
     * The UID of this Class.
     */
    private static final long serialVersionUID = 9180957321704424049L;

    /**
     * The ID for the Query fetching the Layer from the DB
     */
    private String dataQueryID = null; 
    /**
     * Constructor
     */
    public LayerOutputState() {
        super();
    }

    /**
     * @see de.intevation.gnv.state.OutputState#out(org.w3c.dom.Document, 
     *      java.util.Collection, java.io.OutputStream, 
     *      java.lang.String, de.intevation.artifacts.CallContext)
     */
    public void out(Document format, Collection<InputData> inputData,
                    OutputStream outputStream, String uuid,
                    CallContext callContext) throws StateException {
        
        log.debug("LayerOutputState.out");
        String outputMode = XMLUtils.xpathString(
                format, XPATH_OUTPUT_MODE, ArtifactNamespaceContext.INSTANCE);
        if (outputMode.equalsIgnoreCase("wms")) {
            Collection<Result> data = this.fetchData();
            // TODO USE ME
        }else if (outputMode.equalsIgnoreCase("zip")){
            Collection<Result> data = this.fetchData();
            // TODO USE ME
        }
    }
    
    
    protected Collection<Result> fetchData(){
        log.debug("LayerOutputState.fetchData");
        // TODO PUT ALL in CACHE
        Collection<Result> result = this.getData(this.queryID);
        Collection<Result> data = null;
        if (result != null){
            Iterator<Result> it = result.iterator();
            String table = null;
            String where = null;
            if (it.hasNext()){
                Result resultValue = it.next();
                table = resultValue.getString(0);
                where = resultValue.getString(1);
                // TODO ADD SpatialFilter if Geometry is available
            }
            
            data = null; // TODO Fetch the Data for the Layer and Trim the Geometries
                         //      using the Geometry if on is available.
        }
        return data;
    }

    @Override
    public void setup(Node configuration) {
        log.debug("LayerOutputState.setup");
        super.setup(configuration);
        this.dataQueryID = Config.getStringXPath(configuration,"queryID-layerdata");
    }

}

http://dive4elements.wald.intevation.org