1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.api.ldap.model.message.controls;
21
22
23 import org.apache.directory.api.util.StringConstants;
24 import org.apache.directory.api.util.Strings;
25
26 import java.util.Arrays;
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
53
54
55
56
57
58
59
60 public class PagedResultsImpl extends AbstractControl implements PagedResults
61 {
62
63 private int size;
64
65
66 private byte[] cookie = StringConstants.EMPTY_BYTES;
67
68
69
70
71
72 public PagedResultsImpl()
73 {
74 super( OID );
75 }
76
77
78 public int getSize()
79 {
80 return size;
81 }
82
83
84 public void setSize( int size )
85 {
86 this.size = size;
87 }
88
89
90 public byte[] getCookie()
91 {
92 return cookie;
93 }
94
95
96 public void setCookie( byte[] cookie )
97 {
98 this.cookie = cookie;
99 }
100
101
102 public int getCookieValue()
103 {
104 int value = 0;
105
106 switch ( cookie.length )
107 {
108 case 1:
109 value = cookie[0] & 0x00FF;
110 break;
111
112 case 2:
113 value = ( ( cookie[0] & 0x00FF ) << 8 ) + ( cookie[1] & 0x00FF );
114 break;
115
116 case 3:
117 value = ( ( cookie[0] & 0x00FF ) << 16 ) + ( ( cookie[1] & 0x00FF ) << 8 ) + ( cookie[2] & 0x00FF );
118 break;
119
120 case 4:
121 value = ( ( cookie[0] & 0x00FF ) << 24 ) + ( ( cookie[1] & 0x00FF ) << 16 )
122 + ( ( cookie[2] & 0x00FF ) << 8 ) + ( cookie[3] & 0x00FF );
123 break;
124
125 }
126
127 return value;
128 }
129
130
131
132
133
134 @Override
135 public int hashCode()
136 {
137 int h = super.hashCode();
138
139 h = h * 37 + size;
140
141 if ( cookie != null )
142 {
143 for ( byte b : cookie )
144 {
145 h = h * 17 + b;
146 }
147 }
148
149 return h;
150 }
151
152
153
154
155
156 @Override
157 public boolean equals( Object o )
158 {
159 if ( !super.equals( o ) )
160 {
161 return false;
162 }
163
164 PagedResults otherControl = ( PagedResults ) o;
165
166 return ( size == otherControl.getSize() ) && Arrays.equals( cookie, otherControl.getCookie() );
167 }
168
169
170
171
172
173 public String toString()
174 {
175 StringBuffer sb = new StringBuffer();
176
177 sb.append( " Paged Search Control\n" );
178 sb.append( " oid : " ).append( getOid() ).append( '\n' );
179 sb.append( " critical : " ).append( isCritical() ).append( '\n' );
180 sb.append( " size : '" ).append( size ).append( "'\n" );
181 sb.append( " cookie : '" ).append( Strings.dumpBytes( cookie ) ).append( "'\n" );
182
183 return sb.toString();
184 }
185 }