gernotbelger@9071: /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@9071: * Software engineering by gernotbelger@9071: * Björnsen Beratende Ingenieure GmbH gernotbelger@9071: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@9071: * gernotbelger@9071: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9071: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9071: * documentation coming with Dive4Elements River for details. gernotbelger@9071: */ gernotbelger@9071: package org.dive4elements.river.artifacts.bundu; gernotbelger@9071: gernotbelger@9071: import org.apache.commons.lang.StringUtils; gernotbelger@9071: import org.dive4elements.artifactdatabase.state.FacetActivity; gernotbelger@9071: import org.dive4elements.river.artifacts.D4EArtifact; gernotbelger@9071: gernotbelger@9071: /** gernotbelger@9071: * The default BUNDU artifact. gernotbelger@9071: * gernotbelger@9071: * @author Gernot Belger gernotbelger@9071: */ gernotbelger@9071: public class BUNDUArtifact extends D4EArtifact { gernotbelger@9071: gernotbelger@9071: private static final long serialVersionUID = 1L; gernotbelger@9071: gernotbelger@9071: /** Error message that is thrown if no mode has been chosen. */ gernotbelger@9071: private static final String ERROR_NO_CALCULATION_MODE = "error_feed_no_calculation_mode"; gernotbelger@9071: gernotbelger@9071: /** gernotbelger@9071: * Error message that is thrown if an invalid calculation mode has been chosen. gernotbelger@9071: */ gernotbelger@9071: private static final String ERROR_INVALID_CALCULATION_MODE = "error_feed_invalid_calculation_mode"; gernotbelger@9071: gernotbelger@9071: /** The name of the artifact. */ gernotbelger@9071: private static final String ARTIFACT_NAME = "bundu"; gernotbelger@9071: gernotbelger@9071: private static final String FIELD_RIVER = "river"; gernotbelger@9071: gernotbelger@9071: private static final String FIELD_MODE = "calculation_mode"; gernotbelger@9071: gernotbelger@9071: static { gernotbelger@9071: // Active/deactivate facets. gernotbelger@9071: // BEWARE: we can only define one activity for "sinfo", so we use the artifact gernotbelger@9071: // as place for this gernotbelger@9071: FacetActivity.Registry.getInstance().register(ARTIFACT_NAME, (artifact, facet, output) -> null); gernotbelger@9071: } gernotbelger@9071: gernotbelger@9071: /** gernotbelger@9071: * Default constructor, because it's serializable. gernotbelger@9071: */ gernotbelger@9071: public BUNDUArtifact() { gernotbelger@9071: } gernotbelger@9071: gernotbelger@9071: /** gernotbelger@9071: * Returns the name of the concrete artifact. gernotbelger@9071: * gernotbelger@9071: * @return the name of the concrete artifact. gernotbelger@9071: */ gernotbelger@9071: @Override gernotbelger@9071: public String getName() { gernotbelger@9071: return ARTIFACT_NAME; gernotbelger@9071: } gernotbelger@9071: gernotbelger@9071: public BunduCalcMode getCalculationMode() { gernotbelger@9071: gernotbelger@9071: final String calc = getDataAsString(FIELD_MODE); gernotbelger@9071: if (calc == null) { gernotbelger@9071: throw new IllegalArgumentException(ERROR_NO_CALCULATION_MODE); gernotbelger@9071: } gernotbelger@9071: gernotbelger@9071: try { gernotbelger@9071: return BunduCalcMode.valueOf(StringUtils.trimToEmpty(calc).toLowerCase()); gernotbelger@9071: } gernotbelger@9071: catch (final Exception e) { gernotbelger@9071: throw new IllegalArgumentException(ERROR_INVALID_CALCULATION_MODE, e); gernotbelger@9071: } gernotbelger@9071: } gernotbelger@9071: gernotbelger@9071: public String getRiver() { gernotbelger@9071: return getDataAsString(FIELD_RIVER); gernotbelger@9071: } gernotbelger@9071: }