gernotbelger@9069: /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@9069: * Software engineering by gernotbelger@9069: * Björnsen Beratende Ingenieure GmbH gernotbelger@9069: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@9069: * gernotbelger@9069: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9069: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9069: * documentation coming with Dive4Elements River for details. gernotbelger@9069: */ gernotbelger@9069: gernotbelger@9069: package org.dive4elements.river.artifacts.uinfo.inundationduration; gernotbelger@9069: mschaefer@9155: import java.util.List; mschaefer@9155: mschaefer@9155: import org.dive4elements.artifacts.common.utils.DateUtils; gernotbelger@9069: import org.dive4elements.river.artifacts.access.RangeAccess; gernotbelger@9070: import org.dive4elements.river.artifacts.common.EpochYearAccessHelper; mschaefer@9155: import org.dive4elements.river.artifacts.model.DateRange; gernotbelger@9069: import org.dive4elements.river.artifacts.uinfo.UINFOArtifact; gernotbelger@9069: import org.dive4elements.river.artifacts.uinfo.UinfoCalcMode; gernotbelger@9069: gernotbelger@9069: /** gernotbelger@9069: * Access to the flow depth calculation type specific SInfo artifact data. gernotbelger@9069: * REMARK: this class is NOT intended to be hold in the results (or anywhere else), in order to avoid a permanent gernotbelger@9069: * reference to the artifact instance. gernotbelger@9069: * Hence we do NOT cache any data. gernotbelger@9069: * gernotbelger@9069: * @author Gernot Belger gernotbelger@9069: */ gernotbelger@9069: final class InundationDurationAccess extends RangeAccess { gernotbelger@9069: gernotbelger@9069: // IMMER ABGLEICHEN MIT SuperVegZonesTablePanel.TABLE_CELL_SEPARATOR gernotbelger@9069: public static final String TABLE_CELL_SEPARATOR = "TABLE_CELL_SEPARATOR"; gernotbelger@9069: public static final String TABLE_ROW_SEPARATOR = "TABLE_ROW_SEPARATOR"; gernotbelger@9070: gernotbelger@9070: private final EpochYearAccessHelper helper; gernotbelger@9069: gernotbelger@9069: // Fields from state: gernotbelger@9069: // gernotbelger@9069: // calculation_mode (String) gernotbelger@9069: // ld_from, ld_to gernotbelger@9069: // ye_select (String; state.uinfo.totalepoch oder state.uinfo.year) gernotbelger@9069: // singleyear (String) gernotbelger@9069: // totalepoch (String; TODO: minmax totalEpoch herausfinden und setzen (nicht hier.. aber trotzdem die Erinnerung hier)) gernotbelger@9069: // use_scenario boolean (danach kommt kein radioBtn, sondern sedimentheight-Eingabe) gernotbelger@9069: // sedimentheight String gernotbelger@9069: // gernotbelger@9069: // vegzones (String) TODO: MIT VegetationzonesAccess zusammenlegen gernotbelger@9069: gernotbelger@9069: public InundationDurationAccess(final UINFOArtifact uinfo) { gernotbelger@9069: super(uinfo); gernotbelger@9069: /* assert calculation mode */ gernotbelger@9069: final UinfoCalcMode calculationMode = uinfo.getCalculationMode(); gernotbelger@9070: this.helper = new EpochYearAccessHelper(uinfo); gernotbelger@9069: assert (calculationMode == UinfoCalcMode.uinfo_inundation_duration); gernotbelger@9069: } gernotbelger@9069: gernotbelger@9069: public Double getSedimentHeight() { gernotbelger@9069: if (super.getBoolean("use_scenario")) { gernotbelger@9069: return super.getDouble("sedimentheight"); // TODO: INPUT Valdiation (nicht hier, sondern im Panel. Erinnerung) gernotbelger@9069: } gernotbelger@9069: return null; gernotbelger@9069: } gernotbelger@9069: gernotbelger@9069: public Integer getYear() { gernotbelger@9069: final int[] years = this.helper.getYears("state.uinfo.year", "singleyear"); gernotbelger@9069: if (years != null) { gernotbelger@9069: return years[0]; gernotbelger@9069: } gernotbelger@9069: return null; gernotbelger@9069: } gernotbelger@9069: gernotbelger@9069: public int[] getTotalEpoch() { mschaefer@9155: final List epochs = this.helper.getEpochs("state.uinfo.totalepoch", "totalepoch"); mschaefer@9155: if (!epochs.isEmpty()) { mschaefer@9155: return new int[] { DateUtils.getYearFromDate(epochs.get(0).getFrom()), DateUtils.getYearFromDate(epochs.get(0).getTo()) }; gernotbelger@9069: } gernotbelger@9069: return null; gernotbelger@9069: } gernotbelger@9069: gernotbelger@9070: public String getVegZones() { gernotbelger@9070: // MIT VegetationzonesAccess zusammenlegen (eine Zeile sparen...) gernotbelger@9070: return super.getString("vegzones"); gernotbelger@9069: } gernotbelger@9069: gernotbelger@9069: }