summaryrefslogtreecommitdiff
path: root/db-4.8.30/examples_java/src/db/GettingStarted/ExampleDatabaseRead.java
diff options
context:
space:
mode:
Diffstat (limited to 'db-4.8.30/examples_java/src/db/GettingStarted/ExampleDatabaseRead.java')
-rw-r--r--db-4.8.30/examples_java/src/db/GettingStarted/ExampleDatabaseRead.java205
1 files changed, 205 insertions, 0 deletions
diff --git a/db-4.8.30/examples_java/src/db/GettingStarted/ExampleDatabaseRead.java b/db-4.8.30/examples_java/src/db/GettingStarted/ExampleDatabaseRead.java
new file mode 100644
index 0000000..dbaab60
--- /dev/null
+++ b/db-4.8.30/examples_java/src/db/GettingStarted/ExampleDatabaseRead.java
@@ -0,0 +1,205 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2004-2009 Oracle. All rights reserved.
+ *
+ * $Id$
+ */
+
+// File: ExampleDatabaseRead
+
+package db.GettingStarted;
+
+import com.sleepycat.bind.EntryBinding;
+import com.sleepycat.bind.serial.SerialBinding;
+import com.sleepycat.bind.tuple.TupleBinding;
+import com.sleepycat.db.Cursor;
+import com.sleepycat.db.DatabaseEntry;
+import com.sleepycat.db.DatabaseException;
+import com.sleepycat.db.LockMode;
+import com.sleepycat.db.OperationStatus;
+import com.sleepycat.db.SecondaryCursor;
+
+import java.io.IOException;
+
+public class ExampleDatabaseRead {
+
+ private static String myDbsPath = "./";
+
+ // Encapsulates the database environment and databases.
+ private static MyDbs myDbs = new MyDbs();
+
+ private static TupleBinding inventoryBinding;
+ private static EntryBinding vendorBinding;
+
+ // The item to locate if the -s switch is used
+ private static String locateItem;
+
+ private static void usage() {
+ System.out.println("ExampleDatabaseRead [-h <env directory>]" +
+ "[-s <item to locate>]");
+ System.exit(-1);
+ }
+
+ public static void main(String args[]) {
+ ExampleDatabaseRead edr = new ExampleDatabaseRead();
+ try {
+ edr.run(args);
+ } catch (DatabaseException dbe) {
+ System.err.println("ExampleDatabaseRead: " + dbe.toString());
+ dbe.printStackTrace();
+ } finally {
+ myDbs.close();
+ }
+ System.out.println("All done.");
+ }
+
+ private void run(String args[])
+ throws DatabaseException {
+ // Parse the arguments list
+ parseArgs(args);
+
+ myDbs.setup(myDbsPath);
+
+ // Setup our bindings.
+ inventoryBinding = new InventoryBinding();
+ vendorBinding =
+ new SerialBinding(myDbs.getClassCatalog(),
+ Vendor.class);
+
+ if (locateItem != null) {
+ showItem();
+ } else {
+ showAllInventory();
+ }
+ }
+
+ private void showItem() throws DatabaseException {
+
+ SecondaryCursor secCursor = null;
+ try {
+ // searchKey is the key that we want to find in the
+ // secondary db.
+ DatabaseEntry searchKey =
+ new DatabaseEntry(locateItem.getBytes("UTF-8"));
+
+ // foundKey and foundData are populated from the primary
+ // entry that is associated with the secondary db key.
+ DatabaseEntry foundKey = new DatabaseEntry();
+ DatabaseEntry foundData = new DatabaseEntry();
+
+ // open a secondary cursor
+ secCursor =
+ myDbs.getNameIndexDB().openSecondaryCursor(null, null);
+
+ // Search for the secondary database entry.
+ OperationStatus retVal =
+ secCursor.getSearchKey(searchKey, foundKey,
+ foundData, LockMode.DEFAULT);
+
+ // Display the entry, if one is found. Repeat until no more
+ // secondary duplicate entries are found
+ while(retVal == OperationStatus.SUCCESS) {
+ Inventory theInventory =
+ (Inventory)inventoryBinding.entryToObject(foundData);
+ displayInventoryRecord(foundKey, theInventory);
+ retVal = secCursor.getNextDup(searchKey, foundKey,
+ foundData, LockMode.DEFAULT);
+ }
+ } catch (Exception e) {
+ System.err.println("Error on inventory secondary cursor:");
+ System.err.println(e.toString());
+ e.printStackTrace();
+ } finally {
+ if (secCursor != null) {
+ secCursor.close();
+ }
+ }
+ }
+
+ private void showAllInventory()
+ throws DatabaseException {
+ // Get a cursor
+ Cursor cursor = myDbs.getInventoryDB().openCursor(null, null);
+
+ // DatabaseEntry objects used for reading records
+ DatabaseEntry foundKey = new DatabaseEntry();
+ DatabaseEntry foundData = new DatabaseEntry();
+
+ try { // always want to make sure the cursor gets closed
+ while (cursor.getNext(foundKey, foundData,
+ LockMode.DEFAULT) == OperationStatus.SUCCESS) {
+ Inventory theInventory =
+ (Inventory)inventoryBinding.entryToObject(foundData);
+ displayInventoryRecord(foundKey, theInventory);
+ }
+ } catch (Exception e) {
+ System.err.println("Error on inventory cursor:");
+ System.err.println(e.toString());
+ e.printStackTrace();
+ } finally {
+ cursor.close();
+ }
+ }
+
+ private void displayInventoryRecord(DatabaseEntry theKey,
+ Inventory theInventory)
+ throws DatabaseException {
+
+ String theSKU = new String(theKey.getData());
+ System.out.println(theSKU + ":");
+ System.out.println("\t " + theInventory.getItemName());
+ System.out.println("\t " + theInventory.getCategory());
+ System.out.println("\t " + theInventory.getVendor());
+ System.out.println("\t\tNumber in stock: " +
+ theInventory.getVendorInventory());
+ System.out.println("\t\tPrice per unit: " +
+ theInventory.getVendorPrice());
+ System.out.println("\t\tContact: ");
+
+ DatabaseEntry searchKey = null;
+ try {
+ searchKey =
+ new DatabaseEntry(theInventory.getVendor().getBytes("UTF-8"));
+ } catch (IOException willNeverOccur) {}
+ DatabaseEntry foundVendor = new DatabaseEntry();
+
+ if (myDbs.getVendorDB().get(null, searchKey, foundVendor,
+ LockMode.DEFAULT) != OperationStatus.SUCCESS) {
+ System.out.println("Could not find vendor: " +
+ theInventory.getVendor() + ".");
+ System.exit(-1);
+ } else {
+ Vendor theVendor =
+ (Vendor)vendorBinding.entryToObject(foundVendor);
+ System.out.println("\t\t " + theVendor.getAddress());
+ System.out.println("\t\t " + theVendor.getCity() + ", " +
+ theVendor.getState() + " " + theVendor.getZipcode());
+ System.out.println("\t\t Business Phone: " +
+ theVendor.getBusinessPhoneNumber());
+ System.out.println("\t\t Sales Rep: " +
+ theVendor.getRepName());
+ System.out.println("\t\t " +
+ theVendor.getRepPhoneNumber());
+ }
+ }
+
+ protected ExampleDatabaseRead() {}
+
+ private static void parseArgs(String args[]) {
+ for(int i = 0; i < args.length; ++i) {
+ if (args[i].startsWith("-")) {
+ switch(args[i].charAt(1)) {
+ case 'h':
+ myDbsPath = new String(args[++i]);
+ break;
+ case 's':
+ locateItem = new String(args[++i]);
+ break;
+ default:
+ usage();
+ }
+ }
+ }
+ }
+}