Mercurial > dive4elements > river
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(); |