Pessoal,
Estou começando a mexer com J2ME agora, RMS nunca tinha visto, fui tentar fazer um aplicativo de teste aqui agora, mas estou com problemas.
Tenho que entregar um aplicativo de celular com acesso ao BD, transação e tudo mais, mas nao sei nem por onde começar.
A interface do teste que estou fazendo está funcionando, o problema está na hora de salvar e/ou pesquisar os dados, pois ele mostra que obteve sucesso ao salvar o resgistro, mas quando vou pesquisar nao encontra nada.
Se alguem puder me ajudar, ficarei muito grato, estou perdido e tenho que entregar o trabalho semana q vem.
Segu meu Midlet:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.*;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;
import javax.microedition.rms.RecordStoreNotOpenException;
public class CatalogoDeEnderecoMidlet extends MIDlet implements CommandListener {
private Display display;
private Form formPrincipal;
private TextField nome;
private TextField endereco;
private TextField itemBusca;
private Command cmdSair; // Botão para sair do MIDlet
private Command cmdSalvar; // Botão para salvar no record store
private Command cmdProcurar; // Botão para encontrar um endereço
private Command cmdExcluir; // Botão para remover um nome do cadastro
private Command cmdAdicionar; // Botão para adicionar o endereço
private StringItem opcoesMenu;
private Command cmdProcurarOK;
private Command cmdProcurarVoltar;
private Command cmdVoltar;
private Command cmdExcluirOK;
private Command cmdExcluirVoltar;
private RecordStore rs; // Objeto para manipulação do Record Store
public CatalogoDeEnderecoMidlet() throws RecordStoreException
{
rs = RecordStore.openRecordStore("CatalogoDeEdenreco", true);
}
public void startApp() throws MIDletStateChangeException
{
//telaPrincipal();
formPrincipal = new Form ("Catálogo de endereços");
opcoesMenu = new StringItem ("Escolha a opção no Menu", null);
cmdAdicionar = new Command ("Adicionar", Command.SCREEN, 1);
cmdProcurar = new Command ("Encontrar", Command.SCREEN, 1);
cmdExcluir = new Command ("Remover", Command.SCREEN, 1);
cmdSair = new Command ("Sair", Command.SCREEN, 1);
formPrincipal.append(opcoesMenu);
formPrincipal.addCommand(cmdAdicionar);
formPrincipal.addCommand(cmdProcurar);
formPrincipal.addCommand(cmdExcluir);
formPrincipal.addCommand(cmdSair);
formPrincipal.setCommandListener((CommandListener) this);
display = Display.getDisplay(this);
display.setCurrent(formPrincipal);
}
/* private void telaPrincipal()
{
formPrincipal = new Form ("Catálogo de endereços");
strOpt = new StringItem ("Escolha a opção no Menu", null);
cmdAdicionar = new Command ("Adicionar", Command.SCREEN, 1);
cmdProcurar = new Command ("Encontrar", Command.SCREEN, 1);
cmdExcluir = new Command ("Remover", Command.SCREEN, 1);
cmdSair = new Command ("Sair", Command.SCREEN, 1);
formPrincipal.append(strOpt);
formPrincipal.addCommand(cmdAdicionar);
formPrincipal.addCommand(cmdProcurar);
formPrincipal.addCommand(cmdExcluir);
formPrincipal.addCommand(cmdSair);
formPrincipal.setCommandListener((CommandListener) this);
display = Display.getDisplay(this);
display.setCurrent(formPrincipal);
}*/
public void pauseApp()
{
}
public void destroyApp(boolean arg0) throws MIDletStateChangeException
{
}
public void commandAction(Command cmd, Displayable disp)
{
if (cmd == cmdSair)
{
try
{
destroyApp(true);
}
catch (MIDletStateChangeException e)
{
e.printStackTrace();
}
notifyDestroyed();
}
else if (cmd == cmdAdicionar)
{
exibirAdicionarEndereco();
}
else if (cmd == cmdSalvar)
{
try
{
salvarEndereco(nome.getString(), endereco.getString());
}
catch (RecordStoreException e)
{
e.printStackTrace();
}
}
else if (cmd == cmdProcurar)
{
exibirEncontrarEndereco();
}
else if (cmd == cmdExcluir)
{
exibirExcluirEndereco();
}
else if (cmd == cmdProcurarOK)
{
try
{
procurarEndereco(itemBusca.getString());
}
catch (RecordStoreException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
else if (cmd == cmdProcurarVoltar || cmd == cmdExcluirVoltar || cmd == cmdVoltar)
{
// telaPrincipal();
display.setCurrent(formPrincipal);
}
else if (cmd == cmdExcluirOK)
{
try
{
excluirEndereco();
}
catch (IOException e1)
{
e1.printStackTrace();
}
catch (RecordStoreException e)
{
e.printStackTrace();
}
}
}
private void exibirAdicionarEndereco()
{
Form form = new Form ("Adicionar endereços");
nome = new TextField ("Nome", "", 30, TextField.ANY);
endereco = new TextField ("Endereço", "", 50, TextField.ANY);
cmdSalvar = new Command ("Salvar", Command.SCREEN, 1);
form.append(nome);
form.append(endereco);
form.addCommand(cmdSair);
form.addCommand(cmdSalvar);
form.setCommandListener((CommandListener) this);
display = Display.getDisplay(this);
display.setCurrent(form);
}
private void exibirEncontrarEndereco()
{
Form form = new Form("Achar endereço");
cmdProcurarOK = new Command("OK", Command.SCREEN, 2);
cmdProcurarVoltar = new Command("Voltar", Command.SCREEN, 2);
itemBusca = new TextField("Entre com o nome", "", 30, TextField.ANY);
form.append(itemBusca);
form.addCommand(cmdProcurarOK);
form.addCommand(cmdProcurarVoltar);
form.setCommandListener((CommandListener) this);
display = Display.getDisplay(this);
display.setCurrent(form);
}
private void exibirExcluirEndereco()
{
Form form = new Form ("Remover endereço");
nome = new TextField ("Entre com o nome", "", 30, TextField.ANY);
cmdExcluirOK = new Command("OK", Command.SCREEN, 1);
cmdExcluirVoltar = new Command("Voltar", Command.SCREEN, 1);
form.append(nome);
form.addCommand(cmdExcluirOK);
form.addCommand(cmdExcluirVoltar);
form.setCommandListener((CommandListener) this);
display = Display.getDisplay(this);
display.setCurrent(form);
}
private void salvarEndereco(String nome, String endereco) throws
RecordStoreException
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
try
{
dos.writeUTF(nome);
dos.writeUTF(endereco);
}
catch (IOException e)
{
e.printStackTrace();
}
rs.addRecord(baos.toByteArray(), 0, baos.toByteArray().length);
exibirMensagem("Sucesso !");
}
private void procurarEndereco(String name) throws RecordStoreException,
IOException
{
RecordEnumeration re = null;
boolean encontrarEndereco = false;
try
{
re = rs.enumerateRecords(null, null, false);
}
catch (RecordStoreNotOpenException e1)
{
e1.printStackTrace();
}
if (re.numRecords() > 0)
{
ByteArrayInputStream bais = null;
DataInputStream dis = null;
String nomeRMS = null;
byte [] record = re.nextRecord();
while (re.hasNextElement())
{
bais = new ByteArrayInputStream (record);
dis = new DataInputStream(bais);
nomeRMS = dis.readUTF();
if (name.compareTo(nomeRMS)== 0)
{
encontrarEndereco = true;
System.out.println(nomeRMS);
exibirEndereco(dis.readUTF());
break;
}
record = re.nextRecord();
}
if (!encontrarEndereco)
{
exibirMensagem("Endereço não cadastrado");
}
}
else
{
exibirMensagem("Endereço não cadastrado");
}
}
private void excluirEndereco() throws RecordStoreException, IOException
{
RecordEnumeration re = null;
boolean procurarEndereco = false;
try
{
re = rs.enumerateRecords(null, null, false);
}
catch (RecordStoreNotOpenException e1)
{
e1.printStackTrace();
}
if (re.numRecords() > 0)
{
ByteArrayInputStream bais = null;
DataInputStream dis = null;
String nomeRMS = null;
byte [] record = re.nextRecord();
int id = 0;
while (re.hasNextElement())
{
System.out.println (id);
bais = new ByteArrayInputStream (record);
dis = new DataInputStream(bais);
nomeRMS = dis.readUTF();
String nomeDigitado = nome.getString();
if (nomeDigitado.compareTo(nomeRMS)== 0)
{
procurarEndereco = true;
record = re.nextRecord();
id = re.previousRecordId();
rs.deleteRecord(id);
exibirMensagem("Sucesso!");
break;
}
record = re.nextRecord();
}
if (!procurarEndereco)
{
exibirMensagem("Endereço não cadastrado");
}
}
else
{
exibirMensagem("Endereço não cadastrado");
}
}
private void exibirEndereco(String enderecoRMS)
{
StringItem strEndereco;
Form form = new Form("Mostrar endereço");
cmdVoltar = new Command("Voltar", Command.SCREEN, 1);
strEndereco = new StringItem("Endereço:", enderecoRMS);
form.append(strEndereco);
form.addCommand(cmdVoltar);
form.setCommandListener((CommandListener) this);
display.setCurrent(form);
}
private void exibirMensagem(String msg)
{
Alert alerta = new Alert("Mensagem", msg, null, AlertType.CONFIRMATION);
display.setCurrent(alerta, formPrincipal);
}
}