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 }

http://dive4elements.wald.intevation.org