Dúvida em Assinatura de Método

Boa tarde pessoal,

Eu criei um BEAN de um cadastro de usuários e dentro dele tem um LIST que é preenchido através de um DAO que busca todos os acessos do usuário no aplicativo web. A minha dúvida é como passar um list na assinatura do método abaixo denominado de " CadUsuarios(TreeMap dados)", não sei se estou fazendo certo e, caso não esteja correto, gostaria que algum colega pudesse me ensinar a fazer o correto. Veja meu código abaixo ?

public class CadUsuarios {

    private String nomeUsuario;
    private String senha;
    private List<GrpAcessoDAOImp> gruposAcesso;

    .... getters e setters aqui 

   // Utiliza um TreeMap
   public CadUsuarios(TreeMap dados) {
         this.nomeUsuario = (String) dados.get("tbusuarios.id_Usuario");
         this.senha = (String) dados.get("tbusuarios.stsenha");
         this.gruposAcesso =  (List<GrpAcessoDAOImp>) dados.get(getGruposAcesso());
   }

Classe DAO :


public class GrpAcessoDAOImp implements GrpAcessoDAO {

       .
       .
       .

}


e aih tudo bom?? então… eu não entendi mto bem o que vc quis falar… heheh… mas vamos lah:
1 - por que você está passando uma List com instancias da tua DAO?
bom, tirando que o teu método está com alto acoplamento, ou seja, você esta passando sempre TreeMap como parametro, você deve passar do tipo Map pq aih se um dia vc for precisar utilizar uma outra implementação do framework não precisara mudar o codigo…
tirando isso acho que tah certo…
flw

Bom dia Jrtm,

  Muito obrigado por responder a minha questão. Por ser iniciante em Java, as vezes não consigo ser atendido aqui pelos colegas do forum, talvez seja porque não consigo postar as questões como um profissional mais experiente em java....rsrsr.

  É o seguinte, eu tenho a intenção de através do BEAN CadUsuarios, inserir todos os possiveis acessos do usuário e deixar essas propriedades em sessão.  Tenho um DAO que é nele que o sistema fará o preenchimento da LIST com todos os acessos do grupo do usuário atual.

  Só sei que me confundi todo e estou perdido nisso. Para melhor entendimento, eu posso lhe postar o meu código pra vc entender melhor e assim poder me ajudar.

   Aguardo sua resposta ok?

Uma semana de trabalho

o que é isso, o pessoal tá aki p ajudar, assim como um dia vc irá ajudar aos outros tb… hehehehhe
mas vamos lah, então, sinceramente eu ainda não entendi direito, o seu problema hauhauhau… vc pode postar o código para todos aki compreenderem melhor a sua dúvida…
pelo que eu entendi no teu 1 post vc estava na dúvida se estava fazendo certo ou não o acesso ao list de acessos…
bom como já escrevi, geralmente a dao serve apenas para centralizar as ações de acesso ao banco, ela não é uma classe POJO que possui apenas atributos… o que tem no TreeMap? por que vc está fazendo o casting para um List do teu dao,? deveria fazer um casting para um POJO.
vc está usando Hibernate ou algo assim?

me desculpe essas perguntas novamente… é que tah meio confuso o objetivo da pergunta…
posta o código
att,

Olá JRTM,

   Vamos lá, deixa eu tentar te mostrar o meu objetivo com esta rotina. Primeiramente vou te mostrar a lógica da coisa e no final vou te mostrar o que desejo fazer:
   
   1º) Tenho no meu banco de dados tenho as seguintes tabelas:
                   a) tabela que conterá os usuários do sistema
                   b) tabela que conterá os nomes de Grupos de Acesso ao aplicativo
                   c) tabela  que conterá todas as páginas do sistema
                   d) tabela que conterá as páginas que o grupo de acesso contemplará   ( Grupo Acesso X Paginas )

   Baseado neste modulo de dados, eu criei entre outros,  um BEAN denominado de CadUsuarios :
public class CadUsuarios {

    private String nomeUsuario;
    private String senha;
    private Integer idGrpAcc; // <= aqui representa o grupo do usuário (Usuario X Grupo Acesso)
    private List<GrpAcessoCtxDAOImp> gruposAcesso; // <= aqui Lista contendo todas as paginas
                                                   //    que o Grupo do usuário poderá ter acesso
    

    public String getNomeUsuario() {
        return nomeUsuario;
    }

    public void setNomeUsuario(String nomeUsuario) {
        this.nomeUsuario = nomeUsuario;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    public Integer getIdGrpAcc() {
        return idGrpAcc;
    }

    public void setIdGrpAcc(Integer idGrpAcc) {
        this.idGrpAcc = idGrpAcc;
    }

    public List<GrpAcessoCtxDAOImp> getGruposAcesso() {
        return gruposAcesso;
    }

    public void setGruposAcesso(List<GrpAcessoCtxDAOImp> gruposAcesso) {
        this.gruposAcesso = gruposAcesso;
    }

    public CadUsuarios() {
    }

    // Construtor principal da classe
    public CadUsuarios(String nomeUsuario, String senha, Integer idGrpAcc) {
        this.nomeUsuario = nomeUsuario;
        this.senha = senha;
        this.idGrpAcc = idGrpAcc;
    }

    public CadUsuarios(TreeMap dados) {
        this.nomeUsuario = (String) dados.get("tbusuarios.id_Usuario");
        this.senha = (String) dados.get("tbusuarios.stsenha");
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final CadUsuarios other = (CadUsuarios) obj;
        if (this.nomeUsuario != other.nomeUsuario && (this.nomeUsuario == null || !this.nomeUsuario.equals(other.nomeUsuario))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 59 * hash + (this.nomeUsuario != null ? this.nomeUsuario.hashCode() : 0);
        return hash;
    }
}

Criei um DAO que buscará todas as páginas que o Grupo do Usuário poderá acessar que será passado como parâmetro ao método, o grupo do usuário :


public class GrpAcessoCtxDAOImp implements GrpAcessoCtxDAO {

    private Connection conn;

    public GrpAcessoCtxDAOImp(Connection conn) throws Exception {
        try {
            this.conn = ConnectionFactory.getConnection();

        } catch (Exception e) {
            throw new Exception("Erro: " + ":\n" + e.getMessage());
        }
    }

    /**
     * Método que retorna todos os acessos permitidos para o grupo
     * @return objeto List
     * @throws java.lang.Exception se não for possível retornar o objeto List
     */
    public List contextosGrupoAcesso(Integer idGrp) throws Exception {

        PreparedStatement ps = null;
        Connection conn = null;
        ResultSet rs = null;

        try {
            conn = this.conn;
			String sql = "SELECT tbctx.stContexto, tbgrp_acesso.stNomeGrp,";
            sql += " tbgrp_acesso_ctx.ID_Grp_Acesso,tbgrp_acesso_ctx.ID_Ctx";
            sql += " tbgrp_acesso.blAcessoTotal  FROM tbgrp_acesso_ctx";
			sql += " INNER JOIN tbctx ON tbgrp_acesso_ctx.ID_Ctx = tbctx.ID_Ctx, tbgrp_acesso";
			sql += " WHERE tbgrp_acesso_ctx.ID_Grp_Acesso = tbgrp_acesso.ID_Grp_Acesso";
            sql += " AND tbgrp_acesso_ctx.ID_Grp_Acesso = ?";
            ps = conn.prepareStatement(sql);
            ps.setInt(1, idGrp);
            rs = ps.executeQuery();
            List<GrpAcessoCtx> list = new ArrayList<GrpAcessoCtx>();
            while (rs.next()) {
                String stContexto = rs.getString(1);
                String stNomeGrp = rs.getString(2);
                Integer ID_Grp_Acesso = rs.getInt(3);
                Integer ID_Ctx = rs.getInt(4);
                list.add(new GrpAcessoCtx(ID_Grp_Acesso, ID_Ctx,stNomeGrp,stContexto));
            }

            return list;

        } catch (SQLException sqle) {
            throw new Exception(sqle);

        } finally {
            ConnectionFactory.closeConnection(conn, ps, rs);
        }
    }

}
  Bom, agora é que vem a seleuma (rsrsrs)... Preciso colocar disponível em sessão assim que o usuário logar no sistema, todas as páginas que o usuário poderá acessar [u]através do o grupo de acesso ao qual o mesmo estará vinculado[/u]. Para isso eu criei o bean [b]CadUsuarios[/b] que contém uma propriedade [u]List[/u] [code]private List<GrpAcessoCtxDAOImp> gruposAcesso; [/code] que em tese deveria ser populada pelo DAO [code]public class GrpAcessoCtxDAOImp implements GrpAcessoCtxDAO {[/code]. Na minha humilde visão, esse método do DAO que deveria ser o responsável para popuplar essa LISTA.

 Resumindo, preciso criar um esquema em que as páginas que o usuário poderá acessar no sistema, fiquem disponíveis o tempo todo em que o aplicativo ficará no ar, para que eu posso utilizar um filtro que faça a autorização ou não deste acesso.

 Se você tiver uma idéia melhor será bem vinda. Espero que agora eu tenha conseguido passar o que desejo..rsrsr.

Forte Abraço