package gcom.gui.faturamento.conta; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import gcom.fachada.Fachada; import gcom.faturamento.conta.ContaMotivoRetificacao; import gcom.faturamento.conta.ContaMotivoRetificacaoColuna; import gcom.faturamento.conta.FiltroContaMotivoRetificacao; import gcom.faturamento.conta.FiltroContaMotivoRetificacaoColuna; import gcom.gui.GcomAction; import gcom.seguranca.transacao.FiltroTabelaColuna; import gcom.seguranca.transacao.TabelaColuna; import gcom.util.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class ExibirAtualizarMotivoRetificacaoAction extends GcomAction { /** * Description of the Method * * @param actionMapping * Description of the Parameter * @param actionForm * Description of the Parameter * @param httpServletRequest * Description of the Parameter * @param httpServletResponse * Description of the Parameter * @return Description of the Return Value */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Mudar isso quando tiver esquema de seguran�a HttpSession sessao = httpServletRequest.getSession(false); Fachada fachada = Fachada.getInstancia(); ActionForward retorno = actionMapping.findForward("atualizarMotivoRetificacao"); AtualizarMotivoRetificacaoActionForm form = (AtualizarMotivoRetificacaoActionForm) actionForm; ContaMotivoRetificacao contaMotivoRetificacao = null; List<ContaMotivoRetificacaoColuna> colecaoContaMotivoRetificacaoColuna = new ArrayList(); List<ContaMotivoRetificacaoColuna> colecaoCamposRemover = new ArrayList(); if (sessao.getAttribute("colecaoContaMotivoRetificacaoColuna") != null && !sessao.getAttribute("colecaoContaMotivoRetificacaoColuna").equals("")){ colecaoContaMotivoRetificacaoColuna = (List<ContaMotivoRetificacaoColuna>) sessao.getAttribute("colecaoContaMotivoRetificacaoColuna"); } if (sessao.getAttribute("colecaoCamposRemover") != null && !sessao.getAttribute("colecaoCamposRemover").equals("")){ colecaoCamposRemover = (List<ContaMotivoRetificacaoColuna>) sessao.getAttribute("colecaoCamposRemover"); } // Verifica se veio do filtrar ou do manter if (httpServletRequest.getParameter("manter") != null) { sessao.setAttribute("manter", true); } else if (httpServletRequest.getParameter("filtrar") != null) { sessao.removeAttribute("manter"); } // Se o usu�rio selecionou um motivo de retifica��o a partir da tela de manter if (httpServletRequest.getParameter("idContaMotivoRetificacao") != null && !httpServletRequest.getParameter("idContaMotivoRetificacao").equals("")) { Integer idContaMotivoRetificacao = new Integer( httpServletRequest.getParameter("idContaMotivoRetificacao")); FiltroContaMotivoRetificacao filtroContaMotivoRetificacao = new FiltroContaMotivoRetificacao(); filtroContaMotivoRetificacao.adicionarParametro( new ParametroSimples(FiltroContaMotivoRetificacao.CODIGO, idContaMotivoRetificacao)); Collection colecaoContaMotivoRetificacao = fachada.pesquisar( filtroContaMotivoRetificacao, ContaMotivoRetificacao.class.getName()); if (colecaoContaMotivoRetificacao != null && !colecaoContaMotivoRetificacao.isEmpty()) { contaMotivoRetificacao = (ContaMotivoRetificacao) Util.retonarObjetoDeColecao(colecaoContaMotivoRetificacao); } // Se o usu�rio selecionou um motivo de retifica��o a partir da tela de filtrar } else if (httpServletRequest.getParameter("filtrar") != null && httpServletRequest.getParameter("filtrar").equals("sim") && sessao.getAttribute("objetoContaMotivoRetificacao") != null && !sessao.getAttribute("objetoContaMotivoRetificacao").equals("")){ contaMotivoRetificacao = (ContaMotivoRetificacao) sessao.getAttribute("objetoContaMotivoRetificacao"); } if (contaMotivoRetificacao != null) { colecaoContaMotivoRetificacaoColuna = this.setarCamposFormulario(form, sessao, contaMotivoRetificacao); if (colecaoContaMotivoRetificacaoColuna != null && !colecaoContaMotivoRetificacaoColuna.isEmpty()) { sessao.setAttribute("colecaoContaMotivoRetificacaoColuna", colecaoContaMotivoRetificacaoColuna); } else { sessao.removeAttribute("colecaoContaMotivoRetificacaoColuna"); } sessao.setAttribute("objetoContaMotivoRetificacao", contaMotivoRetificacao); } else if (sessao.getAttribute("objetoContaMotivoRetificacao") != null && !sessao.getAttribute("objetoContaMotivoRetificacao").equals("")){ contaMotivoRetificacao = (ContaMotivoRetificacao) sessao.getAttribute("objetoContaMotivoRetificacao"); } // Desfazer if (httpServletRequest.getParameter("acao") != null && httpServletRequest.getParameter("acao").equals("desfazer")) { Integer id = contaMotivoRetificacao.getId(); sessao.removeAttribute("colecaoContaMotivoRetificacaoColuna"); FiltroContaMotivoRetificacao filtroContaMotivoRetificacao = new FiltroContaMotivoRetificacao(); filtroContaMotivoRetificacao.adicionarParametro( new ParametroSimples(FiltroContaMotivoRetificacao.CODIGO, id)); Collection colecaoContaMotivoRetificacao = fachada.pesquisar( filtroContaMotivoRetificacao, ContaMotivoRetificacao.class.getName()); if (colecaoContaMotivoRetificacao != null && !colecaoContaMotivoRetificacao.isEmpty()) { contaMotivoRetificacao = (ContaMotivoRetificacao) Util.retonarObjetoDeColecao(colecaoContaMotivoRetificacao); } colecaoContaMotivoRetificacaoColuna = this.setarCamposFormulario(form, sessao, contaMotivoRetificacao); if (colecaoContaMotivoRetificacaoColuna != null && !colecaoContaMotivoRetificacaoColuna.isEmpty()) { sessao.setAttribute("colecaoContaMotivoRetificacaoColuna", colecaoContaMotivoRetificacaoColuna); } else { sessao.removeAttribute("colecaoContaMotivoRetificacaoColuna"); } sessao.setAttribute("objetoContaMotivoRetificacao", contaMotivoRetificacao); } // Pesquisar Campo if (Util.verificarNaoVazio(form.getIdColuna())) { TabelaColuna tabelaColuna = this.pesquisarCampo(form, sessao); if (tabelaColuna != null) { form.setIdColuna(tabelaColuna.getDescricaoColuna()); form.setDescColuna(tabelaColuna.getDescricaoColuna()); sessao.setAttribute("colunaEncontrada",""); } } // Adicionar Campo if (httpServletRequest.getParameter("acao") != null && httpServletRequest.getParameter("acao").equals("adicionar") && !form.getIdColuna().equals("")) { TabelaColuna tabelaColuna = this.pesquisarCampo(form, sessao); if (tabelaColuna != null) { form.setIdColuna(""); form.setDescColuna(""); sessao.removeAttribute("colunaEncontrada"); if (!this.adicionado(colecaoContaMotivoRetificacaoColuna, tabelaColuna)) { ContaMotivoRetificacaoColuna contaMotivoRetificacaoColuna = new ContaMotivoRetificacaoColuna(); contaMotivoRetificacaoColuna.setTabelaColuna(tabelaColuna); contaMotivoRetificacaoColuna.setContaMotivoRetificacao(contaMotivoRetificacao); colecaoContaMotivoRetificacaoColuna.add(contaMotivoRetificacaoColuna); sessao.setAttribute("colecaoContaMotivoRetificacaoColuna", colecaoContaMotivoRetificacaoColuna); } } } // Remover Campo if (httpServletRequest.getParameter("acao") != null && httpServletRequest.getParameter("acao").equals("remover") && httpServletRequest.getParameter("id") != null && !httpServletRequest.getParameter("id").equals("")) { Integer indice = new Integer(httpServletRequest.getParameter("id")); if (colecaoContaMotivoRetificacaoColuna != null && !colecaoContaMotivoRetificacaoColuna.isEmpty() && colecaoContaMotivoRetificacaoColuna.size() >= indice) { if (colecaoContaMotivoRetificacaoColuna.get(indice-1).getUltimaAlteracao() != null){ colecaoCamposRemover.add(colecaoContaMotivoRetificacaoColuna.get(indice-1)); sessao.setAttribute("colecaoCamposRemover",colecaoCamposRemover); } colecaoContaMotivoRetificacaoColuna.remove(indice-1); } } sessao.removeAttribute("podeRetificarContaAction"); return retorno; } private List<ContaMotivoRetificacaoColuna> setarCamposFormulario(AtualizarMotivoRetificacaoActionForm form, HttpSession sessao, ContaMotivoRetificacao contaMotivoRetificacao) { Fachada fachada = Fachada.getInstancia(); List<ContaMotivoRetificacaoColuna> colecaoContaMotivoRetificacaoColuna = null; sessao.setAttribute("idContaMotivoRetificacao", contaMotivoRetificacao.getId()); if (contaMotivoRetificacao.getDescricao() != null && !contaMotivoRetificacao.getDescricao().equals("")){ form.setDescricao(contaMotivoRetificacao.getDescricao()); } else { form.setDescricao(""); } if (contaMotivoRetificacao.getIndicadorCompetenciaConsumo()!= null){ form.setIndicadorCompetenciaConsumo(contaMotivoRetificacao.getIndicadorCompetenciaConsumo().toString()); } else { form.setIndicadorCompetenciaConsumo(""); } if (contaMotivoRetificacao.getIndicadorUso()!= null){ form.setIndicadorUso(contaMotivoRetificacao.getIndicadorUso().toString()); } else { form.setIndicadorUso(""); } if (contaMotivoRetificacao.getNumeroOcorrenciasNoAno() != null){ form.setNumeroOcorrenciasNoAno(contaMotivoRetificacao.getNumeroOcorrenciasNoAno().toString()); } else { form.setNumeroOcorrenciasNoAno(""); } FiltroContaMotivoRetificacaoColuna filtroContaMotivoRetificacaoColuna = new FiltroContaMotivoRetificacaoColuna(); filtroContaMotivoRetificacaoColuna.adicionarParametro( new ParametroSimples(FiltroContaMotivoRetificacaoColuna.CONTA_MOTIVO_RETIFICACAO_ID, contaMotivoRetificacao.getId())); filtroContaMotivoRetificacaoColuna.adicionarCaminhoParaCarregamentoEntidade( FiltroContaMotivoRetificacaoColuna.TABELA_COLUNA); colecaoContaMotivoRetificacaoColuna = (List<ContaMotivoRetificacaoColuna>) fachada .pesquisar(filtroContaMotivoRetificacaoColuna,ContaMotivoRetificacaoColuna.class.getName()); return colecaoContaMotivoRetificacaoColuna; } private TabelaColuna pesquisarCampo(AtualizarMotivoRetificacaoActionForm form, HttpSession sessao) { FiltroTabelaColuna filtroTabelaColuna = new FiltroTabelaColuna(); if (form.getIdColunaPesquisada() != null && !form.getIdColunaPesquisada().equals("")) { filtroTabelaColuna.adicionarParametro( new ParametroSimples(FiltroTabelaColuna.ID, form.getIdColunaPesquisada())); } else { filtroTabelaColuna.adicionarParametro( new ParametroSimples(FiltroTabelaColuna.DESCRICAO_COLUNA, form.getIdColuna())); } Collection<TabelaColuna> colecaoTabelaColuna = this.getFachada().pesquisar(filtroTabelaColuna, TabelaColuna.class.getName()); // [FS0002] � Verificar exist�ncia do campo (coluna) if (Util.isVazioOrNulo(colecaoTabelaColuna)) { form.setIdColuna(""); form.setDescColuna("Campo n�o Localizado"); sessao.removeAttribute("colunaEncontrada"); } else { TabelaColuna tabelaColuna = (TabelaColuna) Util.retonarObjetoDeColecao(colecaoTabelaColuna); //[FS0003] � Verificar se o campo (coluna) pode ser associado if (!tabelaColuna.getIndicadorPodeRetificarConta().toString().equals(ConstantesSistema.SIM.toString())) { form.setIdColuna(""); form.setDescColuna("Campo n�o pode ser associado para retifica��o!"); sessao.removeAttribute("colunaEncontrada"); } else { return tabelaColuna; } } return null; } private boolean adicionado(List<ContaMotivoRetificacaoColuna> colecaoContaMotivoRetificacaoColuna, TabelaColuna tabelaColuna) { Iterator iterator = colecaoContaMotivoRetificacaoColuna.iterator(); while(iterator.hasNext()) { TabelaColuna tabelaColunaAdicionada = ((ContaMotivoRetificacaoColuna) iterator.next()).getTabelaColuna(); if (tabelaColunaAdicionada.getId().equals(tabelaColuna.getId())) { return true; } } return false; } }