view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/SQRelationCalculation.java @ 3105:9592b7d76633

Generate fake data for SQ curves; Implemented the Facet and Generator stuff. flys-artifacts/trunk@4704 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 19 Jun 2012 13:55:14 +0000
parents b31397addf2f
children 6fb211753674
line wrap: on
line source
package de.intevation.flys.artifacts.model.sq;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

import de.intevation.flys.artifacts.model.Calculation;
import de.intevation.flys.artifacts.model.CalculationResult;
import de.intevation.flys.artifacts.model.Parameters;

import de.intevation.flys.artifacts.MINFOArtifact;


public class SQRelationCalculation extends Calculation {

    private static final Logger logger =
        Logger.getLogger(SQRelationCalculation.class);


    public CalculationResult calculate(MINFOArtifact artifact) {
        logger.info("SQRelationCalculation.calculate");

        // TODO Collect input params and use them for buildCalculationResult()

        return buildCalculationResult();
    }


    protected CalculationResult buildCalculationResult(
        // TODO Insert input params here
    ) {
        logger.info("SQRelationCalculation.buildCalculationResult");
        logger.error("Not implemented!");

        SQResult[] result = getFakeResult();

        return new CalculationResult(result, this);
    }


    protected SQResult[] getFakeResult() {

        Parameters params = getFakeParameters();
        SQ[] measurements = getFakeMeasurements();
        SQ[] fOutliers    = getFakeOutliers(10);
        SQ[] tOutliers    = getFakeOutliers(20);

        List<SQ[]> outliers = new ArrayList<SQ[]>();
        outliers.add(fOutliers);
        outliers.add(tOutliers);

        SQResult res = new SQResult();

        res.setFraction(
            SQResult.FRACTION_A,
            new SQFractionResult(params, measurements, outliers));

        res.setFraction(
            SQResult.FRACTION_B,
            new SQFractionResult(params, measurements, outliers));

        res.setFraction(
            SQResult.FRACTION_C,
            new SQFractionResult(params, measurements, outliers));

        return new SQResult[] { res };
    }


    protected Parameters getFakeParameters() {
        Parameters params = new Parameters(new String[] {
            "a",
            "b"
        });

        params.set(0, 0, 0.0082);
        params.set(0, 1, 1.09);

        return params;
    }


    protected SQ[] getFakeMeasurements() {
        List<SQ> a = new ArrayList<SQ>();

        a.add(new SQ(11.172500000000001, 1250.0));
        a.add(new SQ(13.407000000000002, 1500.0));
        a.add(new SQ(15.641500000000002, 1750.0));
        a.add(new SQ(17.876000000000005, 2000.0));
        a.add(new SQ(20.110500000000005, 2250.0));
        a.add(new SQ(22.345000000000002, 2500.0));
        a.add(new SQ(24.579500000000003, 2750.0));
        a.add(new SQ(26.814000000000004, 3000.0));
        a.add(new SQ(29.048500000000004, 3250.0));
        a.add(new SQ(31.283000000000005, 3500.0));
        a.add(new SQ(33.517500000000005, 3750.0));
        a.add(new SQ(35.75200000000001, 4000.0));
        a.add(new SQ(37.98650000000001, 4250.0));
        a.add(new SQ(40.22100000000001, 4500.0));
        a.add(new SQ(42.45550000000001, 4750.0));

        return (SQ[]) a.toArray(new SQ[a.size()]);
    }


    protected SQ[] getFakeOutliers(int diff) {
        List<SQ> a = new ArrayList<SQ>();

        a.add(new SQ(11.172500000000001-diff, 1250.0));
        a.add(new SQ(13.407000000000002+diff, 1500.0));
        a.add(new SQ(25.641500000000002-diff, 1750.0));
        a.add(new SQ(17.876000000000005+diff, 2000.0));
        a.add(new SQ(20.110500000000005-diff, 2250.0));
        a.add(new SQ(22.345000000000002+diff, 2500.0));
        a.add(new SQ(24.579500000000003-diff, 2750.0));
        a.add(new SQ(26.814000000000004+diff, 3000.0));
        a.add(new SQ(29.048500000000004-diff, 3250.0));
        a.add(new SQ(31.283000000000005+diff, 3500.0));
        a.add(new SQ(33.517500000000005-diff, 3750.0));
        a.add(new SQ(35.75200000000001-diff, 4000.0));
        a.add(new SQ(37.98650000000001+diff, 4250.0));
        a.add(new SQ(40.22100000000001+diff, 4500.0));
        a.add(new SQ(42.45550000000001+diff, 4750.0));

        return (SQ[]) a.toArray(new SQ[a.size()]);
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org