Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/sq/SQRelationCalculation.java @ 6780:b8f94e865875
S/Q relation: Part I of 'faking' fitting linear data. S/Qs can now be subclassed and processed through views. TODO: Add knob to setup a linear data path.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 08 Aug 2013 12:17:03 +0200 |
parents | af13ceeba52a |
children | 51eb6491c537 |
comparison
equal
deleted
inserted
replaced
6779:8e5adc56385c | 6780:b8f94e865875 |
---|---|
112 log.error("No '" + SQ_FUNCTION_NAME + "' function found."); | 112 log.error("No '" + SQ_FUNCTION_NAME + "' function found."); |
113 // TODO: i18n | 113 // TODO: i18n |
114 addProblem("sq.missing.sq.function"); | 114 addProblem("sq.missing.sq.function"); |
115 } | 115 } |
116 | 116 |
117 SQ.View sqView = SQ.SQ_VIEW; | |
118 SQ.Factory sqFactory = SQ.SQ_FACTORY; | |
119 | |
117 Measurements measurements = | 120 Measurements measurements = |
118 MeasurementFactory.getMeasurements(river, location, period); | 121 MeasurementFactory.getMeasurements( |
122 river, location, period, sqFactory); | |
119 | 123 |
120 SQFractionResult [] fractionResults = | 124 SQFractionResult [] fractionResults = |
121 new SQFractionResult[SQResult.NUMBER_FRACTIONS]; | 125 new SQFractionResult[SQResult.NUMBER_FRACTIONS]; |
122 | 126 |
123 for (int i = 0; i < fractionResults.length; ++i) { | 127 for (int i = 0; i < fractionResults.length; ++i) { |
124 List<SQ> sqs = measurements.getSQs(i); | 128 List<SQ> sqs = measurements.getSQs(i); |
125 | 129 |
126 SQFractionResult fractionResult; | 130 SQFractionResult fractionResult; |
127 | 131 |
128 List<SQFractionResult.Iteration> iterations = | 132 List<SQFractionResult.Iteration> iterations = |
129 doFitting(function, sqs); | 133 doFitting(function, sqs, sqView); |
130 | 134 |
131 if (iterations == null) { | 135 if (iterations == null) { |
132 // TODO: i18n | 136 // TODO: i18n |
133 addProblem("sq.fitting.failed." + i); | 137 addProblem("sq.fitting.failed." + i); |
134 fractionResult = new SQFractionResult(); | 138 fractionResult = new SQFractionResult(); |
147 this); | 151 this); |
148 } | 152 } |
149 | 153 |
150 protected List<SQFractionResult.Iteration> doFitting( | 154 protected List<SQFractionResult.Iteration> doFitting( |
151 final Function function, | 155 final Function function, |
152 List<SQ> sqs | 156 List<SQ> sqs, |
157 SQ.View sqView | |
153 ) { | 158 ) { |
154 final List<SQFractionResult.Iteration> iterations = | 159 final List<SQFractionResult.Iteration> iterations = |
155 new ArrayList<SQFractionResult.Iteration>(); | 160 new ArrayList<SQFractionResult.Iteration>(); |
156 | 161 |
157 boolean success = new Fitting(function, outliers).fit( | 162 boolean success = new Fitting(function, outliers, sqView).fit( |
158 sqs, | 163 sqs, |
159 method, | 164 method, |
160 new Fitting.Callback() { | 165 new Fitting.Callback() { |
161 @Override | 166 @Override |
162 public void afterIteration( | 167 public void afterIteration( |