Pegar usuario logado.
Colegas,
tenho o formulario de login com os campos login e senha.
este é meu codigo no botão salvar e esta funcionando.
Mas eu gostaria de pegar o usuario logado, ou seja, para entrar no meu sistema eu uso o frmLogin com os campos acima. O problema é que tenho que pegar o usuario logado e passar para a linha e do jeito que esta não pega o usuario.
Podem me dar uma ajuda?
tenho o formulario de login com os campos login e senha.
este é meu codigo no botão salvar e esta funcionando.
private void btnConfirmarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if ("".equals(txtNome.getText())) {
JOptionPane.showMessageDialog(this, "Name is requeried");
txtNome.requestFocus();
}
int resp = JOptionPane.showConfirmDialog(this, "Are you sure ?", "Add new Animal", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (resp == 2) {
return;
}
try {
Usuario usr = new Usuario();
Fornecedor Fornecedor= new Fornecedor();
Fornecedor.setIdforn(Integer.parseInt(txtCodigo.getText()));
Fornecedor.setNome(txtNome.getText());
Fornecedor.setEndereco(txtEndereco.getText());
Fornecedor.setNumero(Integer.parseInt(txtNumero.getText()));
Fornecedor.setComplemento(txtComplemento.getText());
Fornecedor.setBairro(txtBairro.getText());
Fornecedor.setCidade(txtCidade.getText());
Fornecedor.setInscEstadual(Integer.parseInt(txtInscricao.getText()));
Fornecedor.setTelefone(txtTelefone.getText());
Fornecedor.setEmail(txtEmail.getText());
Fornecedor.setUsuario(usr.getIdusuario());
Fornecedor.setOpr(opr);
forn.addFornecedor(Fornecedor);
desativar();
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(this, "Erro ao tentar adicionar um fornecedor, corriga os dados "
+ "e tente novamente !");
return;
}
Mas eu gostaria de pegar o usuario logado, ou seja, para entrar no meu sistema eu uso o frmLogin com os campos acima. O problema é que tenho que pegar o usuario logado e passar para a linha
Fornecedor.setUsuario(usr.getIdusuario());
Podem me dar uma ajuda?
Nilo Souza
Curtidas 0
Respostas
Davi Costa
13/06/2011
O interessante seria vc pegar o login e senha e ver se esse usuário existe em alguma base, quando verificasse se ele existisse na base pegava odos seus atributos e preencheria esse usuário que vc passaria em ao Fornecedor.
Esse método setUsuario() recebe um Usuario ou só o id dele? O interessante tb seria que recebesse o Usuario inteiro, lembresse java é orientado a objeto.
att Davi
Esse método setUsuario() recebe um Usuario ou só o id dele? O interessante tb seria que recebesse o Usuario inteiro, lembresse java é orientado a objeto.
att Davi
GOSTEI 0
Nilo Souza
13/06/2011
É isso que pensei, e o meu frmLogin verifica o usuario, mas a problema e pegar esse usuario.
Tenho que instanciar essa classe no formulário Fornecedor?
Tipo Usuario usr = new Usuario(),
depois retorno o usuario
[code] forn.setUsuario(usr.getUsuario()) [code]
Mas pegar esse usuario do formulario de login que não sei fazer, entendeu?
usr.setUsuario(" (O que coloco aqui) " );GOSTEI 0
Davi Costa
13/06/2011
Ok, seguinte no momento que vc loga vai fazer uma consulta no banco se for sucesso vc guarda esse usuário, como um atributo de classe ou de uma forma que vc achar melhor, vc vai ter esse usuário todo preenchido conforme ele está no banco. Na tela no momento que o usuário prencher login e senha vc pega esses valores do fields e faz uma consulta no banco para recuperar um usuário que possua esse login e senha digitados na tela se o resultado for vazio a app fica parada na mesma tela pois o usuário ou a senha estão errados. No caso de sucesso vc recupera todos os campos desse usuário e joga em um objeto usuário na sua app, uma vez recuperado esse usuário vc dá um setUsuario passando esse usuário uqe teve seus campos preenchidos conforme consulta do banco.
Ai vai depender se vc usa jdbc uro ou jpa (hibernate ou outra impelemntação como toplink e por ai vai) para realizar o preenchimento desse usuário que vc vai passar para o fornecedor
att Davi
Ai vai depender se vc usa jdbc uro ou jpa (hibernate ou outra impelemntação como toplink e por ai vai) para realizar o preenchimento desse usuário que vc vai passar para o fornecedor
att Davi
GOSTEI 0
Nilo Souza
13/06/2011
Na teoria eu entendo tudo. Mas imagina o seguinte?
1 - Acabei de logar, chequei e o usuario existe, entro e logo depois meu formulario frmLogin esta invisivel.
2 - Meu formulario principal é aberto
3 - Clico no menu e escolho "Fornecedor"
4 - Abre o formulario Cadastro de Fornecedor (E não se esqueça que o formulario frmLogin esta aberto, porém invisivel)
5 - No botão salvar tem o codigo que coloquei no primeiro post.
Agora preciso pegar o que esta digitado no campo login "nsouza" do frmLogin, pesquisar no banco o meu ID e colocar no for.setusuario().
Isso que tenho dificuldade para fazer, embora entendo na teoria.
Entendeu minha duvia melhor agora?
Um abraço!
GOSTEI 0
Dyego Carmo
13/06/2011
Crie um singleton e armazene o usuario logado , assim vc tem acesso a ele de qualquer lugar da aplicação :)
GOSTEI 0
Nilo Souza
13/06/2011
Tem algum material ou apostila que posso me guiar a como construir esse singleton. (Sou iniciante)
GOSTEI 0
Davi Costa
13/06/2011
Vc via criar uma classe com o construtor padrão privado, e um método estático que retorne sua instância que chama o construtor padrão apenas uma vez. Para que ele chame o construtor padrão apenas uma vez vc verifica nesse método estático se essa instância dele mesmo está nula.
Se não entendeu bem posso te mandar códigos de exemplo para vc ver
att Davi
Se não entendeu bem posso te mandar códigos de exemplo para vc ver
att Davi
GOSTEI 0
Nilo Souza
13/06/2011
Se não for pedir muito, gostaria sim! É o que disse, eu entendo, soa familiar os termos, mas tenho dificuldade em colocar na pratica. Segui as videos aulas do Dyego e foram boas, mas não gostaria de ficar preso somente ao que estudei. Será de grande ajuda se puder me enviar o código.
Desde já agradeço.
GOSTEI 0
Davi Costa
13/06/2011
/**
*
* @author Costa
* @since
*/
public class SingletonUtil {
private static final long serialVersionUID = 1L;
private static SingletonUtil me;
private Usuario usuario;
/**
* Construtor padrão
*
* @author Costa
* @version 1.0,
*/
private SingletonUtil(){
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public static SingletonUtil getInstance() {
if (me== null){
me = new SingletonUtil();
}
return me;
}
}
Quando vc precisar chamar ou setar esse usuario basta fazer SingletonUtil.getInstance().getUsuario() ou
SingletonUtil.getInstance().setUsuario(usuario)
Att Davi
GOSTEI 0
Nilo Souza
13/06/2011
Deixa eu ver se entendi.
O codigo abaixo ficaria conforme abaixo. Ele mesmo já identificaria o usuario logado ou no frmLogin eu teria
que setar algum valor?
O codigo abaixo ficaria conforme abaixo. Ele mesmo já identificaria o usuario logado ou no frmLogin eu teria
que setar algum valor?
Usuario usr = new Usuario(); Fornecedor Fornecedor= new Fornecedor(); Fornecedor.setIdforn(Integer.parseInt(txtCodigo.getText())); Fornecedor.setNome(txtNome.getText()); Fornecedor.setEndereco(txtEndereco.getText()); Fornecedor.setNumero(Integer.parseInt(txtNumero.getText())); Fornecedor.setComplemento(txtComplemento.getText()); Fornecedor.setBairro(txtBairro.getText()); Fornecedor.setCidade(txtCidade.getText()); Fornecedor.setInscEstadual(Integer.parseInt(txtInscricao.getText())); Fornecedor.setTelefone(txtTelefone.getText()); Fornecedor.setEmail(txtEmail.getText()); Fornecedor.setUsuario(SingletonUtil.getInstance().getUsuario() ); Fornecedor.setOpr(opr); forn.addFornecedor(Fornecedor);
GOSTEI 0
Davi Costa
13/06/2011
Quando vc se logar vc vai guardar o registro desse usuário logado após sucesso obviamente no login e senha passados por ele da seguinte forma :
SingletonUtil.getInstance().setUsuario(usuario)
Lembrando que esse usuário é o que foi preenchido com os atributos do banco
Att Davi
SingletonUtil.getInstance().setUsuario(usuario)
Lembrando que esse usuário é o que foi preenchido com os atributos do banco
Att Davi
GOSTEI 0
Nilo Souza
13/06/2011
Caro colega, não deu certo.
Fiz dessa forma:
No frmLogin:
No botão salvar do formulario de fornecedor
No caso em questão setUsuario, pede um inteiro, por isso eu passei o. Esse campo não é chave estrangeira pois apenas guardo o id do usuário para a tabela de log.
Fiz dessa forma:
No frmLogin:
try {
boolean valid = dao.validaUsuarioLogin(txtUsuario.getText(), txtSenha.getText());
//Retorna a mensagem se o valor for falso
if (!valid ){
JOptionPane.showMessageDialog(this,"Login/Password invalid !","Login/Password invalid !",JOptionPane.ERROR_MESSAGE);
return;
}
setVisible(false);
new frmPrincipal().setVisible(true);
SingletonUtil.getInstance().setUsuario(usr);
} catch (SQLException ex) {
Logger.getLogger(frmLogin.class.getName()).log(Level.SEVERE, null, ex);
}
No botão salvar do formulario de fornecedor
try {
Fornecedor Fornecedor= new Fornecedor();
Fornecedor.setIdforn(Integer.parseInt(txtCodigo.getText()));
Fornecedor.setNome(txtNome.getText());
Fornecedor.setEndereco(txtEndereco.getText());
Fornecedor.setNumero(Integer.parseInt(txtNumero.getText()));
Fornecedor.setComplemento(txtComplemento.getText());
Fornecedor.setBairro(txtBairro.getText());
Fornecedor.setCidade(txtCidade.getText());
Fornecedor.setInscEstadual(Integer.parseInt(txtInscricao.getText()));
Fornecedor.setTelefone(txtTelefone.getText());
Fornecedor.setEmail(txtEmail.getText());
Fornecedor.setUsuario(SingletonUtil.getInstance().getUsuario().getIdusuario());
Fornecedor.setOpr(opr);
forn.addFornecedor(Fornecedor);
limpaCampo();
desativar();
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Erro ao tentar adicionar um fornecedor, corriga os dados "
+ "e tente novamente !");
return;
}
No caso em questão setUsuario, pede um inteiro, por isso eu passei o
SingletonUtil.getInstance().getUsuario().getIdusuario()
GOSTEI 0
Davi Costa
13/06/2011
Nilo não vi vc preencher o usuario conforme seu login e senha só vi vc utilizar um método que retorna um boolean
e passa um:
SingletonUtil.getInstance().setUsuario(usr);
Mas como usr foi preenchido?
No momento que valida o usuário vc deveria preencher o usuário, vc pode fazer isso de vários modos um modo simples é que esse método retorne um usuário ao invez do boolean ai vc verificar se o usuário é diferente de nulo para validar o login.
Posta sua classe SingletonUtil tb.
att Davi
e passa um:
SingletonUtil.getInstance().setUsuario(usr);
Mas como usr foi preenchido?
No momento que valida o usuário vc deveria preencher o usuário, vc pode fazer isso de vários modos um modo simples é que esse método retorne um usuário ao invez do boolean ai vc verificar se o usuário é diferente de nulo para validar o login.
Posta sua classe SingletonUtil tb.
att Davi
GOSTEI 0
Nilo Souza
13/06/2011
Meu botão Acessar no formulario login
Minha classe singleton (copiei a que me deu)
Botão confirmar do formulario de fornecedor (Salva os registros no banco)
private void btnAcessarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
boolean valid = dao.validaUsuarioLogin(txtUsuario.getText(), txtSenha.getText());
//Retorna a mensagem se o valor for falso
if (!valid ){
JOptionPane.showMessageDialog(this,"Login/Password invalid !","Login/Password invalid !",JOptionPane.ERROR_MESSAGE);
return;
}
setVisible(false);
new frmPrincipal().setVisible(true);
SingletonUtil.getInstance().setUsuario(usr);
} catch (SQLException ex) {
Logger.getLogger(frmLogin.class.getName()).log(Level.SEVERE, null, ex);
}
}
Minha classe singleton (copiei a que me deu)
package treinamento.funcoes;
import treinamento.entidade.Usuario;
/**
*
* @author nsouza
*/
public class SingletonUtil {
private static final long serialVersionUID = 1L;
private static SingletonUtil me;
private Usuario usuario;
/**
* Construtor padrão
*
* @author Costa
* @version 1.0,
*/
private SingletonUtil(){
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public static SingletonUtil getInstance() {
if (me== null){
me = new SingletonUtil();
}
return me;
}
}
Botão confirmar do formulario de fornecedor (Salva os registros no banco)
private void btnConfirmarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
if ("".equals(txtNome.getText())) {
JOptionPane.showMessageDialog(this, "Name is requeried");
txtNome.requestFocus();
}
int resp = JOptionPane.showConfirmDialog(this, "Are you sure ?", "Add new Animal", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (resp == 2) {
return;
}
try {
Fornecedor Fornecedor= new Fornecedor();
Fornecedor.setIdforn(Integer.parseInt(txtCodigo.getText()));
Fornecedor.setNome(txtNome.getText());
Fornecedor.setEndereco(txtEndereco.getText());
Fornecedor.setNumero(Integer.parseInt(txtNumero.getText()));
Fornecedor.setComplemento(txtComplemento.getText());
Fornecedor.setBairro(txtBairro.getText());
Fornecedor.setCidade(txtCidade.getText());
Fornecedor.setInscEstadual(Integer.parseInt(txtInscricao.getText()));
Fornecedor.setTelefone(txtTelefone.getText());
Fornecedor.setEmail(txtEmail.getText());
Fornecedor.setUsuario(SingletonUtil.getInstance().getUsuario().getIdusuario());
Fornecedor.setOpr(opr);
forn.addFornecedor(Fornecedor);
limpaCampo(); //Função para limpar os campos no formulario
desativar(); //Função para desativar os campos
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Erro ao tentar adicionar um fornecedor, corriga os dados "
+ "e tente novamente !");
return;
}
}
GOSTEI 0
Davi Costa
13/06/2011
Por esse código que vc postou vc não preencheu o usuário com os campos login e senha ou conforme o usuário do banco. Seu sigleton está 100%, o que precisa é pegar esse usuário da base e seu respectivo id.
private void btnAcessarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
boolean valid = dao.validaUsuarioLogin(txtUsuario.getText(), txtSenha.getText());
//Retorna a mensagem se o valor for falso
if (!valid ){
JOptionPane.showMessageDialog(this,"Login/Password invalid !","Login/Password invalid !",JOptionPane.ERROR_MESSAGE);
return;
}
setVisible(false);
new frmPrincipal().setVisible(true);
SingletonUtil.getInstance().setUsuario(usr);
} catch (SQLException ex) {
Logger.getLogger(frmLogin.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void btnAcessarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
boolean valid = dao.validaUsuarioLogin(txtUsuario.getText(), txtSenha.getText());
//Retorna a mensagem se o valor for falso
if (!valid ){
JOptionPane.showMessageDialog(this,"Login/Password invalid !","Login/Password invalid !",JOptionPane.ERROR_MESSAGE);
return;
}
setVisible(false);
new frmPrincipal().setVisible(true);
SingletonUtil.getInstance().setUsuario(usr);
} catch (SQLException ex) {
Logger.getLogger(frmLogin.class.getName()).log(Level.SEVERE, null, ex);
}
}
GOSTEI 0
Nilo Souza
13/06/2011
Entendi, e isso faz parte da pergunta do meu primeiro tópico. Como pegar e jogar nesse singleton?
Tentei passar o campo do formulário e não deu certo.
Tentei passar o campo do formulário e não deu certo.
GOSTEI 0
Nilo Souza
13/06/2011
[RESOLVIDO]
GOSTEI 0
Davi Costa
13/06/2011
Show de bola Nilo parabéns!
Fvaor assim qu possível fechar o post
att Davi
Fvaor assim qu possível fechar o post
att Davi
GOSTEI 0