001
014
015 package com.liferay.portal.util;
016
017 import com.liferay.portal.kernel.concurrent.ConcurrentLFUCache;
018
019 import java.io.File;
020
021
024 public class LimitedFilesCache<T> {
025
026 public LimitedFilesCache(int maxSize) {
027 _fileRemovingLFUCache = new FileRemovingLFUCache<T>(maxSize);
028 }
029
030 public File get(T key) {
031 return _fileRemovingLFUCache.get(key);
032 }
033
034 public void put(T key) {
035 _fileRemovingLFUCache.put(key, null);
036 }
037
038 public void put(T key, File file) {
039 _fileRemovingLFUCache.put(key, file);
040 }
041
042 private FileRemovingLFUCache<T> _fileRemovingLFUCache;
043
044 private class FileRemovingLFUCache<K> extends
045 ConcurrentLFUCache<K, File> {
046
047 public FileRemovingLFUCache(int maxSize) {
048 super(maxSize);
049 }
050
051 @Override
052 protected void onRemove(K key, File cachedFile) {
053 if (cachedFile != null) {
054 cachedFile.delete();
055 }
056 else {
057 File file = new File(key.toString());
058
059 file.delete();
060 }
061 }
062
063 }
064
065 }