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(

http://dive4elements.wald.intevation.org