package br.com.centralit.citcorpore.metainfo.complementos; import java.io.PrintWriter; import java.util.Collection; import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.math.NumberUtils; import org.apache.log4j.Logger; import br.com.centralit.citcorpore.bean.ClienteDTO; import br.com.centralit.citcorpore.bean.ContratoDTO; import br.com.centralit.citcorpore.bean.FornecedorDTO; import br.com.centralit.citcorpore.bean.ServicoContratoDTO; import br.com.centralit.citcorpore.bean.ServicoDTO; import br.com.centralit.citcorpore.negocio.ClienteService; import br.com.centralit.citcorpore.negocio.ContratoService; import br.com.centralit.citcorpore.negocio.FornecedorService; import br.com.centralit.citcorpore.negocio.ServicoContratoService; import br.com.centralit.citcorpore.negocio.ServicoService; import br.com.centralit.citcorpore.util.Enumerados.TipoDate; import br.com.centralit.citcorpore.util.WebUtil; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilDatas; import br.com.citframework.util.UtilHTML; import br.com.citframework.util.UtilI18N; import br.com.citframework.util.UtilStrings; public class ComplementoSLA_MostrarContratos { private static final Logger LOGGER = Logger.getLogger(ComplementoSLA_MostrarContratos.class); public void execute(final HttpServletRequest request, final HttpServletResponse response, final String tipoContrato) { final Map<String, Object> map = this.getValuesFromRequest(request); this.debugValuesFromRequest(map); try { final PrintWriter out = response.getWriter(); final String idAcordoNivelServicoString = request.getParameter("IDACORDONIVELSERVICO"); final int idAcordoNivelServico = NumberUtils.toInt(idAcordoNivelServicoString, 0); final StringBuilder strTable = new StringBuilder(); strTable.append("<table width='100%'>"); strTable.append("<tr>"); strTable.append("<td style='border:1px solid black'>"); strTable.append(" "); strTable.append("</td>"); strTable.append("<td style='border:1px solid black'>"); strTable.append("<b>"); strTable.append(UtilHTML.encodeHTML(UtilI18N.internacionaliza(request, "sla.contrato.numero"))); strTable.append("</b>"); strTable.append("</td>"); strTable.append("<td style='border:1px solid black'>"); strTable.append("<b>"); strTable.append(UtilI18N.internacionaliza(request, "sla.contrato.data")); strTable.append("</b>"); strTable.append("</td>"); strTable.append("<td style='border:1px solid black'>"); strTable.append("<b>"); strTable.append(UtilI18N.internacionaliza(request, "sla.contrato.cliente")); strTable.append("</b>"); strTable.append("</td>"); strTable.append("<td style='border:1px solid black'>"); strTable.append("<b>"); strTable.append(UtilI18N.internacionaliza(request, "sla.contrato.fornecedor")); strTable.append("</b>"); strTable.append("</td>"); strTable.append("<td style='border:1px solid black'>"); strTable.append("<b>"); strTable.append(UtilHTML.encodeHTML(UtilI18N.internacionaliza(request, "sla.contrato.situacao"))); strTable.append("</b>"); strTable.append("</td>"); strTable.append("</tr>"); if (idAcordoNivelServico > 0) { final ContratoService contratoService = (ContratoService) ServiceLocator.getInstance().getService(ContratoService.class, null); final ServicoContratoService servicoContratoService = (ServicoContratoService) ServiceLocator.getInstance().getService(ServicoContratoService.class, null); final ServicoService servicoService = (ServicoService) ServiceLocator.getInstance().getService(ServicoService.class, null); final ClienteService clienteService = (ClienteService) ServiceLocator.getInstance().getService(ClienteService.class, null); final FornecedorService fornecedorService = (FornecedorService) ServiceLocator.getInstance().getService(FornecedorService.class, null); final List lstContratosCliente = (List) contratoService.listByIdAcordoNivelServicoAndTipo(idAcordoNivelServico, tipoContrato); if (lstContratosCliente != null) { for (final Iterator it = lstContratosCliente.iterator(); it.hasNext();) { final ContratoDTO contratoDTO = (ContratoDTO) it.next(); String nomeCliente = ""; String nomeFornecedor = ""; ClienteDTO clientDto = new ClienteDTO(); clientDto.setIdCliente(contratoDTO.getIdCliente()); clientDto = (ClienteDTO) clienteService.restore(clientDto); if (clientDto != null) { nomeCliente = clientDto.getNomeRazaoSocial(); } FornecedorDTO fornecedorDto = new FornecedorDTO(); fornecedorDto.setIdFornecedor(contratoDTO.getIdFornecedor()); fornecedorDto = (FornecedorDTO) fornecedorService.restore(fornecedorDto); if (fornecedorDto != null) { nomeFornecedor = fornecedorDto.getRazaoSocial(); } String situacao = contratoDTO.getSituacao(); if (situacao.equalsIgnoreCase("A")) { situacao = UtilI18N.internacionaliza(request, "sla.contrato.ativo"); } else if (situacao.equalsIgnoreCase("F")) { situacao = UtilI18N.internacionaliza(request, "sla.contrato.finalizado"); } else if (situacao.equalsIgnoreCase("C")) { situacao = UtilI18N.internacionaliza(request, "sla.contrato.cancelado"); } else if (situacao.equalsIgnoreCase("P")) { situacao = UtilI18N.internacionaliza(request, "sla.contrato.paralisado"); } strTable.append("<tr>"); strTable.append("<td style='border:1px solid black'>"); strTable.append("<img id='img_tr_"); strTable.append(contratoDTO.getIdContrato()); strTable.append("_"); strTable.append(tipoContrato); strTable.append("' src='"); strTable.append(Constantes.getValue("SERVER_ADDRESS")); strTable.append(Constantes.getValue("CONTEXTO_APLICACAO")); strTable.append("/imagens/mais.jpg' border='0' onclick=\"abreFechaMaisMenos(this, 'tr_"); strTable.append(contratoDTO.getIdContrato()); strTable.append("_"); strTable.append(tipoContrato); strTable.append("')\"/>"); strTable.append("</td>"); strTable.append("<td style='border:1px solid black'>"); strTable.append(contratoDTO.getNumero()); strTable.append("</td>"); strTable.append("<td style='border:1px solid black'>"); strTable.append(UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, contratoDTO.getDataContrato(), WebUtil.getLanguage(request))); strTable.append("</td>"); strTable.append("<td style='border:1px solid black'>"); strTable.append(UtilHTML.encodeHTML(nomeCliente)); strTable.append("</td>"); strTable.append("<td style='border:1px solid black'>"); strTable.append(UtilHTML.encodeHTML(nomeFornecedor)); strTable.append("</td>"); strTable.append("<td style='border:1px solid black'>"); strTable.append(situacao); strTable.append("</td>"); strTable.append("</tr>"); final Collection colServicos = servicoContratoService.findByIdContrato(contratoDTO.getIdContrato()); if (colServicos != null && colServicos.size() > 0) { strTable.append("<tr>"); strTable.append("<td colspan='6' style='border:1px solid black'>"); strTable.append("<div id='tr_"); strTable.append(contratoDTO.getIdContrato()); strTable.append("_"); strTable.append(tipoContrato); strTable.append("' style='display:none'>"); strTable.append("<table width='100%'>"); strTable.append("<tr>"); strTable.append("<td colspan='2'>"); strTable.append("<b>"); strTable.append(UtilHTML.encodeHTML(UtilI18N.internacionaliza(request, "sla.servicosdocontrato"))); strTable.append("</b>"); strTable.append("</td>"); strTable.append("</tr>"); final Iterator itServ = colServicos.iterator(); while (itServ.hasNext()) { final ServicoContratoDTO servContratoDto = (ServicoContratoDTO) itServ.next(); if ((servContratoDto.getDataFim() == null || UtilDatas.getDataAtual().before(servContratoDto.getDataFim())) && (servContratoDto.getDeleted() == null || servContratoDto.getDeleted().equalsIgnoreCase("n"))) { ServicoDTO servico = new ServicoDTO(); servico.setIdServico(servContratoDto.getIdServico()); servico = (ServicoDTO) servicoService.restore(servico); if (servico != null) { strTable.append("<tr>"); strTable.append("<td>"); strTable.append("<img src='"); strTable.append(Constantes.getValue("CONTEXTO_APLICACAO")); strTable.append("/imagens/seta_link1.gif' border='0'/>"); strTable.append("</td>"); strTable.append("<td>"); strTable.append(UtilHTML.encodeHTML(servico.getNomeServico())); strTable.append("</td>"); strTable.append("</tr>"); } } } strTable.append("</table>"); strTable.append("</div>"); strTable.append("</td>"); strTable.append("</tr>"); } } } } strTable.append("</table>"); out.write(strTable.toString()); } catch (final Exception e) { LOGGER.warn(e.getMessage(), e); } response.setContentType("text/html; charset=UTF-8"); } public Map<String, Object> getValuesFromRequest(final HttpServletRequest req) { final Enumeration<String> en = req.getParameterNames(); String[] strValores; final Map<String, Object> formFields = new HashMap<>(); while (en.hasMoreElements()) { final String nomeCampo = en.nextElement(); strValores = req.getParameterValues(nomeCampo); if (strValores.length == 0) { formFields.put(nomeCampo.toUpperCase(), UtilStrings.decodeCaracteresEspeciais(req.getParameter(nomeCampo))); } else { if (strValores.length == 1) { formFields.put(nomeCampo.toUpperCase(), UtilStrings.decodeCaracteresEspeciais(strValores[0])); } else { formFields.put(nomeCampo.toUpperCase(), strValores); } } } return formFields; } private void debugValuesFromRequest(final Map<String, Object> hashValores) { final Set<Entry<String, Object>> set = hashValores.entrySet(); final Iterator<Entry<String, Object>> i = set.iterator(); LOGGER.debug("------- ServletDinamic ------ VALORES DO REQUEST: -------"); while (i.hasNext()) { final Entry<String, Object> me = i.next(); LOGGER.debug("-------------> [" + me.getKey() + "]: [" + me.getValue() + "]"); } } }