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.vegetationzones; gernotbelger@9069: gernotbelger@9069: import java.util.ArrayList; gernotbelger@9069: gernotbelger@9069: import org.apache.commons.lang.math.DoubleRange; gernotbelger@9069: import org.dive4elements.river.artifacts.access.RangeAccess; gernotbelger@9069: import org.dive4elements.river.artifacts.common.AccessHelper; 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 VegetationzonesAccess 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@9069: private final AccessHelper helper; gernotbelger@9069: gernotbelger@9069: // Fields from state: gernotbelger@9069: // calculation_mode (String) gernotbelger@9069: // ld_from, ld_to,ld_step gernotbelger@9069: // vegzones (String) gernotbelger@9069: gernotbelger@9069: public VegetationzonesAccess(final UINFOArtifact uinfo) { gernotbelger@9069: super(uinfo); gernotbelger@9069: gernotbelger@9069: /* assert calculation mode */ gernotbelger@9069: final UinfoCalcMode calculationMode = uinfo.getCalculationMode(); gernotbelger@9069: this.helper = new AccessHelper(uinfo); gernotbelger@9069: assert (calculationMode == UinfoCalcMode.uinfo_vegetation_zones); gernotbelger@9069: } gernotbelger@9069: gernotbelger@9069: public DoubleRange getRange() { gernotbelger@9069: final double from = getFrom(); gernotbelger@9069: final double to = getTo(); gernotbelger@9069: return new DoubleRange(from, to); gernotbelger@9069: } gernotbelger@9069: gernotbelger@9069: public ArrayList getVegZones() { gernotbelger@9069: final ArrayList results = new ArrayList<>(); gernotbelger@9069: final String zonesRaw = super.getString("vegzones"); gernotbelger@9069: if (zonesRaw.contains(TABLE_ROW_SEPARATOR)) { gernotbelger@9069: final String[] rows = zonesRaw.split(TABLE_ROW_SEPARATOR); gernotbelger@9069: for (final String row : rows) { gernotbelger@9069: if (row.contains(TABLE_CELL_SEPARATOR)) { gernotbelger@9069: final String[] result = row.split(TABLE_CELL_SEPARATOR); gernotbelger@9069: results.add(result); gernotbelger@9069: } gernotbelger@9069: } gernotbelger@9069: } gernotbelger@9069: return results; gernotbelger@9069: } gernotbelger@9069: gernotbelger@9069: }