fixes bug#21436
dev: Valvevir qua: git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@105106 d1611594-4594-4d17-8e1d-87c2c4800839master
parent
4dbf62ba10
commit
80b3f09e84
|
@ -1,15 +1,24 @@
|
|||
package com.rjconsultores.ventaboletos.dao.hibernate;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.hibernate.Criteria;
|
||||
import org.hibernate.HibernateException;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.criterion.Criterion;
|
||||
import org.hibernate.criterion.Projections;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
import org.hibernate.engine.LoadQueryInfluencers;
|
||||
import org.hibernate.engine.SessionFactoryImplementor;
|
||||
import org.hibernate.impl.CriteriaImpl;
|
||||
import org.hibernate.impl.SessionImpl;
|
||||
import org.hibernate.loader.OuterJoinLoader;
|
||||
import org.hibernate.loader.criteria.CriteriaLoader;
|
||||
import org.hibernate.persister.entity.OuterJoinLoadable;
|
||||
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
|
||||
|
||||
import com.rjconsultores.ventaboletos.dao.GenericDAO;
|
||||
|
@ -20,7 +29,8 @@ import com.rjconsultores.ventaboletos.dao.GenericDAO;
|
|||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public class GenericHibernateDAO<T, ID extends Serializable> extends HibernateDaoSupport implements GenericDAO<T, ID> {
|
||||
|
||||
public long start = System.currentTimeMillis();
|
||||
|
||||
public GenericHibernateDAO() {
|
||||
this.persistentClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
|
||||
}
|
||||
|
@ -106,4 +116,46 @@ public class GenericHibernateDAO<T, ID extends Serializable> extends HibernateDa
|
|||
public void suscribirTodos(Collection<T> entidades) {
|
||||
getHibernateTemplate().saveOrUpdateAll(entidades);
|
||||
}
|
||||
|
||||
/*
|
||||
* Metodo que retorna o sql do criteria passado
|
||||
* para uso em debug e auxilio nas analises
|
||||
* */
|
||||
public String getCriteriaSql( Criteria c, Session se) {
|
||||
try {
|
||||
CriteriaImpl ci = (CriteriaImpl) c;
|
||||
SessionImpl s = (SessionImpl) se;
|
||||
SessionFactoryImplementor factory = (SessionFactoryImplementor) s.getSessionFactory();
|
||||
String[] implementors = factory.getImplementors(ci.getEntityOrClassName());
|
||||
LoadQueryInfluencers lqis = new LoadQueryInfluencers();
|
||||
CriteriaLoader loader = new CriteriaLoader((OuterJoinLoadable) factory.getEntityPersister(implementors[0]), factory, ci, implementors[0], lqis);
|
||||
Field f = OuterJoinLoader.class.getDeclaredField("sql");
|
||||
f.setAccessible(true);
|
||||
String sql = (String) f.get(loader);
|
||||
return sql;
|
||||
} catch (Exception e) {
|
||||
return "exception "+e.getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Metodo adicionado para retornar em o tempo de execucao
|
||||
* de cada metodo chamado, sendo chamado nas implementacoes
|
||||
* e printado via log.debug, para que possa ser analizado
|
||||
* qualquer eventual demora na execução
|
||||
* */
|
||||
public String printInfo(String method, long start) {
|
||||
long milliseconds = System.currentTimeMillis() - start;
|
||||
long minutes = (milliseconds / 1000) / 60;
|
||||
long seconds = (milliseconds / 1000) % 60;
|
||||
|
||||
String info = String.format("[%s] %d minutos e %d segundos", method, minutes, seconds);
|
||||
|
||||
if ((minutes + seconds) == 0) {
|
||||
info = String.format("[%s] %d milissegundos", method, milliseconds);
|
||||
}
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import org.hibernate.criterion.Restrictions;
|
|||
import org.hibernate.transform.AliasToBeanResultTransformer;
|
||||
import org.hibernate.type.IntegerType;
|
||||
import org.hibernate.type.StringType;
|
||||
import org.slf4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
@ -20,7 +21,8 @@ import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO;
|
|||
@Repository("operadorEmbarcadaDAO")
|
||||
@SuppressWarnings("unchecked")
|
||||
public class OperadorEmbarcadaHibernateDAO extends GenericHibernateDAO<OperadorEmbarcada, Long> implements OperadorEmbarcadaDAO {
|
||||
|
||||
private static Logger log = org.slf4j.LoggerFactory.getLogger(OperadorEmbarcadaHibernateDAO.class);
|
||||
|
||||
@Autowired
|
||||
public OperadorEmbarcadaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
|
||||
setSessionFactory(factory);
|
||||
|
@ -28,32 +30,42 @@ public class OperadorEmbarcadaHibernateDAO extends GenericHibernateDAO<OperadorE
|
|||
|
||||
@Override
|
||||
public List<OperadorEmbarcada> buscarTodosOperadores() {
|
||||
start = System.currentTimeMillis();
|
||||
Criteria c = getSession().createCriteria(getPersistentClass());
|
||||
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
||||
|
||||
return c.list();
|
||||
List<OperadorEmbarcada> retorno = c.list();
|
||||
log.debug( printInfo("buscarOperadorEmbarcadaPorUsuario", start));
|
||||
return retorno;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OperadorEmbarcada burcarOperadorPorId(Long operadorEmbarcadaID) {
|
||||
start = System.currentTimeMillis();
|
||||
Criteria c = getSession().createCriteria(getPersistentClass());
|
||||
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
||||
c.add(Restrictions.eq("operadorEmbarcadaId", operadorEmbarcadaID));
|
||||
|
||||
return (OperadorEmbarcada) c.uniqueResult();
|
||||
OperadorEmbarcada retorno = (OperadorEmbarcada) c.uniqueResult();
|
||||
log.debug( printInfo("burcarOperadorPorId", start));
|
||||
return retorno;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OperadorEmbarcada buscarOperadorEmbarcadaPorUsuario(Integer idUsuario) {
|
||||
start = System.currentTimeMillis();
|
||||
Criteria c = getSession().createCriteria(getPersistentClass());
|
||||
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
||||
c.add(Restrictions.eq("usuario.usuarioId", idUsuario));
|
||||
|
||||
return (OperadorEmbarcada) c.uniqueResult();
|
||||
|
||||
OperadorEmbarcada op = (OperadorEmbarcada) c.uniqueResult();
|
||||
log.debug( printInfo("buscarOperadorEmbarcadaPorUsuario", start));
|
||||
return op;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PuntoVentaVO getPuntoVentaVO(Integer operador) {
|
||||
start = System.currentTimeMillis();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(" SELECT ");
|
||||
sb.append(" PV.PUNTOVENTA_ID AS puntoventaId, ");
|
||||
|
@ -73,6 +85,8 @@ public class OperadorEmbarcadaHibernateDAO extends GenericHibernateDAO<OperadorE
|
|||
// sql.setInteger("empresa_id", empresa);
|
||||
sql.setResultTransformer(new AliasToBeanResultTransformer(PuntoVentaVO.class));
|
||||
PuntoVentaVO puntoVentaVO = (PuntoVentaVO) sql.uniqueResult();
|
||||
|
||||
log.debug( printInfo("getPuntoVentaVO", start));
|
||||
return puntoVentaVO;
|
||||
}
|
||||
|
||||
|
|
|
@ -34,7 +34,6 @@ import com.rjconsultores.ventaboletos.entidad.OperadorEmbarcadaServico;
|
|||
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
|
||||
import com.rjconsultores.ventaboletos.entidad.TarifaMinima;
|
||||
import com.rjconsultores.ventaboletos.service.AliasServicoService;
|
||||
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
|
||||
import com.rjconsultores.ventaboletos.vo.corrida.CorridaVO;
|
||||
import com.rjconsultores.ventaboletos.vo.corrida.TramoSequenciaVO;
|
||||
import com.rjconsultores.ventaboletos.vo.parada.ParadaVO;
|
||||
|
@ -268,7 +267,8 @@ public class OperadorEmbarcadaServicoHibernateDAO extends GenericHibernateDAO<Op
|
|||
|
||||
private List getCorridasResumido(Integer operador, Empresa empresa, Date dtIni, Date dtFim, Boolean retornaTramos) throws Exception {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
start = System.currentTimeMillis();
|
||||
|
||||
sb.append("select * from (SELECT");
|
||||
sb.append(" cor.corrida_id ||';'|| to_char(cor.feccorrida, 'ddMMYYYY') AS chaveCorrida, cor.ruta_id AS rutaId ");
|
||||
sb.append(" FROM OPERADOR_EMBARCADA OPE ");
|
||||
|
@ -320,6 +320,8 @@ public class OperadorEmbarcadaServicoHibernateDAO extends GenericHibernateDAO<Op
|
|||
corridas.add(co);
|
||||
}
|
||||
|
||||
|
||||
log.debug( printInfo("getCorridasResumido", start));
|
||||
return corridas;
|
||||
}else {
|
||||
List<String> corridasString = new ArrayList<String>();
|
||||
|
@ -327,12 +329,13 @@ public class OperadorEmbarcadaServicoHibernateDAO extends GenericHibernateDAO<Op
|
|||
corridasString.add( (String)chave[0] );
|
||||
}
|
||||
|
||||
log.debug( printInfo("getCorridasResumido", start));
|
||||
return corridasString;
|
||||
}
|
||||
}
|
||||
|
||||
private List<Integer> obterListaTramo( String chave, Integer rutaId ) throws Exception{
|
||||
|
||||
start = System.currentTimeMillis();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.append(" SELECT");
|
||||
|
@ -340,7 +343,7 @@ public class OperadorEmbarcadaServicoHibernateDAO extends GenericHibernateDAO<Op
|
|||
sb.append(" FROM RUTA_COMBINACION RC ");
|
||||
sb.append(" JOIN TRAMO TRM ON TRM.TRAMO_ID = RC.TRAMO_ID AND TRM.activo = 1 ");
|
||||
sb.append(" JOIN CORRIDA_TRAMO CT ON CT.CORRIDA_ID = :corridaId ");
|
||||
sb.append(" AND CT.FECCORRIDA = :feccorrida ");
|
||||
sb.append(" AND CT.FECCORRIDA = TO_DATE(:feccorrida, 'DDmmYYYY') ");
|
||||
sb.append(" AND CT.DESTINO_ID = TRM.DESTINO_ID ");
|
||||
sb.append(" AND CT.activo = 1 ");
|
||||
sb.append(" WHERE RC.RUTA_ID = :rutaId ");
|
||||
|
@ -352,10 +355,12 @@ public class OperadorEmbarcadaServicoHibernateDAO extends GenericHibernateDAO<Op
|
|||
String[] split = chave.split(";");
|
||||
|
||||
query.setParameter("corridaId", split[0] );
|
||||
query.setParameter("feccorrida", DateUtil.getDateFromString( split[1], "ddMMyyyy") );
|
||||
query.setParameter("feccorrida", split[1] );
|
||||
query.setParameter("rutaId", rutaId );
|
||||
|
||||
return query.list();
|
||||
List<Integer> list = query.list();
|
||||
log.debug( printInfo("obterListaTramo", start));
|
||||
return list;
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue