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@9039: import org.dive4elements.artifactdatabase.state.Facet; gernotbelger@8996: import org.dive4elements.artifactdatabase.state.FacetActivity; gernotbelger@9039: import org.dive4elements.artifacts.Artifact; gernotbelger@8996: import org.dive4elements.river.artifacts.D4EArtifact; gernotbelger@8996: gernotbelger@8996: /** gernotbelger@9036: * The default UINFO artifact. gernotbelger@8996: * gernotbelger@8996: * @author Gernot Belger gernotbelger@8996: */ gernotbelger@8996: public class UINFOArtifact extends D4EArtifact { gernotbelger@8996: gernotbelger@9036: private static final long serialVersionUID = 1L; gernotbelger@8996: gernotbelger@9036: /** Error message that is thrown if no mode has been chosen. */ gernotbelger@9036: private static final String ERROR_NO_CALCULATION_MODE = "error_feed_no_calculation_mode"; gernotbelger@8996: gernotbelger@9036: /** gernotbelger@9036: * Error message that is thrown if an invalid calculation mode has been chosen. gernotbelger@9036: */ gernotbelger@9036: private static final String ERROR_INVALID_CALCULATION_MODE = "error_feed_invalid_calculation_mode"; gernotbelger@8996: gernotbelger@9036: /** The name of the artifact. */ gernotbelger@9036: private static final String ARTIFACT_NAME = "uinfo"; gernotbelger@8996: gernotbelger@9036: private static final String FIELD_RIVER = "river"; gernotbelger@9036: gernotbelger@9036: private static final String FIELD_MODE = "calculation_mode"; gernotbelger@9036: gernotbelger@9036: static { gernotbelger@9036: // Active/deactivate facets. gernotbelger@9036: // BEWARE: we can only define one activity for "sinfo", so we use the artifact gernotbelger@9036: // as place for this gernotbelger@9039: FacetActivity.Registry.getInstance().register(ARTIFACT_NAME, new FacetActivity() { gernotbelger@9039: @Override gernotbelger@9039: public Boolean isInitialActive(final Artifact artifact, final Facet facet, final String output) { gernotbelger@9039: return null; gernotbelger@9039: } gernotbelger@9039: }); gernotbelger@9036: } gernotbelger@9036: gernotbelger@9036: /** gernotbelger@9036: * Default constructor, because it's serializable. gernotbelger@9036: */ gernotbelger@9036: public UINFOArtifact() { gernotbelger@9036: } gernotbelger@9036: gernotbelger@9036: /** gernotbelger@9036: * Returns the name of the concrete artifact. gernotbelger@9036: * gernotbelger@9036: * @return the name of the concrete artifact. gernotbelger@9036: */ gernotbelger@9036: @Override gernotbelger@9036: public String getName() { gernotbelger@9036: return ARTIFACT_NAME; gernotbelger@9036: } gernotbelger@9036: gernotbelger@9036: public UinfoCalcMode getCalculationMode() { gernotbelger@9036: gernotbelger@9036: final String calc = getDataAsString(FIELD_MODE); gernotbelger@9036: if (calc == null) { gernotbelger@9036: throw new IllegalArgumentException(ERROR_NO_CALCULATION_MODE); gernotbelger@9036: } gernotbelger@9036: gernotbelger@9036: try { gernotbelger@9036: return UinfoCalcMode.valueOf(StringUtils.trimToEmpty(calc).toLowerCase()); gernotbelger@9036: } gernotbelger@9036: catch (final Exception e) { gernotbelger@9036: throw new IllegalArgumentException(ERROR_INVALID_CALCULATION_MODE, e); gernotbelger@9036: } gernotbelger@9036: } gernotbelger@9036: gernotbelger@9036: public String getRiver() { gernotbelger@9036: return getDataAsString(FIELD_RIVER); gernotbelger@9036: } gernotbelger@8996: }