gernotbelger@8854: /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@8915: * Software engineering by gernotbelger@8915: * Björnsen Beratende Ingenieure GmbH gernotbelger@8854: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@8854: * gernotbelger@8854: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@8854: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@8854: * documentation coming with Dive4Elements River for details. gernotbelger@8854: */ gernotbelger@8854: gernotbelger@8854: package org.dive4elements.river.artifacts.sinfo.flowdepth; gernotbelger@8854: gernotbelger@8854: import java.util.Collection; gernotbelger@8854: import java.util.Collections; gernotbelger@8854: gernotbelger@8854: import org.dive4elements.river.artifacts.access.RangeAccess; gernotbelger@8854: import org.dive4elements.river.artifacts.sinfo.SINFOArtifact; gernotbelger@8854: import org.dive4elements.river.artifacts.sinfo.SinfoCalcMode; gernotbelger@8854: gernotbelger@8854: /** gernotbelger@8854: * Access to the flow depth calculation type specific SInfo artifact data. gernotbelger@8915: * REMARK: this class is NOT intended to be hold in the results (or anywhere else), in order to avoid a permanent gernotbelger@8915: * reference to the artifact instance. gernotbelger@8854: * Hence we do NOT cache any data. gernotbelger@8915: * gernotbelger@8854: * @author Gernot Belger gernotbelger@8854: */ gernotbelger@8915: final class FlowDepthAccess extends RangeAccess { gernotbelger@8854: gernotbelger@9067: private static final String FIELD_DIFFIDS = "diffids"; //$NON-NLS-1$ gernotbelger@8854: gernotbelger@8915: private static final String FIELD_USE_TKH = "use_transport_bodies"; //$NON-NLS-1$ gernotbelger@8854: gernotbelger@8915: public FlowDepthAccess(final SINFOArtifact artifact) { gernotbelger@8915: super(artifact); gernotbelger@8915: gernotbelger@8915: /* assert calculation mode */ gernotbelger@8915: final SinfoCalcMode calculationMode = artifact.getCalculationMode(); gernotbelger@8915: assert (calculationMode == SinfoCalcMode.sinfo_calc_flow_depth); gernotbelger@8915: } gernotbelger@8915: gernotbelger@8915: public boolean isUseTransportBodies() { gernotbelger@8915: final Boolean useTkh = this.artifact.getDataAsBoolean(FIELD_USE_TKH); gernotbelger@8915: return useTkh == null ? false : useTkh; gernotbelger@8915: } gernotbelger@8915: gernotbelger@8946: public Collection getDifferencePairs() { gernotbelger@8915: gernotbelger@8946: final String diffids = getString(FIELD_DIFFIDS); gernotbelger@8915: if (diffids == null) { gernotbelger@8915: // Should never happen as this is handled by the ui gernotbelger@8915: return Collections.emptyList(); gernotbelger@8915: } gernotbelger@8915: gernotbelger@9221: return WstSoundingIdPair.parsePairs(diffids); gernotbelger@8915: } gernotbelger@8854: }