Att
Rudinick Aguiar
From: "Giuliano" <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Subject: [j2me-list] Re: RecordStore
Date: Wed, 05 Feb 2003 14:29:51 -0200
Clayton, eu te aconselho a trabalhar com ByteArrayOutputStream no processo de persistencia, pois facilita a utiliza��o do RMS. Abaixo eu mando 3 exemplos que fiz para um modelo de persistencia. Qualquer d�vida 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 Persistencia{
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 e){
System.out.println(e.getMessage());
}
long ini = System.currentTimeMillis();
for(int i = 0; i < iMsgs.size(); i++){
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());
}
}
}
=================================================================
Clayton disse:
Como foi que voce gravou o registro? ----- Original Message ----- From: "johil lopes" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Wednesday, February 05, 2003 10:04 AM Subject: [j2me-list] RecordStoreBom dia, Estou fazendo uma aplica��o simples na minha empresa que consiste em gravar um relat�rio no palm para ser consultada depois. Para gravar e ler estou utilizando a id�ia das classes do exemplo stock da SUN para RecordStore. Quando vou ler o registro eu utilizo a seguinte express�o: String registro=""; if (re.hasNextElement()) registro=new String (re.nextRecord()); O problema � que o valor do registro vem com sujeira nas duas primeiras caracteres da String, alguem sabe o que esta acontecendo. Eu acho que � algo relacionado a convers�o de dados de bytes [] para String. Desde j�, Muito Obrigado, Johil, __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com-- POP. Nem parece internet gr�tis. Seja POP voc� tamb�m! Acesse: http://www.pop.com.br/pop_discador.php e baixe o POPdiscador.
_________________________________________________________________
MSN Messenger: converse com os seus amigos online. http://messenger.msn.com.br
