Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixResultColumn.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.Comparator; import java.util.Date; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.math.DoubleRange; import org.dive4elements.river.utils.KMIndex; /** * Result data is organized by their original fixing-column, represented by this class. * * @author Gernot Belger */ public class FixResultColumn implements Serializable { public static class DateComparator implements Comparator<FixResultColumn> { @Override public int compare(final FixResultColumn o1, final FixResultColumn o2) { final Date date1 = o1.getDate(); final Date date2 = o2.getDate(); return date1.compareTo(date2); } } private static final long serialVersionUID = 1L; /** We know the columnId is unique within the database, so this takes the place here as primary key */ private int columnId; private final KMIndex<QWD> data = new KMIndex<>(); private Date date; private DoubleRange stationRange; public FixResultColumn() { } public FixResultColumn(final int columnId, final Date date, final DoubleRange stationRange) { this.columnId = columnId; this.date = date; this.stationRange = stationRange; } public int getColumnId() { return this.columnId; } public DoubleRange getStationRange() { return this.stationRange; } public Date getDate() { return this.date; } public void addQWD(final double km, final QWD qwd) { this.data.add(km, qwd); } @Override public boolean equals(final Object obj) { if (obj == null) return false; if (obj == this) return true; if (obj.getClass() != getClass()) return false; final FixResultColumn rhs = (FixResultColumn) obj; return new EqualsBuilder() // .append(this.columnId, rhs.columnId) // .isEquals(); } @Override public int hashCode() { return new HashCodeBuilder() // .append(this.columnId) // .toHashCode(); } public QWD getQWD(final double currentKm) { final KMIndex.Entry<QWD> entry = this.data.binarySearch(currentKm); if (entry == null) return null; return entry.getValue(); } public KMIndex<QWD> getQWDs() { return this.data; } }