view flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/fixation/FixRealizingCompute.java @ 4496:d8992459b408

Add method to return the facets of an artifact This methos should be used to get the facets of an artifact instead of accessing the facets member variable directly.
author Björn Ricks <bjoern.ricks@intevation.de>
date Wed, 14 Nov 2012 11:11:04 +0100
parents d52c4ca93ffb
children acd7437f66f0
line wrap: on
line source
package de.intevation.flys.artifacts.states.fixation;

import java.util.List;

import org.apache.log4j.Logger;

import de.intevation.artifactdatabase.state.Facet;
import de.intevation.artifacts.CallContext;
import de.intevation.artifacts.CallMeta;
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.DataFacet;
import de.intevation.flys.artifacts.model.FacetTypes;
import de.intevation.flys.artifacts.model.ReportFacet;
import de.intevation.flys.artifacts.model.WQCKms;
import de.intevation.flys.artifacts.model.WQKms;
import de.intevation.flys.artifacts.model.fixings.FixOutlierFacet;
import de.intevation.flys.artifacts.model.fixings.FixRealizingCalculation;
import de.intevation.flys.artifacts.model.fixings.FixRealizingResult;
import de.intevation.flys.artifacts.model.fixings.FixReferenceEventsFacet;
import de.intevation.flys.artifacts.model.fixings.FixWQCurveFacet;
import de.intevation.flys.artifacts.model.fixings.FixWaterlevelFacet;
import de.intevation.flys.artifacts.resources.Resources;
import de.intevation.flys.artifacts.states.DefaultState;

/**
 * @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);


    public static final String I18N_WQ_CURVE = "fix.vollmer.wq.curve";

    public static final String I18N_WQ_OUTLIER = "fix.vollmer.wq.outliers";

    public static final String I18N_WQ_EVENTS = "fix.vollmer.wq.events";


    /**
     * 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());
        }

        String   id   = getID();
        CallMeta meta = context.getMeta();

        FixRealizingResult fixRes = (FixRealizingResult) res.getData();
        WQKms [] wqkms = fixRes != null ? fixRes.getWQKms() : new WQKms[0];

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

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

            Facet w = new FixWaterlevelFacet(
                i, LONGITUDINAL_W, nameW);

            Facet q = new FixWaterlevelFacet(
                i, LONGITUDINAL_Q, nameQ);

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

            if (wqkms[i] instanceof WQCKms) {
                String nameC = nameW.replace(
                    "benutzerdefiniert",
                    "benutzerdefiniert [korrigiert]");

                Facet c = new FixWaterlevelFacet(
                    i, DISCHARGE_LONGITUDINAL_C, nameC);

                facets.add(c);
            }
        }

        if (wqkms.length > 0) {
            facets.add(
                new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id));

            facets.add(
                new DataFacet(WST, "WST data", ComputeType.ADVANCE, hash, id));

            facets.add(
                new DataFacet(PDF, "PDF data", ComputeType.ADVANCE, hash, id));
        }

        facets.add(new FixWQCurveFacet(
            0, Resources.getMsg(meta, I18N_WQ_CURVE, I18N_WQ_CURVE)));

        facets.add(new FixReferenceEventsFacet(
            0,
            FIX_REFERENCE_EVENTS_WQ,
            Resources.getMsg(meta, I18N_WQ_EVENTS, I18N_WQ_EVENTS)));

        facets.add(new FixOutlierFacet(
            0,
            FIX_OUTLIER,
            Resources.getMsg(meta, I18N_WQ_OUTLIER, I18N_WQ_OUTLIER)));

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

http://dive4elements.wald.intevation.org