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; } }