1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<!--NewPage--> 3<HTML> 4<HEAD> 5<!-- Generated by javadoc (build 1.6.0_03) on Mon Apr 12 16:25:48 EDT 2010 --> 6<TITLE> 7SecondaryMultiKeyCreator (Oracle - Berkeley DB Java API) 8</TITLE> 9 10<META NAME="date" CONTENT="2010-04-12"> 11 12<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../style.css" TITLE="Style"> 13 14<SCRIPT type="text/javascript"> 15function windowTitle() 16{ 17 if (location.href.indexOf('is-external=true') == -1) { 18 parent.document.title="SecondaryMultiKeyCreator (Oracle - Berkeley DB Java API)"; 19 } 20} 21</SCRIPT> 22<NOSCRIPT> 23</NOSCRIPT> 24 25</HEAD> 26 27<BODY BGCOLOR="white" onload="windowTitle();"> 28<HR> 29 30 31<!-- ========= START OF TOP NAVBAR ======= --> 32<A NAME="navbar_top"><!-- --></A> 33<A HREF="#skip-navbar_top" title="Skip navigation links"></A> 34<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> 35<TR> 36<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> 37<A NAME="navbar_top_firstrow"><!-- --></A> 38<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> 39 <TR ALIGN="center" VALIGN="top"> 40 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> 41 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> 42 <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> 43 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/SecondaryMultiKeyCreator.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD> 44 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> 45 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> 46 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> 47 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> 48 </TR> 49</TABLE> 50</TD> 51<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> 52<b>Berkeley DB</b><br><font size="-1"> version 4.8.30</font></EM> 53</TD> 54</TR> 55 56<TR> 57<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 58 <A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><B>PREV CLASS</B></A> 59 <A HREF="../../../com/sleepycat/db/Sequence.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD> 60<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 61 <A HREF="../../../index.html?com/sleepycat/db/SecondaryMultiKeyCreator.html" target="_top"><B>FRAMES</B></A> 62 <A HREF="SecondaryMultiKeyCreator.html" target="_top"><B>NO FRAMES</B></A> 63 <SCRIPT type="text/javascript"> 64 <!-- 65 if(window==top) { 66 document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>'); 67 } 68 //--> 69</SCRIPT> 70<NOSCRIPT> 71 <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A> 72</NOSCRIPT> 73 74 75</FONT></TD> 76</TR> 77<TR> 78<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 79 SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD> 80<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 81DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD> 82</TR> 83</TABLE> 84<A NAME="skip-navbar_top"></A> 85<!-- ========= END OF TOP NAVBAR ========= --> 86 87<HR> 88<!-- ======== START OF CLASS DATA ======== --> 89<H2> 90<FONT SIZE="-1"> 91com.sleepycat.db</FONT> 92<BR> 93Interface SecondaryMultiKeyCreator</H2> 94<HR> 95<DL> 96<DT><PRE>public interface <B>SecondaryMultiKeyCreator</B></DL> 97</PRE> 98 99<P> 100The interface implemented for extracting multi-valued secondary keys from 101primary records. 102<p> 103The key creator object is specified by calling 104<A HREF="../../../com/sleepycat/db/SecondaryConfig.html#setMultiKeyCreator(com.sleepycat.db.SecondaryMultiKeyCreator)"><CODE>SecondaryConfig.setMultiKeyCreator</CODE></A>. 105The secondary database configuration is specified when calling 106<A HREF="../../../com/sleepycat/db/Environment.html#openSecondaryDatabase(com.sleepycat.db.Transaction, java.lang.String, java.lang.String, com.sleepycat.db.Database, com.sleepycat.db.SecondaryConfig)"><CODE>Environment.openSecondaryDatabase</CODE></A>. 107<p> 108For example: 109<pre> 110 class MyMultiKeyCreator implements SecondaryMultiKeyCreator { 111 public void createSecondaryKeys(SecondaryDatabase secondary, 112 DatabaseEntry key, 113 DatabaseEntry data, 114 Set results) 115 throws DatabaseException { 116 // 117 // DO HERE: Extract the secondary keys from the primary key and 118 // data. For each key extracted, create a DatabaseEntry and add it 119 // to the results set. 120 // 121 } 122 } 123 ... 124 SecondaryConfig secConfig = new SecondaryConfig(); 125 secConfig.setMultiKeyCreator(new MyMultiKeyCreator()); 126 // Now pass secConfig to Environment.openSecondaryDatabase 127</pre> 128<p> 129Use this interface when any number of secondary keys may be present in a single 130primary record, in other words, for many-to-many and one-to-many relationships. 131When only zero or one secondary key is present (for many-to-one and one-to-one 132relationships) you may use the <A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><CODE>SecondaryKeyCreator</CODE></A> interface instead. 133The table below summarizes how to create all four variations of relationships. 134<div> 135<table border="yes"> 136 <tr><th>Relationship</th> 137 <th>Interface</th> 138 <th>Duplicates</th> 139 <th>Example</th> 140 </tr> 141 <tr><td>One-to-one</td> 142 <td><A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><CODE>SecondaryKeyCreator</CODE></A></td> 143 <td>No</td> 144 <td>A person record with a unique social security number key.</td> 145 </tr> 146 <tr><td>Many-to-one</td> 147 <td><A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><CODE>SecondaryKeyCreator</CODE></A></td> 148 <td>Yes</td> 149 <td>A person record with a non-unique employer key.</td> 150 </tr> 151 <tr><td>One-to-many</td> 152 <td><A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db"><CODE>SecondaryMultiKeyCreator</CODE></A></td> 153 <td>No</td> 154 <td>A person record with multiple unique email address keys.</td> 155 </tr> 156 <tr><td>Many-to-many</td> 157 <td><A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html" title="interface in com.sleepycat.db"><CODE>SecondaryMultiKeyCreator</CODE></A></td> 158 <td>Yes</td> 159 <td>A person record with multiple non-unique organization keys.</td> 160 </tr> 161</table> 162</div> 163<p>To configure a database for duplicates. pass true to <A HREF="../../../com/sleepycat/db/DatabaseConfig.html#setSortedDuplicates(boolean)"><CODE>DatabaseConfig.setSortedDuplicates(boolean)</CODE></A>.</p> 164<p> 165Note that <code>SecondaryMultiKeyCreator</code> may also be used for single key 166secondaries (many-to-one and one-to-one); in this case, at most a single key is 167added to the results set. <code>SecondaryMultiKeyCreator</code> is only 168slightly less efficient than <A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><CODE>SecondaryKeyCreator</CODE></A> in that two or three 169temporary sets must be created to hold the results. 170<P> 171 172<P> 173<DL> 174<DT><B>See Also:</B><DD><A HREF="../../../com/sleepycat/db/SecondaryConfig.html" title="class in com.sleepycat.db"><CODE>SecondaryConfig</CODE></A></DL> 175<HR> 176 177<P> 178 179<!-- ========== METHOD SUMMARY =========== --> 180 181<A NAME="method_summary"><!-- --></A> 182<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 183<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> 184<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2"> 185<B>Method Summary</B></FONT></TH> 186</TR> 187<TR BGCOLOR="white" CLASS="TableRowColor"> 188<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1"> 189<CODE> void</CODE></FONT></TD> 190<TD><CODE><B><A HREF="../../../com/sleepycat/db/SecondaryMultiKeyCreator.html#createSecondaryKeys(com.sleepycat.db.SecondaryDatabase, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, java.util.Set)">createSecondaryKeys</A></B>(<A HREF="../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A> secondary, 191 <A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A> key, 192 <A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A> data, 193 <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</A> results)</CODE> 194 195<BR> 196 Creates a secondary key entry, given a primary key and data entry.</TD> 197</TR> 198</TABLE> 199 200<P> 201 202<!-- ============ METHOD DETAIL ========== --> 203 204<A NAME="method_detail"><!-- --></A> 205<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY=""> 206<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor"> 207<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2"> 208<B>Method Detail</B></FONT></TH> 209</TR> 210</TABLE> 211 212<A NAME="createSecondaryKeys(com.sleepycat.db.SecondaryDatabase, com.sleepycat.db.DatabaseEntry, com.sleepycat.db.DatabaseEntry, java.util.Set)"><!-- --></A><H3> 213createSecondaryKeys</H3> 214<PRE> 215void <B>createSecondaryKeys</B>(<A HREF="../../../com/sleepycat/db/SecondaryDatabase.html" title="class in com.sleepycat.db">SecondaryDatabase</A> secondary, 216 <A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A> key, 217 <A HREF="../../../com/sleepycat/db/DatabaseEntry.html" title="class in com.sleepycat.db">DatabaseEntry</A> data, 218 <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</A> results) 219 throws <A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></PRE> 220<DL> 221<DD>Creates a secondary key entry, given a primary key and data entry. 222 <p> 223 A secondary key may be derived from the primary key, primary data, or a 224 combination of the primary key and data. Zero or more secondary keys may 225 be derived from the primary record and returned in the results parameter. 226 To ensure the integrity of a secondary database the key creator method must 227 always return the same results for a given set of input parameters. 228 <p> 229<P> 230<DD><DL> 231<DT><B>Parameters:</B><DD><CODE>secondary</CODE> - the database to which the secondary key will be added. 232 This parameter is passed for informational purposes but is not commonly 233 used. 234 <p><DD><CODE>key</CODE> - the primary key entry. This parameter must not be modified 235 by this method. 236 <p><DD><CODE>data</CODE> - the primary data entry. This parameter must not be modified 237 by this method. 238 <p><DD><CODE>results</CODE> - the set to contain the the secondary key DatabaseEntry 239 objects created by this method. 240 <p> 241<DT><B>Throws:</B> 242<DD><CODE><A HREF="../../../com/sleepycat/db/DatabaseException.html" title="class in com.sleepycat.db">DatabaseException</A></CODE> - if an error occurs attempting to create the 243 secondary key.</DL> 244</DD> 245</DL> 246<!-- ========= END OF CLASS DATA ========= --> 247<HR> 248 249 250<!-- ======= START OF BOTTOM NAVBAR ====== --> 251<A NAME="navbar_bottom"><!-- --></A> 252<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A> 253<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""> 254<TR> 255<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> 256<A NAME="navbar_bottom_firstrow"><!-- --></A> 257<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> 258 <TR ALIGN="center" VALIGN="top"> 259 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD> 260 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD> 261 <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD> 262 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/SecondaryMultiKeyCreator.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD> 263 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD> 264 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD> 265 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD> 266 <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD> 267 </TR> 268</TABLE> 269</TD> 270<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM> 271<b>Berkeley DB</b><br><font size="-1"> version 4.8.30</font></EM> 272</TD> 273</TR> 274 275<TR> 276<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 277 <A HREF="../../../com/sleepycat/db/SecondaryKeyCreator.html" title="interface in com.sleepycat.db"><B>PREV CLASS</B></A> 278 <A HREF="../../../com/sleepycat/db/Sequence.html" title="class in com.sleepycat.db"><B>NEXT CLASS</B></A></FONT></TD> 279<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> 280 <A HREF="../../../index.html?com/sleepycat/db/SecondaryMultiKeyCreator.html" target="_top"><B>FRAMES</B></A> 281 <A HREF="SecondaryMultiKeyCreator.html" target="_top"><B>NO FRAMES</B></A> 282 <SCRIPT type="text/javascript"> 283 <!-- 284 if(window==top) { 285 document.writeln('<A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A>'); 286 } 287 //--> 288</SCRIPT> 289<NOSCRIPT> 290 <A HREF="../../../allclasses-noframe.html"><B>All Classes</B></A> 291</NOSCRIPT> 292 293 294</FONT></TD> 295</TR> 296<TR> 297<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 298 SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD> 299<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 300DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD> 301</TR> 302</TABLE> 303<A NAME="skip-navbar_bottom"></A> 304<!-- ======== END OF BOTTOM NAVBAR ======= --> 305 306<HR> 307<font size=1>Copyright (c) 1996-2009 Oracle. All rights reserved.</font> 308</BODY> 309</HTML> 310