package gov.nysenate.openleg.service.bill.data; import gov.nysenate.openleg.model.base.SessionYear; import gov.nysenate.openleg.model.bill.BaseBillId; import net.sf.ehcache.Element; import net.sf.ehcache.store.AbstractPolicy; public class BillCacheEvictionPolicy extends AbstractPolicy { public static final String NAME = "RECENT_BILL_FIRST"; @Override public String getName() { return NAME; } /** * Determine if element2 is a better candidate for eviction. If element1 contains a bill for the current session * (or greater) then we want to evict element2 if it has an earlier session year. Otherwise we can just use * the Least Recently Used policy. * * @param element1 Element * @param element2 Element * @return boolean */ @Override public boolean compare(Element element1, Element element2) { int element1Year = ((BaseBillId) element1.getObjectKey()).getSession().getYear(); int element2Year = ((BaseBillId) element2.getObjectKey()).getSession().getYear(); return (element1Year >= SessionYear.current().getYear() && element1Year != element2Year) ? (element2Year < element1Year) : (element2.getLastAccessTime() < element1.getLastAccessTime()); } }