package br.com.centralit.citcorpore.ajaxForms; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citcorpore.bean.AcordoNivelServicoDTO; import br.com.centralit.citcorpore.bean.InformacoesContratoDTO; import br.com.centralit.citcorpore.bean.ServicoContratoDTO; import br.com.centralit.citcorpore.bean.ServicoDTO; import br.com.centralit.citcorpore.negocio.AcordoNivelServicoService; import br.com.centralit.citcorpore.negocio.ServicoContratoService; import br.com.centralit.citcorpore.negocio.ServicoService; import br.com.citframework.comparacao.ObjectSimpleComparator; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.UtilI18N; public class CopiarSLA extends AjaxFormAction { @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { InformacoesContratoDTO informacoesContratoDTO = (InformacoesContratoDTO) document.getBean(); ServicoContratoService servicoContratoService = (ServicoContratoService) ServiceLocator.getInstance().getService(ServicoContratoService.class, null); ServicoService servicoService = (ServicoService) ServiceLocator.getInstance().getService(ServicoService.class, null); AcordoNivelServicoService acordoNivelServicoService = (AcordoNivelServicoService) ServiceLocator.getInstance().getService(AcordoNivelServicoService.class, null); Collection colServicosContrato = servicoContratoService.findByIdContrato(informacoesContratoDTO.getIdContrato()); String strBuffer = "<table>"; List colFinal = new ArrayList(); // Busca de servi�os que j� possuem o SLA copiado List colServicosContratoSLAJaCopiados = acordoNivelServicoService.buscaServicosComContrato(informacoesContratoDTO.getTituloSLA()); if (colServicosContrato != null && colServicosContratoSLAJaCopiados != null) { for (Iterator it = colServicosContrato.iterator(); it.hasNext();) { ServicoContratoDTO servicoContratoDTO = (ServicoContratoDTO) it.next(); if (informacoesContratoDTO.getIdServicoContrato().intValue() != servicoContratoDTO.getIdServicoContrato().intValue()) { ServicoDTO servicoDto = new ServicoDTO(); servicoDto.setIdServico(servicoContratoDTO.getIdServico()); servicoDto = (ServicoDTO) servicoService.restore(servicoDto); if (servicoDto != null) { servicoContratoDTO.setNomeServico(servicoDto.getNomeServico()); if (servicoContratoDTO.getDeleted() == null || !servicoContratoDTO.getDeleted().equalsIgnoreCase("Y")) { if (servicoDto.getDeleted() == null || !servicoDto.getDeleted().equalsIgnoreCase("Y")) { colFinal.add(servicoContratoDTO); } } } } } } // Retira os servi�os que j� possuem o SLA copiado para evitar duplica��es List listFinal = new ArrayList(); listFinal = removerServicosJaCopiados(colFinal, colServicosContratoSLAJaCopiados); if (listFinal.isEmpty()) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.naoHaServicosDisponiveis")); // document.executeScript("parent.limparAreaInformacao()"); document.executeScript("parent.fecharVisao()"); return; } Collections.sort(listFinal, new ObjectSimpleComparator("getNomeServico", ObjectSimpleComparator.ASC)); if (listFinal != null) { for (Iterator it = colFinal.iterator(); it.hasNext();) { ServicoContratoDTO servicoContratoDTO = (ServicoContratoDTO) it.next(); if (informacoesContratoDTO.getIdServicoContrato().intValue() != servicoContratoDTO.getIdServicoContrato().intValue()) { strBuffer += "<tr>"; strBuffer += "<td>"; strBuffer += "<input type='checkbox' name='idServicoCopiarPara' id='idServicoCopiarPara' value='" + +servicoContratoDTO.getIdServicoContrato() + "'/>" + servicoContratoDTO.getNomeServico(); strBuffer += "</td>"; strBuffer += "</tr>"; } } } strBuffer += "<table>"; document.getElementById("copiarPara").setInnerHTML(strBuffer); AcordoNivelServicoDTO acordoNivelServicoDTO = new AcordoNivelServicoDTO(); acordoNivelServicoDTO.setIdAcordoNivelServico(informacoesContratoDTO.getIdAcordoNivelServico()); acordoNivelServicoDTO = (AcordoNivelServicoDTO) acordoNivelServicoService.restore(acordoNivelServicoDTO); strBuffer = ""; if (acordoNivelServicoDTO != null) { strBuffer = UtilI18N.internacionaliza(request, "sla.titulo")+": " + acordoNivelServicoDTO.getTituloSLA() + "<br><br>"; strBuffer += UtilI18N.internacionaliza(request, "solicitacaoServico.descricao")+": " + acordoNivelServicoDTO.getDescricaoSLA(); } document.getElementById("slaCopiar").setInnerHTML(strBuffer); document.getForm("form").setValues(informacoesContratoDTO); } /** * M�todo para remover servi�os com SLA j� copiados * * @param colFinal * @param colServicosContratoSLAJaCopiados * @return List */ private List removerServicosJaCopiados(List<ServicoContratoDTO> colFinal, List<ServicoContratoDTO> colServicosContratoSLAJaCopiados) { for (int i = 0; i < colFinal.size(); i++) { for (int j = 0; j < colServicosContratoSLAJaCopiados.size(); j++) { if (!colFinal.isEmpty() && colFinal.get(i).getIdServicoContrato().equals(colServicosContratoSLAJaCopiados.get(j).getIdServicoContrato())) { colFinal.remove(i); // break; } } } return colFinal; } public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { InformacoesContratoDTO informacoesContratoDTO = (InformacoesContratoDTO) document.getBean(); if (informacoesContratoDTO.getIdServicoCopiarPara() == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.informeServicoParaOndeCopiadoSLA")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } AcordoNivelServicoService acordoNivelServicoService = (AcordoNivelServicoService) ServiceLocator.getInstance().getService(AcordoNivelServicoService.class, null); acordoNivelServicoService.copiarSLA(informacoesContratoDTO.getIdAcordoNivelServico(), informacoesContratoDTO.getIdServicoContrato(), informacoesContratoDTO.getIdServicoCopiarPara()); document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.acordoCopiadoSucesso")); document.executeScript("parent.limparAreaInformacao()"); document.executeScript("parent.fecharVisao()"); } @Override public Class getBeanClass() { return InformacoesContratoDTO.class; } }