gernotbelger@8951: /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@8951: * Software engineering by gernotbelger@8951: * Björnsen Beratende Ingenieure GmbH gernotbelger@8951: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@8951: * gernotbelger@8951: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@8951: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@8951: * documentation coming with Dive4Elements River for details. gernotbelger@8951: */ gernotbelger@8951: gernotbelger@8951: package org.dive4elements.river.artifacts.sinfo.flowdepthdev; gernotbelger@8951: gernotbelger@8951: import java.util.List; gernotbelger@8951: gernotbelger@8951: import org.apache.commons.lang.math.DoubleRange; gernotbelger@8951: import org.dive4elements.river.artifacts.access.RangeAccess; gernotbelger@8951: import org.dive4elements.river.artifacts.sinfo.SINFOArtifact; gernotbelger@8951: import org.dive4elements.river.artifacts.sinfo.SinfoCalcMode; gernotbelger@8951: import org.dive4elements.river.artifacts.sinfo.flowdepth.WstSoundingIdPair; gernotbelger@8951: gernotbelger@8951: /** gernotbelger@8951: * Access to the flow depth calculation type specific SInfo artifact data. gernotbelger@8951: * REMARK: this class is NOT intended to be hold in the results (or anywhere else), in order to avoid a permanent gernotbelger@8951: * reference to the artifact instance. gernotbelger@8951: * Hence we do NOT cache any data. gernotbelger@8951: * gernotbelger@8951: * @author Gernot Belger gernotbelger@8951: */ gernotbelger@8951: final class FlowDepthDevelopmentAccess extends RangeAccess { gernotbelger@8951: gernotbelger@8951: static final String FIELD_DIFFID_CURRENT = "diffid_current"; gernotbelger@8951: static final String FIELD_DIFFID_HIST = "diffid_historical"; gernotbelger@8951: gernotbelger@8951: public FlowDepthDevelopmentAccess(final SINFOArtifact artifact) { gernotbelger@8951: super(artifact); gernotbelger@8951: gernotbelger@8951: /* assert calculation mode */ gernotbelger@8951: final SinfoCalcMode calculationMode = artifact.getCalculationMode(); gernotbelger@8951: assert (calculationMode == SinfoCalcMode.sinfo_calc_flow_depth_minmax); gernotbelger@8951: } gernotbelger@8951: gernotbelger@8951: public DoubleRange getRange() { gernotbelger@8951: final double from = getFrom(); gernotbelger@8951: final double to = getTo(); gernotbelger@8951: return new DoubleRange(from, to); gernotbelger@8951: } gernotbelger@8951: gernotbelger@8951: public WstSoundingIdPair getCurrentPair() { gernotbelger@8951: return getPair(FIELD_DIFFID_CURRENT); gernotbelger@8951: } gernotbelger@8951: gernotbelger@8951: public WstSoundingIdPair getHistoricalPair() { gernotbelger@8951: return getPair(FIELD_DIFFID_HIST); gernotbelger@8951: } gernotbelger@8951: gernotbelger@8951: private WstSoundingIdPair getPair(final String field) { gernotbelger@8951: final String diffids = getString(field); gernotbelger@8951: gernotbelger@8951: /* fetch the raw configured pairs */ gernotbelger@8951: final List diffPairs = WstSoundingIdPair.parsePairs(diffids); gernotbelger@8951: gernotbelger@8951: if (diffPairs.size() != 1) gernotbelger@8951: return null; gernotbelger@8951: gernotbelger@8951: return diffPairs.get(0); gernotbelger@8951: } gernotbelger@8951: }