Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/FixCalculation.java @ 3603:d2ae58f6730d
FixA: Use the column cache to establish a consistent index scheme.
flys-artifacts/trunk@5229 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 22 Aug 2012 10:51:29 +0000 |
parents | b5eec54bd4a2 |
children | 2382b26079ac |
comparison
equal
deleted
inserted
replaced
3602:e1fd2dfdcb80 | 3603:d2ae58f6730d |
---|---|
80 */ | 80 */ |
81 protected static class Column { | 81 protected static class Column { |
82 | 82 |
83 protected Fixing.Column meta; | 83 protected Fixing.Column meta; |
84 protected FixingsColumn data; | 84 protected FixingsColumn data; |
85 protected int index; | |
85 | 86 |
86 public Column() { | 87 public Column() { |
87 } | 88 } |
88 | 89 |
89 public Column(Fixing.Column meta, FixingsColumn data) { | 90 public Column(Fixing.Column meta, FixingsColumn data, int index) { |
90 this.meta = meta; | 91 this.meta = meta; |
91 this.data = data; | 92 this.data = data; |
93 this.index = index; | |
92 } | 94 } |
93 | 95 |
94 public Date getDate() { | 96 public Date getDate() { |
95 return meta.getStartTime(); | 97 return meta.getStartTime(); |
96 } | 98 } |
97 | 99 |
98 public String getDescription() { | 100 public String getDescription() { |
99 return meta.getDescription(); | 101 return meta.getDescription(); |
102 } | |
103 | |
104 public int getIndex() { | |
105 return index; | |
100 } | 106 } |
101 | 107 |
102 public boolean getQW( | 108 public boolean getQW( |
103 double km, | 109 double km, |
104 double [] qs, | 110 double [] qs, |
134 if (column == null) { | 140 if (column == null) { |
135 FixingsColumn data = FixingsColumnFactory | 141 FixingsColumn data = FixingsColumnFactory |
136 .getInstance() | 142 .getInstance() |
137 .getColumnData(meta); | 143 .getColumnData(meta); |
138 if (data != null) { | 144 if (data != null) { |
139 column = new Column(meta, data); | 145 column = new Column(meta, data, columns.size()); |
140 columns.put(key, column); | 146 columns.put(key, column); |
141 } | 147 } |
142 } | 148 } |
143 return column; | 149 return column; |
144 } | 150 } |
232 | 238 |
233 protected Filter createFilter() { | 239 protected Filter createFilter() { |
234 return new IdsFilter(events); | 240 return new IdsFilter(events); |
235 } | 241 } |
236 | 242 |
237 protected List<Column> getEventColumns(FixingsOverview overview) { | 243 protected List<Column> getEventColumns( |
238 | 244 FixingsOverview overview, |
245 ColumnCache cc | |
246 ) { | |
239 FixingsColumnFactory fcf = FixingsColumnFactory.getInstance(); | 247 FixingsColumnFactory fcf = FixingsColumnFactory.getInstance(); |
240 | 248 |
241 Filter filter = createFilter(); | 249 Filter filter = createFilter(); |
242 | 250 |
243 List<Fixing.Column> metas = overview.filter(null, filter); | 251 List<Fixing.Column> metas = overview.filter(null, filter); |
244 | 252 |
245 List<Column> columns = new ArrayList<Column>(metas.size()); | 253 List<Column> columns = new ArrayList<Column>(metas.size()); |
246 | 254 |
247 for (Fixing.Column meta: metas) { | 255 for (Fixing.Column meta: metas) { |
248 | 256 |
249 FixingsColumn data = fcf.getColumnData(meta); | 257 Column data = cc.getColumn(meta); |
250 if (data == null) { | 258 if (data == null) { |
251 addProblem("fix.cannot.load.data"); | 259 addProblem("fix.cannot.load.data"); |
252 } | 260 } |
253 else { | 261 else { |
254 columns.add(new Column(meta, data)); | 262 columns.add(data); |
255 } | 263 } |
256 } | 264 } |
257 | 265 |
258 return columns; | 266 return columns; |
259 } | 267 } |
260 | 268 |
261 protected FitResult doFitting(FixingsOverview overview, Function func) { | 269 protected FitResult doFitting( |
262 | 270 FixingsOverview overview, |
271 ColumnCache cc, | |
272 Function func | |
273 ) { | |
263 boolean debug = log.isDebugEnabled(); | 274 boolean debug = log.isDebugEnabled(); |
264 | 275 |
265 final List<Column> eventColumns = getEventColumns(overview); | 276 final List<Column> eventColumns = getEventColumns(overview, cc); |
266 | 277 |
267 if (eventColumns.size() < 2) { | 278 if (eventColumns.size() < 2) { |
268 addProblem("fix.too.less.data.columns"); | 279 addProblem("fix.too.less.data.columns"); |
269 return null; | 280 return null; |
270 } | 281 } |