Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/injector/KmFromGaugeNameInjector.java @ 8858:a805211690f7 3.2.x
Fix license headers.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 18 Jan 2018 20:52:41 +0100 |
parents | 5e38e2924c07 |
children | 0a5239a1e46e |
rev | line source |
---|---|
8858 | 1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
2 * Software engineering by Intevation GmbH | |
3 * | |
4 * This file is Free Software under the GNU AGPL (>=v3) | |
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the | |
6 * documentation coming with Dive4Elements River for details. | |
7 */ | |
8 | |
8251
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
9 package org.dive4elements.river.exports.injector; |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import org.apache.log4j.Logger; |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 import org.dive4elements.artifacts.Artifact; |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 import org.dive4elements.artifacts.CallContext; |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
14 import org.dive4elements.artifacts.ContextInjector; |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
15 import org.dive4elements.river.artifacts.D4EArtifact; |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
16 import org.dive4elements.river.artifacts.access.RangeAccess; |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
17 import org.dive4elements.river.model.Gauge; |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
18 import org.w3c.dom.Document; |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
19 import org.w3c.dom.Element; |
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 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
|
22 |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
23 |
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
|
24 public class KmFromGaugeNameInjector |
8251
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 implements ContextInjector |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 { |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 |
8856 | 28 private static Logger log = Logger.getLogger( |
29 KmFromGaugeNameInjector.class); | |
8251
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
30 |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
31 @Override |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
32 public void setup(Element cfg) { |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
33 } |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
34 |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
35 @Override |
8856 | 36 public void injectContext( |
37 CallContext ctx, | |
38 Artifact artifact, | |
39 Document doc | |
40 ) { | |
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
|
41 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
|
42 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
|
43 } |
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
|
44 |
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
|
45 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
|
46 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
|
47 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
|
48 if (name == null || name.equals("")) { |
8251
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
49 return; |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
50 } |
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
|
51 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
|
52 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
|
53 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
|
54 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
|
55 } |
8387
8c60595fd74c
Unify discharge curve subtitles.
Tom Gottfried <tom@intevation.de>
parents:
8367
diff
changeset
|
56 ctx.putContextValue(CURRENT_KM, gauge.getStation().doubleValue()); |
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
|
57 return; |
8251
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 } |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
59 |
c7ca9c228314
Added context injectors for discharge curves.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
60 } |