tim@616: /** tim@616: * tim@616: */ tim@616: package de.intevation.gnv.state.layer; tim@616: tim@616: import java.io.OutputStream; tim@616: import java.util.Collection; tim@616: import java.util.Iterator; tim@616: tim@616: import org.apache.log4j.Logger; tim@616: import org.w3c.dom.Document; tim@616: import org.w3c.dom.Node; tim@616: tim@616: import de.intevation.artifactdatabase.Config; tim@616: import de.intevation.artifactdatabase.XMLUtils; tim@616: import de.intevation.artifacts.ArtifactNamespaceContext; tim@616: import de.intevation.artifacts.CallContext; tim@616: import de.intevation.gnv.geobackend.base.Result; tim@616: import de.intevation.gnv.state.InputData; tim@616: import de.intevation.gnv.state.OutputStateBase; tim@616: import de.intevation.gnv.state.exception.StateException; tim@616: tim@616: /** tim@616: * @author Tim Englich tim@616: * tim@616: */ tim@616: public class LayerOutputState extends OutputStateBase { tim@616: tim@616: /** tim@616: * the logger, used to log exceptions and additonaly information tim@616: */ tim@616: private static Logger log = Logger.getLogger(LayerOutputState.class); tim@616: tim@616: /** tim@616: * The UID of this Class. tim@616: */ tim@616: private static final long serialVersionUID = 9180957321704424049L; tim@616: tim@616: /** tim@616: * The ID for the Query fetching the Layer from the DB tim@616: */ tim@616: private String dataQueryID = null; tim@616: /** tim@616: * Constructor tim@616: */ tim@616: public LayerOutputState() { tim@616: super(); tim@616: } tim@616: tim@616: /** tim@616: * @see de.intevation.gnv.state.OutputState#out(org.w3c.dom.Document, tim@616: * java.util.Collection, java.io.OutputStream, tim@616: * java.lang.String, de.intevation.artifacts.CallContext) tim@616: */ tim@616: public void out(Document format, Collection inputData, tim@616: OutputStream outputStream, String uuid, tim@616: CallContext callContext) throws StateException { tim@616: tim@616: log.debug("LayerOutputState.out"); tim@616: String outputMode = XMLUtils.xpathString( tim@616: format, XPATH_OUTPUT_MODE, ArtifactNamespaceContext.INSTANCE); tim@616: if (outputMode.equalsIgnoreCase("wms")) { tim@616: Collection data = this.fetchData(); tim@616: // TODO USE ME tim@616: }else if (outputMode.equalsIgnoreCase("zip")){ tim@616: Collection data = this.fetchData(); tim@616: // TODO USE ME tim@616: } tim@616: } tim@616: tim@616: tim@616: protected Collection fetchData(){ tim@616: log.debug("LayerOutputState.fetchData"); tim@616: // TODO PUT ALL in CACHE tim@616: Collection result = this.getData(this.queryID); tim@616: Collection data = null; tim@616: if (result != null){ tim@616: Iterator it = result.iterator(); tim@616: String table = null; tim@616: String where = null; tim@616: if (it.hasNext()){ tim@616: Result resultValue = it.next(); tim@616: table = resultValue.getString(0); tim@616: where = resultValue.getString(1); tim@616: // TODO ADD SpatialFilter if Geometry is available tim@616: } tim@616: tim@616: data = null; // TODO Fetch the Data for the Layer and Trim the Geometries tim@616: // using the Geometry if on is available. tim@616: } tim@616: return data; tim@616: } tim@616: tim@616: @Override tim@616: public void setup(Node configuration) { tim@616: log.debug("LayerOutputState.setup"); tim@616: super.setup(configuration); tim@616: this.dataQueryID = Config.getStringXPath(configuration,"queryID-layerdata"); tim@616: } tim@616: tim@616: }