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; package com.rjconsultores.ventaboletos.dao.hibernate;
import java.sql.Date; import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.List; import java.util.List;
import org.hibernate.Criteria; import org.hibernate.Criteria;
import org.hibernate.Query; import org.hibernate.Query;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
import org.hibernate.criterion.Order; import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions; import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
@ -21,6 +21,8 @@ import com.rjconsultores.ventaboletos.entidad.Feriado;
@Repository("feriadoDAO") @Repository("feriadoDAO")
public class FeriadoHibernateDAO extends GenericHibernateDAO<Feriado, Integer> implements FeriadoDAO { public class FeriadoHibernateDAO extends GenericHibernateDAO<Feriado, Integer> implements FeriadoDAO {
private static SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
@Autowired @Autowired
public FeriadoHibernateDAO( public FeriadoHibernateDAO(
@Qualifier("sessionFactory") SessionFactory factory) { @Qualifier("sessionFactory") SessionFactory factory) {
@ -48,15 +50,25 @@ public class FeriadoHibernateDAO extends GenericHibernateDAO<Feriado, Integer> i
@Override @Override
public boolean ehFeriado(Date fecFeriado, Empresa empresa, Estado estadoOrigem) { public boolean ehFeriado(Date fecFeriado, Empresa empresa, Estado estadoOrigem) {
Criteria c = makeCriteria();
c.add(Restrictions.eq("activo", true)); StringBuilder sb = new StringBuilder("");
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());
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 @Override

View File

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