Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/GaugeDischargeArtifact.java @ 3785:a5f65e8983be
Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
file:///home/clients/bsh/bsh-generischer-viewer/Material/SVN/flys-artifacts/trunk
........
r5501 | felix | 2012-09-18 11:49:45 +0200 (Di, 18 Sep 2012) | 1 line
fix issue865 - missing showarea theme prop.
........
r5502 | clins | 2012-09-18 12:18:30 +0200 (Di, 18 Sep 2012) | 1 line
Add robustness checks to prevent NPEs
........
r5504 | felix | 2012-09-18 14:03:15 +0200 (Di, 18 Sep 2012) | 1 line
i18n for area label (fix issue487).
........
r5505 | clins | 2012-09-18 16:19:59 +0200 (Di, 18 Sep 2012) | 1 line
Update themes to show point descriptions
........
r5506 | rrenkert | 2012-09-18 17:00:30 +0200 (Di, 18 Sep 2012) | 3 lines
Removed incorrect characteristic diameter.
........
r5507 | rrenkert | 2012-09-18 17:03:20 +0200 (Di, 18 Sep 2012) | 3 lines
Fixed some stupid bugs in bed quality data factory and calculation.
........
r5508 | teichmann | 2012-09-18 17:45:49 +0200 (Di, 18 Sep 2012) | 1 line
The usual whitespace and import cleanups.
........
r5511 | teichmann | 2012-09-18 18:24:51 +0200 (Di, 18 Sep 2012) | 1 line
Use generics aware Collections.emptyList().
........
r5512 | teichmann | 2012-09-18 20:36:52 +0200 (Di, 18 Sep 2012) | 1 line
Some more little steps towards "Auslagerung extremer Wasserspiegellagen".
........
r5513 | clins | 2012-09-18 23:38:19 +0200 (Di, 18 Sep 2012) | 1 line
A and B facets of fix analyis are now deactivated by default
........
r5516 | bricks | 2012-09-19 10:45:51 +0200 (Mi, 19 Sep 2012) | 2 lines
Add the gauge station to the GaugeOverviewInfoService xml response
........
r5517 | rrenkert | 2012-09-19 10:50:23 +0200 (Mi, 19 Sep 2012) | 3 lines
Added CSV export to bed quality calculation.
........
r5518 | bricks | 2012-09-19 11:04:04 +0200 (Mi, 19 Sep 2012) | 2 lines
Fix date in changelog entry
........
r5519 | teichmann | 2012-09-19 11:17:14 +0200 (Mi, 19 Sep 2012) | 1 line
Removed trailing whitespace.
........
flys-artifacts/tags/2.9.1@5531 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 19 Sep 2012 14:58:31 +0000 |
parents | 7500c7fbfaa9 |
children | a2735a4bf75e |
line wrap: on
line source
package de.intevation.flys.artifacts; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import org.w3c.dom.Document; import de.intevation.artifactdatabase.state.Facet; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.ArtifactFactory; import de.intevation.artifacts.CallMeta; import de.intevation.flys.artifacts.model.FacetTypes; import de.intevation.flys.artifacts.model.WQKms; import de.intevation.flys.artifacts.states.DefaultState; import de.intevation.flys.artifacts.model.Calculation; import de.intevation.flys.artifacts.model.CalculationResult; import de.intevation.flys.artifacts.model.DischargeTables; import de.intevation.flys.model.Gauge; import de.intevation.flys.model.River; import de.intevation.flys.utils.FLYSUtils; /** * Artifact to get discharge curves at gauges. */ public class GaugeDischargeArtifact extends WINFOArtifact implements FacetTypes { /** The logger for this class. */ private static Logger logger = Logger.getLogger(GaugeDischargeArtifact.class); /** The name of the artifact. */ public static final String ARTIFACT_NAME = "gaugedischarge"; /** * Trivial Constructor. */ public GaugeDischargeArtifact() { logger.debug("GaugeDischargeArtifact.GaugeDischargeArtifact()"); } /** * Gets called from factory, to set things up. * Especially, when loaded via datacage mechanisms, provide the * data document. * @param data filled with stuff from dc, if any. */ @Override public void setup( String identifier, ArtifactFactory factory, Object context, CallMeta callMeta, Document data) { logger.debug("GaugeDischargeArtifact.setup"); String ids = StaticFLYSArtifact.getDatacageIDValue(data); addStringData("ids", ids); logger.debug("id for gaugedischarge: " + ids); super.setup(identifier, factory, context, callMeta, data); } /** Return the name of this artifact. */ public String getName() { return ARTIFACT_NAME; } /** * Setup state and facet, copy from master artifact. */ @Override protected void initialize(Artifact art, Object context, CallMeta meta) { logger.debug("GaugeDischargeArtifact.initialize"); List<Facet> fs = new ArrayList<Facet>(); FLYSArtifact artifact = (FLYSArtifact) art; importData(artifact, "river"); // Get the location(s) //importData(artifact, "ld_mode", ld_from, ld_to, ld_locations addStringData("ld_from", "0"); addStringData("ld_to", "1000"); addStringData("ld_mode", "distance"); DefaultState state = (DefaultState) getCurrentState(context); state.computeInit(this, hash(), context, meta, fs); if (!fs.isEmpty()) { logger.debug("Facets to add in GaugeDischargeArtifact.initialize. (" + state.getID() + "/ " + getCurrentStateId() + ")."); facets.put(getCurrentStateId(), fs); } else { logger.debug("No facets to add in GaugeDischargeArtifact.initialize (" + state.getID() + "/ "+getCurrentStateId()+")."); } } /** Get the Gauges name which came with datacage data-document. */ public String getGaugeName() { return this.getDataAsString("ids"); } /** Get the Gauges which came with datacage data-document. */ public Gauge getGauge() { River river = FLYSUtils.getRiver(this); return river.determineGaugeByName(getGaugeName()); } /** * Returns the data that is used to create discharge curves. * @return CalculationResult with WQKms. */ public CalculationResult getDischargeCurveData() { River river = FLYSUtils.getRiver(this); if (river == null) { return error(new WQKms[0], "no.river.selected"); } /* // This one would allow to automatically pick the right Gauge. double [] distance = FLYSUtils.getKmRange(this); logger.debug("getDischargeCurveData: get range"); if (distance == null) { return error(new WQKms[0], "no.range.found"); } List<Gauge> gauges = river.determineGauges(distance[0], distance[1]); logger.debug("getDischargeCurveData: got " + gauges.size() + " gauges"); if (gauges.isEmpty()) { return error(new WQKms[0], "no.gauge.selected"); } String [] names = new String[gauges.size()]; for (int i = 0; i < names.length; ++i) { names[i] = gauges.get(i).getName(); logger.debug("getDischargeCurveData: name " + names[i]); } */ DischargeTables dt = new DischargeTables(river.getName(), getDataAsString("ids")); Map<String, double [][]> map = dt.getValues(100); ArrayList<WQKms> res = new ArrayList<WQKms>(); Gauge gauge = river.determineGaugeByName(this.getDataAsString("ids")); String name = getGaugeName(); double [][] values = map.get(name); if (values == null) { logger.error("No values for this gauge / discharge found."); return error(new WQKms[0], "no.gauge.found"); } for (int i = 0 ; i < values[0].length; i++) { values[0][i] += gauge.getDatum().doubleValue(); } double [] kms = new double[values[0].length]; Arrays.fill(kms, gauge.getStation().doubleValue()); res.add(new WQKms(kms, values[0], values[1], name)); return new CalculationResult( res.toArray(new WQKms[res.size()]), new Calculation()); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :