/** * * marcosnr * 30/03/2012 */ package au.org.aurin.wif.repo.suitability.impl; import java.util.List; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import org.ektorp.CouchDbConnector; import org.ektorp.support.CouchDbRepositorySupport; import org.ektorp.support.View; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import au.org.aurin.wif.io.CouchDBManager; import au.org.aurin.wif.model.suitability.SuitabilityScenario; import au.org.aurin.wif.repo.suitability.SuitabilityScenarioDao; import au.org.aurin.wif.svc.WifKeys; // /** * The Class CouchSuitabilityScenarioDao. Implements persistence based on * CouchDB database specified in the CouchDBManager. */ @Component("SuitabilityScenarioDao") public class CouchSuitabilityScenarioDao implements SuitabilityScenarioDao { /** The Constant LOGGER. */ private static final Logger LOGGER = LoggerFactory .getLogger(CouchSuitabilityScenarioDao.class); /** The manager. */ @Autowired private CouchDBManager manager; /** The repository. */ private SuitabilityScenarioRepository repository; /** * Inits the SuitabilityScenarioDao. */ @PostConstruct public void init() { LOGGER.trace("Initializing version: " + WifKeys.WIF_KEY_VERSION); repository = new SuitabilityScenarioRepository(manager.getDb()); } /** * Cleanup. */ @PreDestroy public void cleanup() { LOGGER.trace("successfully cleared! "); } /* * (non-Javadoc) * @see * au.org.aurin.wif.repo.demand.SuitabilityScenarioDao#addSuitabilityScenario * (au.org.aurin.wif .model.SuitabilityScenario) */ public void addSuitabilityScenario(SuitabilityScenario suitabilityScenario) { repository.add(suitabilityScenario); } /* * (non-Javadoc) * @see * au.org.aurin.wif.repo.demand.SuitabilityScenarioDao#persistSuitabilityScenario * (au.org.aurin .wif.model.SuitabilityScenario) */ public SuitabilityScenario persistSuitabilityScenario( SuitabilityScenario suitabilityScenario) { repository.add(suitabilityScenario); return suitabilityScenario; } /* * (non-Javadoc) * @see * au.org.aurin.wif.repo.demand.SuitabilityScenarioDao#updateSuitabilityScenario * (au.org.aurin .wif.model.SuitabilityScenario) */ public void updateSuitabilityScenario(SuitabilityScenario suitabilityScenario) { repository.update(suitabilityScenario); } /* * (non-Javadoc) * @see * au.org.aurin.wif.repo.demand.SuitabilityScenarioDao#findSuitabilityScenarioById * (java.lang .String) */ public SuitabilityScenario findSuitabilityScenarioById(String id) { try { SuitabilityScenario suitabilityScenario = repository.get(id); return suitabilityScenario; } catch (org.ektorp.DocumentNotFoundException e) { LOGGER.warn(WifKeys.STANDARD_ID_NOT_FOUND_MSG, id, manager.getDb() .getDbInfo().getDbName()); } return null; } /* * (non-Javadoc) * @see * au.org.aurin.wif.repo.demand.SuitabilityScenarioDao#deleteSuitabilityScenario * (au.org.aurin .wif.model.SuitabilityScenario) */ public void deleteSuitabilityScenario(SuitabilityScenario suitabilityScenario) { repository.remove(suitabilityScenario); } /* * (non-Javadoc) * @see * au.org.aurin.wif.repo.demand.SuitabilityScenarioDao#getSuitabilityScenarios * (java.lang.String) */ public List<SuitabilityScenario> getSuitabilityScenarios(String projectId) { return repository.getSuitabilityScenarios(projectId); } /** * The Class SuitabilityScenarioRepository. This helperclass is provided by * Ektorp for CRUD operations. */ public class SuitabilityScenarioRepository extends CouchDbRepositorySupport<SuitabilityScenario> { /** * Instantiates a new suitabilityScenario repository. * * @param db * the db */ public SuitabilityScenarioRepository(CouchDbConnector db) { super(SuitabilityScenario.class, db); initStandardDesignDocument(); } /** * Gets the suitability scenarios. * * @param projectId the project id * @return the suitability scenarios */ @View(name = "getSuitabilityScenarios", map = "function(doc) { if(doc.projectId && doc.docType=='SuitabilityScenario') " + "{emit(doc.projectId, doc)} }") public List<SuitabilityScenario> getSuitabilityScenarios(String projectId) { return queryView("getSuitabilityScenarios", projectId); } } /* (non-Javadoc) * @see au.org.aurin.wif.repo.suitability.SuitabilityScenarioDao#updateSuitabilityScenarioStatus(au.org.aurin.wif.model.suitability.SuitabilityScenario, java.lang.Boolean) */ public void updateSuitabilityScenarioStatus( SuitabilityScenario suitabilityScenario, Boolean state) { suitabilityScenario.setReady(state); updateSuitabilityScenario(suitabilityScenario); } }