annotate artifacts/src/main/java/org/dive4elements/river/exports/injector/KmFromGaugeNumberInjector.java @ 8367:16dc2da05aef

Overwriting the current km in context gives unexpected results if artifacts from different km have been loaded.
author Tom Gottfried <tom@intevation.de>
date Thu, 02 Oct 2014 11:46:44 +0200
parents 7341bebc79d0
children a805211690f7
rev   line source
8251
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
1 package org.dive4elements.river.exports.injector;
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
2
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
3 import org.apache.log4j.Logger;
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
4 import org.dive4elements.artifacts.Artifact;
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
5 import org.dive4elements.artifacts.CallContext;
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
6 import org.dive4elements.artifacts.ContextInjector;
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
7 import org.dive4elements.river.artifacts.D4EArtifact;
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
8 import org.dive4elements.river.artifacts.access.HistoricalDischargeAccess;
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
9 import org.dive4elements.river.model.Gauge;
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10 import org.w3c.dom.Document;
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 import org.w3c.dom.Element;
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13 import static org.dive4elements.river.exports.injector.InjectorConstants.CURRENT_KM;
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
14
8349
7341bebc79d0 Let injectors be strictly distinct from each other and give more meaningful names (they know what they do, not where they will be used. The latter is configuration).
Tom Gottfried <tom@intevation.de>
parents: 8255
diff changeset
15 public class KmFromGaugeNumberInjector
8251
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
16 implements ContextInjector
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
17 {
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
18 private static Logger log =
8349
7341bebc79d0 Let injectors be strictly distinct from each other and give more meaningful names (they know what they do, not where they will be used. The latter is configuration).
Tom Gottfried <tom@intevation.de>
parents: 8255
diff changeset
19 Logger.getLogger(KmFromGaugeNumberInjector.class);
8251
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21 @Override
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22 public void setup(Element cfg) {
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 }
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26 @Override
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27 public void injectContext(
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28 CallContext ctx,
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
29 Artifact artifact,
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
30 Document request
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
31 ) {
8367
16dc2da05aef Overwriting the current km in context gives unexpected results if artifacts from different km have been loaded.
Tom Gottfried <tom@intevation.de>
parents: 8349
diff changeset
32 if (ctx.getContextValue(CURRENT_KM) instanceof Number) {
16dc2da05aef Overwriting the current km in context gives unexpected results if artifacts from different km have been loaded.
Tom Gottfried <tom@intevation.de>
parents: 8349
diff changeset
33 return;
16dc2da05aef Overwriting the current km in context gives unexpected results if artifacts from different km have been loaded.
Tom Gottfried <tom@intevation.de>
parents: 8349
diff changeset
34 }
16dc2da05aef Overwriting the current km in context gives unexpected results if artifacts from different km have been loaded.
Tom Gottfried <tom@intevation.de>
parents: 8349
diff changeset
35
8251
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
36 HistoricalDischargeAccess access =
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
37 new HistoricalDischargeAccess((D4EArtifact)artifact);
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
38 Long gaugeNumber = access.getOfficialGaugeNumber();
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39 if (gaugeNumber == null) {
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
40 return;
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
41 }
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
42 Gauge gauge = Gauge.getGaugeByOfficialNumber(gaugeNumber);
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
43 if (gauge == null) {
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
44 return;
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
45 }
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
46 double km = gauge.getStation().doubleValue();
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47 ctx.putContextValue(CURRENT_KM, km);
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48 }
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49 }

http://dive4elements.wald.intevation.org