package jp.aegif.nemaki.util.cache.impl; import java.util.HashMap; import java.util.Map; import jp.aegif.nemaki.cmis.factory.info.RepositoryInfoMap; import jp.aegif.nemaki.util.PropertyManager; import jp.aegif.nemaki.util.cache.CacheService; import jp.aegif.nemaki.util.cache.NemakiCachePool; public class NemakiCachePoolImpl implements NemakiCachePool{ private Map<String, CacheService> pool = new HashMap<String, CacheService>(); private CacheService nullCache; private RepositoryInfoMap repositoryInfoMap; private PropertyManager propertyManager; public NemakiCachePoolImpl() { } public void init(){ for(String key : repositoryInfoMap.keys()){ add(key); } nullCache = new CacheService(null, propertyManager); } @Override public CacheService get(String repositoryId) { CacheService cache = pool.get(repositoryId); if (cache == null){ return nullCache; }else{ return cache; } } @Override public void add(String repositoryId) { pool.put(repositoryId, new CacheService(repositoryId, propertyManager)); } @Override public void remove(String repositoryId) { pool.remove(repositoryId); } @Override public void removeAll() { pool.clear(); } @Override public void clear(String repositoryId) { pool.put(repositoryId, new CacheService(repositoryId, propertyManager)); } @Override public void clearAll() { for(String key : pool.keySet()){ pool.put(key, new CacheService(key, propertyManager)); } } public void setPropertyManager(PropertyManager propertyManager) { this.propertyManager = propertyManager; } public void setRepositoryInfoMap(RepositoryInfoMap repositoryInfoMap) { this.repositoryInfoMap = repositoryInfoMap; } }