Johil, eu te aconselho a trabalhar com ByteArrayOutputStream no processo de
persistencia, pois facilita a utilizacao do RMS. Abaixo eu mando 3 exemplos
que fiz para um modelo de persistencia. Qualquer duvida da um toque...
=====================================================
import java.io.*;
/**
*
* @author giuliano
* @version
*/
public interface Persistencia
void materializar(byte[] data)throws IOException;
byte[] gravar()throws IOException;
}
=====================================================
import javax.microedition.midlet.*;
import java.io.*;
import javax.microedition.rms.*;
/**
*
* @author giuliano
* @version
*/
public class Mensagem implements
sistencia{
private String de;
private String para;
private String assunto;
private String mensagem;
private String data;
public String getDe(){
return this.de;
}
public String getPara(){
return this.para;
}
public String getAssunto(){
return this.assunto;
}
public String getMensagem(){
return this.mensagem;
}
public String getData(){
return this.data;
}
public void setDe(String de){
this.de = de;
}
public void setPara(String para){
this.para = para;
}
public void setAssunto(String assunto){
this.assunto = assunto;
}
public void setMensagem(String msg){
this.mensagem = msg;
}
public void setData(String data){
this.data = data;
}
public byte[] gravar() throws IOException {
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
DataOutputStream dOut = new DataOutputStream(bOut);
dOut.writeUTF(this.getDe());
dOut.writeUTF(this.getPara());
dOut.writeUTF(this.getAssunto());
dOut.writeUTF(this.getMensagem());
dOut.writeUTF(this.getData());
dOut.flush();
return bOut.toByteArray();
}
public void materializar(byte[] data) throws IOException {
ByteArrayInputStream bOut = new ByteArrayInputStream(data);
DataInputStream dOut = new DataInputStream(bOut);
this.de = dOut.readUTF();
this.para = dOut.readUTF();
this.assunto = dOut.readUTF();
this.mensagem = dOut.readUTF();
this.data = dOut.readUTF();
}
}
====================================================================
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import java.util.Vector;
import java.io.*;
/**
*
* @author giuliano
* @version
*/
public class TestMensagem extends MIDlet implements CommandListener{
private Command cmdGravar, cmdRet;
private Mensagem msg = new Mensagem();
private Vector iMsgs = new Vector();
private Form form;
private Display display = Display.getDisplay(this);
private TextField txtDe, txtPara, txtAssunto, txtMsg, txtData;
private RecordStore rs;
private RecordEnumeration enum;
private static final String NOME_DB = "MENSAGENS";
private TestAlert alerta = new TestAlert();
private ChoiceGroup cgrMsgs = new ChoiceGroup("Mensagens",Choice.EXCLUSIVE);
private void instanceTextFields(){
this.txtDe = new TextField("De: ", "", 20, TextField.ANY);
this.txtPara = new TextField("Para: ", "", 20, TextField.ANY);
this.txtAssunto = new TextField("Assunto: ", "", 20, TextField.ANY);
this.txtMsg = new TextField("Mensagem: ", "", 20, TextField.ANY);
this.txtData = new TextField("Data: ", "", 20, TextField.ANY);
}
private void carregaDados(RecordStore rcs){
try{
//this.openDB(rs);
rcs = RecordStore.openRecordStore(NOME_DB,true);
this.enum = rcs.enumerateRecords(null, null, false);
byte[] data;
while(enum.hasPreviousElement()){
Mensagem tmpMsg = new Mensagem();
data = enum.previousRecord();
tmpMsg.materializar(data);
this.iMsgs.addElement(tmpMsg);
tmpMsg = null;
}
this.closeDB(rs);
}catch(Exception
System.out.println(e.getMessage());
}
long ini = System.currentTimeMillis();
for(int i = 0; i < iMsgs.size();
){
System.out.println("Init ================================");
System.out.println("De: " + ((Mensagem)iMsgs.elementAt(i)).getDe());
System.out.println("Para: " + ((Mensagem)iMsgs.elementAt(i)).getPara());
System.out.println("Assunto: " +
((Mensagem)iMsgs.elementAt(i)).getAssunto());
System.out.println("Mensagem: " +
((Mensagem)iMsgs.elementAt(i)).getMensagem());
System.out.println("Data: " + ((Mensagem)iMsgs.elementAt(i)).getData());
System.out.println("End ================================");
}
System.out.println(System.currentTimeMillis()-ini);
if(this.iMsgs.size() > 0)
this.iMsgs.removeAllElements();
}
private void apendaTextField(){
form.append(this.txtDe);
form.append(this.txtPara);
form.append(this.txtAssunto);
form.append(this.txtMsg);
form.append(this.txtData);
}
public TestMensagem(){
this.form = new Form("Mensagem");
this.cmdGravar = new Command("Gravar", Command.OK, 1);
this.cmdRet = new Command("Exibir", Command.BACK, 1);
this.form.setCommandListener(this);
this.form.addCommand(cmdGravar);
this.form.addCommand(cmdRet);
this.instanceTextFields();
this.apendaTextField();
}
public void startApp() {
this.display.setCurrent(form);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command cmd, Displayable dsp) {
if(cmd == cmdGravar){
this.msg.setDe(txtDe.getString());
this.msg.setPara(txtPara.getString());
this.msg.setAssunto(txtAssunto.getString());
this.msg.setMensagem(txtMsg.getString());
this.msg.setData(txtData.getString());
this.store(this.msg, this.rs);
}else if(cmd == this.cmdRet){
this.carregaDados(this.rs);
this.display.setCurrent(alerta);
}
}
private void openDB(RecordStore rs){
try{
rs = RecordStore.openRecordStore(NOME_DB, true);
}catch(RecordStoreException e){
e.getMessage();
}
}
private void closeDB(RecordStore rs){
if(rs != null){
try{
rs.closeRecordStore();
}catch(RecordStoreException e){
e.getMessage();
}
}
}
private void store(Mensagem mens, RecordStore rcs){
byte[] data;
long ini = System.currentTimeMillis();
try{
rcs = RecordStore.openRecordStore(NOME_DB,true);
data = mens.gravar();
rcs.addRecord(data, 0, data.length);
this.closeDB(rcs);
System.out.println(System.currentTimeMillis()-ini);
//rcs.deleteRecordStore(NOME_DB);
}catch(IOException e){
System.out.println(e.getMessage());
}catch(RecordStoreNotOpenException e){
System.out.println(e.getMessage());
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
=================================================================
-----Mensagem original-----
De: johil lopes [mailto:[EMAIL PROTECTED]]
Enviada em: quarta-feira, 5 de fevereiro de 2003 10:05
Para: [EMAIL PROTECTED]
Assunto: [j2me-list] RecordStore
Bom dia,
Estou fazendo uma aplicagco simples na minha
empresa que consiste em gravar um relatsrio no palm
para ser consultada depois.
Para gravar e ler estou utilizando a idiia das
classes do exemplo stock da SUN para RecordStore.
Quando vou ler o registro eu utilizo a
seguinte expressco:
String registro="";
if (re.hasNextElement())
registro=new String (re.nextRecord()
);
O problema i que o valor do registro vem com
sujeira nas duas primeiras caracteres da String,
alguem sabe o que esta acontecendo.
Eu acho que i algo relacionado a conversco de
dados de bytes [] para String.
Desde ja,
Muito Obrigado,
Johil,
__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com