package gcom.gui.seguranca.acesso; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.FiltroFuncionalidade; import gcom.seguranca.acesso.FiltroOperacao; import gcom.seguranca.acesso.FiltroOperacaoTipo; import gcom.seguranca.acesso.Funcionalidade; import gcom.seguranca.acesso.Operacao; import gcom.seguranca.acesso.OperacaoTipo; import gcom.seguranca.transacao.FiltroTabelaColuna; import gcom.seguranca.transacao.TabelaColuna; import gcom.util.ConstantesSistema; 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 pela exibi��o da p�gina de inserir opera��o para uma funcionalidade * * @author Pedro Alexandre * @date 05/05/2006 */ public class ExibirInserirOperacaoAction 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 de retorno para a tela de inserir opera��o ActionForward retorno = actionMapping.findForward("operacaoInserir"); //Recupera o form de inserir opera��o InserirOperacaoActionForm inserirOperacaoActionForm = (InserirOperacaoActionForm) actionForm; //Cria uma inst�ncia da fachada Fachada fachada = Fachada.getInstancia(); //Cria uma inst�ncia da sess�o HttpSession sessao = httpServletRequest.getSession(false); //Cria o filtro de tipo de opera��o e pesquisa os tipos de opera��es no sistema FiltroOperacaoTipo filtroOperacaoTipo = new FiltroOperacaoTipo(); Collection<OperacaoTipo> colecaoOperacaoTipo = fachada.pesquisar(filtroOperacaoTipo,OperacaoTipo.class.getName()); //Caso n�o exista nenhum tipo de opera��o cadastrado no sistema //levanta a exce��o para o usu�rio if (colecaoOperacaoTipo == null || colecaoOperacaoTipo.isEmpty()) { throw new ActionServletException("atencao.entidade_sem_dados_para_selecao", null,"Opera��o Tipo"); } //Coloca a cole��o de tipo de opera��es na sess�o sessao.setAttribute("colecaoOperacaoTipo", colecaoOperacaoTipo); //Recupera a flag para indicar se o usu�rio apertou o bot�ode desfazer String desfazer = httpServletRequest.getParameter("desfazer"); //Caso o usu�rio n�o tenha apertado o bot�o de desfazer na tela //verifica todas as valida��es e pesquisas //Caso contr�rio limpa o form de inserir opera��o if(desfazer == null){ //Cria a varia�vel que vai armazenar o c�digo do tipo da opera��o Integer idOperacaoTipo = null; //Caso o tipo de opera��o tenha sido informado //armazena o c�digo do tipo da opera��o na vari�vel if(inserirOperacaoActionForm.getIdTipoOperacao() != null){ idOperacaoTipo = new Integer(inserirOperacaoActionForm.getIdTipoOperacao()); } //Recupera o c�digo da funcionalidade se ela for digitada String idFuncionalidadeDigitada = inserirOperacaoActionForm.getIdFuncionalidade(); //Caso o c�digo da funcionalidade tenha sido informado if (idFuncionalidadeDigitada != null && !idFuncionalidadeDigitada.trim().equalsIgnoreCase("")) { //Pesquisa a funcionalidade digitada na base de dados Funcionalidade funcionalidade = this.pesquisarFuncionalidade(idFuncionalidadeDigitada); //Caso exista a funcionalidade digitada na base de dados //seta as informa��es da funcionalidade no form //Caso contr�rio indica que a funcionalidade digitada n�o existe if(funcionalidade != null){ inserirOperacaoActionForm.setIdFuncionalidade(String.valueOf(funcionalidade.getId())); inserirOperacaoActionForm.setDescricaoFuncionalidade(funcionalidade.getDescricao()); httpServletRequest.setAttribute("funcionalidadeEncontrada", "true"); } else { inserirOperacaoActionForm.setIdFuncionalidade(""); inserirOperacaoActionForm.setDescricaoFuncionalidade("FUNCIONALIDADE INEXISTENTE"); httpServletRequest.setAttribute("funcionalidadeNaoEncontrada","exception"); } } //Recupera o c�digo do argumento de pesquisa se ele for digitado String idArgumentoPesquisaDigitado = inserirOperacaoActionForm.getIdArgumentoPesquisa(); //Caso o c�digo do argumento de pesquisa tenha sido informado if (idArgumentoPesquisaDigitado != null && !idArgumentoPesquisaDigitado.trim().equalsIgnoreCase("")) { //Pesquisa o argumento de pesquisa digitado na base de dados TabelaColuna argumentoPesquisa = this.pesquisarArgumentoPesquisa(idArgumentoPesquisaDigitado); //Caso exista o argumento de pesquisa digitado na base de dados //seta as informa��es do argumento de pesquisa no form //Caso contr�rio indica que o argumento de pesquisa digitado n�o existe if(argumentoPesquisa != null){ inserirOperacaoActionForm.setIdArgumentoPesquisa(String.valueOf(argumentoPesquisa.getId())); inserirOperacaoActionForm.setDescricaoArgumentoPesquisa(argumentoPesquisa.getDescricaoColuna()); httpServletRequest.setAttribute("argumentoPesquisaEncontrado", "true"); } else { inserirOperacaoActionForm.setIdArgumentoPesquisa(""); inserirOperacaoActionForm.setDescricaoArgumentoPesquisa("ARGUMENTO DE PESQUISA INEXISTENTE"); httpServletRequest.setAttribute("argumentoPesquisaNaoEncontrado","exception"); } } //Recupera o c�digo da opera��o de pesquisa se ele for digitado String idOperacaoPesquisaDigitado = inserirOperacaoActionForm.getIdOperacaoPesquisa(); //Caso o c�digo da opera��o de pesquisa tenha sido informado if (idOperacaoPesquisaDigitado != null && !idOperacaoPesquisaDigitado.trim().equalsIgnoreCase("")) { //Pesquisa a opera��o de pesquisa digitada na base de dados Operacao operacaoPesquisa = this.pesquisarOperacaoPesquisa(idOperacaoPesquisaDigitado); //Caso exista a opera��o de pesquisa digitada na base de dados //seta as informa��es da opera��o de pesquisa no form //Caso contr�rio indica que a opera��o de pesquisa digitada n�o existe if(operacaoPesquisa != null){ //FS0008] - Verificar tipo da opera��o -R�mulo Aur�lio 11/05/2007 if(operacaoPesquisa.getOperacaoTipo() != null){ if(operacaoPesquisa.getOperacaoTipo().getId().intValue() != OperacaoTipo.PESQUISAR){ throw new ActionServletException("atencao.operacao_pesquisa_invalida"); } } inserirOperacaoActionForm.setIdOperacaoPesquisa(String.valueOf(operacaoPesquisa.getId())); inserirOperacaoActionForm.setDescricaoOperacaoPesquisa(operacaoPesquisa.getDescricao()); httpServletRequest.setAttribute("operacaoPesquisaEncontrado", "true"); } else { inserirOperacaoActionForm.setIdOperacaoPesquisa(""); inserirOperacaoActionForm.setDescricaoOperacaoPesquisa("OPERA��O DE PESQUISA INEXISTENTE"); httpServletRequest.setAttribute("operacaoPesquisaNaoEncontrado","exception"); } } //[SB0001] Habilitar/Desabilitar Argumento de Pesquisa e Lista de Tabelas //Caso o tipo de opera��o n�o tenha sido informado ou seja em branco //desabilita os campos de argumento de pesquisa e opera��o de pesquisa limpando-os //Caso contr�rio verifica qual o tipo de opera��o para habilitar os campos if(idOperacaoTipo == null || idOperacaoTipo.intValue() == ConstantesSistema.NUMERO_NAO_INFORMADO){ sessao.setAttribute("habilitarArgumentoPesquisa","false"); sessao.setAttribute("habilitarOperacaoPesquisa","false"); sessao.setAttribute("colecaoOperacaoTabela",null); inserirOperacaoActionForm.setIdArgumentoPesquisa(""); inserirOperacaoActionForm.setDescricaoArgumentoPesquisa(""); inserirOperacaoActionForm.setIdOperacaoPesquisa(""); inserirOperacaoActionForm.setDescricaoOperacaoPesquisa(""); }else{ //Cria a vari�vel que vai armazenar o tipo de opera��o //e pesquisa a opera��o na cole��o pesquisada OperacaoTipo operacaoTipoSelecionada = null; lacoOperacaoTipo : for(OperacaoTipo operacaoTipoColecao : colecaoOperacaoTipo){ if(operacaoTipoColecao.getId().intValue() == idOperacaoTipo){ operacaoTipoSelecionada = operacaoTipoColecao; break lacoOperacaoTipo; } } //Caso o tipo de opera��o seja "pesquisar" //habilita o campo argumento de pesquisa //Caso contr�rio desabilita o campo argumento de pesquisa if(idOperacaoTipo.intValue() == OperacaoTipo.PESQUISAR){ sessao.setAttribute("habilitarArgumentoPesquisa","true"); sessao.setAttribute("habilitarOperacaoPesquisa","false"); sessao.setAttribute("colecaoOperacaoTabela",null); inserirOperacaoActionForm.setIdOperacaoPesquisa(""); inserirOperacaoActionForm.setDescricaoOperacaoPesquisa(""); }else{ sessao.setAttribute("habilitarArgumentoPesquisa","false"); inserirOperacaoActionForm.setIdArgumentoPesquisa(""); inserirOperacaoActionForm.setDescricaoArgumentoPesquisa(""); //Caso o tipo de opera��o tenha o indicador de atualiza a base de dados //setado para sim habilita o campo opera��o de pesquisa //Caso contr�rio desabilita o campo opera��o de pesquisa if(operacaoTipoSelecionada.getIndicadorAtualiza() == ConstantesSistema.SIM){ sessao.setAttribute("habilitarOperacaoPesquisa","true"); }else{ sessao.setAttribute("habilitarOperacaoPesquisa","false"); sessao.setAttribute("colecaoOperacaoTabela",null); inserirOperacaoActionForm.setIdOperacaoPesquisa(""); inserirOperacaoActionForm.setDescricaoOperacaoPesquisa(""); } } } }else{ //Caso o usu�rio tenha apertado o bot�o de desfazer na tela //volta o form ao estado inicial inserirOperacaoActionForm.setDescricao(""); inserirOperacaoActionForm.setDescricaoAbreviada(""); inserirOperacaoActionForm.setCaminhoUrl(""); inserirOperacaoActionForm.setIdFuncionalidade(""); inserirOperacaoActionForm.setDescricaoFuncionalidade(""); inserirOperacaoActionForm.setIdTipoOperacao("-1"); inserirOperacaoActionForm.setIdArgumentoPesquisa(""); inserirOperacaoActionForm.setDescricaoArgumentoPesquisa(""); inserirOperacaoActionForm.setIdOperacaoPesquisa(""); inserirOperacaoActionForm.setDescricaoOperacaoPesquisa(""); sessao.removeAttribute("colecaoOperacaoTabela"); sessao.setAttribute("habilitarArgumentoPesquisa","false"); sessao.setAttribute("habilitarOperacaoPesquisa","false"); } //Retorna o mapeamento contido na vari�vel retorno return retorno; } /** * Pesquisa a funcionalidade digitada na base de dados de acordo com o c�digo passado * * [FS0004 - Pesquisar Funcionalidade] * * @author Pedro Alexandre * @date 11/05/2006 * * @param idFuncionalidade * @return */ private Funcionalidade pesquisarFuncionalidade(String idFuncionalidade){ //Cria a vari�vel que vai armazenar a funcionalidade pesquisada Funcionalidade funcionalidade = null; //Cria o filtro para pesquisa e seta o c�digo da funcionalidade informada no filtro FiltroFuncionalidade filtroFuncionalidade = new FiltroFuncionalidade(); filtroFuncionalidade.adicionarParametro(new ParametroSimples(FiltroFuncionalidade.ID, idFuncionalidade)); //Pesquisa a funcionalidade na base de dados Collection colecaoFuncionalidade = Fachada.getInstancia().pesquisar(filtroFuncionalidade,Funcionalidade.class.getName()); //Caso exista a funcionalidade cadastrada na base de dados //recupera a funcionalidade da cole��o if(colecaoFuncionalidade != null && !colecaoFuncionalidade.isEmpty()){ funcionalidade = (Funcionalidade) Util.retonarObjetoDeColecao(colecaoFuncionalidade); } //Retorna a funcionalidade pesquisa ou nulo se a funcionalidade n�o for encontrada return funcionalidade; } /** * Pesquisa a opera��o de pesquisa digitada na base de dados de acordo com o c�digo passado * * [FS0007 - Verificar exist�ncia da opera��o] * * @author Pedro Alexandre * @date 11/05/2006 * * @param idOperacaoPesquisa * @return */ private Operacao pesquisarOperacaoPesquisa(String idOperacaoPesquisa){ //Cria a vari�vel que vai armazenar a opera��o de pesquisa pesquisada Operacao operacaoPesquisa = null; //Cria o filtro para pesquisa e seta o c�digo da opera��o de pesquisa informada no filtro FiltroOperacao filtroOperacao = new FiltroOperacao(); filtroOperacao.adicionarParametro(new ParametroSimples(FiltroOperacao.ID, idOperacaoPesquisa)); //Pesquisa a opera��o de pesquisa na base de dados Collection colecaoOperacao = Fachada.getInstancia().pesquisar(filtroOperacao,Operacao.class.getName()); //Caso exista a opera��o de pesquisa cadastrada na base de dados //recupera a opera��o de pesquisa da cole��o if(colecaoOperacao != null && !colecaoOperacao.isEmpty()){ operacaoPesquisa = (Operacao) Util.retonarObjetoDeColecao(colecaoOperacao); } //Retorna a opera��o de pesquisa ou nulo se a opera��o de pesquisa n�o for encontrada return operacaoPesquisa; } /** * Pesquisa o argumento de pesquisa digitado na base de dados de acordo com o c�digo passado * * [FS0005 - Verificar argumento de pesquisa] * * @author Pedro Alexandre * @date 11/05/2006 * * @param idArgumentoPesquisa * @return */ private TabelaColuna pesquisarArgumentoPesquisa(String idArgumentoPesquisa){ //Cria a vari�vel que vai armazenar o argumento de pesquisa pesquisado TabelaColuna argumentoPesquisa = null; //Cria o filtro para pesquisa e seta o c�digo do argumento de pesquisa informado no filtro FiltroTabelaColuna filtroTabelaColuna = new FiltroTabelaColuna(); filtroTabelaColuna.adicionarParametro(new ParametroSimples(FiltroTabelaColuna.ID, idArgumentoPesquisa)); //filtroTabelaColuna.adicionarParametro(new ParametroSimples(FiltroTabelaColuna.INDICADOR_CHAVE_PRIMARIA, "2")); //Pesquisa o argumento de pesquisa na base de dados Collection colecaoTabelaColuna = Fachada.getInstancia().pesquisar(filtroTabelaColuna,TabelaColuna.class.getName()); //Caso exista o argumento de pesquisa cadastrado na base de dados //recupera o argumento de pesquisa da cole��o /*[FS0011] - Verificar argumento de pesquisa * Caso 1 */ if(colecaoTabelaColuna != null && !colecaoTabelaColuna.isEmpty()){ argumentoPesquisa = (TabelaColuna) Util.retonarObjetoDeColecao(colecaoTabelaColuna); if(argumentoPesquisa.getIndicadorPrimaryKey().intValue() == new Integer("2")){ throw new ActionServletException("atencao.argumento_pesquisa_nao_chave_primaria"); } } /*[FS0011] - Verificar argumento de pesquisa * Caso 2 */ FiltroOperacao filtroOperacao = new FiltroOperacao(); filtroOperacao.adicionarParametro(new ParametroSimples(FiltroOperacao.TABELA_COLUNA_ID,idArgumentoPesquisa)); Collection colecaoVerificacaoArgumentoPesquisa = Fachada.getInstancia(). pesquisar(filtroOperacao,Operacao.class.getName()); if(colecaoVerificacaoArgumentoPesquisa != null && !colecaoVerificacaoArgumentoPesquisa.isEmpty()){ Operacao operacao = (Operacao) Util.retonarObjetoDeColecao(colecaoVerificacaoArgumentoPesquisa); throw new ActionServletException("atencao.argumento_de_outra_operacao", null,operacao.getDescricao()); } //Retorna o argumento de pesquisa ou nulo se o argumento de pesquisa n�o for encontrado return argumentoPesquisa; } }