/* * ==================================================================== * Copyright (c) 2005-2012 sventon project. All rights reserved. * * This software is licensed as described in the file LICENSE, which * you should have received as part of this distribution. The terms * are also available at http://www.sventon.org. * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * ==================================================================== */ package org.sventon.cache; import org.springframework.beans.factory.annotation.Autowired; import org.sventon.cache.direntrycache.DirEntryCache; import org.sventon.cache.logmessagecache.LogMessageCache; import org.sventon.model.CamelCasePattern; import org.sventon.model.DirEntry; import org.sventon.model.LogMessageSearchItem; import org.sventon.model.RepositoryName; import java.util.List; /** * Gateway class used to access the caches. * * @author jesper@sventon.org */ public final class DefaultCacheGateway implements CacheGateway { private DirEntryCacheManager cacheManager; private LogMessageCacheManager logMessageCacheManager; /** * Sets the entry cache manager instance. * * @param cacheManager DirEntryCacheManager instance. */ @Autowired public void setEntryCacheManager(final DirEntryCacheManager cacheManager) { this.cacheManager = cacheManager; } /** * Sets the log entry cache manager instance. * * @param logMessageCacheManager LogMessageCacheManager instance. */ @Autowired public void setLogEntryCacheManager(final LogMessageCacheManager logMessageCacheManager) { this.logMessageCacheManager = logMessageCacheManager; } @Override public List<DirEntry> findEntries(final RepositoryName repositoryName, final String searchString, final String startDir) throws CacheException { final DirEntryCache entryCache = cacheManager.getCache(repositoryName); assertCacheExists(entryCache, repositoryName); return entryCache.findEntries(searchString, startDir); } @Override public List<DirEntry> findEntriesByCamelCase(final RepositoryName repositoryName, final CamelCasePattern pattern, final String startDir) throws CacheException { final DirEntryCache entryCache = cacheManager.getCache(repositoryName); assertCacheExists(entryCache, repositoryName); return entryCache.findEntriesByCamelCasePattern(pattern, startDir); } @Override public List<DirEntry> findDirectories(final RepositoryName repositoryName, final String fromPath) throws CacheException { final DirEntryCache entryCache = cacheManager.getCache(repositoryName); assertCacheExists(entryCache, repositoryName); return entryCache.findDirectories(fromPath); } @Override public List<LogMessageSearchItem> find(final RepositoryName repositoryName, final String queryString) throws CacheException { final LogMessageCache cache = logMessageCacheManager.getCache(repositoryName); assertCacheExists(cache, repositoryName); return cache.find(queryString); } @Override public List<LogMessageSearchItem> find(final RepositoryName repositoryName, final String queryString, final String startDir) throws CacheException { final LogMessageCache cache = logMessageCacheManager.getCache(repositoryName); assertCacheExists(cache, repositoryName); return cache.find(queryString, startDir); } private void assertCacheExists(final Cache cache, final RepositoryName repositoryName) throws CacheException { if (cache == null) { throw new CacheException("There is no cache repository named [" + repositoryName + "]"); } } }