package gcom.gui.faturamento; import gcom.gui.GcomAction; import gcom.micromedicao.Rota; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Vector; 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; import org.apache.struts.validator.DynaValidatorForm; public class InserirSelecaoRotaAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { //Seta o retorno ActionForward retorno = actionMapping .findForward("exibirSelecionarRota"); //Obt�m a sess�o HttpSession sessao = httpServletRequest.getSession(false); //Formul�rio de pesquisa DynaValidatorForm pesquisarActionForm = (DynaValidatorForm) actionForm; if (sessao.getAttribute("colecaoRotasSelecionadas") != null) { // Cole��o retornada pela pesquisa Collection colecaoRotasSelecionadas = (Collection) sessao .getAttribute("colecaoRotasSelecionadas"); // Cole��o que ir� ser gerada a partir da sele��o efetuada pelo // usu�rio List colecaoRotasSelecionadasUsuario = new Vector(); if (pesquisarActionForm.get("idRotaSelecao") != null) { Iterator colecaoRotasSelecionadasIterator; Rota rotaInserir; int indexArray = 0; Integer rotaID; // Rotas selecionadas pelo usu�rio String[] rotasSelecionadas = (String[]) pesquisarActionForm .get("idRotaSelecao"); while (rotasSelecionadas.length > indexArray) { rotaID = new Integer(rotasSelecionadas[indexArray]); colecaoRotasSelecionadasIterator = colecaoRotasSelecionadas .iterator(); while (colecaoRotasSelecionadasIterator.hasNext()) { rotaInserir = (Rota) colecaoRotasSelecionadasIterator .next(); if (rotaInserir.getId().equals(rotaID)) { colecaoRotasSelecionadasUsuario.add(rotaInserir); break; } } indexArray++; } // A cole��o pode ser acumulativa ou est� sendo gerada pela // primeira vez if (sessao.getAttribute("colecaoRotasSelecionadasUsuario") != null) { Collection colecaoRotasSelecionadasUsuarioSessao = (Collection) sessao .getAttribute("colecaoRotasSelecionadasUsuario"); colecaoRotasSelecionadasUsuarioSessao .addAll(colecaoRotasSelecionadasUsuario); } else { sessao.setAttribute("colecaoRotasSelecionadasUsuario", colecaoRotasSelecionadasUsuario); } // Remove a cole��o gerada pela pesquisa efetuada pelo usu�rio sessao.removeAttribute("colecaoRotasSelecionadas"); // Flag para indicar o retorno para o caso de uso que chamou a // funcionalidade httpServletRequest.setAttribute("retornarUseCase", "OK"); } } //devolve o mapeamento de retorno return retorno; } }