mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 05:52:27 +01:00
83 lines
2.2 KiB
Java
83 lines
2.2 KiB
Java
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.set_bt_compare(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
|
|
{
|
|
/* A weird comparator, for example.
|
|
* In fact, it may not be legal, since it's not monotonically increasing.
|
|
*/
|
|
public int bt_compare(Db db, Dbt dbt1, Dbt dbt2)
|
|
{
|
|
System.out.println("compare function called");
|
|
byte b1[] = dbt1.get_data();
|
|
byte b2[] = dbt2.get_data();
|
|
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()
|
|
{
|
|
set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
|
|
}
|
|
|
|
StringDbt(String value)
|
|
{
|
|
setString(value);
|
|
set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
|
|
}
|
|
|
|
void setString(String value)
|
|
{
|
|
set_data(value.getBytes());
|
|
set_size(value.length());
|
|
}
|
|
|
|
String getString()
|
|
{
|
|
return new String(get_data(), 0, get_size());
|
|
}
|
|
}
|