TestOpenEmpty.java [plain text]
package com.sleepycat.test;
import com.sleepycat.db.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintStream;
public class TestOpenEmpty
{
private static final String FileName = "access.db";
public TestOpenEmpty()
{
}
private static void usage()
{
System.err.println("usage: TestOpenEmpty\n");
System.exit(1);
}
public static void main(String argv[])
{
try
{
TestOpenEmpty app = new TestOpenEmpty();
app.run();
}
catch (DbException dbe)
{
System.err.println("TestOpenEmpty: " + dbe.toString());
System.exit(1);
}
catch (FileNotFoundException fnfe)
{
System.err.println("TestOpenEmpty: " + fnfe.toString());
System.exit(1);
}
catch (Exception ex)
{
System.err.println("TestOpenEmpty: " + ex.toString());
System.exit(1);
}
System.exit(0);
}
static public String askForLine(InputStreamReader reader,
PrintStream out, String prompt)
{
String result = "";
while (result != null && result.length() == 0) {
out.print(prompt);
out.flush();
result = getLine(reader);
}
return result;
}
static public String getLine(InputStreamReader reader)
{
StringBuffer b = new StringBuffer();
int c;
try {
while ((c = reader.read()) != -1 && c != '\n') {
if (c != '\r')
b.append((char)c);
}
}
catch (IOException ioe) {
c = -1;
}
if (c == -1 && b.length() == 0)
return null;
else
return b.toString();
}
public void run()
throws DbException, FileNotFoundException
{
new File(FileName).delete();
try {
FileOutputStream os = new FileOutputStream(FileName);
os.write("abc".getBytes());
os.close();
}
catch (IOException ioe) { }
Db table = new Db(null, 0);
table.setErrorStream(System.err);
table.setErrorPrefix("TestOpenEmpty");
table.open(null, FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644);
InputStreamReader reader = new InputStreamReader(System.in);
for (;;) {
String line = askForLine(reader, System.out, "input> ");
if (line == null)
break;
String reversed = (new StringBuffer(line)).reverse().toString();
StringDbt key = new StringDbt(line);
StringDbt data = new StringDbt(reversed);
try
{
int err;
if ((err = table.put(null,
key, data, Db.DB_NOOVERWRITE)) == Db.DB_KEYEXIST) {
System.out.println("Key " + line + " already exists.");
}
}
catch (DbException dbe)
{
System.out.println(dbe.toString());
}
System.out.println("");
}
Dbc iterator;
iterator = table.cursor(null, 0);
StringDbt key = new StringDbt();
StringDbt data = new StringDbt();
while (iterator.get(key, data, Db.DB_NEXT) == 0)
{
System.out.println(key.getString() + " : " + data.getString());
}
iterator.close();
table.close(0);
}
static
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());
}
}
}