gernotbelger@9274: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
gernotbelger@9274: * Software engineering by Intevation GmbH
gernotbelger@9072: *
gernotbelger@9072: * This file is Free Software under the GNU AGPL (>=v3)
gernotbelger@9072: * and comes with ABSOLUTELY NO WARRANTY! Check out the
gernotbelger@9072: * documentation coming with Dive4Elements River for details.
gernotbelger@9072: */
gernotbelger@9274:
gernotbelger@9072: package org.dive4elements.river.artifacts.bundu.bezugswst;
gernotbelger@9072:
gernotbelger@9274: import java.util.List;
gernotbelger@9274:
gernotbelger@9274: import org.apache.log4j.Logger;
gernotbelger@9274: import org.dive4elements.artifactdatabase.state.Facet;
gernotbelger@9274: import org.dive4elements.artifacts.CallContext;
gernotbelger@9274: import org.dive4elements.river.artifacts.D4EArtifact;
gernotbelger@9313: import org.dive4elements.river.artifacts.bundu.BUNDUArtifact;
gernotbelger@9274: import org.dive4elements.river.artifacts.model.CalculationResult;
gernotbelger@9274: import org.dive4elements.river.artifacts.model.DataFacet;
gernotbelger@9274: import org.dive4elements.river.artifacts.model.FacetTypes;
gernotbelger@9072: import org.dive4elements.river.artifacts.states.DefaultState;
gernotbelger@9072:
gernotbelger@9072: /**
gernotbelger@9274: * State to compute the fixation realizing (vollmer) results.
gernotbelger@9274: *
gernotbelger@9274: * @author Raimund Renkert
gernotbelger@9072: */
gernotbelger@9274: public class BezugswstState extends DefaultState implements FacetTypes {
gernotbelger@9072:
gernotbelger@9274: /*
gernotbelger@9274: * TODO: THIS CLASS IS A CLONE OF FixRealizingCompute
gernotbelger@9274: * +
gernotbelger@9274: * ++
gernotbelger@9274: * +++
gernotbelger@9274: * ++++
gernotbelger@9274: * +++++
gernotbelger@9274: * ++++++
gernotbelger@9274: * +++++++
gernotbelger@9274: * ++++++++
gernotbelger@9274: * +++++++++
gernotbelger@9274: * ++++++++++
gernotbelger@9274: * +++++++++++
gernotbelger@9274: * IT does not work here
gernotbelger@9274: */
gernotbelger@9072:
gernotbelger@9274: /** The log used in this class. */
gernotbelger@9274: private static Logger log = Logger.getLogger(BezugswstState.class);
gernotbelger@9274:
gernotbelger@9274: public static final String I18N_WQ_CURVE = "fix.vollmer.wq.curve";
gernotbelger@9274:
gernotbelger@9274: public static final String I18N_WQ_OUTLIER = "fix.vollmer.wq.outliers";
gernotbelger@9072:
gernotbelger@9072: /**
gernotbelger@9274: * The default constructor that initializes an empty State object.
gernotbelger@9072: */
gernotbelger@9274: public BezugswstState() {
gernotbelger@9072: }
gernotbelger@9072:
gernotbelger@9274: @Override
gernotbelger@9274: public Object computeAdvance(final D4EArtifact artifact, final String hash, final CallContext context, final List facets, final Object old) {
gernotbelger@9274: log.debug("BezugswstState.computeAdvance");
gernotbelger@9274:
gernotbelger@9313: // final CalculationResult res;
gernotbelger@9313: //
gernotbelger@9313: // final FixRealizingAccess access = new FixRealizingAccess(artifact);
gernotbelger@9313: //
gernotbelger@9313: // if (old instanceof CalculationResult) {
gernotbelger@9313: // res = (CalculationResult) old;
gernotbelger@9313: // } else {
gernotbelger@9313: //
gernotbelger@9313: // final FixRealizingCalculation calc = new FixRealizingCalculation(access);
gernotbelger@9313: // res = calc.calculate();
gernotbelger@9313: // }
gernotbelger@9313: //
gernotbelger@9313: // if (facets == null) {
gernotbelger@9313: // return res;
gernotbelger@9313: // }
gernotbelger@9313: //
gernotbelger@9313: // if (res.getReport().hasProblems()) {
gernotbelger@9313: // facets.add(new ReportFacet());
gernotbelger@9313: // }
gernotbelger@9313: //
gernotbelger@9313: // final String id = getID();
gernotbelger@9313: // final CallMeta meta = context.getMeta();
gernotbelger@9313: //
gernotbelger@9313: // final FixRealizingResult fixRes = (FixRealizingResult) res.getData();
gernotbelger@9313: // final WQKms[] wqkms = fixRes != null ? fixRes.getWQKms() : new WQKms[0];
gernotbelger@9313: //
gernotbelger@9313: // for (int i = 0; i < wqkms.length; i++) {
gernotbelger@9313: // String nameW = null;
gernotbelger@9313: // String nameQ = null;
gernotbelger@9313: //
gernotbelger@9313: // if (access.isQ()) {
gernotbelger@9313: // nameQ = wqkms[i].getName();
gernotbelger@9313: // nameW = "W(" + nameQ + ")";
gernotbelger@9313: // } else {
gernotbelger@9313: // nameW = wqkms[i].getName();
gernotbelger@9313: // nameQ = "Q(" + nameW + ")";
gernotbelger@9313: // }
gernotbelger@9313: //
gernotbelger@9313: // final Facet wq = new FixWaterlevelFacet(i, FIX_WQ_LS, nameW, ComputeType.ADVANCE, hash, id);
gernotbelger@9313: //
gernotbelger@9313: // final Facet w = new FixWaterlevelFacet(i, LONGITUDINAL_W, nameW, ComputeType.ADVANCE, hash, id);
gernotbelger@9313: //
gernotbelger@9313: // final Facet q = new FixWaterlevelFacet(i, LONGITUDINAL_Q, nameQ, ComputeType.ADVANCE, hash, id);
gernotbelger@9313: // final Facet csFacet = new CrossSectionWaterLineFacet(i, nameW);
gernotbelger@9313: //
gernotbelger@9313: // facets.add(wq);
gernotbelger@9313: // facets.add(w);
gernotbelger@9313: // facets.add(q);
gernotbelger@9313: // facets.add(csFacet);
gernotbelger@9313: //
gernotbelger@9313: // // XXX: THIS CAN NOT HAPPEN! REMOVE IT!
gernotbelger@9313: // if (wqkms[i] instanceof WQCKms) {
gernotbelger@9313: // final String nameC = nameW.replace("benutzerdefiniert", "benutzerdefiniert [korrigiert]");
gernotbelger@9313: //
gernotbelger@9313: // final Facet c = new FixWaterlevelFacet(i, DISCHARGE_LONGITUDINAL_C, nameC);
gernotbelger@9313: //
gernotbelger@9313: // facets.add(c);
gernotbelger@9313: // }
gernotbelger@9313: // }
gernotbelger@9313: //
gernotbelger@9313: // if (wqkms.length > 0) {
gernotbelger@9313: // final DateFormat df = Formatter.getDateFormatter(context.getMeta(), "dd.MM.yyyy");
gernotbelger@9313: // final DateFormat lf = Formatter.getDateFormatter(context.getMeta(), "dd.MM.yyyy'T'HH:mm");
gernotbelger@9313: //
gernotbelger@9313: // final Collection reds = fixRes.getReferenceEventsDates();
gernotbelger@9313: // final UniqueDateFormatter cf = new UniqueDateFormatter(df, lf, reds);
gernotbelger@9313: //
gernotbelger@9313: // int i = 0;
gernotbelger@9313: // for (final Date d : reds) {
gernotbelger@9313: // facets.add(new FixReferenceEventsFacet((1 << 9) | i, FIX_EVENTS, cf.format(d)));
gernotbelger@9313: // i++;
gernotbelger@9313: // }
gernotbelger@9313: //
gernotbelger@9313: // facets.add(new DataFacet(CSV, "CSV data", ComputeType.ADVANCE, hash, id));
gernotbelger@9313: //
gernotbelger@9313: // facets.add(new DataFacet(WST, "WST data", ComputeType.ADVANCE, hash, id));
gernotbelger@9313: //
gernotbelger@9313: // facets.add(new DataFacet(PDF, "PDF data", ComputeType.ADVANCE, hash, id));
gernotbelger@9313: // }
gernotbelger@9313: //
gernotbelger@9313: // facets.add(new DataFacet(AT, "AT data", ComputeType.ADVANCE, hash, id));
gernotbelger@9313: //
gernotbelger@9313: // facets.add(new FixWQCurveFacet(0, Resources.getMsg(meta, I18N_WQ_CURVE, I18N_WQ_CURVE) + " (" + access.getFunction()
gernotbelger@9313: // + ")"));
gernotbelger@9313: //
gernotbelger@9313: // if (access.getPreprocessing()) {
gernotbelger@9313: // facets.add(new FixOutlierFacet(0, FIX_OUTLIER, Resources.getMsg(meta, I18N_WQ_OUTLIER, I18N_WQ_OUTLIER)));
gernotbelger@9313: // }
gernotbelger@9313: return compute((BUNDUArtifact) artifact, context, hash, facets, old);
gernotbelger@9313: }
gernotbelger@9274:
gernotbelger@9313: @Override
gernotbelger@9313: public Object computeFeed(final D4EArtifact artifact, final String hash, final CallContext context, final List facets, final Object old) {
gernotbelger@9274:
gernotbelger@9313: return compute((BUNDUArtifact) artifact, context, hash, facets, old);
gernotbelger@9313: }
gernotbelger@9274:
gernotbelger@9313: private Object compute(final BUNDUArtifact artifact, final CallContext context, final String hash, final List facets, final Object old) {
gernotbelger@9274:
gernotbelger@9313: final BezugswstCalculation s = new BezugswstCalculation(context);
gernotbelger@9313: final CalculationResult res = s.calculate(artifact);
gernotbelger@9274:
gernotbelger@9313: if (facets == null)
gernotbelger@9313: return res;
gernotbelger@9274:
gernotbelger@9313: // if (!((List) res).isEmpty()) {
gernotbelger@9313: final Facet csv = new DataFacet(FacetTypes.CSV, "CSV data", ComputeType.ADVANCE, hash, this.id);
gernotbelger@9313: final Facet pdf = new DataFacet(FacetTypes.PDF, "PDF data", ComputeType.ADVANCE, hash, this.id);
gernotbelger@9313:
gernotbelger@9313: facets.add(csv);
gernotbelger@9313: facets.add(pdf);
gernotbelger@9313: // }
gernotbelger@9274:
gernotbelger@9274: return res;
gernotbelger@9274: }
gernotbelger@9313:
gernotbelger@9274: }