fixes bug#21410

qua:wally
dev:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@105006 d1611594-4594-4d17-8e1d-87c2c4800839
master
changelogweb 2021-01-13 15:10:27 +00:00
parent 74d987d8a3
commit 67410e166f
2 changed files with 27 additions and 11 deletions

View File

@ -1,13 +1,13 @@
package com.rjconsultores.ventaboletos.dao.hibernate;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
@ -21,6 +21,8 @@ import com.rjconsultores.ventaboletos.entidad.Feriado;
@Repository("feriadoDAO")
public class FeriadoHibernateDAO extends GenericHibernateDAO<Feriado, Integer> implements FeriadoDAO {
private static SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
@Autowired
public FeriadoHibernateDAO(
@Qualifier("sessionFactory") SessionFactory factory) {
@ -48,15 +50,25 @@ public class FeriadoHibernateDAO extends GenericHibernateDAO<Feriado, Integer> i
@Override
public boolean ehFeriado(Date fecFeriado, Empresa empresa, Estado estadoOrigem) {
Criteria c = makeCriteria();
c.add(Restrictions.eq("activo", true));
c.add(Restrictions.eq("fecferiado", fecFeriado));
c.add(Restrictions.or(Restrictions.eq("estado", estadoOrigem), Restrictions.isNull("estado")));
c.add(Restrictions.or(Restrictions.eq("empresa", empresa), Restrictions.isNull("empresa")));
c.setProjection(Projections.rowCount());
StringBuilder sb = new StringBuilder("");
return HibernateFix.count(c.uniqueResult()) > 0;
sb.append(" select count(*) ");
sb.append(" from ");
sb.append(" Feriado f ");
sb.append(" where ");
sb.append(" f.activo = 1 ");
sb.append(" and f.fecferiado = TO_DATE(:fecFeriado,'dd/MM/yyyy') ");
sb.append(" and (f.estado is null or f.estado = :estado) ");
sb.append(" and (f.empresa is null or f.empresa = :empresa) ");
Query query = this.getSession().createQuery(sb.toString());
query.setString("fecFeriado", sdf.format(fecFeriado));
query.setParameter("estado",estadoOrigem);
query.setParameter("empresa",empresa);
return HibernateFix.count(query.uniqueResult()) > 0;
}
@Override

View File

@ -36,6 +36,8 @@ public class FeriadoCache {
Boolean ehFeriado = mapFeriado.get(key);
log.debug("ehFeriado="+ehFeriado);
if (ehFeriado == null) {
ehFeriado = feriadoDAO.ehFeriado(new java.sql.Date(dataFeriado.getTime()), empresa, estadoOrigem);
@ -48,6 +50,8 @@ public class FeriadoCache {
}
public void limpar() {
log.debug("limpeza de cache de feriados");
mapFeriado.clear();
}