Referenciar um objeto já instanciado

10 respostas
RicardoYukito

Tenho 2 beans , Usuario e UsuarioLogado…

Usuario logado;

public class UsuarioLogado {

    private Usuario usuario;

    public UsuarioLogado() {
    }

    public Usuario getUsuario() {
        return usuario;
    }

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

quando logo no sistema eu passo um Usuario para UsuarioLogado, o que nao sei fazer é:

como posteriormente eu pego o o usuario que esta em UsuarioLogado ?

UsuarioLogado usuarioLogado = (UsuarioLogado)
        Usuario us = usuariologado.getUsuario();

algo dessa forma…
att.

10 Respostas

blackfalcon

Bem acredito que voce esteja fazendo isso pra ver se um usuario esta logado ou nao no sistema, correto?

Porque voce nao cria um campo no db UsuarioLogado e informe 0 caso nao e 1 caso sim e na hora que for tentar logar, verificar a situação desse campo. Nao é mais facil?

Abraços

RicardoYukito

o problema é que eu preciso saber quem esta logado pra salvar na fk de Requisições_Usuario , é uma parte de Requisições, quem abre uma requisição é que esta logado no sistema, (Um usuario agenda para outro Usuario).

kenneth

Faala garoto…

Voce ta trabalhando com Web ou Desktop??

Abraco!

RicardoYukito

Aoba kenneth

desktop

Hebert_Coelho
cara é mais fácil vc fazer assim:
public class Usuario{
    private boolean logado; //default é false

    public void logar(){
        logado = true;
    }

    public void deslogar(){
        logado = false;
    }

    public boolean estaLogado(){
        return logado;
    }
}
Quando o usuário estiver logado basta chamar o método logar. Para gravar no banco basta persistir o valor da variável logado.
if (usuario.estaLogado)
    //Faz oq vc precisa
OBS.: Muda as nomeclaturas dos atributos/metodos que ficaram feias! =P
RicardoYukito

jakefrog o que eu realmente preciso nao é bem verificar quem esta ou nao esta logado, vou começar do começo.. rs

esse é meu controle de logins :
Usuario obUsuario;
   LoginView form;
   LoginDao loginDao;
   public UsuarioLogado user;
   
        public UsuarioLogado getUser() {   //**********************
        return user;
    }  
 
    public LoginCtrl(LoginView form) {
        this.form = form;
    }


               public boolean VerificarLogin (String login, String Senha){
                       obUsuario = new Usuario();
                       loginDao = new LoginDao();
                       obUsuario =  loginDao.PegaUsuario(login, Senha);
                       if (obUsuario == null ){
                      JOptionPane.showMessageDialog(form, "LOGIN OU SENHA INVALIDO, TENTE NOVAMENTE", "ERRO", JOptionPane.ERROR_MESSAGE);
                        return false;
                         }else{
                      loginDao= new LoginDao();
                       obUsuario.setUltimoacesso(new Date());

                       if(loginDao.SalvaAcesso(obUsuario)){
                           user = new UsuarioLogado();
                           user.setUsuario(obUsuario);
                       }

                       return true;

eu instanciei uma variavel apontando para UsuarioLogado, lembrando que dentro de UsuarioLogado eu tenhu um atributo do tipo Usuario.

como eu posso acessar o metodo getUser() , de qualquer outra classe minha sem instanciar uma nova LoginCtrl ... nao sei se é possivel..
eu preciso ter em memoria o Objeto Usuario que foi me trazido na busca acima para obte-lo a qualquer momento.

se isso nao for possivel , tem alguma ideia de como fazer ?

kenneth

Fala garoto!

Bom, deixa eu te dar uma opiniao…

Eu fiz um sisteminha aqui em desktop pra aprenderTenho um frame com a janelinha de login, e se o cara se identificar

com sucesso, eu chamo um JFrame principal”, que a partir dele, chama

as outras telasNesse principal”, eu guardo essa instancia do usuario logado, com um metodo static getUsuario();

E nos lugares que preciso, faco um Principal.getUsuario();

Nao sei se eh o correto, mas comigo aqui funcionou
=]

Abraco!

Hebert_Coelho

Crie a classe com um atributo public static final. Depois basta dar um CLASSE.USUARIO_LOGADO.

RicardoYukito

Vlww pessoal , deu certinho mesmo

ficou assim:
public class UsuarioLogado {

    private Usuario usuario;

    public UsuarioLogado() {
    }

    private static class UsuarioLogadoMemoria {

        private final static UsuarioLogado instancia = new UsuarioLogado();
    }

    public static UsuarioLogado getInstance() {
        return UsuarioLogadoMemoria.instancia;
    }

    public Usuario getUsuario() {
        return usuario;
    }

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

Adiciona [Resolvido] no titulo do topico.
=]

Abraco!

Criado 9 de agosto de 2010
Ultima resposta 11 de ago. de 2010
Respostas 10
Participantes 4