c# web api pdf : Bookmarks pdf software application dll windows winforms azure web forms BerkeleyDB-JE-GSG6-part703

12/7/2015
Getting Started with JE
Page 52
Chapter 6. A DPL Example
In order to illustrate DPL usage, we provide a complete working example in this chapter.
This example reads and writes inventory and vendor information for a mythical business. The
application consists of the following classes:
• Several classes used to encapsulate our application's data. See Vendor.java (page 52) and
Inventory.java (page 54).
• A convenience class used to open and close our environment and entity store. See
MyDbEnv (page 56).
• A class that loads data into the store. See ExampleDatabasePut.java (page 59).
• Finally, a class that reads data from the store. See ExampleInventoryRead.java (page 63).
Be aware that this example can be found in your JE distribution in the following location:
JE_HOME/examples/persist/gettingStarted
where JE_HOME is the location where you placed your JE distribution.
Vendor.java
The simplest class that our example wants to store contains vendor contact information. This
class contains no secondary indices so all we have to do is identify it as an entity class and
identify the field in the class used for the primary key.
In the following example, we identify the vendor data member as containing the primary key.
This data member is meant to contain a vendor's name. Because of the way we will use our
EntityStore, the value provided for this data member must be unique within the store or
runtime errors will result.
When used with the DPL, our Vendor class appears as follows. Notice that the @Entity
annotation appears immediately before the class declaration, and the @PrimaryKey
annotation appears immediately before the vendor data member declaration.
package persist.gettingStarted;
import com.sleepycat.persist.model.Entity;
import com.sleepycat.persist.model.PrimaryKey;
@Entity
public class Vendor {
private String address;
private String bizPhoneNumber;
private String city;
private String repName;
private String repPhoneNumber;
private String state;
Bookmarks pdf - 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
editing bookmarks in pdf; bookmark pdf in preview
Bookmarks pdf - 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
add bookmarks to pdf preview; how to add bookmarks to pdf files
Library Version 12.1.6.0
A DPL Example
12/7/2015
Getting Started with JE
Page 53
// Primary key is the vendor's name
// This assumes that the vendor's name is
// unique in the database.
@PrimaryKey
private String vendor;
private String zipcode;
public void setRepName(String data) {
repName = data;
}
public void setAddress(String data) {
address = data;
}
public void setCity(String data) {
city = data;
}
public void setState(String data) {
state = data;
}
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;
}
public String getRepName() {
return repName;
}
public String getAddress() {
return address;
}
public String getCity() {
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
document file. Remove bookmarks, annotations, watermark, page labels and article threads from PDF while compressing. Also a preview
add bookmark pdf; export pdf bookmarks to text file
C# PDF File Split Library: Split, seperate PDF into multiple files
Split PDF file by top level bookmarks. The following C# codes explain how to split a PDF file into multiple ones by PDF bookmarks or outlines.
how to create bookmark in pdf automatically; adding bookmarks to pdf reader
Library Version 12.1.6.0
A DPL Example
12/7/2015
Getting Started with JE
Page 54
return city;
}
public String getState() {
return state;
}
public String getZipcode() {
return zipcode;
}
public String getBusinessPhoneNumber() {
return bizPhoneNumber;
}
public String getRepPhoneNumber() {
return repPhoneNumber;
}
For this class, the vendor value is set for an individual Vendor class object by the
setVendorName() method. If our example code fails to set this value before storing the
object, the data member used to store the primary key is set to a null value. This would result
in a runtime error.
Inventory.java
Our example's Inventory class is much like our Vendor class in that it is simply used to
encapsulate data. However, in this case we want to be able to access objects two different
ways: by product SKU and by product name.
In our data set, the product SKU is required to be unique, so we use that as the primary key.
The product name, however, is not a unique value so we set this up as a secondary key.
The class appears as follows in our example:
package persist.gettingStarted;
import com.sleepycat.persist.model.Entity;
import com.sleepycat.persist.model.PrimaryKey;
import static com.sleepycat.persist.model.Relationship.*;
import com.sleepycat.persist.model.SecondaryKey;
@Entity
public class Inventory {
// Primary key is sku
@PrimaryKey
private String sku;
// Secondary key is the itemName
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Demo Code in VB.NET. The following VB.NET codes explain how to split a PDF file into multiple ones by PDF bookmarks or outlines.
create bookmarks pdf files; copy pdf bookmarks to another pdf
C# PDF File Compress Library: Compress reduce PDF size in C#.net
NET framework. Remove bookmarks, annotations, watermark, page labels and article threads from PDF while compressing. C# class demo
creating bookmarks in pdf documents; pdf bookmarks
Library Version 12.1.6.0
A DPL Example
12/7/2015
Getting Started with JE
Page 55
@SecondaryKey(relate=MANY_TO_ONE)
private String itemName;
private String category;
private String vendor;
private int vendorInventory;
private float vendorPrice;
public void setSku(String data) {
sku = data;
}
public void setItemName(String data) {
itemName = data;
}
public void setCategory(String data) {
category = data;
}
public void setVendorInventory(int data) {
vendorInventory = data;
}
public void setVendor(String data) {
vendor = data;
}
public void setVendorPrice(float data) {
vendorPrice = data;
}
public String getSku() {
return sku;
}
public String getItemName() {
return itemName;
}
public String getCategory() {
return category;
}
public int getVendorInventory() {
return vendorInventory;
}
public String getVendor() {
.NET PDF SDK - Description of All PDF Processing Control Feastures
Fully featured PDF Viewer in HTML5; Outstanding rendering of PDF documents; Full page navigation, zooming & rotation; Outlines, bookmarks, & thumbnail display;
adding bookmarks to pdf; adding bookmarks in pdf
XDoc.Word for .NET, Advanced .NET Word Processing Features
& rotation; Outlines, bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. Conversion. Word Create. Create Word from PDF; Create Word
pdf reader with bookmarks; add bookmark to pdf reader
Library Version 12.1.6.0
A DPL Example
12/7/2015
Getting Started with JE
Page 56
return vendor;
}
public float getVendorPrice() {
return vendorPrice;
}
MyDbEnv
The applications that we are building for our example both must open and close environments
and entity stores. One of our applications is writing to the entity store, so this application
needs to open the store as read-write. It also wants to be able to create the store if it does
not exist.
Our second application only reads from the store. In this case, the store should be opened as
read-only.
We perform these activities by creating a single class that is responsible for opening and
closing our store and environment. This class is shared by both our applications. To use it,
callers need to only provide the path to the environment home directory, and to indicate
whether the object is meant to be read-only. The class implementation is as follows:
package persist.gettingStarted;
import java.io.File;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.persist.EntityStore;
import com.sleepycat.persist.StoreConfig;
public class MyDbEnv {
private Environment myEnv;
private EntityStore store;
// Our constructor does nothing
public MyDbEnv() {}
// The setup() method opens the environment and store
// for us.
public void setup(File envHome, boolean readOnly)
throws DatabaseException {
EnvironmentConfig myEnvConfig = new EnvironmentConfig();
StoreConfig storeConfig = new StoreConfig();
myEnvConfig.setReadOnly(readOnly);
XDoc.Excel for .NET, Comprehensive .NET Excel Imaging Features
zooming & rotation; Outlines, bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. Excel Convert. Convert Excel to PDF; Convert Excel
how to bookmark a pdf file in acrobat; acrobat split pdf bookmark
XDoc.PowerPoint for .NET, All Mature Features Introductions
& rotation; Outlines, bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. PowerPoint Convert. Convert PowerPoint to PDF; Convert
how to bookmark a pdf document; bookmarks pdf file
Library Version 12.1.6.0
A DPL Example
12/7/2015
Getting Started with JE
Page 57
storeConfig.setReadOnly(readOnly);
// If the environment is opened for write, then we want to be 
// able to create the environment and entity store if 
// they do not exist.
myEnvConfig.setAllowCreate(!readOnly);
storeConfig.setAllowCreate(!readOnly);
// Open the environment and entity store
myEnv = new Environment(envHome, myEnvConfig);
store = new EntityStore(myEnv, "EntityStore", storeConfig);
}
// Return a handle to the entity store
public EntityStore getEntityStore() {
return store;
}
// Return a handle to the environment
public Environment getEnv() {
return myEnv;
}
// Close the store and environment.
public void close() {
if (store != null) {
try {
store.close();
} catch(DatabaseException dbe) {
System.err.println("Error closing store: " +
dbe.toString());
System.exit(-1);
}
}
if (myEnv != null) {
try {
// Finally, close the environment.
myEnv.close();
} catch(DatabaseException dbe) {
System.err.println("Error closing MyDbEnv: " +
dbe.toString());
System.exit(-1);
}
}
}
Library Version 12.1.6.0
A DPL Example
12/7/2015
Getting Started with JE
Page 58
DataAccessor.java
Now that we have implemented our data classes, we can write a class that will provide
convenient access to our primary and secondary indexes. Note that like our data classes, this
class is shared by both our example programs.
If you compare this class against our Vendor and Inventory class implementations, you will
see that the primary and secondary indices declared there are referenced by this class.
See Vendor.java (page 52) and Inventory.java (page 54) for those implementations.
package persist.gettingStarted;
import java.io.File;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.persist.EntityStore;
import com.sleepycat.persist.PrimaryIndex; 
import com.sleepycat.persist.SecondaryIndex;
public class DataAccessor {
// Open the indices
public DataAccessor(EntityStore store)
throws DatabaseException {
// Primary key for Inventory classes
inventoryBySku = store.getPrimaryIndex(
String.class, Inventory.class);
// Secondary key for Inventory classes
// Last field in the getSecondaryIndex() method must be
// the name of a class member; in this case, an Inventory.class
// data member.
inventoryByName = store.getSecondaryIndex(
inventoryBySku, String.class, "itemName");
// Primary key for Vendor class
vendorByName = store.getPrimaryIndex(
String.class, Vendor.class);
}
// Inventory Accessors
PrimaryIndex<String,Inventory> inventoryBySku;
SecondaryIndex<String,String,Inventory> inventoryByName;
// Vendor Accessors
PrimaryIndex<String,Vendor> vendorByName;
Library Version 12.1.6.0
A DPL Example
12/7/2015
Getting Started with JE
Page 59
ExampleDatabasePut.java
Our example reads inventory and vendor information from flat text files, encapsulates this
data in objects of the appropriate type, and then writes each object to an EntityStore.
To begin, we import the Java classes that our example needs. Most of the imports are related
to reading the raw data from flat text files and breaking them apart for usage with our data
classes. We also import classes from the JE package, but we do not actually import any classes
from the DPL. The reason why is because we have placed almost all of our DPL work off into
other classes, so there is no need for direct usage of those APIs here.
package persist.gettingStarted;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import com.sleepycat.je.DatabaseException; 
Now we can begin the class itself. Here we set default paths for the on-disk resources that we
require (the environment home, and the location of the text files containing our sample data).
We also declare DataAccessor and MyDbEnv members. We describe these classes and show
their implementation in DataAccessor.java (page 58) and MyDbEnv (page 56).
public class ExampleDatabasePut {
private static File myDbEnvPath = new File("/tmp/JEDB");
private static File inventoryFile = new File("./inventory.txt");
private static File vendorsFile = new File("./vendors.txt");
private DataAccessor da;
// Encapsulates the environment and data store.
private static MyDbEnv myDbEnv = new MyDbEnv();
Next, we provide our usage() method. The command line options provided there are
necessary only if the default values to the on-disk resources are not sufficient.
private static void usage() {
System.out.println("ExampleDatabasePut [-h <env directory>]");
System.out.println("      [-i <inventory file>]");
System.out.println("      [-v <vendors file>]");
System.exit(-1);
Our main() method is also reasonably self-explanatory. We simply instantiate an
ExampleDatabasePut object there and then call its run() method. We also provide a top-
level try block there for any exceptions that might be thrown during runtime.
Library Version 12.1.6.0
A DPL Example
12/7/2015
Getting Started with JE
Page 60
Notice that the finally statement in the top-level try block calls MyDbEnv.close(). This
method closes our EntityStore and Environment objects. By placing it here in the finally
statement, we can make sure that our store and environment are always cleanly closed.
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.out.println("Exception: " + e.toString());
e.printStackTrace();
} finally {
myDbEnv.close();
}
System.out.println("All done.");
Our run() method does four things. It calls MyDbEnv.setup(), which opens our Environment
and EntityStore. It then instantiates a DataAccessor object, which we will use to write
data to the store. It calls loadVendorsDb() which loads all of the vendor information. And
then it calls loadInventoryDb() which loads all of the inventory information.
Notice that the MyDbEnv object is being setup as read-write. This results in the EntityStore
being opened for transactional support. (See MyDbEnv (page 56) for implementation
details.)
private void run(String args[])
throws DatabaseException {
// Parse the arguments list
parseArgs(args);
myDbEnv.setup(myDbEnvPath,  // Path to the environment home 
false);       // Environment read-only?
// Open the data accessor. This is used to store
// persistent objects.
da = new DataAccessor(myDbEnv.getEntityStore());
System.out.println("loading vendors db....");
loadVendorsDb();
System.out.println("loading inventory db....");
loadInventoryDb();
We can now implement the loadVendorsDb() method. This method is responsible for reading
the vendor contact information from the appropriate flat-text file, populating Vendor class
objects with the data and then writing it to the EntityStore. As explained above, each
Library Version 12.1.6.0
A DPL Example
12/7/2015
Getting Started with JE
Page 61
individual object is written with transactional support. However, because a transaction handle
is not explicitly used, the write is performed using auto-commit. This happens because the
EntityStore was opened to support transactions.
To actually write each class to the EntityStore, we simply call the PrimaryIndex.put()
method for the Vendor entity instance. We obtain this method from our DataAccessor class.
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 vendors = loadFile(vendorsFile, 8);
// Now load the data into the store.
for (int i = 0; i < vendors.size(); i++) {
String[] sArray = (String[])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]);
// Put it in the store.
da.vendorByName.put(theVendor);
}
Now we can implement our loadInventoryDb() method. This does exactly the same thing as
the loadVendorsDb() method.
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 inventoryArray = loadFile(inventoryFile, 6);
// Now load the data into the store. The item's sku is the
// key, and the data is an Inventory class object.
for (int i = 0; i < inventoryArray.size(); i++) {
String[] sArray = (String[])inventoryArray.get(i);
Documents you may be interested
Documents you may be interested