Capturar ID de usuario logado

26/01/2013

2

Olá galera, implementei uma pagina de login e no login ele puxa todas as informações do usuario logado (select * from usuario) e meu bean esta como sessao.
Depois de logado, estou cadastrando personagens para esse usuario, porem precisava que esse personagem fosse cadastrado com o id do usuario logado.
Mas na hora de gravar o id do usuario ele me retorna null. Alguem sabe o q poderia ser?

Classe Personagem - Model
package br.com.jragonha.models;

/**
 * Classe responsável pelos personagens
 * que um usuário pode criar
 * @author jilles.ragonha
 */
public class Personagem {

    private String nome;
    private String classe;
    private String raca;
    private String sexo;
    private int level;
    private Usuario usuario;

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public Personagem() {
    }

    public Personagem(Usuario usuario) {
        this.usuario = usuario;
    }

    public String getRaca() {
        return raca;
    }

    public void setRaca(String raca) {
        this.raca = raca;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        this.level = level;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getClasse() {
        return classe;
    }

    public void setClasse(String classe) {
        this.classe = classe;
    }
}


Classe Usuario


package br.com.jragonha.models;

/**
 *
 * @author jilles.ragonha
 */
public class Usuario {

    private String nome;
    private int id;
    private String senha;
    private String email;
    private String confirmacaoSenha;

    public Usuario() {
    }

    public Usuario(int id) {
        this.id = id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getId() {
        return id;
    }

    public String getConfirmacaoSenha() {
        return confirmacaoSenha;
    }

    public void setConfirmacaoSenha(String confirmacaoSenha) {
        this.confirmacaoSenha = confirmacaoSenha;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getSenha() {
        return senha;
    }

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



Bean Usuario

package br.com.jragonha.mbeans;

import br.com.jragonha.bd.UsuarioDAO;
import br.com.jragonha.models.Usuario;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

/**
 *
 * @author jilles.ragonha
 */
@ManagedBean
@SessionScoped
public class UsuarioMB implements Serializable{
    private Usuario usuario = new Usuario();
    private UsuarioDAO dao = new UsuarioDAO();
    String outcome = null;

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
    
    public String cadastrarUsuario(){
        
        if (dao.salvar(usuario)){
            outcome = "CADASTRADO";
        }
        return outcome;
    }
    
    public String alterarUsuario(){
        return outcome;
    }
    
}


Bean Personagem

package br.com.jragonha.mbeans;

import br.com.jragonha.bd.PersonagemDAO;
import br.com.jragonha.models.Classe;
import br.com.jragonha.models.Personagem;
import br.com.jragonha.models.Raca;
import br.com.jragonha.models.Usuario;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

/**
 *
 * @author jilles ragonha
 */
@ManagedBean
@RequestScoped
public class PersonagemMB implements Serializable {

    private Personagem personagem = new Personagem();
    private List<Classe> classes = new ArrayList<Classe>();
    private List<Raca> racas = new ArrayList<Raca>();
    private PersonagemDAO dao = new PersonagemDAO();
    String outcome;
    

    public List<Raca> getRacas() {
        return racas;
    }

    public void setRacas(List<Raca> racas) {
        this.racas = racas;
    }

    public List<Classe> getClasses() {
        return classes;
    }

    public void setClasses(List<Classe> classes) {
        this.classes = classes;
    }

    public PersonagemDAO getDao() {
        return dao;
    }

    public void setDao(PersonagemDAO dao) {
        this.dao = dao;
    }

    public Personagem getPersonagem() {
        return personagem;
    }

    public void setPersonagem(Personagem personagem) {
        this.personagem = personagem;
    }

    /**
     * Método usado para salvar o personagem em um banco
     * @return 
     */
    public String salvarPersonagem() {
        if (dao.salvar(personagem)) {
            outcome = "SALVO";
        }
        return outcome;
    }

    /**
     * Método que carrega todas as classes
     * existentes no banco
     * @return  ArrayList com todas as classes
     */
    public List<Classe> listarClasses() {
        classes = dao.listarClasses();
        return classes;
    }

    /**
     * Método que carrega todas as reças vindas
     * do banco de dados em um selectOneMenu
     * @return ArrayList com todas as raças
     */
    public List<Raca> listarRacas() {
        racas = dao.listarRacas();
        return racas;
    }
}




DAOS

USuario DAO

package br.com.jragonha.bd;

import br.com.jragonha.models.Usuario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author jilles.ragonha
 */
public class UsuarioDAO extends AbstractDAO<Usuario> {

    @Override
    public boolean salvar(Usuario usuario) {
        boolean salvo = false;
        Connection conexao = null;
        Usuario user = new Usuario();
        try {
            conexao = GerenciadorConexoes.pegarInstancia().abrirConexao();

            String sql = GerenciadorConexoes.pegarInstancia().pegarPropriedade("SALVAR_USUARIO");
            PreparedStatement ps = conexao.prepareStatement(sql);
            ps.setString(1, usuario.getNome());
            ps.setString(2, usuario.getEmail());
            ps.setString(3, usuario.getSenha());

            if (ps.executeUpdate() > 0) {
                salvo = true;
            }

        } catch (SQLException e) {
            Logger.getLogger("UsuarioDAO").log(Level.SEVERE,
                    "Problemas na comunicação com o banco de dados");
            Logger.getLogger("UsuarioDAO").log(Level.SEVERE,
                    "Mensagem de exceção: ", e.getMessage());
        } finally {
            GerenciadorConexoes.pegarInstancia().fecharConexao(conexao);
        }
        return salvo;
    }

    @Override
    public boolean remover(Usuario objeto) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

    @Override
    public boolean atualizar(Usuario user) {
        Connection conexao = null;
        boolean atualizado = false;

        try {
            conexao = GerenciadorConexoes.pegarInstancia().abrirConexao();
            PreparedStatement ps = conexao.prepareStatement(GerenciadorConexoes.pegarInstancia()
                    .pegarPropriedade("USUARIO_ATUALIZAR"));
            ps.setString(1, user.getNome());
            ps.setString(2, user.getEmail());
            ps.setString(3, user.getSenha());
            ps.setString(4, user.getNome());

            if (ps.executeUpdate() > 0) {
                atualizado = true;
            }
        } catch (SQLException e) {
            Logger.getLogger("USUARIODAO").log(Level.SEVERE,
                    "Problemas ao atualizar o usuario no banco de dados");
        } finally {
            GerenciadorConexoes.pegarInstancia().fecharConexao(conexao);
        }
        return atualizado;

    }

    @Override
    public List<Usuario> listar() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
}



PersonagemDAO
package br.com.jragonha.bd;

import br.com.jragonha.models.Classe;
import br.com.jragonha.models.Personagem;
import br.com.jragonha.models.Raca;
import br.com.jragonha.models.Usuario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author jilles.ragonha
 */
public class PersonagemDAO extends AbstractDAO<Personagem> {

    
    /**
     * Método para salvar um personagem no banco de dados
     */
    @Override
    public boolean salvar(Personagem personagem) {
        boolean salvo = false;
        Connection conexao = null;
        try {
            conexao = GerenciadorConexoes.pegarInstancia().abrirConexao();
            String sql = GerenciadorConexoes.pegarInstancia().pegarPropriedade("SALVAR_CHAR");
                      
            PreparedStatement ps = conexao.prepareStatement(sql);
        
            ps.setInt(1,personagem.getUsuario().getId());
            ps.setString(2, personagem.getNome());
            ps.setString(3, personagem.getClasse());
            ps.setString(4, personagem.getRaca());
            ps.setString(5, personagem.getSexo());
            ps.setInt(6, personagem.getLevel());
            

            if (ps.executeUpdate() > 0) {
                salvo = true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            GerenciadorConexoes.pegarInstancia().fecharConexao(conexao);
        }
        return salvo;
    }
Responder

Posts

28/01/2013

Davi Costa

No momento do login em caso de sucesso vc deve setar em UsuarioMB o usuário.
Ou jogar na session mesmo e recuperar na classe UsuarioMB.

att Davi
Responder

29/01/2013

Jilles Ragonha

Então ao invés de meu LOGINDAO retornar um boolean como por exemplo salvo ou nao, deveria retornar um Usuario
correto?
Seto os valores do usuario com o resultset e retorno akele usuario?
vou tentar fazer isso pelo menos eh o q fez sentido para mim huahuahuahua
abraços
Responder

29/01/2013

Davi Costa

Isso mesmo, pode resolver. Mas tb é bom abrir a cabeça para o que existe ai a fora... imagina vc vai reiventar a roda existindo diversos frameworks que faz o que vc ker, já testados, homologados e te dão mais algumas possibilidades. Sem dizer que vai ser mais um novo aprendizado para vc

att Davi
Responder

29/01/2013

Jilles Ragonha

cara agradeço
Resolvi inserindo o usuario logado dentro da session

e depois recuperando para pegar o id do usuario

obrigado msm
Responder

27/07/2013

José

Amigo obrigado pelo retorno, e obrigado por compartilhar a solução com a gente!
Estou dando a duvida por concluído.
Responder