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 }

http://dive4elements.wald.intevation.org