teichmann@6877: package org.dive4elements.river.artifacts.model.fixings; teichmann@6877: teichmann@6877: import java.util.Date; teichmann@6877: teichmann@6877: import gnu.trove.TIntObjectHashMap; teichmann@6877: import gnu.trove.TLongHashSet; teichmann@6877: teichmann@6877: public class DateUniqueMaker { teichmann@6877: teichmann@6877: private TLongHashSet times; teichmann@6877: private TIntObjectHashMap already; teichmann@6877: teichmann@6877: public DateUniqueMaker() { teichmann@6877: times = new TLongHashSet(); teichmann@6877: already = new TIntObjectHashMap(); teichmann@6877: } teichmann@6877: teichmann@6877: public void makeUnique(T t) { teichmann@6877: teichmann@6877: // Map same index to same new value teichmann@6877: if (already.containsKey(t.index)) { teichmann@6877: t.date = (Date)already.get(t.index); teichmann@6877: return; teichmann@6877: } teichmann@6877: long time = t.date.getTime(); teichmann@6877: if (!times.add(time)) { // same found before teichmann@6877: do { teichmann@6877: time += 30L*1000L; // Add 30secs teichmann@6877: } teichmann@6877: while (!times.add(time)); teichmann@6877: Date newDate = new Date(time); teichmann@6877: already.put(t.index, newDate); teichmann@6877: // Write back modified time. teichmann@6877: t.date = newDate; teichmann@6877: } teichmann@6877: else { teichmann@6877: // register as seen. teichmann@6877: already.put(t.index, t.date); teichmann@6877: } teichmann@6877: } teichmann@6877: }