package gcom.gui.cadastro.endereco; import gcom.cadastro.endereco.Cep; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; 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; /** * Esta classe tem por finalidade incluir os CEPs que foram selecionados pelo usu�rio na cole��o final * * @author Raphael Rossiter * @date 03/05/2006 */ public class InserirSelecaoCepAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("exibirSelecionarCep"); HttpSession sessao = httpServletRequest.getSession(false); SelecionarCepActionForm selecionarCepActionForm = (SelecionarCepActionForm) actionForm; String tipoRetorno = (String) sessao.getAttribute("tipoPesquisaRetorno"); //String tipoOperacao = (String) sessao.getAttribute("operacao"); if (tipoRetorno != null && !tipoRetorno.trim().equalsIgnoreCase("")) { if (sessao.getAttribute("colecaoCepSelecionados") != null) { // Cole��o retornada pela pesquisa Collection colecaoCepSelecionados = (Collection) sessao .getAttribute("colecaoCepSelecionados"); Collection colecaoCepSelecionadosUsuario = new ArrayList(); if (selecionarCepActionForm.getIdCepSelecao() != null) { Iterator colecaoCepSelecionadosIterator; Cep cepInserir; int indexArray = 0; Integer cepID; // CEPs selecionadas pelo usu�rio String[] cepSelecionados = (String[]) selecionarCepActionForm.getIdCepSelecao(); while (cepSelecionados.length > indexArray) { cepID = new Integer(cepSelecionados[indexArray]); colecaoCepSelecionadosIterator = colecaoCepSelecionados .iterator(); while (colecaoCepSelecionadosIterator.hasNext()) { cepInserir = (Cep) colecaoCepSelecionadosIterator .next(); if (cepInserir.getCepId().equals(cepID)) { colecaoCepSelecionadosUsuario.add(cepInserir); break; } } indexArray++; } // A cole��o pode ser acumulativa ou est� sendo gerada pela primeira vez if (sessao.getAttribute("colecaoCepSelecionadosUsuario") != null) { Collection colecaoCepSelecionadosUsuarioSessao = (Collection) sessao .getAttribute("colecaoCepSelecionadosUsuario"); Cep cep; Iterator iteratorColecaoCepSelecionadosUsuario = colecaoCepSelecionadosUsuario.iterator(); while(iteratorColecaoCepSelecionadosUsuario.hasNext()){ cep = (Cep) iteratorColecaoCepSelecionadosUsuario.next(); if (!colecaoCepSelecionadosUsuarioSessao.contains(cep)){ colecaoCepSelecionadosUsuarioSessao.add(cep); } else{ throw new ActionServletException( "atencao.objeto_ja_selecionado", null, "Cep"); } } } else { sessao.setAttribute("colecaoCepSelecionadosUsuario", colecaoCepSelecionadosUsuario); } // Remove a cole��o gerada pela pesquisa efetuada pelo usu�rio sessao.removeAttribute("colecaoCepSelecionados"); // Flag para indicar o retorno para o caso de uso que chamou a funcionalidade httpServletRequest.setAttribute("retornarUseCase", "OK"); if (tipoRetorno.trim().equalsIgnoreCase("logradouro")) { httpServletRequest.setAttribute("flagRedirect", "logradouro"); } else if (tipoRetorno.trim().equalsIgnoreCase("endereco")) { httpServletRequest.setAttribute("flagRedirect", "endereco"); } } } } return retorno; } }