view artifacts/src/main/java/org/dive4elements/river/exports/SyncNumberAxis.java @ 6601:5ecc6d4d73f2

Add official fixings to Waterlevel CSV Export (issue1384) This searches the collection for staticwqkms artifacts that contain official data and adds that data to the export. The data is filtered by the calculation range and sorted by the calculation direction.
author Andre Heinecke <aheinecke@intevation.de>
date Thu, 18 Jul 2013 13:16:33 +0200
parents 055443cfc1ad
children 0747ca95ad6e
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU AGPL (>=v3)
 * and comes with ABSOLUTELY NO WARRANTY! Check out the
 * documentation coming with Dive4Elements River for details.
 */

package org.dive4elements.river.exports;

import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.event.AxisChangeEvent;
import org.jfree.chart.event.AxisChangeListener;
import org.jfree.data.Range;

import org.apache.log4j.Logger;

/**
 * Axis which is to be registered with other axis and tries
 * to clone its range. The cloned range is transformed.
 */
public class SyncNumberAxis extends IdentifiableNumberAxis
        implements AxisChangeListener
{
    /** The logger used in this generator. */
    private static Logger logger =
        Logger.getLogger(SyncNumberAxis.class);

    /** The other axis to clone range from. */
    protected NumberAxis proxyAxis;

    /** Value to translate range by. */
    protected double shift;


    public SyncNumberAxis(String key, String label, NumberAxis n) {
        super(key, label);
        this.proxyAxis = n;
    }


    /** Range of other axis changed, adjust own range. */
    @Override
    public void axisChanged(AxisChangeEvent event) {
        logger.debug("SyncNumberAxis: axischange event");
        this.setRange(
            transRange(((NumberAxis)event.getAxis()).getRange()));
    }

    /** Set value by which to translate the range. */
    public void setShift(double shift) {
        this.shift = shift;
    }


    /** Set other axis to relate to, register listener. */
    public void setProxyAxis(NumberAxis ax) {
        proxyAxis = ax;
        proxyAxis.addChangeListener(this);
    }

    /** Translate range by shift, scale by 100. */
    protected Range transRange(Range r) {
        return new Range(100d*(r.getLowerBound()+shift),
            100d*(r.getUpperBound()+shift));
    }

    /** Set Range. */
    @Override
    public void setRange(Range r) {
        super.setRange(r);
        logger.debug("SyncAxis: setRange");
    }


    /*
    @Override
    public Range getRange() {
        Range r = new Range(100d*(proxyAxis.getRange().getLowerBound()+shift),
            100d*(proxyAxis.getRange().getUpperBound()+shift));
        return r;
    }

    @Override
    public void setLowerBound(double max) {
    }

    @Override
    public void setLowerMargin(double margin) {
    }

    @Override
    public void setUpperBound(double max) {
    }

    @Override
    public void setUpperMargin(double margin) {
    }

    @Override
    public void setRange(double a, double b) {
    }

    @Override
    public void setRange(Range range, boolean turnOffAutoRange, boolean notify){
    }

    @Override
    public void setRangeAboutValue(double value, double length) {}

    @Override
    public void setRangeWithMargins(double lower, double upper) {}

    @Override
    public void setRangeWithMargins(Range range) {}

    @Override
    public void pan(double percent) {}

    @Override
    public void resizeRange(double p){}

    @Override
    public void resizeRange(double p, double a){}

    @Override
    public void resizeRange2(double p, double a){}

    */
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org