Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/collision/CollisionCalculation.java @ 9617:1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
author | dnt_bjoernsen <d.tironi@bjoernsen.de> |
---|---|
date | Thu, 10 Oct 2019 15:29:02 +0200 |
parents | f2473dc34535 |
children |
rev | line source |
---|---|
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
1 /* Copyright (C) 2017 by Bundesanstalt für Gewässerkunde |
9067 | 2 * Software engineering by |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
3 * Björnsen Beratende Ingenieure GmbH |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
4 * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt |
9067 | 5 * |
6 * This file is Free Software under the GNU AGPL (>=v3) | |
7 * and comes with ABSOLUTELY NO WARRANTY! Check out the | |
8 * documentation coming with Dive4Elements River for details. | |
9 */ | |
10 package org.dive4elements.river.artifacts.sinfo.collision; | |
11 | |
9150
23945061daec
gigantic refactoring: exporter, result, results
gernotbelger
parents:
9067
diff
changeset
|
12 import java.util.ArrayList; |
23945061daec
gigantic refactoring: exporter, result, results
gernotbelger
parents:
9067
diff
changeset
|
13 import java.util.Collection; |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
14 import java.util.Collections; |
9613
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
15 import java.util.Date; |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
16 import java.util.HashMap; |
9487
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
17 import java.util.List; |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
18 import java.util.Map; |
9613
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
19 import java.util.Map.Entry; |
9487
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
20 import java.util.NavigableSet; |
9613
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
21 import java.util.TreeMap; |
9487
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
22 import java.util.TreeSet; |
9150
23945061daec
gigantic refactoring: exporter, result, results
gernotbelger
parents:
9067
diff
changeset
|
23 |
9067 | 24 import org.apache.commons.lang.math.DoubleRange; |
25 import org.dive4elements.artifacts.CallContext; | |
9150
23945061daec
gigantic refactoring: exporter, result, results
gernotbelger
parents:
9067
diff
changeset
|
26 import org.dive4elements.river.artifacts.common.GeneralResultType; |
23945061daec
gigantic refactoring: exporter, result, results
gernotbelger
parents:
9067
diff
changeset
|
27 import org.dive4elements.river.artifacts.common.ResultRow; |
9067 | 28 import org.dive4elements.river.artifacts.model.Calculation; |
29 import org.dive4elements.river.artifacts.model.CalculationResult; | |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
30 import org.dive4elements.river.artifacts.model.DateRange; |
9067 | 31 import org.dive4elements.river.artifacts.resources.Resources; |
32 import org.dive4elements.river.artifacts.sinfo.SINFOArtifact; | |
9176
1614cb14308f
Work on calculations for S-Info flood duration workflow
mschaefer
parents:
9157
diff
changeset
|
33 import org.dive4elements.river.artifacts.sinfo.common.GaugeDischargeValuesFinder; |
9202
b4402594213b
More work on calculations and output for S-Info flood duration workflow (chart types 1 and 2)
mschaefer
parents:
9176
diff
changeset
|
34 import org.dive4elements.river.artifacts.sinfo.common.GaugeMainValueFinder; |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
35 import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; |
9067 | 36 import org.dive4elements.river.artifacts.sinfo.util.CalculationUtils; |
37 import org.dive4elements.river.artifacts.sinfo.util.RiverInfo; | |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
38 import org.dive4elements.river.backend.utils.DateUtil; |
9613
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
39 import org.dive4elements.river.model.DischargeTable; |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
40 import org.dive4elements.river.model.Gauge; |
9176
1614cb14308f
Work on calculations for S-Info flood duration workflow
mschaefer
parents:
9157
diff
changeset
|
41 import org.dive4elements.river.model.MainValueType.MainValueTypeKey; |
9067 | 42 import org.dive4elements.river.model.River; |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
43 import org.dive4elements.river.model.sinfo.CollisionAggregateValue; |
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
44 import org.dive4elements.river.model.sinfo.CollisionValue; |
9067 | 45 |
46 class CollisionCalculation { | |
47 | |
48 // private static Logger log = Logger.getLogger(FloodDurationCalculation.class); | |
49 | |
50 private final CallContext context; | |
51 | |
52 public CollisionCalculation(final CallContext context) { | |
53 this.context = context; | |
54 } | |
55 | |
56 public CalculationResult calculate(final SINFOArtifact sinfo) { | |
57 | |
58 final String user = CalculationUtils.findArtifactUser(this.context, sinfo); | |
59 | |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
60 final int qfinderProblemCount = 0; |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
61 |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
62 // access input data |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
63 final CollisionAccess access = new CollisionAccess(sinfo); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
64 final River river = access.getRiver(); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
65 final RiverInfo riverInfo = new RiverInfo(river); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
66 |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
67 final DoubleRange calcRange = access.getRange(); |
9067 | 68 |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
69 // calculate results for each year or epoch |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
70 final Calculation problems = new Calculation(); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
71 |
9067 | 72 final String calcModeLabel = Resources.getMsg(this.context.getMeta(), sinfo.getCalculationMode().name()); |
73 | |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
74 final CollisionCalculationResults results = new CollisionCalculationResults(calcModeLabel, user, riverInfo, calcRange, access.getYearsHeader()); |
9067 | 75 |
9150
23945061daec
gigantic refactoring: exporter, result, results
gernotbelger
parents:
9067
diff
changeset
|
76 final Collection<ResultRow> overViewRows = new ArrayList<>(); |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
77 |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
78 final List<DateRange> years = new ArrayList<>(); |
9487
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
79 final NavigableSet<Integer> detailYears = new TreeSet<>(); |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
80 final List<CollisionCalcOverviewResult> singleYearResults = new ArrayList<>(); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
81 if (access.getYears() != null) { |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
82 for (final int year : access.getYears()) { |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
83 calculateOverview(overViewRows, river, access.getLowerKm(), access.getUpperKm(), year, year, false); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
84 years.add(new DateRange(DateUtil.getStartDateFromYear(year), DateUtil.getEndDateFromYear(year))); |
9487
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
85 detailYears.add(Integer.valueOf(year)); |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
86 } |
9318
7b2b086e45f0
collision pdf details, ResultType refactoring, bezugswst result
gernotbelger
parents:
9204
diff
changeset
|
87 } else { |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
88 for (final DateRange dr : access.getEpochs()) { |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
89 calculateOverview(overViewRows, river, access.getLowerKm(), access.getUpperKm(), dr.getFromYear(), dr.getToYear(), true); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
90 years.add(dr); |
9487
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
91 detailYearsAdd(detailYears, dr); |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
92 } |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
93 |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
94 for (final Integer year : detailYears) { |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
95 |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
96 final Collection<ResultRow> yearRows = new ArrayList<>(); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
97 calculateOverview(yearRows, river, access.getLowerKm(), access.getUpperKm(), year, year, false); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
98 |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
99 if (!yearRows.isEmpty()) { |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
100 final DateRange yearRange = new DateRange(DateUtil.getStartDateFromYear(year), DateUtil.getEndDateFromYear(year)); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
101 final CollisionCalcOverviewResult yearResult = new CollisionCalcOverviewResult(Integer.toString(year), false, |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
102 Collections.singleton(yearRange), yearRows); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
103 singleYearResults.add(yearResult); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
104 } |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
105 } |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
106 } |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
107 final CollisionCalcOverviewResult overviewResult = new CollisionCalcOverviewResult(access.getYearsHeader(), (access.getYears() == null), years, |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
108 overViewRows); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
109 results.addResult(overviewResult, problems); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
110 |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
111 /* add the single year from epochs, after the epochs, so they will be exported at the end of the table etc. */ |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
112 for (final CollisionCalcOverviewResult result : singleYearResults) |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
113 results.addResult(result, problems); |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
114 |
9533
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
115 // calculate secondary results for each year |
9613
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
116 final Map<String, TreeMap<Date, GaugeDischargeValuesFinder>> qFinders = new HashMap<>(); |
9533
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
117 final Map<String, GaugeMainValueFinder> zoneFinders = new HashMap<>(); |
9150
23945061daec
gigantic refactoring: exporter, result, results
gernotbelger
parents:
9067
diff
changeset
|
118 final Collection<ResultRow> detailsRows = new ArrayList<>(); |
9487
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
119 for (final Integer year : detailYears) |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
120 calculateDetails(detailsRows, river, access, year, qFinders, zoneFinders, problems, years, qfinderProblemCount); |
9150
23945061daec
gigantic refactoring: exporter, result, results
gernotbelger
parents:
9067
diff
changeset
|
121 final CollisionCalcDetailResult detailResult = new CollisionCalcDetailResult("Details", detailsRows); |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
122 results.addResult(detailResult, problems); |
9150
23945061daec
gigantic refactoring: exporter, result, results
gernotbelger
parents:
9067
diff
changeset
|
123 |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
124 return new CalculationResult(results, problems); |
9067 | 125 } |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
126 |
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
127 /** |
9487
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
128 * Adds all years of an epoch to a set |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
129 */ |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
130 private void detailYearsAdd(final NavigableSet<Integer> detailYears, final DateRange epoch) { |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
131 for (int year = epoch.getFromYear(); year <= epoch.getToYear(); year++) |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
132 detailYears.add(Integer.valueOf(year)); |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
133 } |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
134 |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
135 /** |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
136 * Calculates the collision counts for a km range of a river and a year or year range (epoch), |
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
137 * and adds them to a ResultRow collection |
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
138 */ |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
139 private void calculateOverview(final Collection<ResultRow> rows, final River river, final double fromKm, final double toKm, final int fromYear, |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
140 final int toYear, final boolean isEpoch) { |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
141 for (final CollisionAggregateValue aggregate : CollisionAggregateValue.getValuesByKm(river, fromKm, toKm, fromYear, toYear)) { |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
142 rows.add(ResultRow.create().putValue(GeneralResultType.station, aggregate.getStation()) |
9582 | 143 .putValue(SInfoResultType.years, yearsToString(isEpoch, fromYear, toYear)).putValue(SInfoResultType.collisionCount, aggregate.getCount())); |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
144 } |
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
145 } |
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
146 |
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
147 /** |
9487
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
148 * Returns the string representation of a year or epoch |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
149 */ |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
150 public static String yearsToString(final boolean isEpoch, final DateRange years) { |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
151 return yearsToString(isEpoch, years.getFromYear(), years.getToYear()); |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
152 } |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
153 |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
154 /** |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
155 * Returns the string representation of a year or epoch |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
156 */ |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
157 public static String yearsToString(final boolean isEpoch, final int fromYear, final int toYear) { |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
158 return (isEpoch ? String.format("%d-%d", fromYear, toYear) : Integer.toString(fromYear)); |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
159 } |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
160 |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
161 /** |
504f63512379
Sinfo collisions: calculation of multiple epochs, avoiding duplicate collision events in the details report
mschaefer
parents:
9318
diff
changeset
|
162 * Calculates the collision details for a km range of a river and a year, and adds them to a ResultRow collection |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
163 * |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
164 * @param qfinderProblemCount |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
165 */ |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
166 private void calculateDetails(final Collection<ResultRow> rows, final River river, final CollisionAccess access, final int year, |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
167 final Map<String, TreeMap<Date, GaugeDischargeValuesFinder>> qFinders, final Map<String, GaugeMainValueFinder> zoneFinders, |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
168 final Calculation problems, final List<DateRange> years, final int qfinderProblemCount) { |
9533
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
169 |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
170 final double fromKm = access.getLowerKm(); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
171 final double toKm = access.getUpperKm(); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
172 |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
173 for (final CollisionValue collision : CollisionValue.getValues(river, fromKm, toKm, DateUtil.getStartDateFromYear(year), |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
174 DateUtil.getEndDateFromYear(year))) { |
9533
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
175 final String gaugeName = collision.getGaugeName(); |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
176 final double q = getQ(qFinders, gaugeName, collision.getGaugeW().doubleValue(), collision.getEventDate(), river, problems, years, |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
177 qfinderProblemCount); |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
178 final double qOut = Double.isInfinite(q) ? Double.NaN : q; |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
179 final String zone = getZone(zoneFinders, gaugeName, q, river, problems); |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
180 rows.add(ResultRow.create().putValue(GeneralResultType.station, collision.getStation()) |
9582 | 181 .putValue(GeneralResultType.dateShort, collision.getEventDate()).putValue(SInfoResultType.collisionGaugeW, collision.getGaugeW()) |
182 .putValue(GeneralResultType.gaugeLabel, gaugeName).putValue(SInfoResultType.dischargeLong, qOut) | |
9533
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
183 .putValue(SInfoResultType.dischargeZone, zone)); |
9157
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
184 } |
f9bb5d0a6ff3
Added the S-Info collision calculation and chart output
mschaefer
parents:
9150
diff
changeset
|
185 } |
9533
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
186 |
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
187 /** |
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
188 * Gets the discharge of a gauge and a W |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
189 * |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
190 * @param years |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
191 * @param qfinderProblemCount |
9533
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
192 */ |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
193 private double getQ(final Map<String, TreeMap<Date, GaugeDischargeValuesFinder>> qFinders, final String gaugeName, final double w, final Date when, |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
194 final River river, final Calculation problems, final List<DateRange> years, int qfinderProblemCount) { |
9533
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
195 // Find the gauge and load its discharge table, if not already in the map |
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
196 final String gnKey = gaugeName.toLowerCase(); |
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
197 if (!qFinders.containsKey(gnKey)) |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
198 addQFinders(qFinders, gaugeName, problems, river, years); |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
199 |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
200 // Interpolate W. |
9533
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
201 // Interpolate W. |
9613
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
202 final GaugeDischargeValuesFinder qFinder = getQFinder(qFinders.get(gnKey), when); |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
203 if (qFinder == null) { |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
204 qfinderProblemCount++; |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
205 if (qfinderProblemCount == 1) |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
206 problems.addProblem("gauge_discharge_table.missing", gaugeName); |
9533
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
207 return Double.NaN; |
9613
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
208 } |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
209 return qFinder.getDischarge(w); |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
210 } |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
211 |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
212 /** |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
213 * Add the discharge finders for a gauge and the active time period |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
214 */ |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
215 private void addQFinders(final Map<String, TreeMap<Date, GaugeDischargeValuesFinder>> qFinders, final String gaugeName, final Calculation problems, |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
216 final River river, final List<DateRange> years) { |
9613
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
217 final String gnKey = gaugeName.toLowerCase(); |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
218 final Gauge gauge = river.determineGaugeByName(gaugeName); |
9613
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
219 if (gauge == null) { |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
220 qFinders.put(gnKey, new TreeMap<Date, GaugeDischargeValuesFinder>()); |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
221 return; |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
222 } |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
223 final List<DischargeTable> qtables = DischargeTable.fetchHistoricalDischargeTables(gauge, years.get(0).getFrom(), years.get(years.size() - 1).getTo()); |
9613
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
224 qFinders.put(gnKey, new TreeMap<Date, GaugeDischargeValuesFinder>()); |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
225 for (final DischargeTable qtable : qtables) |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
226 qFinders.get(gnKey).put(qtable.getTimeInterval().getStartTime(), GaugeDischargeValuesFinder.loadValues(qtable, river, gaugeName, problems)); |
9613
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
227 } |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
228 |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
229 /** |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
230 * Searches a q values finder map for a date time |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
231 */ |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
232 private GaugeDischargeValuesFinder getQFinder(final TreeMap<Date, GaugeDischargeValuesFinder> qFinders, final Date when) { |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
233 if (qFinders.containsKey(when)) |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
234 return qFinders.get(when); |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
235 final Entry<Date, GaugeDischargeValuesFinder> found = qFinders.floorEntry(when); |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
236 if (found == null) |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
237 return null; |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
238 if ((found.getValue().getEndTime() != null) && found.getValue().getEndTime().before(when)) |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
239 return null; |
f2473dc34535
Nachtrag Pos. 19: Q calculation with historical discharge tables instead of master discharge table
mschaefer
parents:
9582
diff
changeset
|
240 return found.getValue(); |
9533
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
241 } |
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
242 |
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
243 /** |
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
244 * Gets the main value zone name of a gauge and a Q |
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
245 */ |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
246 private String getZone(final Map<String, GaugeMainValueFinder> zoneFinders, final String gaugeName, final double q, final River river, |
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
247 final Calculation problems) { |
9533
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
248 // Find the gauge and load its main value list, if not already in the map |
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
249 final String gnKey = gaugeName.toLowerCase(); |
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
250 if (!zoneFinders.containsKey(gnKey)) |
9617
1d4262a68f1f
#12 Minuend/Subtrahend + MergeConflict #19 CollisionCalculation
dnt_bjoernsen <d.tironi@bjoernsen.de>
parents:
9613
diff
changeset
|
251 zoneFinders.put(gnKey, GaugeMainValueFinder.loadValues(MainValueTypeKey.Q, river, gaugeName, problems, "GLQ")); |
9533
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
252 // Build the zone name |
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
253 if (zoneFinders.get(gnKey) == null) |
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
254 return ""; |
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
255 return zoneFinders.get(gnKey).findZoneName(q); |
d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
mschaefer
parents:
9499
diff
changeset
|
256 } |
9067 | 257 } |