Files
mongo/examples/java/com/wiredtiger/examples/ex_cursor.java
2016-01-01 16:37:39 -05:00

243 lines
7.0 KiB
Java

/*-
* Public Domain 2014-2016 MongoDB, Inc.
* Public Domain 2008-2014 WiredTiger, Inc.
*
* This is free and unencumbered software released into the public domain.
*
* Anyone is free to copy, modify, publish, use, compile, sell, or
* distribute this software, either in source code form or as a compiled
* binary, for any purpose, commercial or non-commercial, and by any
* means.
*
* In jurisdictions that recognize copyright laws, the author or authors
* of this software dedicate any and all copyright interest in the
* software to the public domain. We make this dedication for the benefit
* of the public at large and to the detriment of our heirs and
* successors. We intend this dedication to be an overt act of
* relinquishment in perpetuity of all present and future rights to this
* software under copyright law.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* ex_cursor.java
* This is an example demonstrating some cursor types and operations.
*/
package com.wiredtiger.examples;
import com.wiredtiger.db.*;
import java.io.*;
import java.util.*;
public class ex_cursor {
public static String home;
/*! [cursor next] */
public static int
cursor_forward_scan(Cursor cursor)
throws WiredTigerException
{
String key, value;
int ret;
while ((ret = cursor.next()) == 0) {
key = cursor.getKeyString();
value = cursor.getValueString();
}
return (ret);
}
/*! [cursor next] */
/*! [cursor prev] */
public static int
cursor_reverse_scan(Cursor cursor)
throws WiredTigerException
{
String key, value;
int ret;
while ((ret = cursor.prev()) == 0) {
key = cursor.getKeyString();
value = cursor.getValueString();
}
return (ret);
}
/*! [cursor prev] */
/*! [cursor reset] */
public static int
cursor_reset(Cursor cursor)
throws WiredTigerException
{
return (cursor.reset());
}
/*! [cursor reset] */
/*! [cursor search] */
public static int
cursor_search(Cursor cursor)
throws WiredTigerException
{
String value;
int ret;
cursor.putKeyString("foo");
if ((ret = cursor.search()) != 0)
value = cursor.getValueString();
return (ret);
}
/*! [cursor search] */
/*! [cursor search near] */
public static int
cursor_search_near(Cursor cursor)
throws WiredTigerException
{
String key, value;
SearchStatus exact;
key = "foo";
cursor.putKeyString(key);
exact = cursor.search_near();
if (exact == SearchStatus.SMALLER)
/* Returned key smaller than search key */
key = cursor.getKeyString();
else if (exact == SearchStatus.LARGER)
/* Returned key larger than search key */
key = cursor.getKeyString();
/* Else exact match found, and key already set */
value = cursor.getValueString();
return (0);
}
/*! [cursor search near] */
/*! [cursor insert] */
public static int
cursor_insert(Cursor cursor)
throws WiredTigerException
{
cursor.putKeyString("foo");
cursor.putValueString("bar");
return (cursor.insert());
}
/*! [cursor insert] */
/*! [cursor update] */
public static int
cursor_update(Cursor cursor)
throws WiredTigerException
{
cursor.putKeyString("foo");
cursor.putValueString("newbar");
return (cursor.update());
}
/*! [cursor update] */
/*! [cursor remove] */
public static int
cursor_remove(Cursor cursor)
throws WiredTigerException
{
cursor.putKeyString("foo");
return (cursor.remove());
}
/*! [cursor remove] */
public static int
cursorExample()
throws WiredTigerException
{
Connection conn;
Cursor cursor;
Session session;
int ret;
/*
* Create a clean test directory for this run of the test program if the
* environment variable isn't already set (as is done by make check).
*/
if (System.getenv("WIREDTIGER_HOME") == null) {
home = "WT_HOME";
try {
Process proc = Runtime.getRuntime().exec("/bin/rm -rf WT_HOME");
BufferedReader br = new BufferedReader(
new InputStreamReader(proc.getInputStream()));
while(br.ready())
System.out.println(br.readLine());
br.close();
proc.waitFor();
new File("WT_HOME").mkdir();
} catch (Exception ex) {
System.err.println("Exception: " + ex);
return (1);
}
} else
home = null;
conn = wiredtiger.open(home, "create,statistics=(fast)");
session = conn.open_session(null);
ret = session.create("table:world",
"key_format=r,value_format=5sii," +
"columns=(id,country,population,area)");
/*! [open cursor #1] */
cursor = session.open_cursor("table:world", null, null);
/*! [open cursor #1] */
/*! [open cursor #2] */
cursor = session.open_cursor("table:world(country,population)", null, null);
/*! [open cursor #2] */
/*! [open cursor #3] */
cursor = session.open_cursor("statistics:", null, null);
/*! [open cursor #3] */
/* Create a simple string table to illustrate basic operations. */
ret = session.create("table:map", "key_format=S,value_format=S");
cursor = session.open_cursor("table:map", null, null);
ret = cursor_insert(cursor);
ret = cursor_reset(cursor);
ret = cursor_forward_scan(cursor);
ret = cursor_reset(cursor);
ret = cursor_reverse_scan(cursor);
ret = cursor_search_near(cursor);
ret = cursor_update(cursor);
ret = cursor_remove(cursor);
ret = cursor.close();
/* Note: closing the connection implicitly closes open session(s). */
if ((ret = conn.close(null)) != 0)
System.err.println("Error connecting to " + home + ": " +
wiredtiger.wiredtiger_strerror(ret));
return (ret);
}
public static void
main(String[] argv)
{
try {
System.exit(cursorExample());
}
catch (WiredTigerException wte) {
System.err.println("Exception: " + wte);
wte.printStackTrace();
System.exit(1);
}
}
}