iêu chí sắp xếp là theo kiểu integer, dữ liệu ta cần lấy nằm cuối cùng trong dãy byte do đó cần phải đọc theo thứ tự, phải đọc kiểu String, boolean rồi mới đến integer:
public int compare(byte[] rec1, byte[] rec2) { int x1, x2;
try {// If either record is larger than our buffer, reallocate int maxsize = Math.max(rec1.length, rec2.length);
if (maxsize > recData.length) recData = new byte[maxsize];
// Read record #1 we must read the String and boolean to get to the integer
strmBytes = new ByteArrayInputStream(rec1); strmDataType = new DataInputStream(strmBytes); strmDataType.readUTF();
strmDataType.readBoolean();
x1 = strmDataType.readInt(); // Here's our data
// Read record #2
strmBytes = new ByteArrayInputStream(rec2); strmDataType = new DataInputStream(strmBytes);
strmDataType.readUTF(); strmDataType.readBoolean(); x2 = strmDataType.readInt(); // Here's our data
if (x1 == x2) // Compare record #1 and #2 return RecordComparator.EQUIVALENT; else if (x1 < x2) return RecordComparator.PRECEDES; else return RecordComparator.FOLLOWS; } catch (Exception e) { return RecordComparator.EQUIVALENT; } } T
Searching with RecordFilter (1)
enumerator cung cấp cơ chế lọc (tìm kiếm các record thỏa mãn một điều kiện nào đó). Sử dụng RecordComparator tất cả các record trong RecordStore đều được lưu trong một result set.
Dùng RecordFilter, thỏa điều kiện mới trong enumerator result set.
class SearchFilter implements RecordFilter { private String searchText = null;
public SearchFilter(String searchText) {
this.searchText = searchText.toLowerCase(); // This is the text to search for }
public boolean matches(byte[] candidate) {
String str = new String(candidate).toLowerCase();
if (searchText != null && str.indexOf(searchText) != -1) // Look for a match return true;
else
return false; } }
Class RecordFilter được gắn với một enumerator, nó dùng hàm matches() duyệt hết recordstore lấy ra những record cần tìm:
SearchFilter search = new SearchFilter("search text"); // Create a new search filter // Reference the filter when creating the result set
RecordEnumeration re = rs.enumerateRecords(search,null,false);
Searching with RecordFilter (2)
public SimpleSearch() {