Bom pessoal, estou com problemas com o opção alterar do menu não está funcionando corretamente e não consigo encontrar a falha…
[code]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;
}
}[/code]
Essa classe faz parte do projeto…
[code]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;
}
}[/code]
até…