annotate artifacts/src/main/java/org/dive4elements/river/exports/injector/KmFromGaugeNameInjector.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 8c60595fd74c
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.RangeAccess;
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
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
15
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: 8346
diff changeset
16 public class KmFromGaugeNameInjector
8251
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
17 implements ContextInjector
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
18 {
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
19
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: 8346
diff changeset
20 private static Logger log = Logger.getLogger(KmFromGaugeNameInjector.class);
8251
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22 @Override
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23 public void setup(Element cfg) {
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(CallContext ctx, Artifact artifact, Document doc) {
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
28 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
29 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
30 }
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
31
8326
10917ec29625 Inject current km and pnp into the context used to calculate W in cm at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8282
diff changeset
32 D4EArtifact d4e = (D4EArtifact)artifact;
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: 8346
diff changeset
33 RangeAccess access = new RangeAccess(d4e);
8326
10917ec29625 Inject current km and pnp into the context used to calculate W in cm at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8282
diff changeset
34 String name = d4e.getDataAsString("gauge_name");
10917ec29625 Inject current km and pnp into the context used to calculate W in cm at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8282
diff changeset
35 if (name == null || name.equals("")) {
8251
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
36 return;
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
37 }
8326
10917ec29625 Inject current km and pnp into the context used to calculate W in cm at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8282
diff changeset
38 Gauge gauge = access.getRiver().determineGaugeByName(name);
10917ec29625 Inject current km and pnp into the context used to calculate W in cm at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8282
diff changeset
39 if (gauge == null) {
10917ec29625 Inject current km and pnp into the context used to calculate W in cm at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8282
diff changeset
40 log.error("No Gauge could be found for name " + name + "!");
10917ec29625 Inject current km and pnp into the context used to calculate W in cm at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8282
diff changeset
41 return;
10917ec29625 Inject current km and pnp into the context used to calculate W in cm at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8282
diff changeset
42 }
10917ec29625 Inject current km and pnp into the context used to calculate W in cm at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8282
diff changeset
43 ctx.putContextValue(CURRENT_KM, gauge.getStation());
10917ec29625 Inject current km and pnp into the context used to calculate W in cm at gauge.
Raimund Renkert <rrenkert@intevation.de>
parents: 8282
diff changeset
44 return;
8251
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
c7ca9c228314 Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47 }

http://dive4elements.wald.intevation.org