Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/GaugeDischargeState.java @ 3318:dbe2f85bf160
merged flys-artifacts/2.8
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 28 Sep 2012 12:14:35 +0200 |
parents | 94d78e0dc5e9 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/states/GaugeDischargeState.java Fri Sep 28 12:14:35 2012 +0200 @@ -0,0 +1,161 @@ +package de.intevation.flys.artifacts.states; + +import java.util.List; + +import org.apache.log4j.Logger; + +import de.intevation.artifacts.CallMeta; +import de.intevation.artifacts.CallContext; + +import de.intevation.artifactdatabase.state.Facet; + +import de.intevation.flys.artifacts.ChartArtifact; +import de.intevation.flys.artifacts.GaugeDischargeArtifact; +import de.intevation.flys.artifacts.FLYSArtifact; + +import de.intevation.flys.artifacts.model.GaugeDischargeFacet; +import de.intevation.flys.artifacts.model.FacetTypes; +import de.intevation.flys.artifacts.model.WQKms; +import de.intevation.flys.artifacts.model.ReportFacet; +import de.intevation.flys.artifacts.model.EmptyFacet; +import de.intevation.flys.artifacts.model.CalculationResult; + +import de.intevation.flys.artifacts.resources.Resources; + +import de.intevation.flys.model.Gauge; + + +/** + * The only state for an GaugeDischargeState (River and km known). + */ +public class GaugeDischargeState +extends DefaultState +implements FacetTypes +{ + /** Developer-centric description of facet. */ + public static final String I18N_DESCRIPTION = "facet.discharge.curve"; + + /** The logger that is used in this state. */ + private static final Logger logger = + Logger.getLogger(GaugeDischargeState.class); + + + /** + * Create i18ned name for gaugedischargeFacet. + * @param artifact The artifact which has information about the gauge. + * @param meta used for i18n. + * @return localized name for gaugedischargefacet. + */ + protected String createFacetName(GaugeDischargeArtifact artifact, + CallMeta meta) { + + Gauge gauge = artifact.getGauge(); + Object[] args = new Object[] { + gauge.getName(), + gauge.getStation() + }; + + String name = Resources.getMsg( + meta, + "chart.computed.discharge.curve.gauge", + "", + args); + + return name; + } + + + /** + * Add an GaugeDischargeFacet to list of Facets. + * + * @param artifact Ignored. + * @param hash Ignored. + * @param context Ignored. + * @param meta CallMeta to be used for internationalization. + * @param facets List to add AnnotationFacet to. + * + * @return null. + */ + @Override + public Object computeInit( + FLYSArtifact artifact, + String hash, + Object context, + CallMeta meta, + List<Facet> facets + ) { + logger.debug("GaugeDischargeState.computeInit()"); + + GaugeDischargeFacet facet = new GaugeDischargeFacet( + 0, + DISCHARGE_CURVE, + createFacetName((GaugeDischargeArtifact) artifact, meta)); + + facets.add(facet); + + return null; + } + + + /** + * 'Calculate' Discharge at Gauge. + */ + @Override + public Object computeAdvance( + FLYSArtifact artifact, + String hash, + CallContext context, + List<Facet> facets, + Object old + ) { + if (artifact instanceof GaugeDischargeArtifact) { + logger.debug("GaugeDischargeState.computeAdvance()"); + GaugeDischargeArtifact dischargeArtifact = (GaugeDischargeArtifact) artifact; + + CalculationResult res; + + + if (old instanceof CalculationResult) { + res = (CalculationResult) old; + } + else { + res = dischargeArtifact.getDischargeCurveData(); + } + + WQKms[] wqkms = (WQKms[]) res.getData(); + + if (wqkms != null && facets != null) { + logger.debug("GaugeDischargeState.computeAdvance(): create facets"); + + GaugeDischargeFacet facet = new GaugeDischargeFacet( + 0, + DISCHARGE_CURVE, + createFacetName(dischargeArtifact, context.getMeta())); + + facets.add(facet); + + //facets.add(new DataFacet(CSV, "CSV data")); + //facets.add(new DataFacet(PDF, "PDF data")); + + if (res.getReport().hasProblems()) { + facets.add(new ReportFacet()); + } + } + else { + if (wqkms == null) + logger.debug("GaugeDischargeState.computeAdvance(): wqkms 0"); + else + logger.debug("GaugeDischargeState.computeAdvance(): facets 0"); + } + + return res; + } + else if (artifact instanceof ChartArtifact) { + ChartArtifact chart = (ChartArtifact)artifact; + facets.add(new EmptyFacet()); + return null; + } + return null; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :