Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/states/minfo/BedQualityDistanceSelect.java @ 8784:6714e07e18c2
Issue1854: Use the real data.
There is no guarantee that the overviews contain the same data.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Tue, 08 Dec 2015 18:10:18 +0100 |
parents | 1116079e6624 |
children | d55cbb45c565 |
comparison
equal
deleted
inserted
replaced
8783:b251a6ad46bb | 8784:6714e07e18c2 |
---|---|
8 | 8 |
9 package org.dive4elements.river.artifacts.states.minfo; | 9 package org.dive4elements.river.artifacts.states.minfo; |
10 | 10 |
11 import java.util.Date; | 11 import java.util.Date; |
12 import java.util.List; | 12 import java.util.List; |
13 import java.util.Collections; | |
13 | 14 |
14 import org.w3c.dom.Element; | 15 import org.w3c.dom.Element; |
15 | 16 |
16 import org.apache.log4j.Logger; | 17 import org.apache.log4j.Logger; |
17 | 18 |
18 import org.dive4elements.river.artifacts.D4EArtifact; | 19 import org.dive4elements.river.artifacts.D4EArtifact; |
19 import org.dive4elements.river.artifacts.access.RiverAccess; | 20 import org.dive4elements.river.artifacts.access.RiverAccess; |
20 import org.dive4elements.river.artifacts.states.DistanceSelect; | 21 import org.dive4elements.river.artifacts.states.DistanceSelect; |
21 import org.dive4elements.river.utils.KMIndex; | |
22 | 22 |
23 import org.dive4elements.river.artifacts.model.minfo.BedOverview; | 23 import org.dive4elements.river.artifacts.model.minfo.QualityMeasurementFactory; |
24 import org.dive4elements.river.artifacts.model.minfo.BedOverviewFactory; | |
25 | 24 |
26 import org.dive4elements.artifacts.common.utils.XMLUtils; | 25 import org.dive4elements.artifacts.common.utils.XMLUtils; |
27 import org.dive4elements.artifacts.Artifact; | 26 import org.dive4elements.artifacts.Artifact; |
28 import org.dive4elements.artifacts.CallContext; | 27 import org.dive4elements.artifacts.CallContext; |
29 | 28 |
51 if (!data.getName().equals("ld_from") | 50 if (!data.getName().equals("ld_from") |
52 && !data.getName().equals("ld_to")) { | 51 && !data.getName().equals("ld_to")) { |
53 return ele; | 52 return ele; |
54 } | 53 } |
55 | 54 |
56 D4EArtifact arti = (D4EArtifact) artifact; | 55 RiverAccess access = new RiverAccess((D4EArtifact)artifact); |
57 RiverAccess access = new RiverAccess(arti); | 56 String river = access.getRiverName(); |
57 double [] minMax = access.getRiver().determineMinMaxDistance(); | |
58 | 58 |
59 /* Bit of an overkill here but it will be cached and accessed | 59 List<Double> bKms = QualityMeasurementFactory.getBedMeasurements( |
60 * in the next state anyway. */ | 60 river, |
61 BedOverview overview = BedOverviewFactory | 61 minMax[0], |
62 .getOverview(access.getRiverName()); | 62 minMax[1], |
63 new Date(Long.MIN_VALUE/100000), | |
64 new Date(Long.MAX_VALUE/1000) | |
65 // values expected to fit in SQL Date, though large enough | |
66 ).getKms(); | |
63 | 67 |
64 if (overview == null) { | 68 List<Double> blKms = QualityMeasurementFactory.getBedloadMeasurements( |
65 log.warn("No overview found for river '" | 69 river, |
66 + access.getRiverName() + "'"); | 70 minMax[0], |
71 minMax[1], | |
72 new Date(Long.MIN_VALUE/100000), | |
73 new Date(Long.MAX_VALUE/1000) | |
74 // values expected to fit in SQL Date, though large enough | |
75 ).getKms(); | |
76 | |
77 if (bKms.isEmpty() || blKms.isEmpty()) { | |
78 log.warn("Not all data found for river '" + river + "'"); | |
67 return ele; | 79 return ele; |
68 } | 80 } |
69 | 81 |
70 KMIndex<List<Date>> entries = overview.filter(BedOverview.ACCEPT); | 82 Collections.sort(blKms); |
71 if (entries.size() == 0) { | 83 Collections.sort(bKms); |
72 log.warn("No data found for river '" | 84 |
73 + access.getRiverName() + "'"); | 85 double start = Math.min(bKms.get(0), blKms.get(0)); |
74 return ele; | 86 double end = Math.max( |
75 } | 87 bKms.get(bKms.size()-1), blKms.get(blKms.size()-1)); |
76 entries.sort(); | |
77 | 88 |
78 if (data.getName().equals("ld_from")) { | 89 if (data.getName().equals("ld_from")) { |
79 cr.addAttr(ele, "defaultLabel", data.getName(), true); | 90 cr.addAttr(ele, "defaultLabel", data.getName(), true); |
80 cr.addAttr(ele, "defaultValue", | 91 cr.addAttr(ele, "defaultValue", Double.toString(start), true); |
81 Double.toString(entries.get(0).getKm()), true); | |
82 } else if (data.getName().equals("ld_to")) { | 92 } else if (data.getName().equals("ld_to")) { |
83 cr.addAttr(ele, "defaultLabel", data.getName(), true); | 93 cr.addAttr(ele, "defaultLabel", data.getName(), true); |
84 cr.addAttr(ele, "defaultValue", | 94 cr.addAttr(ele, "defaultValue", Double.toString(end), true); |
85 Double.toString(entries.get(entries.size()-1).getKm()), true); | |
86 } | 95 } |
87 | 96 |
88 return ele; | 97 return ele; |
89 } | 98 } |
90 } | 99 } |