/*
* GuardadoDemonio.java
*
* Created on 2 de julio de 2006, 21:13
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package telefono.almacen;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordFilter;
import javax.microedition.rms.RecordStore;
/**
*
* @author Ecnil
*/
public class GuardadoDemonio implements Runnable
{
static private Pool pool=null;
/** constructor/ejecutor
* contruye una instancia del escritor de pendingWrites y lo ejecuta
* @param async indica si realizaremos la operaci�n en 2� plano
* @param p pool de escrituras pendientes
*/
public GuardadoDemonio(Pool p)
{
pool=p;
Thread yo=new Thread(this);
yo.setPriority(Thread.MIN_PRIORITY);
yo.start();
}
public void run()
{
PendingWrite pw;
while(true)
{
try
{
pw=pool.blockingPop();
guardar(pw.nombre,pw.valor);
System.err.print("guardado!");
System.err.print(pw.nombre);
System.err.flush();
}
catch (InterruptedException ex)
{
ex.printStackTrace();
}
}
}
/** guarda los datos en un slot
* @param nombre nombre del slot
* @param datos datos para introducir en el slot
**/
private void guardar(String nombre,byte[]datos)
{
RecordStore rs=null;
try
{
//buscar y borrar elemto con mismo nombre
borrar(nombre);
rs=RecordStore.openRecordStore(AlmacenMicropocha.RMS_ID,true);
//grabar elemento
rs.addRecord(datos,0,datos.length);
rs.closeRecordStore();
}
catch (Exception e)
{
e.printStackTrace();
}
}
/** borra un slot
* @throws java.util.NoSuchElementException nunca
* @throws java.io.IOException Error rms
*/
public void borrar(String nombre) throws java.io.IOException, java.util.NoSuchElementException
{
RecordStore rs=null;
try
{
rs=RecordStore.openRecordStore(AlmacenMicropocha.RMS_ID,true);
//buscar y borrar elemto con mismo nombre
RecordFilter filtro=new AlmacenMicropocha.RmsFiltro(nombre);
RecordEnumeration re=rs.enumerateRecords(filtro,null,false);
while(re.hasNextElement())
{
int el=re.nextRecordId();
rs.deleteRecord(el);
}
rs.closeRecordStore();
}
catch (Exception e)
{
throw new java.io.IOException(e.getMessage());
}
}
}