view artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/DateUniqueMaker.java @ 6877:2d96d8240e3e

FixA: Make dates of analysis periods unique, too. TODO: Remap the indices like the reference interval.
author Sascha L. Teichmann <teichmann@intevation.de>
date Wed, 21 Aug 2013 01:09:25 +0200
parents
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