view artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/DateUniqueMaker.java @ 7300:83bb52fa0c32

(issue1529) Be more tolerant in the fitting. The invalid value warning is removed because invalid data is expected there when datapoints are not valid for this KM
author Andre Heinecke <aheinecke@intevation.de>
date Fri, 11 Oct 2013 18:40:33 +0200
parents 2d96d8240e3e
children a805211690f7
line wrap: on
line source
package org.dive4elements.river.artifacts.model.fixings;

import java.util.Date;

import gnu.trove.TIntObjectHashMap;
import gnu.trove.TLongHashSet;

public class DateUniqueMaker {

    private TLongHashSet      times;
    private TIntObjectHashMap already;

    public DateUniqueMaker() {
        times   = new TLongHashSet();
        already = new TIntObjectHashMap();
    }

    public <T extends QWI> void makeUnique(T t) {

        // Map same index to same new value
        if (already.containsKey(t.index)) {
            t.date = (Date)already.get(t.index);
            return;
        }
        long time = t.date.getTime();
        if (!times.add(time)) { // same found before
            do {
                time += 30L*1000L; // Add 30secs
            }
            while (!times.add(time));
            Date newDate = new Date(time);
            already.put(t.index, newDate);
            // Write back modified time.
            t.date = newDate;
        }
        else {
            // register as seen.
            already.put(t.index, t.date);
        }
    }
}

http://dive4elements.wald.intevation.org