package gcom.gui.faturamento.conta; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; 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; /** * Action respons�vel pela exibi��o da pagina de inserir motivo de retifica��o * [UC1117] Inserir Motivo Retifica��o * * @author Mariana Victor * @date 11/01/2011 */ public class ExibirInserirMotivoRetificacaoAction 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); // Set no mapeamento de retorno ActionForward retorno = actionMapping .findForward("inserirMotivoRetificacao"); InserirMotivoRetificacaoActionForm form = (InserirMotivoRetificacaoActionForm) actionForm; List<TabelaColuna> colecaoCampos = new ArrayList(); if (sessao.getAttribute("colecaoCampos") != null && !sessao.getAttribute("colecaoCampos").equals("")){ colecaoCampos = (List<TabelaColuna>) sessao.getAttribute("colecaoCampos"); } // 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(colecaoCampos, tabelaColuna)) { colecaoCampos.add(tabelaColuna); sessao.setAttribute("colecaoCampos", colecaoCampos); } } } // Limpar if (httpServletRequest.getParameter("acao") != null && httpServletRequest.getParameter("acao").equals("limpar")) { form.setDescricao(""); form.setNumeroOcorrenciasNoAno(""); form.setIndicadorCompetenciaConsumo(""); form.setDescColuna(""); form.setIdColuna(""); sessao.removeAttribute("colecaoCampos"); } // Remover 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 (colecaoCampos != null && !colecaoCampos.isEmpty() && colecaoCampos.size() >= indice) { colecaoCampos.remove(indice-1); } } sessao.removeAttribute("podeRetificarContaAction"); return retorno; } private TabelaColuna pesquisarCampo(InserirMotivoRetificacaoActionForm form, HttpSession sessao) { FiltroTabelaColuna filtroTabelaColuna = new FiltroTabelaColuna(); 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(Collection<TabelaColuna> colecaoTabelaColuna, TabelaColuna tabelaColuna) { Iterator iterator = colecaoTabelaColuna.iterator(); while(iterator.hasNext()) { TabelaColuna tabelaColunaAdicionada = (TabelaColuna) iterator.next(); if (tabelaColunaAdicionada.getId().equals(tabelaColuna.getId())) { return true; } } return false; } }