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.Attribute;
24 import org.apache.directory.api.ldap.model.entry.DefaultAttribute;
25 import org.apache.directory.api.ldap.model.entry.DefaultEntry;
26 import org.apache.directory.api.ldap.model.entry.Entry;
27 import org.apache.directory.api.ldap.model.entry.Value;
28 import org.apache.directory.api.ldap.model.exception.LdapException;
29 import org.apache.directory.api.ldap.model.name.Dn;
30
31
32
33
34
35
36
37 public class AddRequestImpl extends AbstractAbandonableRequest implements AddRequest
38 {
39 static final long serialVersionUID = 7534132448349520346L;
40
41
42 private Entry entry;
43
44 private AddResponse response;
45
46
47 private Attribute currentAttribute;
48
49
50
51
52
53
54
55
56
57 public AddRequestImpl()
58 {
59 super( -1, MessageTypeEnum.ADD_REQUEST );
60 entry = new DefaultEntry();
61 }
62
63
64
65
66
67
68
69
70 public void addAttributeType( String type ) throws LdapException
71 {
72
73 if ( entry.get( type ) != null )
74 {
75 currentAttribute = entry.get( type );
76 return;
77 }
78
79
80 currentAttribute = new DefaultAttribute( type );
81 entry.put( currentAttribute );
82 }
83
84
85
86
87
88 public String getCurrentAttributeType()
89 {
90 return currentAttribute.getId();
91 }
92
93
94
95
96
97
98
99
100 public void addAttributeValue( String value ) throws LdapException
101 {
102 currentAttribute.add( value );
103 }
104
105
106
107
108
109
110
111
112 public void addAttributeValue( Value<?> value ) throws LdapException
113 {
114 currentAttribute.add( value );
115 }
116
117
118
119
120
121
122
123
124 public void addAttributeValue( byte[] value ) throws LdapException
125 {
126 currentAttribute.add( value );
127 }
128
129
130
131
132
133
134
135
136
137
138
139 @Override
140 public Dn getEntryDn()
141 {
142 return entry.getDn();
143 }
144
145
146
147
148
149 @Override
150 public AddRequest setEntryDn( Dn dn )
151 {
152 entry.setDn( dn );
153
154 return this;
155 }
156
157
158
159
160
161 @Override
162 public Entry getEntry()
163 {
164 return entry;
165 }
166
167
168
169
170
171 @Override
172 public AddRequest setEntry( Entry entry )
173 {
174 this.entry = entry;
175
176 return this;
177 }
178
179
180
181
182
183 @Override
184 public AddRequest setMessageId( int messageId )
185 {
186 super.setMessageId( messageId );
187
188 return this;
189 }
190
191
192
193
194
195 @Override
196 public AddRequest addControl( Control control )
197 {
198 return ( AddRequest ) super.addControl( control );
199 }
200
201
202
203
204
205 @Override
206 public AddRequest addAllControls( Control[] controls )
207 {
208 return ( AddRequest ) super.addAllControls( controls );
209 }
210
211
212
213
214
215 @Override
216 public AddRequest removeControl( Control control )
217 {
218 return ( AddRequest ) super.removeControl( control );
219 }
220
221
222
223
224
225
226
227
228
229
230
231
232 @Override
233 public MessageTypeEnum getResponseType()
234 {
235 return MessageTypeEnum.ADD_RESPONSE;
236 }
237
238
239
240
241
242
243
244 @Override
245 public AddResponse getResultResponse()
246 {
247 if ( response == null )
248 {
249 response = new AddResponseImpl( getMessageId() );
250 }
251
252 return response;
253 }
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268 @Override
269 public boolean equals( Object obj )
270 {
271
272 if ( this == obj )
273 {
274 return true;
275 }
276
277
278 if ( !( obj instanceof AddRequest ) )
279 {
280 return false;
281 }
282
283 if ( !super.equals( obj ) )
284 {
285 return false;
286 }
287
288 AddRequest req = ( AddRequest ) obj;
289
290
291 if ( entry == null )
292 {
293 return req.getEntry() == null;
294 }
295 else
296 {
297 return entry.equals( req.getEntry() );
298 }
299 }
300
301
302
303
304
305
306 @Override
307 public int hashCode()
308 {
309 int hash = 37;
310 hash = hash * 17 + ( entry == null ? 0 : entry.hashCode() );
311 hash = hash * 17 + ( response == null ? 0 : response.hashCode() );
312 hash = hash * 17 + super.hashCode();
313
314 return hash;
315 }
316
317
318
319
320
321 @Override
322 public String toString()
323 {
324 StringBuilder sb = new StringBuilder();
325
326 sb.append( " Add Request :\n" );
327
328 if ( entry == null )
329 {
330 sb.append( " No entry\n" );
331 }
332 else
333 {
334 sb.append( entry.toString() );
335 }
336
337 return super.toString( sb.toString() );
338 }
339 }