package gcom.gui.seguranca.acesso;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.FiltroOperacao;
import gcom.seguranca.acesso.Operacao;
import java.util.Collection;
import java.util.Map;
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 p�gina de manter opera��o
*
* @author Pedro Alexandre
* @date 01/08/2006
*/
public class ExibirManterOperacaoAction extends GcomAction {
/**
* [UC0281] - Manter Opera��o
*
* @author Pedro Alexandre
* @date 05/08/2006
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Seta o mapeamento de retorno para a tela de manter opera��o
ActionForward retorno = actionMapping.findForward("exibirManterOperacao");
//Cria uma inst�ncia da sess�o
HttpSession sessao = httpServletRequest.getSession(false);
sessao.setAttribute("AtualizarOperacaoActionForm",null);
//Cria a vari�vel que vai armazenar a cole��o de opera��es filtradas
Collection colecaoOperacao = null;
//Recupera o filtro da opera��o caso tenha na sess�o
FiltroOperacao filtroOperacao = null;
if (sessao.getAttribute("filtroOperacao") != null) {
filtroOperacao = (FiltroOperacao) sessao.getAttribute("filtroOperacao");
}
filtroOperacao.adicionarCaminhoParaCarregamentoEntidade("funcionalidade");
filtroOperacao.adicionarCaminhoParaCarregamentoEntidade("operacaoTipo");
filtroOperacao.adicionarCaminhoParaCarregamentoEntidade("idOperacaoPesquisa");
filtroOperacao.adicionarCaminhoParaCarregamentoEntidade("tabelaColuna");
filtroOperacao.adicionarCaminhoParaCarregamentoEntidade(FiltroOperacao.ARGUMENTO_PESQUISA);
/*
* Pesquisa a cole��o de opera��es para o esquema de pagina��o
* e recupera o mapeamnento de retorno
*/
Map resultado = controlarPaginacao(httpServletRequest, retorno, filtroOperacao, Operacao.class.getName());
colecaoOperacao = (Collection) resultado.get("colecaoRetorno");
retorno = (ActionForward) resultado.get("destinoActionForward");
/*
* Caso a cole��o de pesquisa esteja vazia
* levanta a exce��o para o usu�rio indicando que a pesquisa
* n�o retornou nenhum registro
*/
if (colecaoOperacao == null || colecaoOperacao.isEmpty()) {
throw new ActionServletException("atencao.pesquisa.nenhumresultado");
}
//Recupera a flag que indica que se o usu�rio quer ir direto para a tela do atualizar
String identificadorAtualizar = (String)sessao.getAttribute("indicadorAtualizar");
/*
* Caso a cloe��o de pesquisa tenha um �nico registro e a a
* flag do atualizar esteja marcada, recupera a opera��o
* da cole��o e seta o c�digo da opera��o para ser atualizada
* na sess�o.
* Caso contr�rio manda a cole��o de opera��es para a
* p�gina do manter.
*/
if (colecaoOperacao.size()== 1 && identificadorAtualizar != null){
retorno = actionMapping.findForward("atualizarOperacao");
Operacao operacao = (Operacao)colecaoOperacao.iterator().next();
sessao.setAttribute("idRegistroAtualizar", new Integer (operacao.getId()).toString());
}else{
sessao.setAttribute("colecaoOperacao", colecaoOperacao);
}
//Seta o tipo da pesquisa na sess�o
sessao.removeAttribute("tipoPesquisaRetorno");
//Retorna o mapeamento contido na vari�vel retorno
return retorno;
}
}