view flys-artifacts/src/main/java/de/intevation/flys/exports/fixings/FixWQCurveGenerator.java @ 3055:1fbf8462f808

FixWQCurveGenerator generates randomized curves as the Facets crashes when retrieving data flys-artifacts/trunk@4631 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Christian Lins <christian.lins@intevation.de>
date Sat, 09 Jun 2012 13:46:04 +0000
parents
children 0b5a7a2c3724
line wrap: on
line source
package de.intevation.flys.exports.fixings;

import de.intevation.artifactdatabase.state.ArtifactAndFacet;
import de.intevation.flys.artifacts.model.FacetTypes;
import de.intevation.flys.artifacts.model.WQDay;
import de.intevation.flys.artifacts.model.fixings.QW;
import de.intevation.flys.exports.ChartGenerator;
import de.intevation.flys.exports.XYChartGenerator;
import de.intevation.flys.jfree.StyledXYSeries;

import java.util.Date;

import org.apache.log4j.Logger;

import org.jfree.data.xy.XYSeries;

import org.w3c.dom.Document;

public class FixWQCurveGenerator 
extends XYChartGenerator 
implements FacetTypes
{
    private static Logger logger =
        Logger.getLogger(FixWQChartGenerator.class);

    public static final String I18N_CHART_TITLE =
        "chart.fixings.wq.title";

    public static final String I18N_CHART_SUBTITLE =
        "chart.fixings.wq.subtitle";

    public static final String I18N_XAXIS_LABEL =
        "chart.fixings.wq.xaxis.label";

    public static final String I18N_YAXIS_LABEL =
        "chart.fixings.wq.yaxis.label";

    public static final String I18N_CHART_TITLE_DEFAULT  =
        "Fixierungsanalyse";

    public static final String I18N_XAXIS_LABEL_DEFAULT  =
        "Q [m\u00B3/s]";

    public static final String I18N_YAXIS_LABEL_DEFAULT  =
        "W [NN + m]";

    public static enum YAXIS {
        W(0),
        Q(1);
        public int idx;
        private YAXIS(int c) {
            idx = c;
        }
    }

    @Override
    public void doOut(ArtifactAndFacet bundle, Document doc, boolean visible) {
        String name = bundle.getFacetName();
/*        Object data;
        try {
            data = bundle.getData(context);
        } catch(NullPointerException ex) { // FIXME it's crashing on every edge 
            logger.error("doOut Exception catched", ex);
            data = new Object();
        }*/
        logger.debug("doOut: " + name);
        //logger.debug("doOut: data is instanceof " + data.toString());
        
        if(FIX_SECTOR_AVERAGE_WQ.equals(name)) {
            doSectorAverageOut(bundle, doc, visible);
        } else if(FIX_ANALYSIS_EVENTS_WQ.equals(name)) {
            doAnalysisEventsOut(bundle, doc, visible);
        } else if(FIX_ANALYSIS_PERIODS_WQ.equals(name)) {
            doAnalysisPeriodsOut(bundle, doc, visible);
        } else if(FIX_REFERENCE_EVENTS_WQ.equals(name)) {
            doReferenceEventsOut(bundle, doc, visible);
        } else if(FIX_WQ_CURVE.equals(name)) {
            doWQOut(new QW(13.37, 42.23, "Unknown point", new Date()), bundle, doc, visible);
        } else if(FIX_OUTLIER.equals(name)) {
            doOutlierOut(bundle, doc, visible);
        } else {
            logger.warn("Unknown facet name " + name);
            return;
        }
    }

    protected void doSectorAverageOut(ArtifactAndFacet aaf, Document doc, boolean visible) {
       logger.debug("doSectorAverageOut");

       XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), doc);
       java.util.Random rand = new java.util.Random(7000);
       for(int n = 0; n < 10; n++) {
           series.add(rand.nextDouble(), rand.nextDouble());
       }

       addAxisSeries(series, 0, visible);
    }

    protected void doAnalysisEventsOut(ArtifactAndFacet aaf, Document doc, boolean visible) {
       logger.debug("doAnalysisEventsOut");

       XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), doc);
       java.util.Random rand = new java.util.Random(4000);
       for(int n = 0; n < 10; n++) {
           series.add(rand.nextDouble(), rand.nextDouble());
       }

       addAxisSeries(series, 0, visible);
    }

    protected void doAnalysisPeriodsOut(ArtifactAndFacet aaf, Document doc, boolean visible) {
       logger.debug("doAnalysisPeriodsOut");

       XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), doc);
       java.util.Random rand = new java.util.Random(5000);
       for(int n = 0; n < 10; n++) {
           series.add(rand.nextDouble(), rand.nextDouble());
       }

       addAxisSeries(series, 0, visible);
    }

    protected void doReferenceEventsOut(ArtifactAndFacet aaf, Document doc, boolean visible) {
       logger.debug("doReferenceEventsOut");

       XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), doc);
       java.util.Random rand = new java.util.Random(3000);
       for(int n = 0; n < 10; n++) {
           series.add(rand.nextDouble(), rand.nextDouble());
       }

       addAxisSeries(series, 0, visible);
    }

    protected void doWQOut(
        QW            wqdays,
        ArtifactAndFacet aaf,
        Document         theme,
        boolean          visible
    ) {
        logger.debug("doWQOut");

        XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), theme);
        java.util.Random rand = new java.util.Random(1000);
        int size = 10; //wqdays.size();
        for (int i = 0; i < size; i++) {
            //int  day = wqdays.getDate(i);
            //double q = wqdays.getQ(i);

            series.add(rand.nextDouble(), rand.nextDouble());
        }

        addAxisSeries(series, 0, visible);
    }

    protected void doOutlierOut(ArtifactAndFacet aaf, Document doc, boolean visible) {
        logger.debug("doOutlierOut");

        XYSeries series = new StyledXYSeries(aaf.getFacetDescription(), doc);
        java.util.Random rand = new java.util.Random(2000);
        for(int n = 0; n < 10; n++) {
            series.add(rand.nextDouble(), rand.nextDouble());
        }

        addAxisSeries(series,0, visible);
    }

    @Override
    protected String getDefaultChartTitle() {
        return msg(I18N_CHART_TITLE, I18N_CHART_TITLE_DEFAULT);
    }

    @Override
    protected String getDefaultXAxisLabel() {
        return msg(I18N_XAXIS_LABEL, I18N_XAXIS_LABEL_DEFAULT);
    }

    @Override
    protected String getDefaultYAxisLabel(int pos) {
        return msg(I18N_YAXIS_LABEL, I18N_YAXIS_LABEL_DEFAULT);
    }

    @Override
    protected ChartGenerator.YAxisWalker getYAxisWalker() {
        return new YAxisWalker() {
            @Override
            public int length() {
                return YAXIS.values().length;
            }

            @Override
             public String getId(int idx) {
                YAXIS[] yaxes = YAXIS.values();
                return yaxes[idx].toString();
            }
        };
    }   
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org