gernotbelger@8883: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@8883: * Software engineering by gernotbelger@8883: * Björnsen Beratende Ingenieure GmbH gernotbelger@8883: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@8883: * gernotbelger@8883: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@8883: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@8883: * documentation coming with Dive4Elements River for details. gernotbelger@8883: */ gernotbelger@8883: package org.dive4elements.river.artifacts.model.fixings; gernotbelger@8883: gernotbelger@8957: import java.util.Calendar; gernotbelger@8883: import java.util.Date; gernotbelger@8883: import java.util.List; gernotbelger@8957: import java.util.SortedSet; gernotbelger@8957: import java.util.TreeSet; gernotbelger@8883: gernotbelger@8883: import org.dive4elements.river.artifacts.access.FixRealizingAccess; gernotbelger@8883: import org.dive4elements.river.artifacts.model.FixingsOverview; gernotbelger@8883: import org.dive4elements.river.artifacts.model.FixingsOverviewFactory; gernotbelger@8883: gernotbelger@8883: /** gernotbelger@8883: * REMARK: this inheritance is only needed, beause changing the orignal calculation will probably break the gernotbelger@8883: * serialization of the artifact.... gernotbelger@8883: * gernotbelger@8883: * @author Gernot Belger gernotbelger@8883: */ gernotbelger@8883: public class FixRealizingCalculationExtended extends FixRealizingCalculation { gernotbelger@8883: private static final long serialVersionUID = 1L; gernotbelger@8883: gernotbelger@8883: public FixRealizingCalculationExtended(final FixRealizingAccess fixAccess) { gernotbelger@8883: super(fixAccess); gernotbelger@8883: } gernotbelger@8883: gernotbelger@8883: public int determineMeanYear() { gernotbelger@8883: final FixingsOverview overview = FixingsOverviewFactory.getOverview(this.river); gernotbelger@8883: final ColumnCache cc = new ColumnCache(); gernotbelger@8883: gernotbelger@8957: final SortedSet years = new TreeSet<>(); gernotbelger@8957: gernotbelger@8957: final Calendar cal = Calendar.getInstance(); gernotbelger@8904: gernotbelger@8883: final List columns = getEventColumns(overview, cc); gernotbelger@8883: for (final Column column : columns) { gernotbelger@8883: final Date date = column.getDate(); gernotbelger@8957: cal.setTime(date); gernotbelger@8957: gernotbelger@8957: final int year = cal.get(Calendar.YEAR); gernotbelger@8957: years.add(year); gernotbelger@8883: } gernotbelger@8883: gernotbelger@8957: final Integer first = years.first(); gernotbelger@8957: final Integer last = years.last(); gernotbelger@8957: if (first == null || last == null) gernotbelger@8957: return -1; gernotbelger@8957: gernotbelger@8957: return (first + last) / 2; gernotbelger@8883: } gernotbelger@8883: }