gernotbelger@9267: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde gernotbelger@9267: * Software engineering by Intevation GmbH gernotbelger@9267: * gernotbelger@9267: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9267: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9267: * documentation coming with Dive4Elements River for details. gernotbelger@9267: */ gernotbelger@9267: gernotbelger@9267: package org.dive4elements.river.artifacts.bundu.bezugswst; gernotbelger@9267: gernotbelger@9267: import org.apache.log4j.Logger; gernotbelger@9267: import org.dive4elements.river.artifacts.D4EArtifact; gernotbelger@9267: import org.dive4elements.river.artifacts.access.FixAnalysisAccess; gernotbelger@9267: gernotbelger@9267: public class BunduAccess extends FixAnalysisAccess { gernotbelger@9267: gernotbelger@9267: private static Logger log = Logger.getLogger(BunduAccess.class); gernotbelger@9267: gernotbelger@9267: // Alles, was in super steht, auskommentiert. TODO: endgültig löschen, nachdem ich es etwas verstanden habe gernotbelger@9267: gernotbelger@9267: // protected DateRange referencePeriod; gernotbelger@9267: // protected DateRange[] analysisPeriods; gernotbelger@9267: // gernotbelger@9267: // protected double[] qs; gernotbelger@9267: gernotbelger@9267: public BunduAccess(final D4EArtifact artifact) { gernotbelger@9267: super(artifact); gernotbelger@9267: } gernotbelger@9267: gernotbelger@9267: public boolean isAutoSelect() { gernotbelger@9267: final String fixChoice = this.artifact.getDataAsString("fix_choice"); gernotbelger@9366: if (fixChoice != null && fixChoice.equals("state.bundu.wst.fix.auto")) { gernotbelger@9267: return true; gernotbelger@9267: } gernotbelger@9267: return false; gernotbelger@9267: } gernotbelger@9267: gernotbelger@9267: public Integer getBezugsJahr() { gernotbelger@9267: return this.artifact.getDataAsInteger("singleyear"); gernotbelger@9267: } gernotbelger@9267: gernotbelger@9267: public int[] getEventsTemp() { gernotbelger@9267: return getIntArray("events_temp"); gernotbelger@9267: } gernotbelger@9267: gernotbelger@9277: public int getQSeriesLength() { gernotbelger@9277: return this.artifact.getDataAsInteger("year_input_q_series"); gernotbelger@9277: } gernotbelger@9277: gernotbelger@9323: public int getStartYear() { mschaefer@9396: return this.getBezugsJahr() - this.getQSeriesLength() + 1; gernotbelger@9323: } gernotbelger@9323: gernotbelger@9323: public Integer getUd() { gernotbelger@9323: if (getUd_Q_mode().equals("UD")) gernotbelger@9323: return getInteger("bundu.wst.ud_value"); gernotbelger@9323: else gernotbelger@9323: return null; gernotbelger@9323: } gernotbelger@9323: gernotbelger@9323: @Override gernotbelger@9323: public double[] getQs() { gernotbelger@9323: if (getUd_Q_mode().equals("Q")) gernotbelger@9323: return super.getQs(); gernotbelger@9323: else gernotbelger@9323: return null; gernotbelger@9323: } gernotbelger@9323: gernotbelger@9323: private String getUd_Q_mode() { gernotbelger@9323: return getString("bundu.wst.mode"); gernotbelger@9323: } gernotbelger@9323: gernotbelger@9323: public Double getMissingVolFrom() { gernotbelger@9323: if (isCalculateMissingValue()) gernotbelger@9323: return getDouble("ld_from_part"); gernotbelger@9323: else gernotbelger@9323: return null; gernotbelger@9323: } gernotbelger@9323: gernotbelger@9323: public Double getMissingVolTo() { gernotbelger@9323: if (isCalculateMissingValue()) gernotbelger@9323: return getDouble("ld_to_part"); gernotbelger@9323: else gernotbelger@9323: return null; gernotbelger@9323: } gernotbelger@9323: gernotbelger@9323: private boolean isCalculateMissingValue() { // probably public gernotbelger@9323: return getBoolean("missing_volume"); gernotbelger@9323: } gernotbelger@9323: gernotbelger@9267: // /** Access the reference date period, return null in case of 'errors'. */ gernotbelger@9267: // public DateRange getReferencePeriod() { gernotbelger@9267: // if (this.referencePeriod == null) { gernotbelger@9267: // final StateData refStart = artifact.getData("ref_start"); gernotbelger@9267: // final StateData refEnd = artifact.getData("ref_end"); gernotbelger@9267: // gernotbelger@9267: // if (refStart == null || refEnd == null) { gernotbelger@9267: // log.warn("missing 'ref_start' or 'ref_start' value"); gernotbelger@9267: // return null; gernotbelger@9267: // } gernotbelger@9267: // gernotbelger@9267: // try { gernotbelger@9267: // long rs = Long.parseLong((String) refStart.getValue()); gernotbelger@9267: // long re = Long.parseLong((String) refEnd.getValue()); gernotbelger@9267: // gernotbelger@9267: // if (rs > re) { gernotbelger@9267: // final long t = rs; gernotbelger@9267: // rs = re; gernotbelger@9267: // re = t; gernotbelger@9267: // } gernotbelger@9267: // gernotbelger@9267: // final Date from = new Date(rs); gernotbelger@9267: // final Date to = new Date(re); gernotbelger@9267: // this.referencePeriod = new DateRange(from, to); gernotbelger@9267: // } gernotbelger@9267: // catch (final NumberFormatException nfe) { gernotbelger@9267: // log.warn("ref_start or ref_end is not an integer."); gernotbelger@9267: // } gernotbelger@9267: // } gernotbelger@9267: // gernotbelger@9267: // return this.referencePeriod; gernotbelger@9267: // } gernotbelger@9267: gernotbelger@9267: // @Override gernotbelger@9267: // public DateRange[] getAnalysisPeriods() { gernotbelger@9267: // if (this.analysisPeriods == null) { gernotbelger@9267: // this.analysisPeriods = getDateRange("ana_data"); gernotbelger@9267: // } gernotbelger@9267: // gernotbelger@9267: // return this.analysisPeriods; gernotbelger@9267: // } gernotbelger@9267: gernotbelger@9267: /** gernotbelger@9267: * @return DateRange object ranging from eldest to youngest date gernotbelger@9267: * of analysis and reference periods. gernotbelger@9267: */ gernotbelger@9267: // @Override gernotbelger@9267: // public DateRange getDateRange() { gernotbelger@9267: // final DateRange refP = getReferencePeriod(); gernotbelger@9267: // gernotbelger@9267: // if (refP == null) { gernotbelger@9267: // return null; gernotbelger@9267: // } gernotbelger@9267: // gernotbelger@9267: // Date from = refP.getFrom(); gernotbelger@9267: // Date to = refP.getTo(); gernotbelger@9267: // gernotbelger@9267: // final DateRange[] rs = getAnalysisPeriods(); gernotbelger@9267: // for (final DateRange r : rs) { gernotbelger@9267: // if (r.getFrom().before(from)) { gernotbelger@9267: // from = r.getFrom(); gernotbelger@9267: // } gernotbelger@9267: // if (r.getTo().after(to)) { gernotbelger@9267: // to = r.getTo(); gernotbelger@9267: // } gernotbelger@9267: // } gernotbelger@9267: // gernotbelger@9267: // return new DateRange(from, to); gernotbelger@9267: // } gernotbelger@9267: gernotbelger@9267: // @Override gernotbelger@9267: // public double[] getQs() { gernotbelger@9267: // if (this.qs == null) { gernotbelger@9267: // this.qs = getDoubleArray("qs"); gernotbelger@9267: // } gernotbelger@9267: // gernotbelger@9267: // if (log.isDebugEnabled() && this.qs != null) { gernotbelger@9267: // log.debug("qs: " + Arrays.toString(this.qs)); gernotbelger@9267: // } gernotbelger@9267: // return this.qs; gernotbelger@9267: // } gernotbelger@9267: } gernotbelger@9267: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :