package binky.reportrunner.service.impl; import java.util.Collection; import java.util.LinkedList; import binky.reportrunner.dao.ReportRunnerDao; import binky.reportrunner.data.Configuration; import binky.reportrunner.data.Configuration.ConfigurationType; import binky.reportrunner.service.ConfigurationService; import com.googlecode.ehcache.annotations.Cacheable; import com.googlecode.ehcache.annotations.TriggersRemove; public class ConfigurationServiceImpl implements ConfigurationService { private ReportRunnerDao<Configuration, ConfigurationType> configurationDao; @Override @Cacheable(cacheName = "configCache") public Collection<Configuration> getConfigurationItems() { Collection<Configuration> configs = new LinkedList<Configuration>(); for (ConfigurationType t : ConfigurationType.values()) { configs.add(this.getConfigurationItem(t)); } return configs; } @Override @Cacheable(cacheName = "configCache") public Configuration getConfigurationItem(ConfigurationType type) { Configuration c = configurationDao.get(type); if (c == null) c = new Configuration(type); return c; } @Override @Cacheable(cacheName = "configCache") public void saveOrUpdate(Configuration configuration) { configurationDao.saveOrUpdate(configuration); } @Override @TriggersRemove(cacheName = "configCache") public void delete(ConfigurationType type) { configurationDao.delete(type); } public void setConfigurationDao( ReportRunnerDao<Configuration, ConfigurationType> configurationDao) { this.configurationDao = configurationDao; } }