Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/SINFOArtifact.java @ 9609:8232a3f5967b
#20 SinfoResultType
author | dnt_bjoernsen <d.tironi@bjoernsen.de> |
---|---|
date | Wed, 09 Oct 2019 15:43:39 +0200 |
parents | fbfd66e8fb81 |
children | 1d4262a68f1f |
line wrap: on
line source
/* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde * Software engineering by * Björnsen Beratende Ingenieure GmbH * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.artifacts.sinfo; import org.apache.commons.lang.StringUtils; import org.dive4elements.artifactdatabase.state.Facet; import org.dive4elements.artifactdatabase.state.FacetActivity; import org.dive4elements.artifacts.Artifact; import org.dive4elements.river.artifacts.D4EArtifact; import org.dive4elements.river.artifacts.sinfo.common.D50Processor; import org.dive4elements.river.artifacts.sinfo.common.FlowDepthDevelopmentPerYearProcessor; import org.dive4elements.river.artifacts.sinfo.common.FlowDepthDevelopmentProcessor; import org.dive4elements.river.artifacts.sinfo.common.FlowDepthProcessor; import org.dive4elements.river.artifacts.sinfo.common.TauProcessor; import org.dive4elements.river.artifacts.sinfo.common.VelocityProcessor; /** * The default SINFO artifact. * * @author Gernot Belger */ public class SINFOArtifact extends D4EArtifact { private static final long serialVersionUID = 1L; /** Error message that is thrown if no mode has been chosen. */ private static final String ERROR_NO_CALCULATION_MODE = "error_feed_no_calculation_mode"; /** * Error message that is thrown if an invalid calculation mode has been * chosen. */ private static final String ERROR_INVALID_CALCULATION_MODE = "error_feed_invalid_calculation_mode"; /** The name of the artifact. */ private static final String ARTIFACT_NAME = "sinfo"; private static final String FIELD_RIVER = "river"; private static final String FIELD_MODE = "calculation_mode"; static { // Active/deactivate facets. // BEWARE: we can only define one activity for "sinfo", so we use the artifact as place for this FacetActivity.Registry.getInstance().register("sinfo", new FacetActivity() { @Override public Boolean isInitialActive(final Artifact artifact, final Facet facet, final String output) { final String name = facet.getName(); if ("sinfo_tkk".equals(output)) { if (FlowDepthProcessor.FACET_FLOW_DEPTH_FILTERED.equals(name)) return Boolean.FALSE; if (VelocityProcessor.FACET_TKH_VELOCITY_FILTERED.equals(name)) return Boolean.FALSE; if (TauProcessor.FACET_TKH_TAU_FILTERED.equals(name)) return Boolean.FALSE; if (D50Processor.FACET_TKH_D50_FILTERED.equals(name)) return Boolean.FALSE; } if ("sinfo_flow_depth_development".equals(output)) { if (FlowDepthProcessor.FACET_FLOW_DEPTH_CURRENT_FILTERED.equals(name)) return Boolean.FALSE; if (FlowDepthProcessor.FACET_FLOW_DEPTH_HISTORICAL_FILTERED.equals(name)) return Boolean.FALSE; if (FlowDepthDevelopmentProcessor.FACET_WATERLEVEL_DIFFERENCE_FILTERED.equals(name)) return Boolean.FALSE; if (FlowDepthDevelopmentProcessor.FACET_BEDHEIGHT_DIFFERENCE_FILTERED.equals(name)) return Boolean.FALSE; } if (FlowDepthProcessor.FACET_FLOW_DEPTH_RAW.equals(name)) return Boolean.FALSE; if (FlowDepthProcessor.FACET_FLOW_DEPTH_TKH_RAW.equals(name)) return Boolean.FALSE; if (FlowDepthProcessor.FACET_FLOW_DEPTH_CURRENT_RAW.equals(name)) return Boolean.FALSE; if (FlowDepthProcessor.FACET_FLOW_DEPTH_HISTORICAL_RAW.equals(name)) return Boolean.FALSE; if (FlowDepthProcessor.FACET_FLOW_DEPTH_MIN_RAW.equals(name)) return Boolean.FALSE; if (FlowDepthProcessor.FACET_FLOW_DEPTH_MAX_RAW.equals(name)) return Boolean.FALSE; if (FlowDepthDevelopmentProcessor.FACET_FLOW_DEPTH_DEVELOPMENT_RAW.equals(name)) return Boolean.FALSE; if (FlowDepthDevelopmentPerYearProcessor.FACET_FLOW_DEPTH_DEVELOPMENT_PER_YEAR_RAW.equals(name)) return Boolean.FALSE; // if (FloodDurationCurveProcessor.FACET_FLOOD_DURATION_MAINVALUES_W.equals(name)) // return Boolean.FALSE; // if (FloodDurationCurveProcessor.FACET_FLOOD_DURATION_MAINVALUES_Q.equals(name)) // return Boolean.FALSE; return null; } }); } /** * Default constructor, because it's serializable. */ public SINFOArtifact() { } /** * Returns the name of the concrete artifact. * * @return the name of the concrete artifact. */ @Override public String getName() { return ARTIFACT_NAME; } public SinfoCalcMode getCalculationMode() { final String calc = getDataAsString(FIELD_MODE); if (calc == null) { throw new IllegalArgumentException(ERROR_NO_CALCULATION_MODE); } try { return SinfoCalcMode.valueOf(StringUtils.trimToEmpty(calc).toLowerCase()); } catch (final Exception e) { throw new IllegalArgumentException(ERROR_INVALID_CALCULATION_MODE, e); } } public String getRiver() { return getDataAsString(FIELD_RIVER); } }