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;
21
22
23 import org.apache.directory.api.ldap.model.entry.Value;
24 import org.apache.directory.api.ldap.model.name.Dn;
25 import org.apache.directory.api.util.Strings;
26
27
28
29
30
31
32
33 public class CompareRequestImpl extends AbstractAbandonableRequest implements CompareRequest
34 {
35 static final long serialVersionUID = 1699731530016468977L;
36
37
38 private Dn name;
39
40
41 private String attrId;
42
43
44 private Value attrVal;
45
46
47 private CompareResponse response;
48
49
50
51
52
53
54
55
56
57 public CompareRequestImpl()
58 {
59 super( -1, MessageTypeEnum.COMPARE_REQUEST );
60 }
61
62
63
64
65
66
67
68
69
70
71
72
73 @Override
74 public Dn getName()
75 {
76 return name;
77 }
78
79
80
81
82
83 @Override
84 public CompareRequest setName( Dn name )
85 {
86 this.name = name;
87
88 return this;
89 }
90
91
92
93
94
95
96
97 @Override
98 public Value getAssertionValue()
99 {
100 return attrVal;
101 }
102
103
104
105
106
107 @Override
108 public CompareRequest setAssertionValue( String value )
109 {
110 this.attrVal = new Value( value );
111
112 return this;
113 }
114
115
116
117
118
119 @Override
120 public CompareRequest setAssertionValue( byte[] value )
121 {
122 if ( value != null )
123 {
124 this.attrVal = new Value( value );
125 }
126 else
127 {
128 this.attrVal = null;
129 }
130
131 return this;
132 }
133
134
135
136
137
138
139
140 @Override
141 public String getAttributeId()
142 {
143 return attrId;
144 }
145
146
147
148
149
150 @Override
151 public CompareRequest setAttributeId( String attributeId )
152 {
153 this.attrId = attributeId;
154
155 return this;
156 }
157
158
159
160
161
162 @Override
163 public CompareRequest setMessageId( int messageId )
164 {
165 super.setMessageId( messageId );
166
167 return this;
168 }
169
170
171
172
173
174 @Override
175 public CompareRequest addControl( Control control )
176 {
177 return ( CompareRequest ) super.addControl( control );
178 }
179
180
181
182
183
184 @Override
185 public CompareRequest addAllControls( Control[] controls )
186 {
187 return ( CompareRequest ) super.addAllControls( controls );
188 }
189
190
191
192
193
194 @Override
195 public CompareRequest removeControl( Control control )
196 {
197 return ( CompareRequest ) super.removeControl( control );
198 }
199
200
201
202
203
204
205
206
207
208
209
210
211 @Override
212 public MessageTypeEnum getResponseType()
213 {
214 return MessageTypeEnum.COMPARE_RESPONSE;
215 }
216
217
218
219
220
221
222
223 @Override
224 public CompareResponse getResultResponse()
225 {
226 if ( response == null )
227 {
228 response = new CompareResponseImpl( getMessageId() );
229 }
230
231 return response;
232 }
233
234
235
236
237
238 @Override
239 public int hashCode()
240 {
241 int hash = 37;
242 if ( name != null )
243 {
244 hash = hash * 17 + name.hashCode();
245 }
246 if ( attrId != null )
247 {
248 hash = hash * 17 + attrId.hashCode();
249 }
250 if ( attrVal != null )
251 {
252 hash = hash * 17 + attrVal.hashCode();
253 }
254 Value reqVal = getAssertionValue();
255 if ( reqVal != null )
256 {
257 hash = hash * 17 + reqVal.hashCode();
258 }
259 hash = hash * 17 + super.hashCode();
260
261 return hash;
262 }
263
264
265
266
267
268
269
270
271 @Override
272 public boolean equals( Object obj )
273 {
274 if ( obj == this )
275 {
276 return true;
277 }
278
279 if ( !super.equals( obj ) )
280 {
281 return false;
282 }
283
284 CompareRequest req = ( CompareRequest ) obj;
285 Dn reqName = req.getName();
286
287 if ( name == null )
288 {
289 if ( reqName != null )
290 {
291 return false;
292 }
293 }
294 else
295 {
296 if ( reqName == null )
297 {
298 return false;
299 }
300 else
301 {
302 if ( !name.equals( reqName ) )
303 {
304 return false;
305 }
306 }
307 }
308
309 String reqId = req.getAttributeId();
310
311 if ( attrId == null )
312 {
313 if ( reqId != null )
314 {
315 return false;
316 }
317 }
318 else
319 {
320 if ( reqId == null )
321 {
322 return false;
323 }
324 else
325 {
326 if ( !attrId.equals( reqId ) )
327 {
328 return false;
329 }
330 }
331
332 }
333
334 Value reqVal = req.getAssertionValue();
335
336 if ( attrVal != null )
337 {
338 if ( reqVal != null )
339 {
340 return attrVal.equals( reqVal );
341 }
342 else
343 {
344 return false;
345 }
346 }
347 else
348 {
349 return reqVal == null;
350 }
351 }
352
353
354
355
356
357
358
359 @Override
360 public String toString()
361 {
362 StringBuilder sb = new StringBuilder();
363
364 sb.append( " Compare request\n" );
365 sb.append( " Entry : '" ).append( name.toString() ).append( "'\n" );
366 sb.append( " Attribute description : '" ).append( attrId ).append( "'\n" );
367 sb.append( " Attribute value : '" );
368
369 if ( attrVal.isHumanReadable() )
370 {
371 sb.append( attrVal.getString() );
372 }
373 else
374 {
375 byte[] binVal = attrVal.getBytes();
376 sb.append( Strings.utf8ToString( binVal ) ).append( '/' ).append( Strings.dumpBytes( binVal ) )
377 .append( "'\n" );
378 }
379
380
381 sb.append( super.toString() );
382
383 return super.toString( sb.toString() );
384 }
385 }