view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/fixation/FixRealizingCompute.java @ 3459:7485338aedff

Also add Q-facets for fixrealization. flys-artifacts/trunk@5125 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 25 Jul 2012 12:10:55 +0000
parents 35ead8fadc36
children d625f4d06b6a
line wrap: on
line source
package de.intevation.flys.artifacts.states.fixation;

import de.intevation.artifactdatabase.state.Facet;

import de.intevation.artifacts.CallContext;

import de.intevation.flys.artifacts.FLYSArtifact;

import de.intevation.flys.artifacts.access.FixRealizingAccess;

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

import de.intevation.flys.artifacts.model.fixings.FixRealizingCalculation;
import de.intevation.flys.artifacts.model.fixings.FixRealizingResult;

import de.intevation.flys.artifacts.states.DefaultState;

import java.util.List;

import org.apache.log4j.Logger;


/**
 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
 */
public class FixRealizingCompute extends DefaultState implements FacetTypes {

    /** The logger used in this class. */
    private static Logger logger = Logger.getLogger(FixRealizingCompute.class);

    /**
     * The default constructor that initializes an empty State object.
     */
    public FixRealizingCompute() {
    }

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

        CalculationResult res;

        FixRealizingAccess access =
            new FixRealizingAccess(artifact);

        if (old instanceof CalculationResult) {
            res = (CalculationResult)old;
        }
        else {
            FixRealizingCalculation calc = new FixRealizingCalculation(access);
            res = calc.calculate();
        }

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

        if (res.getReport().hasProblems()) {
            facets.add(new ReportFacet(ComputeType.ADVANCE, hash, id));
        }

        // TODO: Add more facets.
        FixRealizingResult fr = (FixRealizingResult) res.getData();

        /*
        facets.add(
            new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id));
        */

        // WaterlevelFacet
        // Also: DataFacet and WQstuff
        // TODO naming, i18n.
        String nameW = "waterlevel";
        String nameQ = "discharge";
        WQKms[] wqkms = fr.getWQKms();
        for (int i = 0; i < wqkms.length; i++) {
            facets.add(new WaterlevelFacet(
                               i, LONGITUDINAL_W, nameW, ComputeType.ADVANCE, id, hash));
            facets.add(new WaterlevelFacet(
                               i, LONGITUDINAL_Q, nameQ, ComputeType.ADVANCE, id, hash));
        }

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

http://dive4elements.wald.intevation.org