/**
* Most of the code in the Qalingo project is copyrighted Hoteia and licensed
* under the Apache License Version 2.0 (release version 0.8.0)
* http://www.apache.org/licenses/LICENSE-2.0
*
* Copyright (c) Hoteia, 2012-2014
* http://www.hoteia.com - http://twitter.com/hoteia - contact@hoteia.com
*
*/
package org.hoteia.qalingo.core.dao;
import java.util.Date;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import org.hoteia.qalingo.core.dao.AbstractGenericDao;
import org.hoteia.qalingo.core.dao.RuleRepositoryDao;
import org.hoteia.qalingo.core.domain.RuleRepository;
@Transactional
@Repository("ruleRepositoryDao")
public class RuleRepositoryDao extends AbstractGenericDao {
private final Logger logger = LoggerFactory.getLogger(getClass());
public RuleRepository getRuleRepositoryByCode(String ruleConditionRepositoryCode) {
Session session = (Session) em.getDelegate();
String sql = "FROM RuleRepository WHERE upper(code) = upper(:code)";
Query query = session.createQuery(sql);
query.setString("code", ruleConditionRepositoryCode);
RuleRepository ruleRepository = (RuleRepository) query.uniqueResult();
return ruleRepository;
}
public List<RuleRepository> findRuleRepositories() {
Session session = (Session) em.getDelegate();
String sql = "FROM RuleRepository";
Query query = session.createQuery(sql);
List<RuleRepository> ruleRepositories = (List<RuleRepository>) query.list();
return ruleRepositories;
}
public List<RuleRepository> findActiveRuleRepositories() {
Session session = (Session) em.getDelegate();
String sql = "FROM RuleRepository WHERE active = 1 AND startDate <= :currentDate AND endDate >= :currentDate";
Query query = session.createQuery(sql);
query.setDate("currentDate", new Date());
List<RuleRepository> ruleRepositories = (List<RuleRepository>) query.list();
return ruleRepositories;
}
public void saveRuleRepository(RuleRepository ruleConditionRepository) {
if(ruleConditionRepository.getDateCreate() == null){
ruleConditionRepository.setDateCreate(new Date());
}
ruleConditionRepository.setDateUpdate(new Date());
em.persist(ruleConditionRepository);
}
public void deleteRuleRepository(RuleRepository ruleConditionRepository) {
em.remove(ruleConditionRepository);
}
}