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.io.IOException;
24
25 import org.apache.directory.mavibot.btree.serializer.ElementSerializer;
26
27
28
29
30
31
32
33
34
35 class PersistedKeyHolder<K> extends KeyHolder<K>
36 {
37
38 private byte[] raw;
39
40
41 private ElementSerializer<K> keySerializer;
42
43
44
45
46
47
48
49 PersistedKeyHolder( ElementSerializer<K> keySerializer, K key )
50 {
51 super( key );
52 this.keySerializer = keySerializer;
53 raw = keySerializer.serialize( key );
54 }
55
56
57
58
59
60
61
62 PersistedKeyHolder( ElementSerializer<K> keySerializer, byte[] raw )
63 {
64 super( null );
65 this.keySerializer = keySerializer;
66 this.raw = raw;
67 }
68
69
70
71
72
73 K getKey()
74 {
75 if ( key == null )
76 {
77 try
78 {
79 key = keySerializer.fromBytes( raw );
80 }
81 catch ( IOException ioe )
82 {
83
84 }
85 }
86
87 return key;
88 }
89
90
91
92
93
94 void setKey( K key )
95 {
96 this.key = key;
97 raw = keySerializer.serialize( key );
98 }
99
100
101
102
103
104 byte[] getRaw()
105 {
106 return raw;
107 }
108
109
110
111
112
113 public String toString()
114 {
115 StringBuilder sb = new StringBuilder();
116
117 sb.append( "PersistedKeyHolder[" );
118
119 if ( key != null )
120 {
121 sb.append( key );
122 sb.append( ", " );
123 }
124 else if ( raw != null )
125 {
126 K key = getKey();
127 sb.append( ":" ).append( key ).append( ":," );
128 }
129 else
130 {
131 sb.append( "null," );
132 }
133
134 if ( raw != null )
135 {
136 sb.append( raw.length );
137 }
138 else
139 {
140 sb.append( "null" );
141 }
142
143 sb.append( "]" );
144
145 return sb.toString();
146 }
147 }