annotate artifacts/src/main/java/org/dive4elements/river/exports/minfo/BedDiffBaseGenerator.java @ 6955:94cb1845c667

(issue1452) Coalesce to zero to avoid NaN arithmetic.
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 30 Aug 2013 15:45:14 +0200
parents 87b49f9f27a1
children dd5355775ce1
rev   line source
6551
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
1 /* Copyright (C) 2013 by Bundesanstalt für Gewässerkunde
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
2 * Software engineering by Intevation GmbH
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
3 *
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
6 * documentation coming with Dive4Elements River for details.
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
7 */
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
8
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
9 package org.dive4elements.river.exports.minfo;
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
10
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
11 import org.apache.log4j.Logger;
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
12
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
13 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
14 import org.dive4elements.river.artifacts.model.minfo.BedDifferencesResult;
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
15 import org.dive4elements.river.jfree.Bounds;
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
16 import org.dive4elements.river.jfree.DoubleBounds;
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
17 import org.dive4elements.river.exports.fixings.FixChartGenerator;
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
18
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
19 /** Base for BedDiff*Year*Generators, to avoid duplicate code of setContextBounds. */
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
20 public abstract class BedDiffBaseGenerator
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
21 extends FixChartGenerator
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
22 {
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
23 /** The logger that is used in this generator. */
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
24 private static Logger logger = Logger.getLogger(BedDiffBaseGenerator.class);
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
25
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
26 /** Set context values for something. */
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
27 public void setContextBounds(ArtifactAndFacet bundle) {
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
28 Bounds xBounds = getXBounds(0);
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
29 if (xBounds != null && getDomainAxisRange() != null) {
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
30 Bounds bounds =
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
31 calculateZoom(xBounds, getDomainAxisRange());
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
32 context.putContextValue("startkm", bounds.getLower());
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
33 context.putContextValue("endkm", bounds.getUpper());
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
34 }
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
35 else if (xBounds != null && getDomainAxisRange() == null) {
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
36 context.putContextValue("startkm", xBounds.getLower());
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
37 context.putContextValue("endkm", xBounds.getUpper());
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
38 }
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
39 else if (xBounds == null && getDomainAxisRange() == null) {
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
40 BedDifferencesResult data = (BedDifferencesResult)bundle.getData(context);
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
41 if (data.getKms().size() > 0) {
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
42 context.putContextValue("startkm", data.getKms().min());
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
43 context.putContextValue("endkm", data.getKms().max());
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
44 }
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
45 else {
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
46 logger.warn("No data to define start and end km");
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
47 }
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
48 }
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
49 else if (xBounds == null && getDomainAxisRange() != null){
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
50 BedDifferencesResult data = (BedDifferencesResult)bundle.getData(context);
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
51 Bounds b = new DoubleBounds(data.getKms().min(), data.getKms().max());
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
52 Bounds bounds =
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
53 calculateZoom(b, getDomainAxisRange());
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
54 context.putContextValue("startkm", bounds.getLower());
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
55 context.putContextValue("endkm", bounds.getUpper());
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
56 }
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
57 }
8c226c5089e0 BedDiff*Generator: Refactored to avoid code dupes. The problematic setting
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
58 }
6577
87b49f9f27a1 Added vimlines.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 6551
diff changeset
59 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org