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

Write computed facets into artifacts describe document. flys-artifacts/branches/facets-slt@2133 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Thu, 16 Jun 2011 13:24:00 +0000
parents 22e4bffbe240
children 708b270dfd30
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.DefaultFacet;
import de.intevation.artifactdatabase.state.Facet;

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


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 ComputeCallback createComputeCallback(
        String hash, FLYSArtifact flys)
    {
        logger.debug("Create waterlevel ComputeCallback.");

        final WINFOArtifact winfo = (WINFOArtifact) flys;

        return new ComputeCallbackAdapter() {

            @Override
            public Object computeAdvance(
                CallContext context,
                List<Facet> facets)
            {
                WQKms[] 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 DefaultFacet(i, LONGITUDINAL_W, nameW);
                    Facet q = new DefaultFacet(i, LONGITUDINAL_Q, nameQ);

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

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

http://dive4elements.wald.intevation.org