package br.com.centralit.citcorpore.integracao; import java.util.ArrayList; import java.util.Collection; import java.util.List; import br.com.centralit.citcorpore.bean.ProblemaDTO; import br.com.centralit.citcorpore.bean.RegraEscalonamentoDTO; import br.com.centralit.citcorpore.bean.RequisicaoMudancaDTO; import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO; 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; @SuppressWarnings({ "rawtypes", "unchecked" }) public class RegraEscalonamentoDAO extends CrudDaoDefaultImpl { public RegraEscalonamentoDAO() { 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("idregraescalonamento", "idRegraEscalonamento", true, true, false, false)); listFields.add(new Field("idtipogerenciamento", "idTipoGerenciamento", false, false, false, false)); listFields.add(new Field("idservico", "idServico", false, false, false, false)); listFields.add(new Field("idcontrato", "idContrato", false, false, false, false)); listFields.add(new Field("idsolicitante", "idSolicitante", false, false, false, false)); listFields.add(new Field("idgrupo", "idGrupo", false, false, false, false)); listFields.add(new Field("idtipodemandaservico", "idTipoDemandaServico", false, false, false, false)); listFields.add(new Field("urgencia", "urgencia", false, false, false, false)); listFields.add(new Field("impacto", "impacto", false, false, false, false)); listFields.add(new Field("tempoexecucao", "tempoExecucao", false, false, false, false)); listFields.add(new Field("intervalonotificacao", "intervaloNotificacao", false, false, false, false)); listFields.add(new Field("enviaremail", "enviarEmail", false, false, false, false)); listFields.add(new Field("criaproblema", "criaProblema", false, false, false, false)); listFields.add(new Field("datainicio", "dataInicio", false, false, false, false)); listFields.add(new Field("datafim", "dataFim", false, false, false, false)); listFields.add(new Field("prazocriarproblema", "prazoCriarProblema", false, false, false, false)); listFields.add(new Field("tipodataescalonamento", "tipoDataEscalonamento", false, false, false, false)); return listFields; } @Override public String getTableName() { return "regraescalonamento"; } @Override public Collection list() throws PersistenceException { return super.list("idRegraEscalonamento"); } @Override public Class getBean() { return RegraEscalonamentoDTO.class; } /*Define os tipos de Solicita��o as serem filtrados * 1- Solicita��o servi�o/Incidente * 2- Problema * 3- Mudan�a */ public Collection findByTipoSolicitacao(int idTipoGerenciamento) throws PersistenceException { List parametro = new ArrayList(); List listRetorno = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select idregraescalonamento, idtipogerenciamento, idservico, idcontrato, idsolicitante, idgrupo, idtipodemandaservico, urgencia, impacto, tempoexecucao, intervalonotificacao, enviaremail, criaproblema, datainicio, prazocriarproblema, tipodataescalonamento from regraescalonamento where idtipogerenciamento = ? AND (datafim is null)"); parametro.add(idTipoGerenciamento); listRetorno.add("idRegraEscalonamento"); listRetorno.add("idTipoGerenciamento"); listRetorno.add("idServico"); listRetorno.add("idContrato"); listRetorno.add("idSolicitante"); listRetorno.add("idGrupo"); listRetorno.add("idTipoDemandaServico"); listRetorno.add("urgencia"); listRetorno.add("impacto"); listRetorno.add("tempoExecucao"); listRetorno.add("intervaloNotificacao"); listRetorno.add("enviarEmail"); listRetorno.add("criaProblema"); listRetorno.add("dataInicio"); listRetorno.add("prazoCriarProblema"); listRetorno.add("tipoDataEscalonamento"); List list = this.execSQL(sql.toString(), parametro.toArray()); if (list != null && !list.isEmpty()) { return (Collection<RegraEscalonamentoDTO>) this.listConvertion(getBean(), list, listRetorno); } else { return null; } } public Collection<RegraEscalonamentoDTO> findRegraBySolicitacao(SolicitacaoServicoDTO solicitacaoServicoDTO, Integer idTipoGerenciamento) throws PersistenceException { List parametro = new ArrayList(); List listRetorno = new ArrayList(); StringBuilder sql = new StringBuilder(); boolean temServico = false, temContrato = false, temSolicitante = false, temGrupo = false, temDemandaServico = false, temImpacto = false, temUrgencia = false; sql.append(" SELECT idregraescalonamento, idtipogerenciamento, idservico, idcontrato, idsolicitante, idgrupo, "); sql.append(" idtipodemandaservico, urgencia, impacto, "); sql.append(" tempoexecucao, intervalonotificacao, enviaremail, criaproblema, prazocriarproblema, tipodataescalonamento FROM regraescalonamento"); sql.append(" where datafim is null and idtipogerenciamento = ?"); if(solicitacaoServicoDTO.getIdServico() != null) { temServico = true; } if(solicitacaoServicoDTO.getIdContrato() != null) { temContrato = true; } if(solicitacaoServicoDTO.getIdSolicitante() != null) { temSolicitante = true; } if(solicitacaoServicoDTO.getIdGrupo() != null) { temGrupo = true; } if(solicitacaoServicoDTO.getIdTipoDemandaServico() != null) { temDemandaServico = true; } if(solicitacaoServicoDTO.getImpacto() != null) { temImpacto = true; } if(solicitacaoServicoDTO.getUrgencia() != null) { temUrgencia = true; } listRetorno.add("idRegraEscalonamento"); listRetorno.add("idTipoGerenciamento"); listRetorno.add("idServico"); listRetorno.add("idContrato"); listRetorno.add("idSolicitante"); listRetorno.add("idGrupo"); listRetorno.add("idTipoDemandaServico"); listRetorno.add("urgencia"); listRetorno.add("impacto"); listRetorno.add("tempoExecucao"); listRetorno.add("intervaloNotificacao"); listRetorno.add("enviarEmail"); listRetorno.add("criaProblema"); listRetorno.add("prazoCriarProblema"); listRetorno.add("tipoDataEscalonamento"); parametro.add(idTipoGerenciamento); List list = this.execSQL(sql.toString(), parametro.toArray()); if (list != null && !list.isEmpty()) { Collection<RegraEscalonamentoDTO> lista = (Collection<RegraEscalonamentoDTO>) this.listConvertion(getBean(), list, listRetorno); Collection<RegraEscalonamentoDTO> novaLista = new ArrayList<RegraEscalonamentoDTO>(lista); for (RegraEscalonamentoDTO regraEscalonamentoDTO : lista) { if(!temServico && regraEscalonamentoDTO.getIdServico() != null || temServico && regraEscalonamentoDTO.getIdServico() != null && solicitacaoServicoDTO.getIdServico().intValue() != regraEscalonamentoDTO.getIdServico().intValue()) { novaLista.remove(regraEscalonamentoDTO); } else if(!temContrato && regraEscalonamentoDTO.getIdContrato() != null || temContrato && regraEscalonamentoDTO.getIdContrato() != null && solicitacaoServicoDTO.getIdContrato().intValue() != regraEscalonamentoDTO.getIdContrato().intValue()) { novaLista.remove(regraEscalonamentoDTO); } else if(!temSolicitante && regraEscalonamentoDTO.getIdSolicitante() != null || temSolicitante && regraEscalonamentoDTO.getIdSolicitante() != null && solicitacaoServicoDTO.getIdSolicitante().intValue() != regraEscalonamentoDTO.getIdSolicitante().intValue()) { novaLista.remove(regraEscalonamentoDTO); } else if(!temGrupo && regraEscalonamentoDTO.getIdGrupo() != null || temGrupo && regraEscalonamentoDTO.getIdGrupo() != null && solicitacaoServicoDTO.getIdGrupo().intValue() != regraEscalonamentoDTO.getIdGrupo().intValue()) { novaLista.remove(regraEscalonamentoDTO); } else if(!temDemandaServico && regraEscalonamentoDTO.getIdTipoDemandaServico() != null || temDemandaServico && regraEscalonamentoDTO.getIdTipoDemandaServico() != null && solicitacaoServicoDTO.getIdTipoDemandaServico().intValue() != regraEscalonamentoDTO.getIdTipoDemandaServico().intValue()) { novaLista.remove(regraEscalonamentoDTO); } else if((!temImpacto && regraEscalonamentoDTO.getImpacto() != null && !regraEscalonamentoDTO.getImpacto().isEmpty()) || temImpacto && regraEscalonamentoDTO.getImpacto() != null && !solicitacaoServicoDTO.getImpacto().equalsIgnoreCase(regraEscalonamentoDTO.getImpacto()) && !regraEscalonamentoDTO.getImpacto().isEmpty()) { novaLista.remove(regraEscalonamentoDTO); } else if(!temUrgencia && regraEscalonamentoDTO.getUrgencia() != null && !regraEscalonamentoDTO.getUrgencia().isEmpty()|| temUrgencia && regraEscalonamentoDTO.getUrgencia() != null && !solicitacaoServicoDTO.getUrgencia().equalsIgnoreCase(regraEscalonamentoDTO.getUrgencia()) && !regraEscalonamentoDTO.getUrgencia().isEmpty()) { novaLista.remove(regraEscalonamentoDTO); } } return novaLista; } else { return null; } } public Collection<RegraEscalonamentoDTO> findRegraByRequisicaoMudanca(RequisicaoMudancaDTO requisicaoMudancaDTO, Integer idTipoGerenciamento) throws PersistenceException { List parametro = new ArrayList(); List listRetorno = new ArrayList(); StringBuilder sql = new StringBuilder(); boolean temContrato = false, temSolicitante = false, temGrupo = false, temImpacto = false, temUrgencia = false; sql.append(" SELECT idregraescalonamento, idtipogerenciamento, idservico, idcontrato, idsolicitante, idgrupo, "); sql.append(" idtipodemandaservico, urgencia, impacto, "); sql.append(" tempoexecucao, intervalonotificacao, enviaremail, criaproblema, prazocriarproblema, tipodataescalonamento FROM regraescalonamento"); sql.append(" where datafim is null and idtipogerenciamento = ?"); if(requisicaoMudancaDTO.getIdContrato() != null) { temContrato = true; } if(requisicaoMudancaDTO.getIdSolicitante() != null) { temSolicitante = true; } if(requisicaoMudancaDTO.getIdGrupoAtual() != null) { temGrupo = true; } if(requisicaoMudancaDTO.getNivelImpacto() != null) { temImpacto = true; } if(requisicaoMudancaDTO.getNivelUrgencia() != null) { temUrgencia = true; } listRetorno.add("idRegraEscalonamento"); listRetorno.add("idTipoGerenciamento"); listRetorno.add("idServico"); listRetorno.add("idContrato"); listRetorno.add("idSolicitante"); listRetorno.add("idGrupo"); listRetorno.add("idTipoDemandaServico"); listRetorno.add("urgencia"); listRetorno.add("impacto"); listRetorno.add("tempoExecucao"); listRetorno.add("intervaloNotificacao"); listRetorno.add("enviarEmail"); listRetorno.add("criaProblema"); listRetorno.add("prazoCriarProblema"); listRetorno.add("tipoDataEscalonamento"); parametro.add(idTipoGerenciamento); List list = this.execSQL(sql.toString(), parametro.toArray()); if (list != null && !list.isEmpty()) { Collection<RegraEscalonamentoDTO> lista = (Collection<RegraEscalonamentoDTO>) this.listConvertion(getBean(), list, listRetorno); Collection<RegraEscalonamentoDTO> novaLista = new ArrayList<RegraEscalonamentoDTO>(lista); for (RegraEscalonamentoDTO regraEscalonamentoDTO : lista) { if(!temContrato && regraEscalonamentoDTO.getIdContrato() != null || temContrato && regraEscalonamentoDTO.getIdContrato() != null && requisicaoMudancaDTO.getIdContrato().intValue() != regraEscalonamentoDTO.getIdContrato().intValue()) { novaLista.remove(regraEscalonamentoDTO); } else if(!temSolicitante && regraEscalonamentoDTO.getIdSolicitante() != null || temSolicitante && regraEscalonamentoDTO.getIdSolicitante() != null && requisicaoMudancaDTO.getIdSolicitante().intValue() != regraEscalonamentoDTO.getIdSolicitante().intValue()) { novaLista.remove(regraEscalonamentoDTO); } else if(!temGrupo && regraEscalonamentoDTO.getIdGrupo() != null || temGrupo && regraEscalonamentoDTO.getIdGrupo() != null && requisicaoMudancaDTO.getIdGrupoAtual().intValue() != regraEscalonamentoDTO.getIdGrupo().intValue()) { novaLista.remove(regraEscalonamentoDTO); } else if((!temImpacto && regraEscalonamentoDTO.getImpacto() != null && !regraEscalonamentoDTO.getImpacto().isEmpty()) || temImpacto && regraEscalonamentoDTO.getImpacto() != null && !requisicaoMudancaDTO.getNivelImpacto().equalsIgnoreCase(regraEscalonamentoDTO.getImpacto()) && !regraEscalonamentoDTO.getImpacto().isEmpty()) { novaLista.remove(regraEscalonamentoDTO); } else if(!temUrgencia && regraEscalonamentoDTO.getUrgencia() != null && !regraEscalonamentoDTO.getUrgencia().isEmpty()|| temUrgencia && regraEscalonamentoDTO.getUrgencia() != null && !requisicaoMudancaDTO.getNivelUrgencia().equalsIgnoreCase(regraEscalonamentoDTO.getUrgencia()) && !regraEscalonamentoDTO.getUrgencia().isEmpty()) { novaLista.remove(regraEscalonamentoDTO); } } return novaLista; } else { return null; } } public Collection<RegraEscalonamentoDTO> findRegraByProblema(ProblemaDTO problemaDTO, Integer idTipoGerenciamento) throws PersistenceException { List parametro = new ArrayList(); List listRetorno = new ArrayList(); StringBuilder sql = new StringBuilder(); boolean temContrato = false, temSolicitante = false, temGrupo = false, temImpacto = false, temUrgencia = false; sql.append(" SELECT idregraescalonamento, idtipogerenciamento, idservico, idcontrato, idsolicitante, idgrupo, "); sql.append(" idtipodemandaservico, urgencia, impacto, "); sql.append(" tempoexecucao, intervalonotificacao, enviaremail, criaproblema, prazocriarproblema, tipodataescalonamento FROM regraescalonamento"); sql.append(" where datafim is null and idtipogerenciamento = ?"); if(problemaDTO.getIdContrato() != null) { temContrato = true; } if(problemaDTO.getIdSolicitante() != null) { temSolicitante = true; } if(problemaDTO.getIdGrupoAtual() != null) { temGrupo = true; } if(problemaDTO.getImpacto() != null) { temImpacto = true; } if(problemaDTO.getUrgencia() != null) { temUrgencia = true; } listRetorno.add("idRegraEscalonamento"); listRetorno.add("idTipoGerenciamento"); listRetorno.add("idServico"); listRetorno.add("idContrato"); listRetorno.add("idSolicitante"); listRetorno.add("idGrupo"); listRetorno.add("idTipoDemandaServico"); listRetorno.add("urgencia"); listRetorno.add("impacto"); listRetorno.add("tempoExecucao"); listRetorno.add("intervaloNotificacao"); listRetorno.add("enviarEmail"); listRetorno.add("criaProblema"); listRetorno.add("prazoCriarProblema"); listRetorno.add("tipoDataEscalonamento"); parametro.add(idTipoGerenciamento); List list = this.execSQL(sql.toString(), parametro.toArray()); if (list != null && !list.isEmpty()) { Collection<RegraEscalonamentoDTO> lista = (Collection<RegraEscalonamentoDTO>) this.listConvertion(getBean(), list, listRetorno); Collection<RegraEscalonamentoDTO> novaLista = new ArrayList<RegraEscalonamentoDTO>(lista); for (RegraEscalonamentoDTO regraEscalonamentoDTO : lista) { if(!temContrato && regraEscalonamentoDTO.getIdContrato() != null || temContrato && regraEscalonamentoDTO.getIdContrato() != null && problemaDTO.getIdContrato().intValue() != regraEscalonamentoDTO.getIdContrato().intValue()) { novaLista.remove(regraEscalonamentoDTO); } else if(!temSolicitante && regraEscalonamentoDTO.getIdSolicitante() != null || temSolicitante && regraEscalonamentoDTO.getIdSolicitante() != null && problemaDTO.getIdSolicitante().intValue() != regraEscalonamentoDTO.getIdSolicitante().intValue()) { novaLista.remove(regraEscalonamentoDTO); } else if(!temGrupo && regraEscalonamentoDTO.getIdGrupo() != null || temGrupo && regraEscalonamentoDTO.getIdGrupo() != null && problemaDTO.getIdGrupoAtual().intValue() != regraEscalonamentoDTO.getIdGrupo().intValue()) { novaLista.remove(regraEscalonamentoDTO); } else if((!temImpacto && regraEscalonamentoDTO.getImpacto() != null && !regraEscalonamentoDTO.getImpacto().isEmpty()) || temImpacto && regraEscalonamentoDTO.getImpacto() != null && !problemaDTO.getImpacto().equalsIgnoreCase(regraEscalonamentoDTO.getImpacto()) && !regraEscalonamentoDTO.getImpacto().isEmpty()) { novaLista.remove(regraEscalonamentoDTO); } else if(!temUrgencia && regraEscalonamentoDTO.getUrgencia() != null && !regraEscalonamentoDTO.getUrgencia().isEmpty()|| temUrgencia && regraEscalonamentoDTO.getUrgencia() != null && !problemaDTO.getUrgencia().equalsIgnoreCase(regraEscalonamentoDTO.getUrgencia()) && !regraEscalonamentoDTO.getUrgencia().isEmpty()) { novaLista.remove(regraEscalonamentoDTO); } } return novaLista; } else { return null; } } }