use of ddf.catalog.resource.data.ReliableResourceComparator in project ddf by codice.
the class ProductCacheDirListener method entryAdded.
@Override
public synchronized void entryAdded(EntryEvent<K, V> event) {
V value = event.getValue();
if (value.getClass().isAssignableFrom(ReliableResource.class)) {
ReliableResource resource = (ReliableResource) value;
LOGGER.debug("entry added event triggered: {}", resource.getKey());
long currentCacheDirSize = cacheDirSize.addAndGet(resource.getSize());
if (maxDirSizeBytes > 0 && maxDirSizeBytes < currentCacheDirSize) {
PagingPredicate pp = new PagingPredicate(new ReliableResourceComparator(), DEFAULT_PAGE_SIZE);
Collection<ReliableResource> lruResourceEntries = map.values(pp);
Iterator<ReliableResource> itr = lruResourceEntries.iterator();
while (maxDirSizeBytes < currentCacheDirSize) {
if (itr.hasNext()) {
ReliableResource rr = itr.next();
deleteFromCache(map, rr);
currentCacheDirSize -= rr.getSize();
} else {
pp.nextPage();
lruResourceEntries = map.values(pp);
itr = lruResourceEntries.iterator();
}
}
}
}
}
Aggregations