view artifacts/src/main/java/org/dive4elements/river/artifacts/bundu/bezugswst/BezugswstState.java @ 9318:7b2b086e45f0

collision pdf details, ResultType refactoring, bezugswst result
author gernotbelger
date Fri, 27 Jul 2018 10:11:23 +0200
parents 6ffcbb4f35d5
children ddcd52d239cd
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU AGPL (>=v3)
 * and comes with ABSOLUTELY NO WARRANTY! Check out the
 * documentation coming with Dive4Elements River for details.
 */

package org.dive4elements.river.artifacts.bundu.bezugswst;

import java.util.List;

import org.apache.log4j.Logger;
import org.dive4elements.artifactdatabase.state.Facet;
import org.dive4elements.artifacts.CallContext;
import org.dive4elements.river.artifacts.D4EArtifact;
import org.dive4elements.river.artifacts.bundu.BUNDUArtifact;
import org.dive4elements.river.artifacts.model.CalculationResult;
import org.dive4elements.river.artifacts.model.DataFacet;
import org.dive4elements.river.artifacts.model.FacetTypes;
import org.dive4elements.river.artifacts.states.DefaultState;

/**
 * State to compute the fixation realizing (vollmer) results.
 *
 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
 */
public class BezugswstState extends DefaultState implements FacetTypes {

    private static final long serialVersionUID = 1L;

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

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

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

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

    @Override
    public Object computeAdvance(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) {
        log.debug("BezugswstState.computeAdvance");
        // TODO: remove this old stuff, or replace it by new
        // final CalculationResult res;
        //
        // final FixRealizingAccess access = new FixRealizingAccess(artifact);
        //
        // if (old instanceof CalculationResult) {
        // res = (CalculationResult) old;
        // } else {
        //
        // final FixRealizingCalculation calc = new FixRealizingCalculation(access);
        // res = calc.calculate();
        // }
        //
        // if (facets == null) {
        // return res;
        // }
        //
        // if (res.getReport().hasProblems()) {
        // facets.add(new ReportFacet());
        // }
        //
        // final String id = getID();
        // final CallMeta meta = context.getMeta();
        //
        // final FixRealizingResult fixRes = (FixRealizingResult) res.getData();
        // final 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 + ")";
        // }
        //
        // final Facet wq = new FixWaterlevelFacet(i, FIX_WQ_LS, nameW, ComputeType.ADVANCE, hash, id);
        //
        // final Facet w = new FixWaterlevelFacet(i, LONGITUDINAL_W, nameW, ComputeType.ADVANCE, hash, id);
        //
        // final Facet q = new FixWaterlevelFacet(i, LONGITUDINAL_Q, nameQ, ComputeType.ADVANCE, hash, id);
        // final Facet csFacet = new CrossSectionWaterLineFacet(i, nameW);
        //
        // facets.add(wq);
        // facets.add(w);
        // facets.add(q);
        // facets.add(csFacet);
        //
        // // XXX: THIS CAN NOT HAPPEN! REMOVE IT!
        // if (wqkms[i] instanceof WQCKms) {
        // final String nameC = nameW.replace("benutzerdefiniert", "benutzerdefiniert [korrigiert]");
        //
        // final Facet c = new FixWaterlevelFacet(i, DISCHARGE_LONGITUDINAL_C, nameC);
        //
        // facets.add(c);
        // }
        // }
        //
        // if (wqkms.length > 0) {
        // final DateFormat df = Formatter.getDateFormatter(context.getMeta(), "dd.MM.yyyy");
        // final DateFormat lf = Formatter.getDateFormatter(context.getMeta(), "dd.MM.yyyy'T'HH:mm");
        //
        // final Collection<Date> reds = fixRes.getReferenceEventsDates();
        // final UniqueDateFormatter cf = new UniqueDateFormatter(df, lf, reds);
        //
        // int i = 0;
        // for (final Date d : reds) {
        // facets.add(new FixReferenceEventsFacet((1 << 9) | i, FIX_EVENTS, cf.format(d)));
        // i++;
        // }
        //
        // 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 DataFacet(AT, "AT data", ComputeType.ADVANCE, hash, id));
        //
        // facets.add(new FixWQCurveFacet(0, Resources.getMsg(meta, I18N_WQ_CURVE, I18N_WQ_CURVE) + " (" + access.getFunction()
        // + ")"));
        //
        // if (access.getPreprocessing()) {
        // facets.add(new FixOutlierFacet(0, FIX_OUTLIER, Resources.getMsg(meta, I18N_WQ_OUTLIER, I18N_WQ_OUTLIER)));
        // }
        return compute((BUNDUArtifact) artifact, context, hash, facets, old);
    }

    @Override
    public Object computeFeed(final D4EArtifact artifact, final String hash, final CallContext context, final List<Facet> facets, final Object old) {

        return compute((BUNDUArtifact) artifact, context, hash, facets, old);
    }

    private Object compute(final BUNDUArtifact artifact, final CallContext context, final String hash, final List<Facet> facets, final Object old) {

        final BezugswstCalculation s = new BezugswstCalculation(context);
        final CalculationResult res = s.calculate(artifact);

        if (facets == null)
            return res;

        final Facet csv = new DataFacet(FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, this.id);
        final Facet pdf = new DataFacet(FacetTypes.PDF, "PDF data", ComputeType.ADVANCE, hash, this.id);

        facets.add(csv);
        facets.add(pdf);

        return res;
    }

}

http://dive4elements.wald.intevation.org