comparison artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/salix/DistanceOnlyPartHistoricalSelect.java @ 9247:1ec3b891ab02

salix.historical.distance_only_part detail work
author gernotbelger
date Thu, 12 Jul 2018 12:12:01 +0200
parents c08d5cfa4981
children f48a8dc78529
comparison
equal deleted inserted replaced
9246:c08d5cfa4981 9247:1ec3b891ab02
21 import org.dive4elements.river.artifacts.resources.Resources; 21 import org.dive4elements.river.artifacts.resources.Resources;
22 import org.dive4elements.river.artifacts.states.AddTableDataHelper; 22 import org.dive4elements.river.artifacts.states.AddTableDataHelper;
23 import org.dive4elements.river.artifacts.states.DistanceOnlySelect; 23 import org.dive4elements.river.artifacts.states.DistanceOnlySelect;
24 import org.dive4elements.river.artifacts.uinfo.UINFOArtifact; 24 import org.dive4elements.river.artifacts.uinfo.UINFOArtifact;
25 import org.dive4elements.river.model.BedHeight; 25 import org.dive4elements.river.model.BedHeight;
26 import org.dive4elements.river.model.River;
27 import org.dive4elements.river.utils.Formatter;
26 import org.w3c.dom.Element; 28 import org.w3c.dom.Element;
27 29
28 public class DistanceOnlyPartHistoricalSelect extends DistanceOnlySelect { 30 public class DistanceOnlyPartHistoricalSelect extends DistanceOnlySelect {
29 31
30 private static final long serialVersionUID = 1L; 32 private static final long serialVersionUID = 1L;
31 private static Logger log = Logger.getLogger(DistanceOnlyPartHistoricalSelect.class); 33 private static Logger log = Logger.getLogger(DistanceOnlyPartHistoricalSelect.class);
32 34
33 List<BedHeight> bhs = null; 35 List<BedHeight> bhs = null;
36 Integer epoch = null;
37 Integer year = null;
38 Double lowerKm = null;
39 Double upperKm = null;
40 River river = null;
34 41
35 @Override 42 @Override
36 protected String getUIProvider() { 43 protected String getUIProvider() {
37 return "distance_only_part_historical_panel"; 44 return "distance_only_part_historical_panel";
38 } 45 }
86 iae.printStackTrace(); 93 iae.printStackTrace();
87 } 94 }
88 } 95 }
89 96
90 private List<BedHeight> getBedheights(final Artifact artifact) { 97 private List<BedHeight> getBedheights(final Artifact artifact) {
98
99 final SalixLineAccess access = new SalixLineAccess((UINFOArtifact) artifact); // improved lazy-loading
100 final Integer year = access.getYear();
101 final Integer epoch = access.getEpoch();
102 final River river = access.getRiver(); // comparable? workflow does not allow return and change anyway...
103 final Double lower = access.getLowerKm();
104 final Double upper = access.getUpperKm();
105 if (!(this.year == year && this.epoch == epoch && this.river == river && this.lowerKm == lower && this.upperKm == upper)) {
106 this.bhs = null;
107 }
91 if (this.bhs == null) { 108 if (this.bhs == null) {
92 final SalixLineAccess access = new SalixLineAccess((UINFOArtifact) artifact);
93 final Integer year = access.getYear();
94
95 final Integer epoch = access.getEpoch();
96 final boolean isEpoch = epoch == null ? false : true; 109 final boolean isEpoch = epoch == null ? false : true;
97 this.bhs = BedHeight.getBedHeightYearEpoch(isEpoch, isEpoch ? epoch : year, access.getRiver(), access.getLowerKm(), access.getUpperKm()); 110 this.bhs = BedHeight.getBedHeightYearEpoch(isEpoch, isEpoch ? epoch : year, river, lower, upper);
111 this.year = year;
112 this.epoch = epoch;
113 this.river = river;
114 this.lowerKm = lower;
115 this.upperKm = upper;
98 } 116 }
99 return this.bhs; 117 return this.bhs;
100 118
101 } 119 }
102 120
103 private static final void makeDataSourceYearEpoch(final Artifact artifact, final ElementCreator creator, final Element select, final CallContext context, 121 private static final void makeDataSourceYearEpoch(final Artifact artifact, final ElementCreator creator, final Element select, final CallContext context,
104 final List<BedHeight> bedheights) { 122 final List<BedHeight> bedheights) {
105 123
106 final AddTableDataHelper helper = new AddTableDataHelper(creator, select, "year", context.getMeta()); 124 final AddTableDataHelper helper = new AddTableDataHelper(creator, select, "year", context.getMeta());
107 125
108 helper.addColumn(0, "from_to", "100", "year", "INTEGER", "LEFT", null); 126 // TODO: probably aggregating results, no sound-row, output as single row
109 helper.addColumn(1, "description", "500", "uinfo.salix.soundings", "STRING", "LEFT", null); 127
128 int year = 0; // hässlich, aber kommt vermutlich eh bald weg
129 if (bedheights != null && bedheights.size() > 0)
130 year = bedheights.get(0).getYear(); // das jahr/epoche ist immer dasselbe
131
132 helper.addColumn(0, "year", "60", "year", "INTEGER", "LEFT", null);
133 helper.addColumn(1, "range", "130", "state.uinfo.salix.historical.km_range_part", "STRING", "LEFT", null);
134 helper.addColumn(2, "description", "500", "uinfo.salix.sounding", "STRING", "LEFT", null);
110 135
111 final TreeMap<String, String> bedHeightSorted = new TreeMap<>(); 136 final TreeMap<String, String> bedHeightSorted = new TreeMap<>();
112 final double min = Double.MAX_VALUE; 137 final double min = Double.MAX_VALUE;
113 final double max = -Double.MAX_VALUE; 138 final double max = -Double.MAX_VALUE;
139 final java.text.NumberFormat formatter = Formatter.getCalculationKm(context.getMeta());
114 140
115 for (final BedHeight bh : bedheights) { 141 for (final BedHeight bh : bedheights) {
116 final org.dive4elements.river.model.Range range = BedHeight.getRangeFromBedHeights(bh); 142 final org.dive4elements.river.model.Range range = BedHeight.getRangeFromBedHeights(bh);
117 final Double from = range.getA().doubleValue(); // NullPointer check?? 143 final Double from = range.getA().doubleValue(); // NullPointer check??
118 final Double to = range.getB().doubleValue(); 144 final Double to = range.getB().doubleValue();
119 145
120 bedHeightSorted.put(bh.getDescription(), String.valueOf(from) + " - " + String.valueOf(to)); 146 bedHeightSorted.put(bh.getDescription(), formatter.format(from) + " - " + formatter.format(to));
121 } 147 }
122 final Iterator<String> iterator = bedHeightSorted.keySet().iterator(); 148 final Iterator<String> iterator = bedHeightSorted.keySet().iterator();
123 while (iterator.hasNext()) { 149 while (iterator.hasNext()) {
124 final String descr = iterator.next(); 150 final String descr = iterator.next();
125 final String fromTo = bedHeightSorted.get(descr); 151 final String fromTo = bedHeightSorted.get(descr);
126 final Map<String, String> row = new HashMap<>(); 152 final Map<String, String> row = new HashMap<>();
127 row.put("from_to", String.valueOf(fromTo)); 153 row.put("year", String.valueOf(year));
154 row.put("range", fromTo);
128 row.put("description", descr); 155 row.put("description", descr);
129 helper.addRow(row); 156 helper.addRow(row);
130 } 157 }
131 158
132 helper.submitMapToXml(); 159 helper.submitMapToXml();

http://dive4elements.wald.intevation.org