Problemas com o case 1 alterar!

5 respostas
javaredfoot

Bom pessoal, estou com problemas com o opção alterar do menu não está funcionando corretamente e não consigo encontrar a falha...............

package avaliacaoTurma02;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import javax.swing.JOptionPane;

import avaliacaoTurma02.DaoXML;
import avaliacaoTurma02.Cidade;

public class CadastroCidades {
	
	static InterfaceDao dao=new DaoXML();
	
	private static String leTexto(String msg, String valor){
		String retorno = null;
		while ((retorno == null) || (retorno.trim().length()==0)){
			retorno = JOptionPane.showInputDialog(msg, valor);
		}
		return retorno;
	}
	
	private static int leInteiro(String msg, String valor){
		String strNumero = null;
		int numero=0;
		boolean numeroValido=false;
		while (!numeroValido){
			try {
				strNumero = JOptionPane.showInputDialog(msg, valor);
				numero= Integer.parseInt(strNumero);
				numeroValido=true;
			} catch (NumberFormatException e){
				JOptionPane.showMessageDialog(null, "Valor informado: " + strNumero + " não é um numero valido");
				numeroValido=false;
			}
		}
		return numero;
	}
		
		private static int leInteiro2(String msg, String valor){
			String strNumero = null;
			int numero=0;
			boolean numeroValido=false;
			while (!numeroValido){
				strNumero= JOptionPane.showInputDialog(msg, valor);
				if ((strNumero!=null) && (strNumero.trim().length()>0) && (strNumero.matches("\d*"))){
					numero= Integer.parseInt(strNumero);
					numeroValido=true;
				}
			}
			return numero;
		}
		
	public static void main(String[] args) {
		
		DaoXML dados = new DaoXML();

		String[] opcoes = {"Novo", "Altera", "Remove", "Listar", "Sai"};
		
		int contador = 0;
		//Enquanto nao sair Loop
		while (true){
			String nome, uf, strCodigo;
			//Le opcao de cadastro
			int opcao = JOptionPane.showOptionDialog(null, "Escolha a opção de cadastro",
					"Menu de cadastro",0, JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[4]);
			switch (opcao){
			//Se novo
			case 0:
				nome = JOptionPane.showInputDialog("Entre com o nome da cidade !");
				uf = JOptionPane.showInputDialog("Entre com o uf do estado !");
				if ((nome == null) || (nome.trim().length()== 0));
				if ((uf == null) || (uf.trim().length() == 0));
				Cidade cidade = new Cidade(++contador, nome,uf);
				dados.salvar(cidade);
				//dados.gravaDados();
				break;
			//Se altera	
			case 1:
				//Le identificador
				strCodigo = JOptionPane.showInputDialog("Entre com o codigo da cidade !");
				//Busca elemento a ser alterado
				Cidade cidade1 = new Cidade(Integer.parseInt(strCodigo), null, strCodigo);
				Cidade cadastrado = (Cidade)dados.consultar(cidade1);
				if (cadastrado != null) {
				//Le dados alterados
				nome = JOptionPane.showInputDialog("Entre com o nome da cidade!", cadastrado.getNome());
				uf = JOptionPane.showInputDialog("Entre com o uf do estado!", cadastrado.getUf());
				//Grava dados
				dados.salvar(cadastrado);
				} else {
					JOptionPane.showMessageDialog(null, "Cidade não cadastrada !");
				}
				break;
			//Se remove
			case 2:
				//Le identificador
				strCodigo = JOptionPane.showInputDialog("Entre com o codigo da cidade!");
				//Busca elemento a ser alterado
				Cidade removido =
					(Cidade)dados.consultar(new Cidade(Integer.parseInt(strCodigo),null, strCodigo));
				if (removido != null){
					//Remove dados
					dados.remover(removido);
					dados.gravaDados();
			} else {
				JOptionPane.showMessageDialog(null, "Cliente não cadastrado");
			}
				break;			
			//Se lista
			case 3:
				// Obtem lista de cidades
				ArrayList lista=new ArrayList(dados.listar(Cidade.class));
				Collections.sort(lista, new Comparator() {
					public int compare(Object o1, Object o2) {
						Cidade c1=(Cidade)o1;
						Cidade c2=(Cidade)o2;
						return c1.getNome().compareTo(c2.getNome());
					}
				});
				// Mostra lista
				JOptionPane.showMessageDialog(null, lista.toArray());
				break;
			//Se sair
			case 4:
				String[] opcaoSaida = {"Sim", "Não"};
				//Pede confirmacao de saidaE
				int opcaoSaida1 = JOptionPane.showOptionDialog(null, "Deseja realmente sair ?",
						"Confirmação de saía",0, JOptionPane.QUESTION_MESSAGE, null, opcaoSaida, opcaoSaida[1]);
				//Se confirma sai
				if (opcaoSaida1 == 0) System.exit(0);
				dados.gravaDados();
				break;
			}
		}
	}
	
		private static void alteraCidade(InterfaceDao dao) {

			
			String strId=JOptionPane.showInputDialog("Entre com o código do cidade");
			Cidade cidade=new Cidade(Integer.parseInt(strId), null, strId);
			
			Cidade cadastrado=(Cidade)dao.consultar(cidade);
			
			if (cadastrado!=null) {
			
				String nome=leTexto("Entre com o nome do cidade", cadastrado.getNome());
				cidade.setNome(nome);
				dao.salvar(cidade);
			} else {
				JOptionPane.showMessageDialog(null, "Cidade não cadastrado");
			}
		}
		
		private static void removeCidade(InterfaceDao dao) {

			
			String strId=JOptionPane.showInputDialog("Entre com o código do cidade");
			Cidade cidade=new Cidade(Integer.parseInt(strId), null, strId);
			Cidade cadastrado=(Cidade)dao.consultar(cidade);

			if (cadastrado!=null) {
				dao.remover(cidade);
			} else {
				JOptionPane.showMessageDialog(null, "Cidade não cadastrado");
			}
		}

		private static void criaCidade(InterfaceDao dao) {
			int codigo=getNextCod();
			Cidade cidade=new Cidade();
			Cidade cadastrado=(Cidade)dao.consultar(cidade);
			
			if (cadastrado==null) {
				
				String nome=JOptionPane.showInputDialog("Entre com o nome do cidade");
				String uf = JOptionPane.showInputDialog("Entre com o estado");
				// Cria objeto Cidade
				cidade.setNome(nome);
				cidade.setUf(uf);
				// Salva objeto cidade
				dao.salvar(cidade);
			} else {
				// Se existe mostra msg
				JOptionPane.showMessageDialog(null, "Cidade já cadastrado");
			}
		}
		private static int contador=0;
		
		private static int getNextCod() {
			return ++contador;
	}
}

Essa classe faz parte do projeto..

package avaliacaoTurma02;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import javax.swing.JOptionPane;

import avaliacaoTurma02.DaoXML;
import avaliacaoTurma02.Cidade;

public class CadastroCidades {
	
	static InterfaceDao dao=new DaoXML();
	
	private static String leTexto(String msg, String valor){
		String retorno = null;
		while ((retorno == null) || (retorno.trim().length()==0)){
			retorno = JOptionPane.showInputDialog(msg, valor);
		}
		return retorno;
	}
	
	private static int leInteiro(String msg, String valor){
		String strNumero = null;
		int numero=0;
		boolean numeroValido=false;
		while (!numeroValido){
			try {
				strNumero = JOptionPane.showInputDialog(msg, valor);
				numero= Integer.parseInt(strNumero);
				numeroValido=true;
			} catch (NumberFormatException e){
				JOptionPane.showMessageDialog(null, "Valor informado: " + strNumero + " não é um numero valido");
				numeroValido=false;
			}
		}
		return numero;
	}
		
		private static int leInteiro2(String msg, String valor){
			String strNumero = null;
			int numero=0;
			boolean numeroValido=false;
			while (!numeroValido){
				strNumero= JOptionPane.showInputDialog(msg, valor);
				if ((strNumero!=null) && (strNumero.trim().length()>0) && (strNumero.matches("\d*"))){
					numero= Integer.parseInt(strNumero);
					numeroValido=true;
				}
			}
			return numero;
		}
		
	public static void main(String[] args) {
		
		DaoXML dados = new DaoXML();

		String[] opcoes = {"Novo", "Altera", "Remove", "Listar", "Sai"};
		
		int contador = 0;
		//Enquanto nao sair Loop
		while (true){
			String nome, uf, strCodigo;
			//Le opcao de cadastro
			int opcao = JOptionPane.showOptionDialog(null, "Escolha a opção de cadastro",
					"Menu de cadastro",0, JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[4]);
			switch (opcao){
			//Se novo
			case 0:
				nome = JOptionPane.showInputDialog("Entre com o nome da cidade !");
				uf = JOptionPane.showInputDialog("Entre com o uf do estado !");
				if ((nome == null) || (nome.trim().length()== 0));
				if ((uf == null) || (uf.trim().length() == 0));
				Cidade cidade = new Cidade(++contador, nome,uf);
				dados.salvar(cidade);
				//dados.gravaDados();
				break;
			//Se altera	
			case 1:
				//Le identificador
				strCodigo = JOptionPane.showInputDialog("Entre com o codigo da cidade !");
				//Busca elemento a ser alterado
				Cidade cidade1 = new Cidade(Integer.parseInt(strCodigo), null, strCodigo);
				Cidade cadastrado = (Cidade)dados.consultar(cidade1);
				if (cadastrado != null) {
				//Le dados alterados
				nome = JOptionPane.showInputDialog("Entre com o nome da cidade!", cadastrado.getNome());
				uf = JOptionPane.showInputDialog("Entre com o uf do estado!", cadastrado.getUf());
				//Grava dados
				dados.salvar(cadastrado);
				} else {
					JOptionPane.showMessageDialog(null, "Cidade não cadastrada !");
				}
				break;
			//Se remove
			case 2:
				//Le identificador
				strCodigo = JOptionPane.showInputDialog("Entre com o codigo da cidade!");
				//Busca elemento a ser alterado
				Cidade removido =
					(Cidade)dados.consultar(new Cidade(Integer.parseInt(strCodigo),null, strCodigo));
				if (removido != null){
					//Remove dados
					dados.remover(removido);
					dados.gravaDados();
			} else {
				JOptionPane.showMessageDialog(null, "Cliente não cadastrado");
			}
				break;			
			//Se lista
			case 3:
				// Obtem lista de cidades
				ArrayList lista=new ArrayList(dados.listar(Cidade.class));
				Collections.sort(lista, new Comparator() {
					public int compare(Object o1, Object o2) {
						Cidade c1=(Cidade)o1;
						Cidade c2=(Cidade)o2;
						return c1.getNome().compareTo(c2.getNome());
					}
				});
				// Mostra lista
				JOptionPane.showMessageDialog(null, lista.toArray());
				break;
			//Se sair
			case 4:
				String[] opcaoSaida = {"Sim", "Não"};
				//Pede confirmacao de saidaE
				int opcaoSaida1 = JOptionPane.showOptionDialog(null, "Deseja realmente sair ?",
						"Confirmação de saía",0, JOptionPane.QUESTION_MESSAGE, null, opcaoSaida, opcaoSaida[1]);
				//Se confirma sai
				if (opcaoSaida1 == 0) System.exit(0);
				dados.gravaDados();
				break;
			}
		}
	}
	
		private static void alteraCidade(InterfaceDao dao) {

			
			String strId=JOptionPane.showInputDialog("Entre com o código do cidade");
			Cidade cidade=new Cidade(Integer.parseInt(strId), null, strId);
			
			Cidade cadastrado=(Cidade)dao.consultar(cidade);
			
			if (cadastrado!=null) {
			
				String nome=leTexto("Entre com o nome do cidade", cadastrado.getNome());
				cidade.setNome(nome);
				dao.salvar(cidade);
			} else {
				JOptionPane.showMessageDialog(null, "Cidade não cadastrado");
			}
		}
		
		private static void removeCidade(InterfaceDao dao) {

			
			String strId=JOptionPane.showInputDialog("Entre com o código do cidade");
			Cidade cidade=new Cidade(Integer.parseInt(strId), null, strId);
			Cidade cadastrado=(Cidade)dao.consultar(cidade);

			if (cadastrado!=null) {
				dao.remover(cidade);
			} else {
				JOptionPane.showMessageDialog(null, "Cidade não cadastrado");
			}
		}

		private static void criaCidade(InterfaceDao dao) {
			int codigo=getNextCod();
			Cidade cidade=new Cidade();
			Cidade cadastrado=(Cidade)dao.consultar(cidade);
			
			if (cadastrado==null) {
				
				String nome=JOptionPane.showInputDialog("Entre com o nome do cidade");
				String uf = JOptionPane.showInputDialog("Entre com o estado");
				// Cria objeto Cidade
				cidade.setNome(nome);
				cidade.setUf(uf);
				// Salva objeto cidade
				dao.salvar(cidade);
			} else {
				// Se existe mostra msg
				JOptionPane.showMessageDialog(null, "Cidade já cadastrado");
			}
		}
		private static int contador=0;
		
		private static int getNextCod() {
			return ++contador;
	}
}

até....

5 Respostas

ViniGodoy
  1. Coloque só o trecho relevante de código;
  2. Diga o que você esperava que acontecesse e o que está acontecendo;
  3. Se houver exceções, diga quais são e aponte em que linha o stacktrace dá erro.
  4. Procure executar o código passo-a-passo com o depurador de sua IDE.

Mas só listar um monte de código e dizer que você tem um problema, não adianta nada.

volnei

Qual o erro? O que não está dando certo?

Testei aqui e parece tudo normal.

Abraço

javaredfoot
<blockquote><div class="quote-author">ViniGodoy:</div>1. Coloque  o trecho relevante de código;

2. Diga o que você esperava que acontecesse e o que está acontecendo;

3. Se houver exceções, diga quais são e aponte em que linha o stacktrace  erro.

4. Procure executar o código passo-a-passo com o depurador de sua IDE.

Mas só listar um monte de código e dizer que você tem um problema, não adianta nada.

Opa, me desculpem foi mal…

Na verdade não está dando nenhum erro, o que acontece é quando altero o nome da cidade, ele não está salvando esta alteração é isso… minha intenção em colocar os codigos era pra ter uma visão melhor do problema, mas na proxima me enquadro nas regras.

obrigado !

volnei

nome = JOptionPane.showInputDialog("Entre com o nome da cidade!", cadastrado.getNome()); uf = JOptionPane.showInputDialog("Entre com o uf do estado!", cadastrado.getUf()); //Grava dados dados.salvar(cadastrado); } else { JOptionPane.showMessageDialog(null, "Cidade não cadastrada !"); }

nome e uf são só variáveis… vc não está setando no objeto Cidade.

Abraço

javaredfoot

//Le dados alterados nome = JOptionPane.showInputDialog("Entre com o nome da cidade!", cadastrado.getNome()); cadastrado.setNome(nome); uf = JOptionPane.showInputDialog("Entre com o uf do estado!", cadastrado.getUf()); cadastrado.setUf(uf);

Volnei, era isso mesmo … valeu :thumbup:

Criado 1 de julho de 2009
Ultima resposta 1 de jul. de 2009
Respostas 5
Participantes 3