package mf;
/*Generated by MPS */
import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
public class SingleTemporalCollection implements TemporalCollection {
private Map myContents = new HashMap();
private List myMilestoneCache;
public SingleTemporalCollection() {
}
@Override
public Object get(MfDate when) {
for (Object o : milestones()) {
MfDate thisDate = (MfDate) o;
if (thisDate.before(when) || thisDate.equals(when)) {
return myContents.get(thisDate);
}
}
throw new IllegalArgumentException("no records that early");
}
@Override
public void put(MfDate at, Object item) {
myContents.put(at, item);
clearMilestoneCache();
}
private List milestones() {
if (myMilestoneCache == null) {
calculateMilestones();
}
return myMilestoneCache;
}
private void calculateMilestones() {
myMilestoneCache = new ArrayList(myContents.size());
myMilestoneCache.addAll(myContents.keySet());
Collections.sort(myMilestoneCache, Collections.reverseOrder());
}
private void clearMilestoneCache() {
myMilestoneCache = null;
}
@Override
public Object get(int year, int month, int date) {
return get(new MfDate(year, month, date));
}
@Override
public Object get() {
return get(MfDate.today());
}
@Override
public void put(Object item) {
put(MfDate.today(), item);
}
public TemporalCollection copy() {
SingleTemporalCollection result = new SingleTemporalCollection();
result.myContents.putAll(this.myContents);
return result;
}
}