Edição de Objetos

3 respostas
java
J

Pessoal estou com uma duvida estou fazendo uma projeto chamado E-Treinador para academias, mas quando vou editar os aulos eu faço da seguinte maneira: deleto o aluno na posição selecionada pelo usuário, em seguida capturo as informações digitadas pelo usuário em as passo por para metro para um objeto do tipo aluno, e adiciono esse objeto na posição selecionada pelo usuário em q o objeto foi deletado, porém, ele era um erro falando que o usuário á existe no sistema, alguém poderia me ajudar não sei pq esse erro esta acontecendo.

public class OuvinteCrecenciaisAluno implements ActionListener{

	private TelaEdicaoDoAluno janela;
	
	public OuvinteCrecenciaisAluno(TelaEdicaoDoAluno janela){
		this.janela = janela;
	}
	public void actionPerformed(ActionEvent arg0) {
		
		ValidacaoSistema validacao = new ValidacaoSistema();
		
		OuvinteDoBotaoCadastrar ouvinte = new OuvinteDoBotaoCadastrar();
		
		Persistencia persistencia = new Persistencia();
		Academia academia = persistencia.recuperar("academia.xml");
		ArrayList<Aluno> alunos = academia.getAlunos();
		
		int indice = janela.getSelect();
		Treino[] treinosDoAluno = alunos.get(indice).getTreinosDoAluno();
		alunos.remove(indice);
		
		try {
		
			//todas as váriaveis
			String nome  = janela.getTFnome().getText();
			String sexo = (String) janela.getCombo().getSelectedItem();
			Integer idade = Integer.parseInt(janela.getTFidade().getText());
			String cpf = janela.getTFcpf().getText();
			String data = janela.getTFdata().getText();
			String rg = janela.getTFidentidade().getText();
			String email = janela.getTFemail().getText();
			String entereco = janela.getTFendereco().getText();
			String telefone = janela.getTFtelefone().getText();
			
			if(sexo.isEmpty()){
				sexo = ouvinte.getSexo();
			}

			Aluno aluno = new Aluno(nome, sexo, idade, rg, cpf, data, email, entereco, telefone);
			aluno.setTreinosDoAluno(treinosDoAluno);
			
			validacao.campoBranco(aluno, indice, janela);
			validacao.alunoDuplicado(aluno);
			validacao.emailInvalido(email);
			
			alunos.add(indice, aluno);
			persistencia.salvar(academia, "academia.xml");
			
			//se tudo der certo ele imprima a mensagem de aluno cadastrado e vai para janela de cadastro de treinos
			JOptionPane.showMessageDialog(janela, "Aluno Editado");
			janela.dispose();
				
		} catch (CampoEmBranco e) {
			JOptionPane.showMessageDialog(janela, e.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
		
		}catch(NumberFormatException ex){
			JOptionPane.showMessageDialog(janela, "Voce digitou letra no lugar de numero", "Erro", JOptionPane.ERROR_MESSAGE);
			
		}catch (AlunoDuplicadoException ex) {
			JOptionPane.showMessageDialog(janela, ex.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
			
		} catch (EmailInvalidoException ex) {
		JOptionPane.showMessageDialog(janela, ex.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
 	}
		
	}
}

3 Respostas

Antoniosfalcini

O erro ocorre em algum desses métodos de validação? Se sim, pode postar o código deles pra gente? Tem uma exception desse erro?

peczenyj

vamos la

alunos.remove( indice )

isso vai remover uma referencia do objeto Aluno do ArrayList alunos. isso não vai apagar do academia.xml

vc precisa implementar isso. se vc altera todos os objetos em memoria e ai salva, entao o seu salvar é tipo um SUBSTITUIR e vc nao deveria verificar se o objeto existe pq… vc esta SUBSTITUINDO

J

Era exatamente isso, estava deletando o aluno mas não estava salvando novamente no xml, quando salvei a academia sem aquele aluno consegui adicionar um novo aluno.

Obrigado.

Criado 13 de setembro de 2016
Ultima resposta 13 de set. de 2016
Respostas 3
Participantes 3