package br.com.centralit.citcorpore.integracao;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import br.com.centralit.citcorpore.bean.RelatorioDocumentosAcessadosBaseConhecimentoDTO;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.PersistenceException;
import br.com.citframework.integracao.CrudDaoDefaultImpl;
import br.com.citframework.integracao.Field;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilDatas;
@SuppressWarnings({ "unchecked", "rawtypes" })
public class RelatorioDocumentosAcessadosBaseConhecimentoDAO extends CrudDaoDefaultImpl {
public RelatorioDocumentosAcessadosBaseConhecimentoDAO() {
super(Constantes.getValue("DATABASE_ALIAS"), null);
}
@Override
public Collection find(IDto obj) throws PersistenceException {
return null;
}
@Override
public Collection<Field> getFields() {
Collection<Field> listFields = new ArrayList<>();
listFields.add(new Field("idBaseConhecimento", "idBaseConhecimento", true, true, false, false));
listFields.add(new Field("tituloBaseConhecimento", "tituloBaseConhecimento", false, false, false, false));
listFields.add(new Field("idUsuario", "idUsuario", false, false, false, false));
listFields.add(new Field("nomeUsuario", "nomeUsuario", false, false, false, false));
listFields.add(new Field("qtdeAcessos", "qtdeAcessos", false, false, false, false));
return listFields;
}
@Override
public String getTableName() {
return null;
}
@Override
public Collection list() throws PersistenceException {
return null;
}
@Override
public Class getBean() {
return RelatorioDocumentosAcessadosBaseConhecimentoDTO.class;
}
/**
* Metodo para buscar os usu�rios que acessaram as bases de conhecimento
* @param relatorioDocumentosAcessadosBaseConhecimentoDTO
* @return
*/
public Collection<RelatorioDocumentosAcessadosBaseConhecimentoDTO> listarDocumentosAcessadosBaseConhecimentoAnalitico(RelatorioDocumentosAcessadosBaseConhecimentoDTO documentosAcessadosBaseConhecimentoDTO) {
List result;
try {
List resp = new ArrayList();
List parametro = new ArrayList();
List listRetorno = new ArrayList();
StringBuilder sql = new StringBuilder();
parametro.add(UtilDatas.getSqlDate(documentosAcessadosBaseConhecimentoDTO.getDataInicial()));
parametro.add(UtilDatas.getTimeStampComUltimaHoraDoDia(documentosAcessadosBaseConhecimentoDTO.getDataFinal()));
parametro.add(documentosAcessadosBaseConhecimentoDTO.getIdBaseConhecimento());
listRetorno.add("nomeUsuario");
listRetorno.add("qtdeAcessos");
sql.append("SELECT usuario.nome, qtdeacessos ");
sql.append("FROM (SELECT idusuario, sum(contadoracesso) AS qtdeacessos ");
sql.append("FROM contadoracesso ");
sql.append("WHERE datahoraacesso BETWEEN ? AND ? and idbaseconhecimento = ? ");
if (documentosAcessadosBaseConhecimentoDTO.getIdUsuario().intValue()>0){
sql.append("and idusuario = ? ");
parametro.add(documentosAcessadosBaseConhecimentoDTO.getIdUsuario());
}
sql.append("GROUP BY idusuario) cb JOIN usuario ON cb.idusuario = usuario.idusuario ");
sql.append("ORDER BY qtdeacessos desc, usuario.nome");
resp = this.execSQL(sql.toString(), parametro.toArray());
result = this.engine.listConvertion(getBean(), resp, listRetorno);
} catch (PersistenceException e) {
e.printStackTrace();
result = null;
} catch (Exception e) {
e.printStackTrace();
result = null;
}
return (ArrayList<RelatorioDocumentosAcessadosBaseConhecimentoDTO>) (((result == null)||(result.size()<=0)) ? new ArrayList<RelatorioDocumentosAcessadosBaseConhecimentoDTO>() : result);
}
public ArrayList<RelatorioDocumentosAcessadosBaseConhecimentoDTO> listarDocumentosAcessadosBaseConhecimentoResumido(RelatorioDocumentosAcessadosBaseConhecimentoDTO relatorioDocumentosAcessadosBaseConhecimentoDTO) {
List result;
try {
List resp = new ArrayList();
List parametro = new ArrayList();
List listRetorno = new ArrayList();
StringBuilder sql = new StringBuilder();
parametro.add(UtilDatas.getSqlDate(relatorioDocumentosAcessadosBaseConhecimentoDTO.getDataInicial()));
parametro.add(UtilDatas.getTimeStampComUltimaHoraDoDia(relatorioDocumentosAcessadosBaseConhecimentoDTO.getDataFinal()));
listRetorno.add("idBaseConhecimento");
listRetorno.add("tituloBaseConhecimento");
listRetorno.add("qtdeAcessos");
sql.append("SELECT baseconhecimento.idbaseconhecimento, baseconhecimento.titulo, qtdeacessos ");
sql.append("FROM (SELECT idbaseconhecimento, sum(contadoracesso) AS qtdeacessos ");
sql.append("FROM contadoracesso WHERE (datahoraacesso BETWEEN ? AND ?) ");
if ((relatorioDocumentosAcessadosBaseConhecimentoDTO.getIdUsuario()!=null)&&(relatorioDocumentosAcessadosBaseConhecimentoDTO.getIdUsuario().intValue()>0)){
sql.append(" and idusuario = ? ");
parametro.add(relatorioDocumentosAcessadosBaseConhecimentoDTO.getIdUsuario());
}
sql.append("GROUP BY idbaseconhecimento) cb ");
sql.append("JOIN baseconhecimento ON cb.idbaseconhecimento = baseconhecimento.idbaseconhecimento ");
if ((relatorioDocumentosAcessadosBaseConhecimentoDTO.getOrdenacao()!=null)&&(relatorioDocumentosAcessadosBaseConhecimentoDTO.getOrdenacao().intValue()<2)){
sql.append(" ORDER BY qtdeacessos DESC, baseconhecimento.titulo");
} else {
sql.append(" ORDER BY baseconhecimento.titulo, qtdeacessos DESC");
}
resp = this.execSQL(sql.toString(), parametro.toArray());
result = this.engine.listConvertion(getBean(), resp, listRetorno);
} catch (PersistenceException e) {
e.printStackTrace();
result = null;
} catch (Exception e) {
e.printStackTrace();
result = null;
}
return (ArrayList<RelatorioDocumentosAcessadosBaseConhecimentoDTO>) (((result == null)||(result.size()<=0)) ? new ArrayList<RelatorioDocumentosAcessadosBaseConhecimentoDTO>() : result);
}
}