1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.ldap.server.db.jdbm;
18
19
20 import org.apache.ldap.server.db.Tuple;
21 import org.apache.ldap.server.db.TupleBrowser;
22
23 import javax.naming.NamingException;
24 import java.io.IOException;
25
26
27 /***
28 * TupleBrowser wrapper for Jdbm based TupleBrowsers.
29 *
30 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
31 * @version $Rev: 159259 $
32 */
33 public class JdbmTupleBrowser implements TupleBrowser
34 {
35 /*** underlying wrapped jdbm.helper.TupleBrowser */
36 private jdbm.helper.TupleBrowser jdbmBrowser;
37 /*** safe temp jdbm.helper.Tuple used to store next/previous tuples */
38 private jdbm.helper.Tuple jdbmTuple = new jdbm.helper.Tuple();
39
40
41 /***
42 * Creates a JdbmTupleBrowser.
43 *
44 * @param jdbmBrowser JDBM browser to wrap.
45 */
46 public JdbmTupleBrowser( jdbm.helper.TupleBrowser jdbmBrowser )
47 {
48 this.jdbmBrowser = jdbmBrowser;
49 }
50
51
52 /***
53 * @see TupleBrowser#getNext(org.apache.ldap.server.db.Tuple)
54 */
55 public boolean getNext( Tuple tuple ) throws NamingException
56 {
57 boolean isSuccess = false;
58
59 synchronized ( jdbmTuple )
60 {
61 try
62 {
63 isSuccess = jdbmBrowser.getNext( jdbmTuple );
64 }
65 catch ( IOException ioe )
66 {
67 NamingException ne = new NamingException(
68 "Failed on call to jdbm TupleBrowser.getNext()" );
69 ne.setRootCause( ioe );
70 throw ne;
71 }
72
73 if ( isSuccess )
74 {
75 tuple.setKey( jdbmTuple.getKey() );
76 tuple.setValue( jdbmTuple.getValue() );
77 }
78 }
79
80 return isSuccess;
81 }
82
83
84 /***
85 * @see TupleBrowser#getPrevious(Tuple)
86 */
87 public boolean getPrevious( Tuple tuple ) throws NamingException
88 {
89 boolean isSuccess = false;
90
91 synchronized ( jdbmTuple )
92 {
93 try
94 {
95 isSuccess = jdbmBrowser.getPrevious( jdbmTuple );
96 }
97 catch ( IOException ioe )
98 {
99 NamingException ne = new NamingException(
100 "Failed on call to jdbm TupleBrowser.getPrevious()" );
101 ne.setRootCause( ioe );
102 throw ne;
103 }
104
105 if ( isSuccess )
106 {
107 tuple.setKey( jdbmTuple.getKey() );
108 tuple.setValue( jdbmTuple.getValue() );
109 }
110 }
111
112 return isSuccess;
113 }
114 }