package br.com.centralit.citcorpore.integracao; import java.util.ArrayList; import java.util.Collection; import java.util.List; import br.com.centralit.citcorpore.bean.JustificacaoEventoHistoricoDTO; import br.com.centralit.citcorpore.bean.JustificacaoFalhasDTO; 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; public class JustificacaoFalhasDao extends CrudDaoDefaultImpl { private ArrayList<JustificacaoFalhasDTO> listaJustificados; public JustificacaoFalhasDao() { super(Constantes.getValue("DATABASE_ALIAS"), null); } public ArrayList<JustificacaoEventoHistoricoDTO> findEventosComFalha(IDto dto){ listaJustificados = null; JustificacaoFalhasDTO justificacaoDto = (JustificacaoFalhasDTO) dto; int numeroDeParametros = 0; StringBuilder sql = new StringBuilder(); // sql.append("SELECT (SELECT valorstr FROM citsmart.valor va "); // sql.append("JOIN citsmart.caracteristica ca ON ca.idcaracteristica = va.idcaracteristica "); // sql.append("WHERE ca.nomecaracteristica = 'IPADDR' AND va.iditemconfiguracao = i.iditemconfiguracao ) as ip, "); // sql.append("ht.iditemconfiguracao, ht.idbaseitemconfiguracao, "); // sql.append("i.identificacao as identificacaoItemConfiguracao, ht.descricao, ht.idevento, g.nome as nomeGrupo, un.nome as nomeUnidade, emp.idempregado "); // sql.append("FROM citsmart.caracteristica c "); // sql.append("JOIN citsmart.valor v ON v.idcaracteristica = c.idcaracteristica "); // sql.append("JOIN citsmart.usuario u ON u.login = v.valorstr "); // sql.append("JOIN citsmart.empregados emp ON emp.idempregado = u.idempregado "); // sql.append("JOIN citsmart.historicotentativa ht "); ///// TESTE // sql.append("ON ht.iditemconfiguracao NOT IN (SELECT jf.iditemconfiguracao FROM justificacaofalha jf "); // sql.append("WHERE jf.iditemconfiguracao = ht.iditemconfiguracao) "); // sql.append("AND ht.idbaseitemconfiguracao NOT IN(SELECT jf.idbaseitemconfiguracao FROM justificacaofalha jf "); // sql.append("WHERE jf.idbaseitemconfiguracao = ht.idbaseitemconfiguracao) "); ////// // sql.append("JOIN citsmart.itemconfiguracao i ON i.iditemconfiguracao = v.iditemconfiguracao "); // sql.append("JOIN citsmart.grupo g ON g.idgrupo = emp.idgrupo "); // sql.append("JOIN citsmart.unidade un ON un.idunidade = emp.idunidade "); sql.append("select hist.idhistoricotentativa, de.valorstr, hist.iditemconfiguracao, hist.idbaseitemconfiguracao, bs.nomebaseitemconfiguracao, "); sql.append("hist.descricao, even.idevento, gr.nome, un.nome, emp.idempregado from historicotentativa hist "); sql.append("inner join evento even on hist.idevento = even.idevento "); sql.append("inner join eventoempregado evenemp on evenemp.idevento = even.idevento "); sql.append("inner join empregados emp on emp.idempregado = evenemp.idempregado "); sql.append("inner join usuario us on us.idempregado = emp.idempregado "); sql.append("inner join grupo gr ON gr.idgrupo = emp.idgrupo "); sql.append("inner join unidade un ON un.idunidade = emp.idunidade "); sql.append("left join baseitemconfiguracao bs on hist.idbaseitemconfiguracao = bs.idbaseitemconfiguracao "); sql.append("inner join "); sql.append("(select a.valorstr, a.iditemconfiguracaopai, b.identificacao from "); sql.append("(select va.valorstr, it.iditemconfiguracaopai from caracteristica car "); sql.append("join valor va on va.idcaracteristica = car.idcaracteristica "); sql.append("join itemconfiguracao it on it.iditemconfiguracao = va.iditemconfiguracao "); sql.append("where car.tagcaracteristica = 'IPADDR') a join "); sql.append("(select iditemconfiguracao, identificacao "); sql.append("from itemconfiguracao where iditemconfiguracaopai is null) b on a.iditemconfiguracaopai = b.iditemconfiguracao) "); sql.append(" de on de.iditemconfiguracaopai = evenemp.iditemconfiguracaopai "); sql.append("left join "); sql.append("( select val.valorstr, val.iditemconfiguracao "); sql.append("from caracteristica carac "); sql.append("join valor val on carac.idcaracteristica = val.idcaracteristica "); sql.append("where carac.tagcaracteristica = 'NAME') nome on hist.iditemconfiguracao = nome.iditemconfiguracao "); ArrayList<Object> parametrosAux = new ArrayList<Object>(); boolean primeiro = true; if(justificacaoDto.getIdEvento() != null){ if(primeiro){ sql.append(" WHERE "); primeiro = false; } else { sql.append(" AND "); } sql.append("ht.idevento = ?"); parametrosAux.add(justificacaoDto.getIdEvento()); } if(justificacaoDto.getIdUnidade() != null){ if(primeiro){ sql.append(" WHERE "); primeiro = false; } else { sql.append(" AND "); } sql.append("un.idunidade = ?"); parametrosAux.add(justificacaoDto.getIdUnidade()); } if(justificacaoDto.getIdGrupo() != null){ if(primeiro){ sql.append(" WHERE "); primeiro = false; } else { sql.append(" AND "); } sql.append("g.idgrupo = ?"); parametrosAux.add(justificacaoDto.getIdGrupo()); } if(justificacaoDto.getDataInicial() != null){ if(primeiro){ sql.append(" WHERE "); primeiro = false; } else { sql.append(" AND "); } sql.append("ht.data >= ?"); parametrosAux.add(justificacaoDto.getDataInicial()); } if(justificacaoDto.getDataFinal() != null){ if(primeiro){ sql.append(" WHERE "); primeiro = false; } else { sql.append(" AND "); } sql.append("ht.data <= ?"); parametrosAux.add(justificacaoDto.getDataFinal()); } //sql.append(" GROUP BY ht.idhistoricotentativa "); Object[] parametros = null; if(parametrosAux.size() > 0){ parametros = parametrosAux.toArray(); } ArrayList<JustificacaoEventoHistoricoDTO> resultados = null; ArrayList<JustificacaoEventoHistoricoDTO> resultadosAux = null; try { //Object[] params = { 1 }; List dados = this.execSQL(sql.toString(), parametros); List fields = new ArrayList(); fields.add("idHistoricoTentativa"); fields.add("ip"); fields.add("idItemConfiguracao"); fields.add("idBaseItemConfiguracao"); fields.add("identificacaoItemConfiguracao"); fields.add("descricaoTentativa"); fields.add("idEvento"); fields.add("nomeGrupo"); fields.add("nomeUnidade"); fields.add("idEmpregado"); resultados = (ArrayList) this.listConvertion(JustificacaoEventoHistoricoDTO.class, dados, fields); if (resultados.isEmpty()) { } else { resultadosAux = new ArrayList<JustificacaoEventoHistoricoDTO>(); // remove os j� justificados for (int i = 0; i < resultados.size(); i++) { if (!isJustificado(resultados.get(i))) { resultadosAux.add(resultados.get(i)); } } } } catch (Exception e) { e.printStackTrace(); } return resultadosAux; } private ArrayList<JustificacaoFalhasDTO> getListaJustificados(){ if(listaJustificados != null){ return listaJustificados; } ArrayList<JustificacaoFalhasDTO> resultados = new ArrayList<JustificacaoFalhasDTO>(); StringBuilder sql = new StringBuilder(); sql.append("SELECT * FROM justificacaofalha"); try { List dados = this.execSQL(sql.toString(), null); List fields = new ArrayList(); fields.add("idJustificacaoFalha"); fields.add("idItemConfiguracao"); fields.add("idBaseItemConfiguracao"); fields.add("idEvento"); fields.add("idEmpregado"); fields.add("descricao"); fields.add("data"); fields.add("hora"); fields.add("idHistoricoTentativa"); resultados = (ArrayList) this.listConvertion(JustificacaoFalhasDTO.class, dados, fields); } catch (PersistenceException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } listaJustificados = resultados; return listaJustificados; } private boolean isJustificado(JustificacaoEventoHistoricoDTO just){ for(JustificacaoFalhasDTO j : getListaJustificados()){ if(just.getIdHistoricoTentativa().equals(j.getIdHistoricoTentativa())){ return true; } } return false; } @Override public Collection find(IDto arg0) throws PersistenceException { return null; } @Override public Collection<Field> getFields() { Collection<Field> listFields = new ArrayList<>(); listFields.add(new Field("idJustificacaoFalha", "idjustificacaofalha", true, true, false, false)); listFields.add(new Field("idItemConfiguracao", "iditemconfiguracao", false, false, false, false)); listFields.add(new Field("idBaseItemConfiguracao", "idbaseitemconfiguracao", false, false, false, false)); listFields.add(new Field("idEvento", "idevento", false, false, false, false)); listFields.add(new Field("descricao", "descricao", false, false, false, false)); listFields.add(new Field("data", "data", false, false, false, false)); listFields.add(new Field("hora", "hora", false, false, false, false)); listFields.add(new Field("idEmpregado", "idempregado", false, false, false, false)); listFields.add(new Field("idHistoricoTentativa", "idhistoricotentativa", false, false, false, false)); return listFields; } @Override public String getTableName() { return "justificacaofalha"; } @Override public Collection list() throws PersistenceException { return null; } @Override public Class getBean() { return JustificacaoFalhasDTO.class; } }