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