comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/GaugeDischargeCurveFacet.java @ 5838:5aa05a7a34b7

Rename modules to more fitting names.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 15:23:37 +0200
parents flys-artifacts/src/main/java/org/dive4elements/river/artifacts/model/GaugeDischargeCurveFacet.java@bd047b71ab37
children 4897a58c8746
comparison
equal deleted inserted replaced
5837:d9901a08d0a6 5838:5aa05a7a34b7
1 package org.dive4elements.river.artifacts.model;
2
3 import java.util.Arrays;
4 import java.util.Map;
5
6 import org.dive4elements.artifacts.Artifact;
7 import org.dive4elements.artifacts.CallContext;
8
9 import org.dive4elements.artifactdatabase.state.DefaultFacet;
10 import org.dive4elements.artifactdatabase.state.Facet;
11
12 import org.dive4elements.river.artifacts.FLYSArtifact;
13
14 import org.dive4elements.river.model.Gauge;
15
16 import org.dive4elements.river.utils.FLYSUtils;
17
18 import org.apache.log4j.Logger;
19
20 /**
21 * A Facet that returns discharge curve data at a gauge
22 *
23 * @author <a href="mailto:bjoern.ricks@intevation.de">Björn Ricks</a>
24 */
25 public class GaugeDischargeCurveFacet
26 extends DefaultFacet
27 implements FacetTypes
28 {
29 private static final Logger log =
30 Logger.getLogger(GaugeDischargeCurveFacet.class);
31
32 public GaugeDischargeCurveFacet(String name, String description) {
33 super(0, name, description);
34 }
35
36 @Override
37 public Object getData(Artifact art, CallContext context) {
38 return getWQKms(art, context);
39 }
40
41 protected WQKms getWQKms(Artifact art, CallContext context) {
42 if (!(art instanceof FLYSArtifact)) {
43 log.warn("Invalid artifact type");
44 return null;
45 }
46
47 FLYSArtifact flys = (FLYSArtifact)art;
48
49 String river = flys.getDataAsString("river");
50
51 Gauge gauge = FLYSUtils.getReferenceGauge(flys);
52
53 if (river == null || gauge == null) {
54 log.warn("Unknown river or gauge");
55 return null;
56 }
57
58 String name = gauge.getName();
59
60 DischargeTables dt = new DischargeTables(river, name);
61
62 Map<String, double [][]> map = dt.getValues(
63 DischargeTables.MASTER_SCALE);
64
65 double [][] values = map.get(name);
66 if (values == null) {
67 return null;
68 }
69 double [] kms = new double[values[0].length];
70 Arrays.fill(kms, gauge.getStation().doubleValue());
71 return new WQKms(kms, values[0], values[1], name);
72 }
73
74 @Override
75 public Facet deepCopy() {
76 GaugeDischargeCurveFacet copy = new GaugeDischargeCurveFacet(
77 this.name,
78 this.description);
79 copy.set(this);
80 return copy;
81 }
82 }

http://dive4elements.wald.intevation.org