package gcom.gui.seguranca.acesso.transacao; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.interceptor.ObjetoTransacao; import gcom.seguranca.acesso.FiltroOperacaoTabela; import gcom.seguranca.acesso.OperacaoTabela; import gcom.seguranca.transacao.FiltroTabela; import gcom.seguranca.transacao.Tabela; import gcom.util.HibernateUtil; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.util.Collection; import java.util.Iterator; 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; /** * * Permite exibir uma lista com as resolu��es de diretoria retornadas do * FiltrarManterTipoRetornoOrdemServicoReferidaAction ou ir para o * ExibirManterTipoRetornoOrdemServicoReferidaAction * * @author Thiago Ten�rio * @since 31/10/2006 */ public class ExibirManterTabelaColunaAction extends GcomAction { /** * * @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 ActionForward retorno = actionMapping .findForward("manterTabelaColuna"); FiltrarTabelaColunaActionForm filtrarForm = (FiltrarTabelaColunaActionForm) actionForm; String idTabela = filtrarForm.getIdTabela(); String[] operacoes = filtrarForm.getOperacoes(); Vector<Tabela> tabelas = new Vector<Tabela>(); if (operacoes != null && operacoes.length > 0){ FiltroOperacaoTabela filtro = new FiltroOperacaoTabela(); for (int i = 0; i < operacoes.length; i++) { filtro.adicionarParametro(new ParametroSimples( FiltroOperacaoTabela.OPERACAO_ID, operacoes[i])); filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroOperacaoTabela.TABELA_COLUNAS); Collection colOperTabelas = Fachada.getInstancia().pesquisar(filtro, OperacaoTabela.class.getSimpleName()); Iterator iterOperTab = colOperTabelas.iterator(); while (iterOperTab.hasNext()) { OperacaoTabela operTabela = (OperacaoTabela) iterOperTab.next(); tabelas.add(operTabela.getTabela()); } } } else if (idTabela != null && !idTabela.equals("")){ FiltroTabela filtro = new FiltroTabela(); filtro.adicionarParametro(new ParametroSimples( FiltroTabela.ID, idTabela)); filtro.adicionarCaminhoParaCarregamentoEntidade(FiltroTabela.TABELA_COLUNAS); Collection colTabelas = Fachada.getInstancia().pesquisar(filtro, Tabela.class.getSimpleName()); Tabela tabela = (Tabela) Util.retonarObjetoDeColecao(colTabelas); if (tabela == null){ throw new ActionServletException("atencao.tabela.inexistente"); } // A partir do nome da tabela, precisa-se buscar os atributos da classe // desta tabela que estao definidos para ser registrados String nomeClasse = HibernateUtil.getClassName(tabela.getNomeTabela()); String nomesColunaParaPesquisa = ""; try { Class classe = Class.forName(nomeClasse); Object instancia = classe.newInstance(); if (instancia instanceof ObjetoTransacao){ ObjetoTransacao objTransacao = (ObjetoTransacao) instancia; String[] atributosSelecionados = objTransacao.retornarAtributosSelecionadosRegistro(); for (int i = 0; i < atributosSelecionados.length; i++) { String nomeColuna = HibernateUtil.getNameColumn(classe, atributosSelecionados[i]); nomesColunaParaPesquisa += "$" + nomeColuna + "$"; } } } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } HttpSession sessao = httpServletRequest.getSession(false); sessao.setAttribute("tabela", tabela); sessao.setAttribute("nomesColunasSelecionadas", nomesColunaParaPesquisa); tabelas.add(tabela); // consultar operacao_tabela das tabelas selecionadas FiltroOperacaoTabela filtroOperTab = new FiltroOperacaoTabela(); filtroOperTab.adicionarParametro(new ParametroSimples( FiltroOperacaoTabela.TABELA_ID, idTabela)); filtroOperTab.adicionarCaminhoParaCarregamentoEntidade( FiltroOperacaoTabela.OPERACAO); filtroOperTab.setCampoOrderBy(new String[]{FiltroOperacaoTabela.OPERACAO_ARGUMENTO_ID, FiltroOperacaoTabela.OPERACAO_DESCRICAO}); Collection colOperTabelas = Fachada.getInstancia().pesquisar(filtroOperTab, OperacaoTabela.class.getSimpleName()); httpServletRequest.setAttribute("colecaoOperTabela", colOperTabelas); } httpServletRequest.setAttribute("colecaoTabela", tabelas); return retorno; } }