view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/WaterlevelState.java @ 703:af3b5d9e91a4 facets-slt

Generate data facets for the computed states. flys-artifacts/branches/facets-slt@2154 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 17 Jun 2011 14:37:09 +0000
parents b972eba2ed8a
children 853dceead0f4
line wrap: on
line source
package de.intevation.flys.artifacts.states;

import java.util.List;

import org.apache.log4j.Logger;

import org.w3c.dom.Element;

import de.intevation.artifacts.Artifact;
import de.intevation.artifacts.CallContext;

import de.intevation.artifacts.common.utils.XMLUtils;

import de.intevation.artifactdatabase.state.Facet;

import de.intevation.flys.artifacts.FLYSArtifact;
import de.intevation.flys.artifacts.WINFOArtifact;
import de.intevation.flys.artifacts.model.FacetTypes;
import de.intevation.flys.artifacts.model.WaterlevelFacet;
import de.intevation.flys.artifacts.model.WQKms;

import de.intevation.flys.artifacts.model.DataFacet;


public class WaterlevelState
extends      DefaultState
implements   FacetTypes
{
    /** The logger that is used in this state.*/
    private static Logger logger = Logger.getLogger(WaterlevelState.class);


    protected Element[] createItems(
        XMLUtils.ElementCreator cr,
        Artifact    artifact,
        String      name,
        CallContext context)
    {
        logger.debug("WaterlevelState.createItems");
        return null;
    }


    @Override
    public Object computeAdvance(
        FLYSArtifact artifact,
        String       hash,
        CallContext  context,
        List<Facet>  facets, 
        Object       old
    ) {
        WINFOArtifact winfo = (WINFOArtifact)artifact;

        WQKms [] res;

        if (old instanceof WQKms []) {
            res = (WQKms [])old;
        }
        else {
            res = winfo.getWaterlevelData();
            if (res == null) {
                logger.debug("No results given.");
                return null;
            }
        }

        for (int i = 0; i < res.length; i++) {
            String nameW = null;
            String nameQ = null;

            if (winfo.isQ()) {
                nameQ = res[i].getName();
                nameW = "W(" + nameQ + ")";
            }
            else {
                nameW = res[i].getName();
                nameQ = "Q(" + nameQ + ")";
            }

            logger.debug("Create facet: " + nameW);
            logger.debug("Create facet: " + nameQ);

            Facet w = new WaterlevelFacet(i, LONGITUDINAL_W, nameW);
            Facet q = new WaterlevelFacet(i, LONGITUDINAL_Q, nameQ);

            facets.add(w);
            facets.add(q);
        }

        if (res.length > 0) {
            Facet wst = new DataFacet(WST, "WST data");
            Facet csv = new DataFacet(CSV, "CSV data");

            facets.add(wst);
            facets.add(csv);
        }

        return res;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org