<?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>Retrieving 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 Collections Tutorial" /> <link rel="up" href="BasicProgram.html" title="Chapter 2. The Basic Program" /> <link rel="prev" href="addingdatabaseitems.html" title="Adding Database Items" /> <link rel="next" href="handlingexceptions.html" title="Handling Exceptions" /> </head> <body> <div class="navheader"> <table width="100%" summary="Navigation header"> <tr> <th colspan="3" align="center"> Retrieving Database Items </th> </tr> <tr> <td width="20%" align="left"><a accesskey="p" href="addingdatabaseitems.html">Prev</a> </td> <th width="60%" align="center">Chapter 2. The Basic Program </th> <td width="20%" align="right"> <a accesskey="n" href="handlingexceptions.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="retrievingdatabaseitems"></a> Retrieving Database Items </h2> </div> </div> </div> <p> Retrieving information from the database is accomplished via the standard Java collections API. In the example, the <a class="ulink" href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html#iterator" target="_top">Set.iterator</a> method is used to iterate all <a class="ulink" href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" target="_top">Map.Entry</a> objects for each store. All standard Java methods for retrieving objects from a collection may be used with the DB Java Collections API. </p> <p> The <code class="methodname">PrintDatabase.doWork()</code> method calls <code class="methodname">printEntries()</code> to print the map entries for each database store. 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_printdatabase"></a> <pre class="programlisting">import java.util.Iterator; ... public class Sample { ... private SampleViews views; ... private class PrintDatabase implements TransactionWorker { public void doWork() throws Exception { <strong class="userinput"><code> printEntries("Parts", views.getPartEntrySet().iterator()); printEntries("Suppliers", views.getSupplierEntrySet().iterator()); printEntries("Shipments", views.getShipmentEntrySet().iterator());</code></strong> } } ... <strong class="userinput"><code> private void printEntries(String label, Iterator iterator) { }</code></strong> ... } </pre> <p> The <a class="ulink" href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html" target="_top">Set</a> of <a class="ulink" href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.Entry.html" target="_top">Map.Entry</a> objects for each store is obtained from the <code class="classname">SampleViews</code> object. This set can also be obtained by calling the <a class="ulink" href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#entrySet" target="_top">Map.entrySet</a> method of a stored map. </p> <p> The <code class="methodname">printEntries()</code> prints the map entries for any stored map. The <a class="ulink" href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#toString" target="_top">Object.toString</a> method of each key and value is called to obtain a printable representation of each object. </p> <a id="cb_printentries"></a> <pre class="programlisting"> private void printEntries(String label, Iterator iterator) { <strong class="userinput"><code> System.out.println("\n--- " + label + " ---"); while (iterator.hasNext()) { Map.Entry entry = (Map.Entry) iterator.next(); System.out.println(entry.getKey().toString()); System.out.println(entry.getValue().toString()); }</code></strong> } </pre> <p> This is one of a small number of behavioral differences between standard Java collections and stored collections. For a complete list see <a class="xref" href="UsingStoredCollections.html" title="Using Stored Collections"> Using Stored Collections </a>. </p> <p> The output of the example program is shown below. </p> <pre class="programlisting">Adding Suppliers Adding Parts Adding Shipments --- Parts --- PartKey: number=P1 PartData: name=Nut color=Red weight=[12.0 grams] city=London PartKey: number=P2 PartData: name=Bolt color=Green weight=[17.0 grams] city=Paris PartKey: number=P3 PartData: name=Screw color=Blue weight=[17.0 grams] city=Rome PartKey: number=P4 PartData: name=Screw color=Red weight=[14.0 grams] city=London PartKey: number=P5 PartData: name=Cam color=Blue weight=[12.0 grams] city=Paris PartKey: number=P6 PartData: name=Cog color=Red weight=[19.0 grams] city=London --- Suppliers --- SupplierKey: number=S1 SupplierData: name=Smith status=20 city=London SupplierKey: number=S2 SupplierData: name=Jones status=10 city=Paris SupplierKey: number=S3 SupplierData: name=Blake status=30 city=Paris SupplierKey: number=S4 SupplierData: name=Clark status=20 city=London SupplierKey: number=S5 SupplierData: name=Adams status=30 city=Athens --- Shipments --- ShipmentKey: supplier=S1 part=P1 ShipmentData: quantity=300 ShipmentKey: supplier=S2 part=P1 ShipmentData: quantity=300 ShipmentKey: supplier=S1 part=P2 ShipmentData: quantity=200 ShipmentKey: supplier=S2 part=P2 ShipmentData: quantity=400 ShipmentKey: supplier=S3 part=P2 ShipmentData: quantity=200 ShipmentKey: supplier=S4 part=P2 ShipmentData: quantity=200 ShipmentKey: supplier=S1 part=P3 ShipmentData: quantity=400 ShipmentKey: supplier=S1 part=P4 ShipmentData: quantity=200 ShipmentKey: supplier=S4 part=P4 ShipmentData: quantity=300 ShipmentKey: supplier=S1 part=P5 ShipmentData: quantity=100 ShipmentKey: supplier=S4 part=P5 ShipmentData: quantity=400 ShipmentKey: supplier=S1 part=P6 ShipmentData: quantity=100 </pre> </div> <div class="navfooter"> <hr /> <table width="100%" summary="Navigation footer"> <tr> <td width="40%" align="left"><a accesskey="p" href="addingdatabaseitems.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="handlingexceptions.html">Next</a></td> </tr> <tr> <td width="40%" align="left" valign="top"> Adding Database Items </td> <td width="20%" align="center"> <a accesskey="h" href="index.html">Home</a> </td> <td width="40%" align="right" valign="top"> Handling Exceptions </td> </tr> </table> </div> </body> </html>