view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/ComputedDischargeCurveState.java @ 4198:1cdbd8a0c994

Added two new tables ClickableQDTable and ClickableWTable and made Ws and Qs clickable in historical discharge calculation. The new tables define listener interfaces (clicked lower or upper icon) to listen to user clicks. In addition to this, there is an enum ClickMode with NONE, SINGLE and RANGE options, which allows to specifiy, which icons are displayed in the tables. NONE means no icon for user clicks, SINGLE has 1 icon, RANGE 2 icons for lower and upper.
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Mon, 22 Oct 2012 13:31:25 +0200
parents c1f445b94d03
children 5fb103635427
line wrap: on
line source
package de.intevation.flys.artifacts.states;

import java.util.List;

import org.apache.log4j.Logger;

import de.intevation.artifacts.CallContext;

import de.intevation.artifactdatabase.state.Facet;

import de.intevation.flys.artifacts.FLYSArtifact;
import de.intevation.flys.artifacts.WINFOArtifact;
import de.intevation.flys.artifacts.ChartArtifact;

import de.intevation.flys.artifacts.model.FacetTypes;
import de.intevation.flys.artifacts.model.WaterlevelFacet;
import de.intevation.flys.artifacts.model.DataFacet;
import de.intevation.flys.artifacts.model.ReportFacet;
import de.intevation.flys.artifacts.model.EmptyFacet;
import de.intevation.flys.artifacts.model.WQKms;
import de.intevation.flys.artifacts.model.CalculationResult;

import de.intevation.flys.artifacts.resources.Resources;

import de.intevation.flys.utils.FLYSUtils;

/**
 * The final state that will be reached after the discharge curve calculation
 * mode has been chosen.
 *
 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
 */
public class ComputedDischargeCurveState
extends      DefaultState
implements   FacetTypes
{
    /** The logger that is used in this state.*/
    private static Logger logger =
        Logger.getLogger(ComputedDischargeCurveState.class);

    public ComputedDischargeCurveState() {
    }


    /**
     * Get computed discharge curve data from cache (if available) or
     * compute anew. Create Waterlevel and DataFacets.
     */
    @Override
    public Object computeAdvance(
        FLYSArtifact artifact,
        String       hash,
        CallContext  context,
        List<Facet>  facets,
        Object       old
    ) {
        logger.debug("ComputedDischargeCurveState.computeAdvance");
        if(artifact instanceof WINFOArtifact) {
            WINFOArtifact winfo = (WINFOArtifact)artifact;

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

            WQKms [] wqkms = (WQKms [])res.getData();

            if (facets != null && wqkms.length > 0) {
                for (int i = 0; i < wqkms.length; ++i) {

                    Object[] args = new Object[] {
                        FLYSUtils.getRiver(winfo).getName(),
                        wqkms[i].getName()
                    };

                    String name = Resources.getMsg(
                        context.getMeta(),
                        "chart.computed.discharge.curve.curve.label",
                        "",
                        args);

                    facets.add(new WaterlevelFacet(i, COMPUTED_DISCHARGE_Q, name));
                    facets.add(new WaterlevelFacet(i, AT, "AT data"));
                }

                facets.add(new DataFacet(CSV, "CSV data"));
                facets.add(new DataFacet(PDF, "PDF data"));

                if (res.getReport().hasProblems()) {
                    facets.add(new ReportFacet());
                }
            }

            return res;
        }
        else if(artifact instanceof ChartArtifact) {
            ChartArtifact chart = (ChartArtifact)artifact;
            facets.add(new EmptyFacet());
            return null;
        }
        return null;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org