view artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixResult.java @ 9348:a3f318347707

Show wq outliers within same thems with different symbol: not ready yet
author gernotbelger
date Tue, 31 Jul 2018 11:25:38 +0200
parents 8efef772a488
children ddcd52d239cd
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.artifacts.model.fixings;

import org.apache.log4j.Logger;
import org.dive4elements.river.artifacts.model.Parameters;

import org.dive4elements.river.utils.KMIndex;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;

public class FixResult
implements   Serializable
{
    private static Logger log =
        Logger.getLogger(FixResult.class);

    protected Parameters      parameters;
    protected KMIndex<QWD []> referenced;
    protected KMIndex<QWD []> outliers;

    public FixResult() {
    }

    public FixResult(
        Parameters      parameters,
        KMIndex<QWD []> referenced,
        KMIndex<QWD []> outliers
    ) {
        this.parameters = parameters;
        this.referenced = referenced;
        this.outliers   = outliers;
    }

    public KMIndex<QWD []> getReferenced() {
        return referenced;
    }

    public void setReferenced(KMIndex<QWD []> referenced) {
        this.referenced = referenced;
    }

    public void makeReferenceEventsDatesUnique() {
        final DateUniqueMaker dum = new DateUniqueMaker();
        
        for (KMIndex.Entry<QWD []> entry: referenced) {
            for (QWD ref: entry.getValue())
                dum.makeUnique(ref);
        }

        // FIXME
//        for (KMIndex.Entry<QWD []> entry: outliers) {
//            for (QWD ref: entry.getValue())
//                dum.makeUnique(ref);
//        }
    }

    private Collection<Integer> getReferenceEventsIndices() {
        final TreeMap<Date, Integer> dates = new TreeMap<>();
        
        for (KMIndex.Entry<QWD []> entry: referenced) {
            for (QWD value: entry.getValue())
                dates.put(value.date, value.index);
        }
// FIXME
//        for (KMIndex.Entry<QWD []> entry: outliers) {
//            for (QWD value: entry.getValue())
//                dates.put(value.date, value.index);
//        }
        
        return dates.values();
    }

    public void remapReferenceIndicesToRank() {
        final RankRemapper remapper = new RankRemapper();
        for (Integer idx: getReferenceEventsIndices())
            remapper.toMap(idx);
        
        for (KMIndex.Entry<QWD []> entry: referenced) {
            for (QWD value: entry.getValue())
                remapper.remap(value);
        }
// FIXME
//        for (KMIndex.Entry<QWD []> entry: outliers) {
//            for (QWD value: entry.getValue())
//                remapper.remap(value);
//        }
    }

    public Collection<Date> getReferenceEventsDates() {
        
        final Set<Date> dates = new TreeSet<>();
        
        for (final KMIndex.Entry<QWD []> entry: referenced) {
            for (final QWD qwd: entry.getValue())
                dates.add(qwd.date);
        }
        
        // FIXME, but not always...
//        for (final KMIndex.Entry<QWD []> entry: outliers) {
//            for (final QWD qwd: entry.getValue())
//                dates.add(qwd.date);
//        }
        
        return dates;
    }


    public KMIndex<QWD []> getOutliers() {
        return outliers;
    }

    public void setOutliers(KMIndex<QWD []> outliers) {
        this.outliers = outliers;
    }

    public Parameters getParameters() {
        return parameters;
    }

    public void setParameters(Parameters parameters) {
        this.parameters = parameters;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org