view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/HistoricalDischargeComputeState.java @ 2228:4db19a88bddb

Implemented the first step of Calculation6; create Facets for each calculation results. flys-artifacts/trunk@3868 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 01 Feb 2012 14:48:00 +0000
parents ebbb18ed78c4
children 7335c526befd
line wrap: on
line source
package de.intevation.flys.artifacts.states;

import java.util.List;

import org.w3c.dom.Element;

import org.apache.log4j.Logger;

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

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

import de.intevation.artifactdatabase.state.Facet;

import de.intevation.flys.artifacts.FLYSArtifact;
import de.intevation.flys.artifacts.WINFOArtifact;
import de.intevation.flys.artifacts.model.CalculationResult;
import de.intevation.flys.artifacts.model.FacetTypes;
import de.intevation.flys.artifacts.model.HistoricalDischargeFacet;
import de.intevation.flys.artifacts.model.WQTimerange;


/**
 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
 */
public class HistoricalDischargeComputeState
extends      DefaultState
implements   FacetTypes
{

    private static final Logger logger =
        Logger.getLogger(HistoricalDischargeComputeState.class);


    @Override
    protected void appendItems(
        Artifact       artifact,
        ElementCreator creator,
        String         name,
        CallContext    context,
        Element        select
    ) {
        // TODO IMPLEMENT ME
    }


    @Override
    public Object computeAdvance(
        FLYSArtifact artifact,
        String       hash,
        CallContext  context,
        List<Facet>  facets,
        Object       old
    ) {
        logger.debug("HistoricalDischargeComputeState.computeAdvance");

        WINFOArtifact winfo = (WINFOArtifact) artifact;

        CalculationResult res = old instanceof CalculationResult
            ? (CalculationResult) old
            : winfo.getHistoricalDischargeData();

        if (facets == null) {
            return res;
        }

        WQTimerange[] data = (WQTimerange[]) res.getData();
        if (data == null || data.length == 0) {
            logger.warn("Historical Discharge calculation has no results!");
            return res;
        }

        prepareFacets(facets, data);

        return res;
    }


    protected void prepareFacets(List<Facet> facets, WQTimerange[] wqts) {
        int i = 0;

        for (WQTimerange wqt: wqts) {
            logger.debug("Prepare facet for: " + wqt.getName());

            // TODO CREATE BETTER TITLE FOR FACETS

            facets.add(new HistoricalDischargeFacet(
                i++,
                HISTORICAL_DISCHARGE_Q,
                wqt.getName()));
        }
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org