gernotbelger@8854: /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@8946: * Software engineering by gernotbelger@8946: * 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: package org.dive4elements.river.artifacts.sinfo; gernotbelger@8854: gernotbelger@8854: import org.apache.commons.lang.StringUtils; gernotbelger@8854: import org.dive4elements.river.artifacts.D4EArtifact; gernotbelger@8854: gernotbelger@8854: /** gernotbelger@8869: * The default SINFO artifact. gernotbelger@8854: * gernotbelger@8854: * @author Gernot Belger gernotbelger@8854: */ gernotbelger@8946: public class SINFOArtifact extends D4EArtifact { gernotbelger@8946: gernotbelger@8946: private static final long serialVersionUID = 1L; gernotbelger@8946: gernotbelger@8854: /** Error message that is thrown if no mode has been chosen. */ gernotbelger@8946: private static final String ERROR_NO_CALCULATION_MODE = "error_feed_no_calculation_mode"; gernotbelger@8854: gernotbelger@8946: /** gernotbelger@8946: * Error message that is thrown if an invalid calculation mode has been gernotbelger@8946: * chosen. gernotbelger@8946: */ gernotbelger@8946: private static final String ERROR_INVALID_CALCULATION_MODE = "error_feed_invalid_calculation_mode"; gernotbelger@8854: gernotbelger@8854: /** The name of the artifact. */ gernotbelger@8854: private static final String ARTIFACT_NAME = "sinfo"; gernotbelger@8854: gernotbelger@8869: private static final String FIELD_RIVER = "river"; gernotbelger@8854: gernotbelger@8854: private static final String FIELD_MODE = "calculation_mode"; gernotbelger@8946: gernotbelger@8854: /** gernotbelger@8854: * Default constructor, because it's serializable. gernotbelger@8854: */ gernotbelger@8854: public SINFOArtifact() { gernotbelger@8854: } gernotbelger@8854: gernotbelger@8854: /** gernotbelger@8854: * Returns the name of the concrete artifact. gernotbelger@8854: * gernotbelger@8854: * @return the name of the concrete artifact. gernotbelger@8854: */ gernotbelger@8854: @Override gernotbelger@8854: public String getName() { gernotbelger@8854: return ARTIFACT_NAME; gernotbelger@8854: } gernotbelger@8946: gernotbelger@8854: public SinfoCalcMode getCalculationMode() { gernotbelger@8854: gernotbelger@8946: final String calc = getDataAsString(FIELD_MODE); gernotbelger@8854: if (calc == null) { gernotbelger@8946: throw new IllegalArgumentException(ERROR_NO_CALCULATION_MODE); gernotbelger@8854: } gernotbelger@8854: gernotbelger@8854: try { gernotbelger@8946: return SinfoCalcMode.valueOf(StringUtils.trimToEmpty(calc).toLowerCase()); gernotbelger@8946: } gernotbelger@8946: catch (final Exception e) { gernotbelger@8946: throw new IllegalArgumentException(ERROR_INVALID_CALCULATION_MODE, e); gernotbelger@8946: } gernotbelger@8946: } gernotbelger@8946: gernotbelger@8854: public String getRiver() { gernotbelger@8946: return getDataAsString(FIELD_RIVER); gernotbelger@8946: } gernotbelger@8854: }