1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.mavibot.btree;
21
22
23 import java.util.concurrent.atomic.AtomicLong;
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 public class BTreeHeader
53 {
54
55 private AtomicLong revision = new AtomicLong( 0L );
56
57
58 private AtomicLong nbElems = new AtomicLong( 0L );
59
60
61 private long rootPageOffset;
62
63
64 private long nextBTreeOffset;
65
66
67 private int pageSize;
68
69
70 private String name;
71
72
73 private String keySerializerFQCN;
74
75
76 private String valueSerializerFQCN;
77
78
79
80 private long btreeOffset;
81
82
83 private long[] versions;
84
85 private int allowDuplicates = 0;
86
87
88
89
90
91 public BTreeHeader()
92 {
93 }
94
95
96
97
98
99 public String getName()
100 {
101 return name;
102 }
103
104
105
106
107
108 public void setName( String name )
109 {
110 this.name = name;
111 }
112
113
114
115
116
117 public long[] getVersions()
118 {
119 return versions;
120 }
121
122
123
124
125
126 public void setVersions( long[] versions )
127 {
128 this.versions = versions;
129 }
130
131
132
133
134
135 public long getBTreeOffset()
136 {
137 return btreeOffset;
138 }
139
140
141
142
143
144 public void setBTreeOffset( long btreeOffset )
145 {
146 this.btreeOffset = btreeOffset;
147 }
148
149
150
151
152
153 public long getRootPageOffset()
154 {
155 return rootPageOffset;
156 }
157
158
159
160
161
162 public void setRootPageOffset( long rootPageOffset )
163 {
164 this.rootPageOffset = rootPageOffset;
165 }
166
167
168
169
170
171 public long getRevision()
172 {
173 return revision.get();
174 }
175
176
177
178
179
180 public void setRevision( long revision )
181 {
182 this.revision.set( revision );
183 }
184
185
186
187
188
189
190
191 public long incrementRevision()
192 {
193 return revision.incrementAndGet();
194 }
195
196
197
198
199
200 public long getNbElems()
201 {
202 return nbElems.get();
203 }
204
205
206
207
208
209 public void incrementNbElems()
210 {
211 nbElems.incrementAndGet();
212 }
213
214
215
216
217
218 public void decrementNbElems()
219 {
220 nbElems.decrementAndGet();
221 }
222
223
224
225
226
227 public void setNbElems( long nbElems )
228 {
229 this.nbElems.set( nbElems );
230 }
231
232
233
234
235
236 public long getNextBTreeOffset()
237 {
238 return nextBTreeOffset;
239 }
240
241
242
243
244
245 public void setNextBTreeOffset( long nextBTreeOffset )
246 {
247 this.nextBTreeOffset = nextBTreeOffset;
248 }
249
250
251
252
253
254 public int getPageSize()
255 {
256 return pageSize;
257 }
258
259
260
261
262
263 public void setPageSize( int pageSize )
264 {
265 this.pageSize = pageSize;
266 }
267
268
269
270
271
272 public String getKeySerializerFQCN()
273 {
274 return keySerializerFQCN;
275 }
276
277
278
279
280
281 public void setKeySerializerFQCN( String keySerializerFQCN )
282 {
283 this.keySerializerFQCN = keySerializerFQCN;
284 }
285
286
287
288
289
290 public String getValueSerializerFQCN()
291 {
292 return valueSerializerFQCN;
293 }
294
295
296
297
298
299 public void setValueSerializerFQCN( String valueSerializerFQCN )
300 {
301 this.valueSerializerFQCN = valueSerializerFQCN;
302 }
303
304
305 public boolean isAllowDuplicates()
306 {
307 return ( allowDuplicates == 1 );
308 }
309
310
311 public void setAllowDuplicates( boolean allowDuplicates )
312 {
313 this.allowDuplicates = ( allowDuplicates ? 1 : 0 );
314 }
315
316
317
318
319
320 public String toString()
321 {
322 StringBuilder sb = new StringBuilder();
323
324 sb.append( "Btree '" ).append( name ).append( "'" );
325 sb.append( ", revision[" ).append( revision ).append( "]" );
326 sb.append( ", btreeOffset[" ).append( btreeOffset ).append( "]" );
327 sb.append( ", rootPageOffset[" ).append( rootPageOffset ).append( "]" );
328 sb.append( ", nextBTree[" ).append( nextBTreeOffset ).append( "]" );
329 sb.append( ", nbElems[" ).append( nbElems ).append( "]" );
330 sb.append( ", pageSize[" ).append( pageSize ).append( "]" );
331 sb.append( ", hasDuplicates[" ).append( isAllowDuplicates() ).append( "]" );
332 sb.append( "{\n" );
333 sb.append( " Key serializer : " ).append( keySerializerFQCN ).append( "\n" );
334 sb.append( " Value serializer : " ).append( valueSerializerFQCN ).append( "\n" );
335 sb.append( "}\n" );
336
337 if ( ( versions != null ) && ( versions.length != 0 ) )
338 {
339 sb.append( "Versions : \n" );
340 sb.append( "{\n" );
341
342 boolean isFirst = true;
343
344 for ( long version : versions )
345 {
346 if ( isFirst )
347 {
348 isFirst = false;
349 }
350 else
351 {
352 sb.append( ",\n" );
353 }
354
355 sb.append( " " ).append( version );
356 }
357
358 sb.append( "}\n" );
359 }
360
361 return sb.toString();
362 }
363 }