view artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixResultColumns.java @ 9646:0380717105ba

Implemented alternative fitting strategy for Log-Linear function.
author Gernot Belger <g.belger@bjoernsen.de>
date Mon, 02 Dec 2019 17:56:15 +0100
parents 9744ce3c3853
children
line wrap: on
line source
/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde
 * Software engineering by
 *  Björnsen Beratende Ingenieure GmbH
 *  Dr. Schumacher Ingenieurbüro für Wasser und Umwelt
 *
 * 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 java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Gernot Belger
 */
public class FixResultColumns implements Serializable {
    private static final long serialVersionUID = 1L;

    private final Map<Integer, FixResultColumn> resultColumns = new HashMap<>();

    public FixResultColumns() {
    }

    public Collection<FixResultColumn> getSortedColumns() {
        final Collection<FixResultColumn> values = this.resultColumns.values();

        final List<FixResultColumn> sorted = new ArrayList<>(values);

        Collections.sort(sorted, new FixResultColumn.DateComparator());

        return sorted;
    }

    public FixResultColumn getColumn(final int columnId) {
        return this.resultColumns.get(columnId);
    }

    public void addQWD(final FixingColumnWithData event, final double km, final QWD qwd) {
        final FixResultColumn columnResult = getOrCreateColumResult(event);
        columnResult.addQWD(km, qwd);
    }

    public void sortAll() {
        for (final FixResultColumn column : this.resultColumns.values())
            column.getQWDs().sort();
    }

    private FixResultColumn getOrCreateColumResult(final FixingColumnWithData event) {

        final FixResultColumn existingColumn = this.resultColumns.get(event.getId());
        if (existingColumn != null)
            return existingColumn;

        final FixResultColumn newColumn = new FixResultColumn(event.getId(), event.getDate(), event.getStationRange());
        this.resultColumns.put(event.getId(), newColumn);
        return newColumn;
    }
}

http://dive4elements.wald.intevation.org