je/docs/collections/tutorial/addingdatabaseitems.html

230 lines
8.9 KiB
HTML
Raw Permalink Normal View History

2021-06-06 17:46:45 +00:00
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Adding Database Items</title>
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
<link rel="start" href="index.html" title="Berkeley DB Java Edition Collections Tutorial" />
<link rel="up" href="BasicProgram.html" title="Chapter 2.  The Basic Program" />
<link rel="prev" href="usingtransactions.html" title="Using Transactions" />
<link rel="next" href="retrievingdatabaseitems.html" title="Retrieving Database Items" />
</head>
<body>
<div xmlns="" class="navheader">
<div class="libver">
<p>Library Version 12.2.7.5</p>
</div>
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">
Adding Database Items
</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="usingtransactions.html">Prev</a> </td>
<th width="60%" align="center">Chapter 2. 
The Basic Program
</th>
<td width="20%" align="right"> <a accesskey="n" href="retrievingdatabaseitems.html">Next</a></td>
</tr>
</table>
<hr />
</div>
<div class="sect1" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a id="addingdatabaseitems"></a>
Adding Database Items
</h2>
</div>
</div>
</div>
<p>
Adding (as well as updating, removing, and deleting) information
in the database is accomplished via the standard Java collections
API. In the example, the
<a class="ulink" href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/Map.html#put(K, V)" target="_top">Map.put</a>
method is used to add objects. All standard Java methods for
modifying a collection may be used with the JE JE Collections API.
</p>
<p>
The <code class="methodname">PopulateDatabase.doWork()</code> method calls private methods
for adding objects to each of the three database stores. It is
called via the
<a class="ulink" href="../../java/com/sleepycat/collections/TransactionRunner.html" target="_top">TransactionRunner</a>
class and was outlined in the previous section.
</p>
<a id="cb_populatedatabase"></a>
<pre class="programlisting">import java.util.Map;
import com.sleepycat.collections.TransactionWorker;
...
public class Sample
{
...
private SampleViews views;
...
private class PopulateDatabase implements TransactionWorker
{
public void doWork()
throws Exception
{
<strong class="userinput"><code> addSuppliers();
addParts();
addShipments();</code></strong>
}
}
...
<strong class="userinput"><code> private void addSuppliers()
{
}
private void addParts()
{
}
private void addShipments()
{
}</code></strong>
} </pre>
<p>
The <code class="methodname">addSuppliers()</code>, <code class="methodname">addParts()</code> and <code class="methodname">addShipments()</code>
methods add objects to the Suppliers, Parts and Shipments stores.
The
<a class="ulink" href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/Map.html" target="_top">Map</a>
for each store is obtained from the <code class="classname">SampleViews</code> object.
</p>
<a id="cb_addsuppliers"></a>
<pre class="programlisting"> private void addSuppliers()
{
<strong class="userinput"><code> Map suppliers = views.getSupplierMap();
if (suppliers.isEmpty())
{
System.out.println("Adding Suppliers");
suppliers.put(new SupplierKey("S1"),
new SupplierData("Smith", 20, "London"));
suppliers.put(new SupplierKey("S2"),
new SupplierData("Jones", 10, "Paris"));
suppliers.put(new SupplierKey("S3"),
new SupplierData("Blake", 30, "Paris"));
suppliers.put(new SupplierKey("S4"),
new SupplierData("Clark", 20, "London"));
suppliers.put(new SupplierKey("S5"),
new SupplierData("Adams", 30, "Athens"));
}</code></strong>
}
private void addParts()
{
<strong class="userinput"><code> Map parts = views.getPartMap();
if (parts.isEmpty())
{
System.out.println("Adding Parts");
parts.put(new PartKey("P1"),
new PartData("Nut", "Red",
new Weight(12.0, Weight.GRAMS),
"London"));
parts.put(new PartKey("P2"),
new PartData("Bolt", "Green",
new Weight(17.0, Weight.GRAMS),
"Paris"));
parts.put(new PartKey("P3"),
new PartData("Screw", "Blue",
new Weight(17.0, Weight.GRAMS),
"Rome"));
parts.put(new PartKey("P4"),
new PartData("Screw", "Red",
new Weight(14.0, Weight.GRAMS),
"London"));
parts.put(new PartKey("P5"),
new PartData("Cam", "Blue",
new Weight(12.0, Weight.GRAMS),
"Paris"));
parts.put(new PartKey("P6"),
new PartData("Cog", "Red",
new Weight(19.0, Weight.GRAMS),
"London"));
}</code></strong>
}
private void addShipments()
{
<strong class="userinput"><code> Map shipments = views.getShipmentMap();
if (shipments.isEmpty())
{
System.out.println("Adding Shipments");
shipments.put(new ShipmentKey("P1", "S1"),
new ShipmentData(300));
shipments.put(new ShipmentKey("P2", "S1"),
new ShipmentData(200));
shipments.put(new ShipmentKey("P3", "S1"),
new ShipmentData(400));
shipments.put(new ShipmentKey("P4", "S1"),
new ShipmentData(200));
shipments.put(new ShipmentKey("P5", "S1"),
new ShipmentData(100));
shipments.put(new ShipmentKey("P6", "S1"),
new ShipmentData(100));
shipments.put(new ShipmentKey("P1", "S2"),
new ShipmentData(300));
shipments.put(new ShipmentKey("P2", "S2"),
new ShipmentData(400));
shipments.put(new ShipmentKey("P2", "S3"),
new ShipmentData(200));
shipments.put(new ShipmentKey("P2", "S4"),
new ShipmentData(200));
shipments.put(new ShipmentKey("P4", "S4"),
new ShipmentData(300));
shipments.put(new ShipmentKey("P5", "S4"),
new ShipmentData(400));
}</code></strong>
}
}</pre>
<p>
The key and value classes used above were defined in the
<a class="xref" href="BasicProgram.html#keyandvalueclasses" title="Defining Serialized Key and Value Classes">
Defining Serialized Key and Value Classes
</a>.
</p>
<p>
In each method above, objects are added only if the map is not
empty. This is a simple way of allowing the example program to be
run repeatedly. In real-life applications another technique —
checking the
<a class="ulink" href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/Map.html#containsKey(java.lang.Object)" target="_top">Map.containsKey</a>
method, for example — might be used.
</p>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="usingtransactions.html">Prev</a> </td>
<td width="20%" align="center">
<a accesskey="u" href="BasicProgram.html">Up</a>
</td>
<td width="40%" align="right"> <a accesskey="n" href="retrievingdatabaseitems.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">
Using Transactions
 </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> 
Retrieving Database Items
</td>
</tr>
</table>
</div>
</body>
</html>