package gcom.gui.seguranca.acesso;
import gcom.fachada.Fachada;
import gcom.gui.GcomAction;
import gcom.seguranca.transacao.FiltroTabela;
import gcom.seguranca.transacao.Tabela;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
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 por exibir o popup de adicionar tabela no inserir opera��o e atualizar opera��o
*
* @author Pedro Alexandre
* @date 05/05/2006
*/
public class ExibirAdicionarOperacaoTabelaAction extends GcomAction {
/**
* Inseri uma opera��o de uma funcionalida de no sistema
*
* [UC0284] Inserir Opera��o
*
* @author Pedro Alexandre
* @date 05/05/2006
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
//Seta o mapeamento para a o popup de adicionar tabela
ActionForward retorno = actionMapping.findForward("exibirAdicionarOperacaoTabela");
//Recupera o form de adicionar tabela
AdicionarOperacaoTabelaActionForm adicionarOperacaoTabelaActionForm = (AdicionarOperacaoTabelaActionForm) actionForm;
//Cria uma inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
//Cria uma inst�ncia da sess�o
HttpSession sessao = httpServletRequest.getSession(false);
//Recupera o c�digoda tabela se ele foi digitado
String idTabela = adicionarOperacaoTabelaActionForm.getIdTabela();
//Recupera para onde a tela de popup deve retornar
//e seta o valor na sess�o
String retornarTela = httpServletRequest.getParameter("retornarTela");
if(retornarTela != null){
sessao.setAttribute("retornarTela",retornarTela);
}
//Recupera a flag que indica se � para limpar o form de adicionar tabela
String limpaForm = httpServletRequest.getParameter("limpaForm");
if (idTabela != null
&& !idTabela.trim().equalsIgnoreCase("")
&& httpServletRequest.getParameter("exibirPesquisarTabela") == null
&& httpServletRequest.getParameter("limparForm") == null) {
sessao.setAttribute("tabelaRecebida", idTabela);
}
//Caso a flag de limpar o form seja true
//Limpaos dados dos campos da tabela
if(limpaForm != null && limpaForm.equalsIgnoreCase("true")){
adicionarOperacaoTabelaActionForm.setIdTabela("");
adicionarOperacaoTabelaActionForm.setDescricaoTabela("");
}else{
//Caso a flag de limpar o form n�o for true
//e caso o c�digo da tabela tenha sido digitado
//pesquisa a tabela informada na base de dados
if (idTabela != null && !idTabela.equals("")){
//Cria o filtro e setao c�digo da tabela informado no filtro
FiltroTabela filtroTabela = new FiltroTabela();
filtroTabela.adicionarParametro(new ParametroSimples(FiltroTabela.ID,idTabela));
//Pesquisa a tabela na base de dados
Collection<Tabela> colecaoTabela = fachada.pesquisar(filtroTabela, Tabela.class.getName());
//Caso a tabela tenha sido encontrada
//Recupera a tabela e seta as informa��es no form de adicionar
//Caso contr�rio indica que a tabela n�o existe
if (colecaoTabela != null && !colecaoTabela.isEmpty()) {
Tabela tabela = (Tabela) Util.retonarObjetoDeColecao(colecaoTabela);
adicionarOperacaoTabelaActionForm.setIdTabela(String.valueOf(tabela.getId()));
adicionarOperacaoTabelaActionForm.setDescricaoTabela(tabela.getDescricao());
httpServletRequest.setAttribute("operacaoTabelaEncontrada", "true");
} else {
adicionarOperacaoTabelaActionForm.setIdTabela("");
adicionarOperacaoTabelaActionForm.setDescricaoTabela("TABELA INEXISTENTE");
httpServletRequest.setAttribute("operacaoTabelaNaoEncontrada","exception");
}
}
}
if (httpServletRequest.getParameter("tipoConsulta") != null
&& !httpServletRequest.getParameter("tipoConsulta").equals("")) {
String id = httpServletRequest.getParameter("idCampoEnviarDados");
String descricao = httpServletRequest.getParameter("descricaoCampoEnviarDados");
adicionarOperacaoTabelaActionForm.setIdTabela(id);
adicionarOperacaoTabelaActionForm.setDescricaoTabela(descricao);
}
//Seta a flag para indicar que o popupvai ser fechado
httpServletRequest.setAttribute("fechaPopup", "false");
//Retorna o mapeamento contido na vari�vel retorno
return retorno;
}
}