Tenho um método que está numa classe que é um JPanel. Esse método serve pra pegar as informações dos JTextFields. Ele cria um objeto com esses dados e passa pra classe gerenciadora de botões (que implementa action listener). Essa gerenciadora passa o objeto pra classe DAO inserir no BD.
Não sei se é a melhor forma, mas foi a solução que eu achei.
Só que esse botão está demorando muito pra terminar de rodar. Alguém pode me dizer como deixar mais rápido?
Método:
public void createUserObject(){
//TODO Esse objeto é destruído quando o metodo for chamado outr vez?
Usuario temp = new Usuario();
UsuarioDAO usrDAO = new UsuarioDAO();
temp.setNome(txtNome.getText());
temp.setSobrenome(txtSobrenome.getText());
temp.setUsuario(txtUsuario.getText());
temp.setTelefone(txtTelefone.getText());
if(emailValido(txtEmail.getText()) == true){
temp.setConta(txtEmail.getText(), pass.getPassword());
}else{
JOptionPane.showMessageDialog(null, "Email Inválido");
}
temp.setDtNascimento(txtDtNasc.getText());
if(!usrDAO.saveUserData(temp)){
JOptionPane.showMessageDialog(null, "Erro ao salavar dados no BD");
}else{JOptionPane.showMessageDialog(null, "Salvo com sucesso");}
}
Método que valida o email - na mesma classe do metodo acima
public boolean emailValido(String email){
if(email != null && email.trim().length() > 0){
String regexEmail = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
Pattern pattern = Pattern.compile(regexEmail, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(email);
if(matcher.matches()){
return true;
}
}
return false;
O Método saveUserData: - classe dao
public boolean saveUserData(Usuario u){
sql = "INSERT INTO Conta (id_conta, email, senha) VALUES"
+ "(?,?,?)";
try{
ps = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.setString(2, u.getConta().getEmail());
String pass = new String(u.getConta().getPass());
ps.setString(3, pass);
ps.executeUpdate();
try{
ResultSet chave = ps.getGeneratedKeys();
if(chave.next()){
int fkConta = chave.getInt(1);
u.getConta().setId(fkConta);
}
}catch(SQLException e){
System.err.println("Erro ao recuperar chave estrangeira\n");
e.printStackTrace();
}
saveUser(u);
return true;
}catch(SQLException e){
System.err.println("Erro ao inserir conta\n");
e.printStackTrace();
return false;
}