Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/FixationArtifact.java @ 4508:03b8d10a99c0
FixationArtifact: implement WaterLineArtifact, deliver lines for cross-sections.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Wed, 14 Nov 2012 13:46:50 +0100 |
parents | e0a355d0c771 |
children | b195fede1c3b |
comparison
equal
deleted
inserted
replaced
4507:976ff4b74b96 | 4508:03b8d10a99c0 |
---|---|
1 package de.intevation.flys.artifacts; | 1 package de.intevation.flys.artifacts; |
2 | |
3 import de.intevation.artifacts.CallContext; | |
4 | |
5 import de.intevation.flys.artifacts.geom.Lines; | |
6 import de.intevation.flys.artifacts.StaticWKmsArtifact; | |
7 | |
8 import de.intevation.flys.artifacts.model.CalculationResult; | |
9 import de.intevation.flys.artifacts.model.WKms; | |
10 import de.intevation.flys.artifacts.model.fixings.FixRealizingResult; | |
11 | |
12 import de.intevation.flys.artifacts.states.DefaultState.ComputeType; | |
13 | |
14 import de.intevation.flys.model.FastCrossSectionLine; | |
2 | 15 |
3 import org.apache.log4j.Logger; | 16 import org.apache.log4j.Logger; |
4 | 17 |
5 /** | 18 /** |
6 * The default fixation analysis artifact. | 19 * The default fixation analysis artifact. |
7 * | 20 * |
8 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> | 21 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> |
9 */ | 22 */ |
10 public class FixationArtifact | 23 public class FixationArtifact |
11 extends FLYSArtifact | 24 extends FLYSArtifact |
25 implements WaterLineArtifact | |
12 { | 26 { |
13 /** The logger for this class. */ | 27 /** The logger for this class. */ |
14 private static Logger logger = Logger.getLogger(FixationArtifact.class); | 28 private static Logger logger = Logger.getLogger(FixationArtifact.class); |
15 | 29 |
16 /** The name of the artifact. */ | 30 /** The name of the artifact. */ |
32 */ | 46 */ |
33 @Override | 47 @Override |
34 public String getName() { | 48 public String getName() { |
35 return ARTIFACT_NAME; | 49 return ARTIFACT_NAME; |
36 } | 50 } |
51 | |
52 @Override | |
53 public Lines.LineData getWaterLines( | |
54 int facetIdx, | |
55 FastCrossSectionLine csl, | |
56 double d, | |
57 double w, | |
58 CallContext context | |
59 ) { | |
60 FixRealizingResult result = (FixRealizingResult) | |
61 ((CalculationResult)this.compute(context, ComputeType.ADVANCE, false)).getData(); | |
62 | |
63 WKms wkms = result.getWQKms()[facetIdx]; | |
64 | |
65 double km = csl.getKm(); | |
66 | |
67 // Find W at km. | |
68 double wAtKm; | |
69 | |
70 wAtKm = StaticWKmsArtifact.getWAtKm(wkms, km); | |
71 | |
72 if (wAtKm == -1 || Double.isNaN(wAtKm)) { | |
73 logger.warn("Waterlevel at km " + km + " unknown."); | |
74 return new Lines.LineData(new double[][] {{}}, 0d, 0d); | |
75 } | |
76 | |
77 // This should be FixRealizationResult, which can be getWQKms()ed | |
78 return Lines.createWaterLines(csl.getPoints(), wAtKm); | |
79 } | |
37 } | 80 } |
38 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 81 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |