Use métodos para pegar os valores dos componentes:
na view:
public String getNome() {
String nome = nomeAluno.getText();
if (nome == null) return "";
return nome.trim();
}
public int getRG() {
try {
return Integer.parseInt(rgAluno.getText());
} catch(Exception e) {
return -1;
}
}
no action:
try {
aluno.setNome(getName());
aluno.setRg(getRG());
aluno = manteralunofacade.alterar(aluno);
JOptionPane.showMessageDialog(null, "Alterado com sucesso!");
limparCampos();
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
no controle:
public Aluno alterar(Aluno aluno) throws Exception{
validarAluno(aluno);
return mad.alterar(aluno);
}
public void validarAluno(aluno) {
if (aluno.getNome == null || aluno.getNome.isEmpty()) throw new Exception("Nome inválido!");
if (aluno.getRG <= 0) throw new Exception("RG inválido!");
}
[EDIT]
melhor criar uma classe para validar:
public class ValidadorDeAluno {
public void validar(Aluno aluno) throws Exception {}
}
ValidadorDeAluno validadorDeAluno = new ValidadorDeAluno ();
public Aluno alterar(Aluno aluno) throws Exception{
validadorDeAluno.validar(aluno);
return mad.alterar(aluno);
}
Boa noite @diego12 obrigado pela ajuda.
Agora estou fazendo as DAOs de arrays, mas eu fiz o inserir eu creio que esta certo mas não esta adicionando na array, não aprece erro nenhum
public boolean inserir(String nome, Integer rg) throws Exception {
int cont = 0;
Aluno al = new Aluno();
al.setNome(nome);
al.setRg(rg);
ArrayList<Aluno> alunos = new ArrayList<>();
alunos.add(al);
return cont > 0;
}
Onde está sendo armazenada a lista?
ArrayList<Aluno> alunos = new ArrayList<>();
public boolean inserir(String nome, Integer rg) throws Exception {
// int cont = 0;
Aluno al = new Aluno();
al.setNome(nome);
al.setRg(rg);
alunos.add(al);
// return cont > 0;
return true;
}
Na ArrayList alunos
criei o objeto aluno
Aluno al = new Aluno();
pego as propriedades e coloco no objeto
al.setNome(nome);
al.setRg(rg);
Ai coloco o objeto na arraylist
alunos.add(al);
né?
Sim, mas “onde está sendo armazenada a lista” ? Como vc acessaria a lista se vc a perdesse? A solução seria colocando a lista como atributo da classe.
Assim né:
public class ManterAlunoDAO extends Conexao implements InterfaceManterAlunoDAO{
private ArrayList<Aluno> aluno = new ArrayList<>();
@Override
public boolean inserir(String nome, Integer rg) throws Exception {
int cont = 0;
Aluno al = new Aluno();
al.setNome(nome);
al.setRg(rg);
ArrayList<Aluno> alunos = new ArrayList<>();
alunos.add(al);
return cont > 0;
}
Se for assim, já estava assim, mas não esta gravando
diego12
Junho 11, 2018, 12:43pm
#28
Falta remover aquela linha:
al.setRg(rg);
// ArrayList<Aluno> alunos = new ArrayList<>(); // remover
alunos.add(al);
Consegui, acabei mudando o parâmetro do método para objeto
@Override
public boolean inserir(Aluno aluno) throws Exception {
this.aluno.add(aluno);
return true;
}
Estou fazendo o de busca agora, mas não esta dando certo:
public Aluno consulta(Aluno aluno) {
int tamanho = this.aluno.size();
int aux=0;
for(int i = 0; i<tamanho; i++){
if(this.aluno.get(i).getRg().equals(aluno.getRg())){
aluno = this.aluno.get(i);
aux++;
}
if(aux == 0)
throw new UnsupportedOperationException("Nenhum aluno encontrado.");
return aluno;
}
return aluno;
}
diego12
Junho 13, 2018, 12:37pm
#30
Não faz sentido buscar algo que já tem, faça as buscas pelos atributos:
public Aluno buscarAlunoPorRg(Integer rg) {
int tamanho = this.aluno.size();
for(int i = 0; i<tamanho; i++){
if(this.aluno.get(i).getRg().equals(rg)){
return this.aluno.get(i);
}
}
throw new UnsupportedOperationException("Nenhum aluno encontrado.");
}
Não sei pq mas ele entra na exception toda vez, e eu mandei imprimir a arraylist no botão de inserir e ela esta gravando tudo