Library Version 12.1.6.0
Database Records
12/7/2015
Getting Started with JE
Page 102
public void setZipcode(String data) {
zipcode = data;
}
public void setBusinessPhoneNumber(String data) {
bizPhoneNumber = data;
}
public void setRepPhoneNumber(String data) {
repPhoneNumber = data;
}
public void setVendorName(String data) {
vendor = data;
}
...
// Corresponding getter methods omitted for brevity.
// See examples/je/gettingStarted/Vendor.java
// for a complete implementation of this class.
Because we will not be using serialization to convert our Inventory objects to a
DatabaseEntry object, we need a custom tuple binding:
Example 8.3. InventoryBinding.java
// File InventoryBinding.java
package je.gettingStarted;
import com.sleepycat.bind.tuple.TupleBinding;
import com.sleepycat.bind.tuple.TupleInput;
import com.sleepycat.bind.tuple.TupleOutput;
public class InventoryBinding extends TupleBinding {
// Implement this abstract method. Used to convert
// a DatabaseEntry to an Inventory object.
public Object entryToObject(TupleInput ti) {
String sku = ti.readString();
String itemName = ti.readString();
String category = ti.readString();
String vendor = ti.readString();
int vendorInventory = ti.readInt();
float vendorPrice = ti.readFloat();
Pdf bookmark - add, remove, update PDF bookmarks in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your C# Project with Rapid PDF Internal Navigation Via Bookmark and Outline
bookmark pdf reader; create bookmark pdf
Pdf bookmark - VB.NET PDF bookmark library: add, remove, update PDF bookmarks in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your VB.NET Project with Rapid PDF Internal Navigation Via Bookmark and Outline
create pdf bookmarks from word; convert word pdf bookmarks
Library Version 12.1.6.0
Database Records
12/7/2015
Getting Started with JE
Page 103
Inventory inventory = new Inventory();
inventory.setSku(sku);
inventory.setItemName(itemName);
inventory.setCategory(category);
inventory.setVendor(vendor);
inventory.setVendorInventory(vendorInventory);
inventory.setVendorPrice(vendorPrice);
return inventory;
}
// Implement this abstract method. Used to convert a
// Inventory object to a DatabaseEntry object.
public void objectToEntry(Object object, TupleOutput to) {
Inventory inventory = (Inventory)object;
to.writeString(inventory.getSku());
to.writeString(inventory.getItemName());
to.writeString(inventory.getCategory());
to.writeString(inventory.getVendor());
to.writeInt(inventory.getVendorInventory());
to.writeFloat(inventory.getVendorPrice());
}
In order to store the data identified above, we write the ExampleDatabasePut application.
This application loads the inventory and vendor databases for you.
Inventory information is stored in a Database dedicated for that purpose. The key for each
such record is a product SKU. The inventory data stored in this database are objects of the
Inventory class (see Inventory.java (page 100) for more information). ExampleDatabasePut
loads the inventory database as follows:
1. Reads the inventory data from a flat text file prepared in advance for this purpose.
2. Uses java.lang.String to create a key based on the item's SKU.
3. Uses an Inventory class instance for the record data. This object is stored on a
DatabaseEntry object using InventoryBinding, a custom tuple binding that we
implemented above.
4. Saves each record to the inventory database.
Vendor information is also stored in a Database dedicated for that purpose. The vendor data
stored in this database are objects of the Vendor class (see Vendor.java (page 101) for more
information). To load this Database, ExampleDatabasePut does the following:
1. Reads the vendor data from a flat text file prepared in advance for this purpose.
2. Uses the vendor's name as the record's key.
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
C#.NET PDF file & pages edit, C#.NET PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET search text in PDF, C#.NET edit PDF bookmark, C#.NET edit
create pdf bookmarks; add bookmarks to pdf file
C# PDF Library SDK to view, edit, convert, process PDF file for C#
RasterEdge PDF SDK for .NET package offers robust APIs for editing PDF document hyperlink (url) and quick navigation link in PDF bookmark.
export pdf bookmarks to text file; add bookmarks pdf
Library Version 12.1.6.0
Database Records
12/7/2015
Getting Started with JE
Page 104
3. Uses a Vendor class instance for the record data. This object is stored on a
DatabaseEntry object using com.sleepycat.bind.serial.SerialBinding.
Example 8.4. Stored Class Catalog Management with MyDbEnv
Before we can write ExampleDatabasePut, we need to update MyDbEnv.java to support the
class catalogs that we need for this application.
To do this, we start by importing an additional class to support stored class catalogs:
// File MyDbEnv.java
package je.gettingStarted;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.je.Environment;
import java.io.File;
import com.sleepycat.bind.serial.StoredClassCatalog; 
We also need to add two additional private data members to this class. One supports the
database used for the class catalog, and the other is used as a handle for the class catalog
itself.
public class MyDbEnv {
private Environment myEnv;
private Database vendorDb;
private Database inventoryDb;
private Database classCatalogDb;
// Needed for object serialization
private StoredClassCatalog classCatalog;
public MyDbEnv() {} 
Next we need to update the MyDbEnv.setup() method to open the class catalog database and
create the class catalog.
public void setup(File envHome, boolean readOnly)
throws DatabaseException {
...
// Database and environment configuration omitted for brevity
...
// Instantiate the Environment. This opens it and also possibly
// creates it.
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Split PDF document by PDF bookmark and outlines in VB.NET. Independent component for splitting PDF document in preview without using external PDF control.
bookmarks pdf reader; bookmark page in pdf
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
key. Quick to remove watermark and save PDF text, image, table, hyperlink and bookmark to Word without losing format. Powerful components
bookmarks in pdf reader; split pdf by bookmark
Library Version 12.1.6.0
Database Records
12/7/2015
Getting Started with JE
Page 105
myEnv = new Environment(envHome, myEnvConfig);
// Now create and open our databases.
vendorDb = myEnv.openDatabase(null, "VendorDB", myDbConfig);
inventoryDb = myEnv.openDatabase(null, "InventoryDB", myDbConfig);
// Open the class catalog db. This is used to
// optimize class serialization.
classCatalogDb =
myEnv.openDatabase(null,
"ClassCatalogDB",
myDbConfig);
// Create our class catalog
classCatalog = new StoredClassCatalog(classCatalogDb);
Next we need a getter method to return the class catalog. Note that we do not provide a
getter for the catalog database itself – our application has no need for that.
// Getter methods
public Environment getEnvironment() {
return myEnv;
}
public Database getVendorDB() {
return vendorDb;
}
public Database getInventoryDB() {
return inventoryDb;
}
public StoredClassCatalog getClassCatalog() {
return classCatalog;
Finally, we need to update the MyDbEnv.close() method to close the class catalog database.
// Close the environment
public void close() {
if (myEnv != null) {
try {
vendorDb.close();
inventoryDb.close();
classCatalogDb.close()
myEnv.close();
} catch(DatabaseException dbe) {
System.err.println("Error closing MyDbEnv: " +
dbe.toString());
C# Create PDF from Word Library to convert docx, doc to PDF in C#.
Able to get word count in PDF pages. Change Word hyperlink to PDF hyperlink and bookmark. Free online Word to PDF converter without email.
edit pdf bookmarks; how to add bookmarks on pdf
How to C#: Basic SDK Concept of XDoc.PDF for .NET
XDoc.PDF for .NET allows C# developers to edit hyperlink of PDF document, including editing PDF url links and quick navigation link in bookmark/outline.
how to add bookmark in pdf; bookmark template pdf
Library Version 12.1.6.0
Database Records
12/7/2015
Getting Started with JE
Page 106
System.exit(-1);
}
}
}
}
So far we have identified the data that we want to store in our databases and how we will
convert that data in and out of DatabaseEntry objects for database storage. We have also
updated MyDbEnv to manage our databases for us. Now we write ExampleDatabasePut to
actually put the inventory and vendor data into their respective databases. Because of the
work that we have done so far, this application is actually fairly simple to write.
Example 8.5. ExampleDatabasePut.java
First we need the usual series of import statements:
//File ExampleDatabasePut.java
package je.gettingStarted;
// Bind classes used to move class objects in an out of byte arrays.
import com.sleepycat.bind.EntryBinding;
import com.sleepycat.bind.serial.SerialBinding;
import com.sleepycat.bind.tuple.TupleBinding;
// Standard JE database imports
import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.DatabaseException;
// Most of this is used for loading data from a text file for storage
// in the databases.
import java.io.File;
import java.io.FileInputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
Next comes the class declaration and the private data members that we need for this class.
Most of these are setting up default values for the program.
Note that two DatabaseEntry objects are instantiated here. We will reuse these for every
database operation that this program performs. Also a MyDbEnv object is instantiated here.
We can do this because its constructor never throws an exception. See Stored Class Catalog
Management with MyDbEnv (page 104) for its implementation details.
Finally, the inventory.txt and vendors.txt file can be found in the GettingStarted
examples directory along with the classes described in this extended example.
public class ExampleDatabasePut {
VB.NET PDF - WPF PDF Viewer for VB.NET Program
C#.NET PDF file & pages edit, C#.NET PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET search text in PDF, C#.NET edit PDF bookmark, C#.NET edit
add bookmarks to pdf reader; how to add a bookmark in pdf
VB.NET Create PDF from Word Library to convert docx, doc to PDF in
Ability to get word count of PDF pages. Change Word hyperlink to PDF hyperlink and bookmark. Free online Word to PDF converter without email.
adding bookmarks in pdf; pdf bookmarks
Library Version 12.1.6.0
Database Records
12/7/2015
Getting Started with JE
Page 107
private static File myDbEnvPath = new File("/tmp/JEDB");
private static File inventoryFile = new File("./inventory.txt");
private static File vendorsFile = new File("./vendors.txt");
// DatabaseEntries used for loading records
private static DatabaseEntry theKey = new DatabaseEntry();
private static DatabaseEntry theData = new DatabaseEntry();
// Encapsulates the environment and databases.
private static MyDbEnv myDbEnv = new MyDbEnv();
Next comes the usage() and main() methods. Notice the exception handling in the main()
method. This is the only place in the application where we catch exceptions. For this reason,
we must catch DatabaseException which is thrown by the com.sleepycat.je.* classes.
Also notice the call to MyDbEnv.close() in the finally block. This is the only place in the
application where MyDbEnv.close() is called. MyDbEnv.close() is responsible for closing the
Environment and all open Database handles for you.
private static void usage() {
System.out.println("ExampleDatabasePut [-h <env directory>]");
System.out.println("    [-s <selections file>]");
System.out.println("    [-v <vendors file>]");
System.exit(-1);
}
public static void main(String args[]) {
ExampleDatabasePut edp = new ExampleDatabasePut();
try {
edp.run(args);
} catch (DatabaseException dbe) {
System.err.println("ExampleDatabasePut: " + dbe.toString());
dbe.printStackTrace();
} catch (Exception e) {
System.err.println("Exception: " + e.toString());
e.printStackTrace();
} finally {
myDbEnv.close();
}
System.out.println("All done.");
Next we write the ExampleDatabasePut.run() method. This method is responsible for
initializing all objects. Because our environment and databases are all opened using the
MyDbEnv.setup() method, ExampleDatabasePut.run() method is only responsible for
calling MyDbEnv.setup() and then calling the ExampleDatabasePut methods that actually
load the databases.
private void run(String args[]) throws DatabaseException {
// Parse the arguments list
Library Version 12.1.6.0
Database Records
12/7/2015
Getting Started with JE
Page 108
parseArgs(args);
myDbEnv.setup(myDbEnvPath, // path to the environment home
false);      // is this environment read-only?
System.out.println("loading vendors db.");
loadVendorsDb();
System.out.println("loading inventory db.");
loadInventoryDb();
This next method loads the vendor database. This method uses serialization to convert the
Vendor object to a DatabaseEntry object.
private void loadVendorsDb() 
throws DatabaseException {
// loadFile opens a flat-text file that contains our data
// and loads it into a list for us to work with. The integer
// parameter represents the number of fields expected in the
// file.
List<String[]> vendors = loadFile(vendorsFile, 8);
// Now load the data into the database. The vendor's name is the
// key, and the data is a Vendor class object.
// Need a serial binding for the data
EntryBinding dataBinding =
new SerialBinding(myDbEnv.getClassCatalog(), Vendor.class);
for (int i = 0; i < vendors.size(); i++) {
String[] sArray = vendors.get(i);
Vendor theVendor = new Vendor();
theVendor.setVendorName(sArray[0]);
theVendor.setAddress(sArray[1]);
theVendor.setCity(sArray[2]);
theVendor.setState(sArray[3]);
theVendor.setZipcode(sArray[4]);
theVendor.setBusinessPhoneNumber(sArray[5]);
theVendor.setRepName(sArray[6]);
theVendor.setRepPhoneNumber(sArray[7]);
// The key is the vendor's name.
// ASSUMES THE VENDOR'S NAME IS UNIQUE!
String vendorName = theVendor.getVendorName();
try {
theKey = new DatabaseEntry(vendorName.getBytes("UTF-8"));
} catch (IOException willNeverOccur) {}
// Convert the Vendor object to a DatabaseEntry object
Library Version 12.1.6.0
Database Records
12/7/2015
Getting Started with JE
Page 109
// using our SerialBinding
dataBinding.objectToEntry(theVendor, theData);
// Put it in the database. These puts are transactionally
// protected (we're using autocommit).
myDbEnv.getVendorDB().put(null, theKey, theData);
}
Now load the inventory database. This method uses our custom tuple binding (see
InventoryBinding.java (page 102)) to convert the Inventory object to a DatabaseEntry
object.
private void loadInventoryDb() 
throws DatabaseException {
// loadFile opens a flat-text file that contains our data
// and loads it into a list for us to work with. The integer
// parameter represents the number of fields expected in the
// file.
List<String[]> inventoryArray = loadFile(inventoryFile, 6);
// Now load the data into the database. The item's sku is the
// key, and the data is an Inventory class object.
// Need a tuple binding for the Inventory class.
TupleBinding inventoryBinding = new InventoryBinding();
for (int i = 0; i < inventoryArray.size(); i++) {
String[] sArray = inventoryArray.get(i);
String sku = sArray[1];
try {
theKey = new DatabaseEntry(sku.getBytes("UTF-8"));
} catch (IOException willNeverOccur) {}
Inventory theInventory = new Inventory();
theInventory.setItemName(sArray[0]);
theInventory.setSku(sArray[1]);
theInventory.setVendorPrice(
(new Float(sArray[2])).floatValue());
theInventory.setVendorInventory(
(new Integer(sArray[3])).intValue());
theInventory.setCategory(sArray[4]);
theInventory.setVendor(sArray[5]);
// Place the Vendor object on the DatabaseEntry object using
// our the tuple binding we implemented in 
// InventoryBinding.java
inventoryBinding.objectToEntry(theInventory, theData);
Library Version 12.1.6.0
Database Records
12/7/2015
Getting Started with JE
Page 110
// Put it in the database.
myDbEnv.getInventoryDB().put(null, theKey, theData);
}
}
The remainder of this application provides utility methods to read a flat text file into an array
of strings and parse the command line options. From the perspective of this document, these
things are relatively uninteresting. You can see how they are implemented by looking at:
JE_HOME/examples/je/gettingStarted/ExampleDataPut.java 
where JE_HOME is the location where you placed your JE distribution.
private static void parseArgs(String args[]) {
// Implementation omitted for brevity.
}
private List loadFile(File theFile, int numFields) {
List<String[]> records = new ArrayList<String[]>();
// Implementation omitted for brevity.
return records;
}
protected ExampleDatabasePut() {}
12/7/2015
Getting Started with JE
Page 111
Chapter 9. Using Cursors
Cursors provide a mechanism by which you can iterate over the records in a database. Using
cursors, you can get, put, and delete database records. If a database allows duplicate records,
then cursors are the only mechanism by which you can access anything other than the first
duplicate for a given key.
This chapter introduces cursors. It explains how to open and close them, how to use them to
modify databases, and how to use them with duplicate records.
Opening and Closing Cursors
To use a cursor, you must open it using the Database.openCursor() method. When you
open a cursor, you can optionally pass it a CursorConfig object to set cursor properties. The
cursor properties that you can set allows you to determine whether the cursor will perform
committed or uncommitted reads. See the Berkeley DB, Java Edition Getting Started with
Transaction Processing guide for more information.
For example:
package je.gettingStarted;
import com.sleepycat.je.Cursor;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.Environment;
import java.io.File;
...
Environment myDbEnvironment = null;
Database myDatabase = null;
Cursor myCursor = null;
try {
myDbEnvironment = new Environment(new File("/export/dbEnv"), null);
myDatabase = myDbEnvironment.openDatabase(null, "myDB", null);
myCursor = myDatabase.openCursor(null, null);
} catch (DatabaseException dbe) {
// Exception handling goes here ...
}
To close the cursor, call the Cursor.close() method. Note that if you close a database that
has cursors open in it, then it will throw an exception and close any open cursors for you. For
best results, close your cursors from within a finally block. However, it is recommended that
you always close all cursor handles immediately after their use to ensure concurrency and to
release resources such as page locks.
Documents you may be interested
Documents you may be interested