ingo@3072: package de.intevation.flys.artifacts.model.sq; ingo@3072: ingo@3079: import java.util.ArrayList; ingo@3079: import java.util.List; ingo@3079: ingo@3072: import org.apache.log4j.Logger; ingo@3072: ingo@3072: import de.intevation.flys.artifacts.model.Calculation; ingo@3072: import de.intevation.flys.artifacts.model.CalculationResult; ingo@3105: import de.intevation.flys.artifacts.model.Parameters; ingo@3072: ingo@3072: import de.intevation.flys.artifacts.MINFOArtifact; ingo@3072: ingo@3072: ingo@3072: public class SQRelationCalculation extends Calculation { ingo@3072: ingo@3072: private static final Logger logger = ingo@3072: Logger.getLogger(SQRelationCalculation.class); ingo@3072: ingo@3072: ingo@3072: public CalculationResult calculate(MINFOArtifact artifact) { ingo@3072: logger.info("SQRelationCalculation.calculate"); ingo@3072: ingo@3072: // TODO Collect input params and use them for buildCalculationResult() ingo@3072: ingo@3072: return buildCalculationResult(); ingo@3072: } ingo@3072: ingo@3072: ingo@3072: protected CalculationResult buildCalculationResult( ingo@3072: // TODO Insert input params here ingo@3072: ) { ingo@3072: logger.info("SQRelationCalculation.buildCalculationResult"); ingo@3072: logger.error("Not implemented!"); ingo@3072: ingo@3079: SQResult[] result = getFakeResult(); ingo@3079: ingo@3079: return new CalculationResult(result, this); ingo@3079: } ingo@3079: ingo@3079: ingo@3079: protected SQResult[] getFakeResult() { ingo@3079: ingo@3105: Parameters params = getFakeParameters(); ingo@3079: SQ[] measurements = getFakeMeasurements(); ingo@3079: SQ[] fOutliers = getFakeOutliers(10); ingo@3079: SQ[] tOutliers = getFakeOutliers(20); ingo@3079: ingo@3079: List outliers = new ArrayList(); ingo@3079: outliers.add(fOutliers); ingo@3079: outliers.add(tOutliers); ingo@3079: ingo@3101: SQResult res = new SQResult(); ingo@3101: ingo@3101: res.setFraction( ingo@3101: SQResult.FRACTION_A, ingo@3105: new SQFractionResult(params, measurements, outliers)); ingo@3101: ingo@3101: res.setFraction( ingo@3101: SQResult.FRACTION_B, ingo@3105: new SQFractionResult(params, measurements, outliers)); ingo@3101: ingo@3101: res.setFraction( ingo@3101: SQResult.FRACTION_C, ingo@3105: new SQFractionResult(params, measurements, outliers)); ingo@3101: ingo@3101: return new SQResult[] { res }; ingo@3079: } ingo@3079: ingo@3105: ingo@3105: protected Parameters getFakeParameters() { ingo@3105: Parameters params = new Parameters(new String[] { ingo@3105: "a", ingo@3105: "b" ingo@3105: }); ingo@3105: ingo@3105: params.set(0, 0, 0.0082); ingo@3105: params.set(0, 1, 1.09); ingo@3105: ingo@3105: return params; ingo@3105: } ingo@3105: ingo@3105: ingo@3079: protected SQ[] getFakeMeasurements() { ingo@3079: List a = new ArrayList(); ingo@3079: ingo@3079: a.add(new SQ(11.172500000000001, 1250.0)); ingo@3079: a.add(new SQ(13.407000000000002, 1500.0)); ingo@3079: a.add(new SQ(15.641500000000002, 1750.0)); ingo@3079: a.add(new SQ(17.876000000000005, 2000.0)); ingo@3079: a.add(new SQ(20.110500000000005, 2250.0)); ingo@3079: a.add(new SQ(22.345000000000002, 2500.0)); ingo@3079: a.add(new SQ(24.579500000000003, 2750.0)); ingo@3079: a.add(new SQ(26.814000000000004, 3000.0)); ingo@3079: a.add(new SQ(29.048500000000004, 3250.0)); ingo@3079: a.add(new SQ(31.283000000000005, 3500.0)); ingo@3079: a.add(new SQ(33.517500000000005, 3750.0)); ingo@3079: a.add(new SQ(35.75200000000001, 4000.0)); ingo@3079: a.add(new SQ(37.98650000000001, 4250.0)); ingo@3079: a.add(new SQ(40.22100000000001, 4500.0)); ingo@3079: a.add(new SQ(42.45550000000001, 4750.0)); ingo@3079: ingo@3079: return (SQ[]) a.toArray(new SQ[a.size()]); ingo@3079: } ingo@3079: ingo@3079: ingo@3079: protected SQ[] getFakeOutliers(int diff) { ingo@3079: List a = new ArrayList(); ingo@3079: ingo@3118: double[][] values = new double[15][2]; ingo@3118: ingo@3118: values[0][0] = 11.172500000000001-diff; ingo@3118: values[0][1] = 1250.0; ingo@3118: values[1][0] = 13.407000000000002+diff; ingo@3118: values[1][1] = 1500.0; ingo@3118: values[2][0] = 25.641500000000002-diff; ingo@3118: values[2][1] = 1750.0; ingo@3118: values[3][0] = 17.876000000000005+diff; ingo@3118: values[3][1] = 2000.0; ingo@3118: values[4][0] = 20.110500000000005-diff; ingo@3118: values[4][1] = 2250.0; ingo@3118: values[5][0] = 22.345000000000002+diff; ingo@3118: values[5][1] = 2500.0; ingo@3118: values[6][0] = 24.579500000000003-diff; ingo@3118: values[6][1] = 2750.0; ingo@3118: values[7][0] = 26.814000000000004+diff; ingo@3118: values[7][1] = 3000.0; ingo@3118: values[8][0] = 29.048500000000004-diff; ingo@3118: values[8][1] = 3250.0; ingo@3118: values[9][0] = 31.283000000000005+diff; ingo@3118: values[9][1] = 3500.0; ingo@3118: values[10][0] = 33.517500000000005-diff; ingo@3118: values[10][1] = 3750.0; ingo@3118: values[11][0] = 35.75200000000001-diff; ingo@3118: values[11][1] = 4000.0; ingo@3118: values[12][0] = 37.98650000000001+diff; ingo@3118: values[12][1] = 4250.0; ingo@3118: values[13][0] = 40.22100000000001+diff; ingo@3118: values[13][1] = 4500.0; ingo@3118: values[14][0] = 42.45550000000001+diff; ingo@3118: values[14][1] = 4750.0; ingo@3118: ingo@3118: for (double[] value: values) { ingo@3118: double s = value[0]; ingo@3118: double q = value[1]; ingo@3118: ingo@3118: s = s > 0 ? s : s * -1; ingo@3118: q = q > 0 ? q : q * -1; ingo@3118: ingo@3118: a.add(new SQ(s, q)); ingo@3118: } ingo@3079: ingo@3079: return (SQ[]) a.toArray(new SQ[a.size()]); ingo@3072: } ingo@3072: } ingo@3072: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :