Eu tenho uma base de 200 registros e esta demorando cerca de 1 minuto para localizar um registro dentro da base. O código que estou usando é esse:
[i]public int getRecordId(String valor){
Filtro filtro = new Filtro(valor);
try {
RecordEnumeration re = database.enumerateRecords(filtro, null, false);
boolean exit = false;
String rec = null;
Store store = new Store();
while (re.hasNextElement() || exit){
int pos = re.nextRecordId();
rec = getRecord(pos);
System.out.println(rec);
if (store.IsReg(rec, valor)){
exit = true;
re.destroy();
return pos;
}
}
} catch (RecordStoreNotOpenException ex) {
ex.printStackTrace();
} catch (InvalidRecordIDException ex) {
ex.printStackTrace();
} catch (RecordStoreException ex) {
ex.printStackTrace();
}
return -1;
}
public class Filtro implements RecordFilter{
private String pesquisa = null;
public Filtro(String pesquisa) {
this.pesquisa = pesquisa.toLowerCase();
}
public boolean matches(byte[] b) {
String str = new String(b).toLowerCase();
if (pesquisa != null && str.indexOf(pesquisa) > -1) {
return true;
}else{
return false;
}
}
}
public boolean IsReg(String record, String receipt)
{
int pos = record.indexOf("|");
String data = record.substring(0,pos);
if (data.equals(receipt)){
return true;
}else{
return false;
}
}[/i]
Alguém sabe uma maneira diferente de se fazer isso?
Muito obrigado.