package com.sleepycat.test;
import com.sleepycat.db.*;
public class CallbackTest
{
public static void main(String args[])
{
try {
Db db = new Db(null, 0);
db.setBtreeCompare(new BtreeCompare());
db.open(null, "test.db", "", Db.DB_BTREE, Db.DB_CREATE, 0666);
StringDbt[] keys = new StringDbt[10];
StringDbt[] datas = new StringDbt[10];
for (int i = 0; i<10; i++) {
int val = (i * 3) % 10;
keys[i] = new StringDbt("key" + val);
datas[i] = new StringDbt("data" + val);
System.out.println("put " + val);
db.put(null, keys[i], datas[i], 0);
}
}
catch (DbException dbe) {
System.err.println("FAIL: " + dbe);
}
catch (java.io.FileNotFoundException fnfe) {
System.err.println("FAIL: " + fnfe);
}
}
}
class BtreeCompare
implements DbBtreeCompare
{
public int compare(Db db, Dbt dbt1, Dbt dbt2)
{
System.out.println("compare function called");
byte b1[] = dbt1.getData();
byte b2[] = dbt2.getData();
System.out.println(" " + (new String(b1)) + ", " + (new String(b2)));
int len1 = b1.length;
int len2 = b2.length;
if (len1 != len2)
return (len1 < len2) ? 1 : -1;
int value = 1;
for (int i=0; i<len1; i++) {
if (b1[i] != b2[i])
return (b1[i] < b2[i]) ? value : -value;
value *= -1;
}
return 0;
}
}
class StringDbt extends Dbt
{
StringDbt()
{
setFlags(Db.DB_DBT_MALLOC); }
StringDbt(String value)
{
setString(value);
setFlags(Db.DB_DBT_MALLOC); }
void setString(String value)
{
setData(value.getBytes());
setSize(value.length());
}
String getString()
{
return new String(getData(), 0, getSize());
}
}