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.dsmlv2.request;
21
22
23 import java.util.ArrayList;
24 import java.util.List;
25
26 import org.apache.directory.api.dsmlv2.DsmlDecorator;
27 import org.apache.directory.api.dsmlv2.ParserUtils;
28 import org.apache.directory.api.ldap.model.message.Request;
29 import org.dom4j.Document;
30 import org.dom4j.DocumentHelper;
31 import org.dom4j.Element;
32
33
34
35
36
37
38
39 public class BatchRequestDsml
40 {
41
42 private List<DsmlDecorator<? extends Request>> requests;
43
44
45 private int requestID;
46
47
48 private Processing processing;
49
50
51 private OnError onError;
52
53
54 private ResponseOrder responseOrder;
55
56
57
58
59
60
61 public enum Processing
62 {
63
64 SEQUENTIAL,
65
66 PARALLEL
67 }
68
69
70
71
72
73
74 public enum OnError
75 {
76
77 RESUME,
78
79 EXIT
80 }
81
82
83
84
85
86
87 public enum ResponseOrder
88 {
89
90 SEQUENTIAL,
91
92 UNORDERED
93 }
94
95
96
97
98
99 private boolean storeReq = true;
100
101 private DsmlDecorator<? extends Request> currentReq;
102
103
104
105
106
107 public BatchRequestDsml()
108 {
109 requests = new ArrayList<DsmlDecorator<? extends Request>>();
110 responseOrder = ResponseOrder.SEQUENTIAL;
111 processing = Processing.SEQUENTIAL;
112 onError = OnError.EXIT;
113 }
114
115
116
117
118
119
120
121
122 public DsmlDecorator<? extends Request> getCurrentRequest()
123 {
124 return currentReq;
125 }
126
127
128
129
130
131
132
133
134
135
136 public boolean addRequest( DsmlDecorator<? extends Request> request )
137 {
138 currentReq = request;
139
140 if ( storeReq )
141 {
142 return requests.add( request );
143 }
144 else
145 {
146 return true;
147 }
148 }
149
150
151
152
153
154
155
156
157
158
159 public boolean removeRequest( DsmlDecorator<? extends Request> request )
160 {
161 return requests.remove( request );
162 }
163
164
165
166
167
168
169
170
171 public int getRequestID()
172 {
173 return requestID;
174 }
175
176
177
178
179
180
181
182
183 public void setRequestID( int requestID )
184 {
185 this.requestID = requestID;
186 }
187
188
189
190
191
192
193
194
195 public Processing getProcessing()
196 {
197 return processing;
198 }
199
200
201
202
203
204
205
206
207 public void setProcessing( Processing processing )
208 {
209 this.processing = processing;
210 }
211
212
213
214
215
216
217
218
219 public OnError getOnError()
220 {
221 return onError;
222 }
223
224
225
226
227
228
229
230
231 public void setOnError( OnError onError )
232 {
233 this.onError = onError;
234 }
235
236
237
238
239
240
241
242
243 public ResponseOrder getResponseOrder()
244 {
245 return responseOrder;
246 }
247
248
249
250
251
252
253
254
255 public void setResponseOrder( ResponseOrder responseOrder )
256 {
257 this.responseOrder = responseOrder;
258 }
259
260
261
262
263
264
265
266 public List<DsmlDecorator<? extends Request>> getRequests()
267 {
268 return requests;
269 }
270
271
272
273
274
275
276
277 public String toDsml()
278 {
279 Document document = DocumentHelper.createDocument();
280 Element element = document.addElement( "batchRequest" );
281
282
283 if ( requestID != 0 )
284 {
285 element.addAttribute( "requestID", Integer.toString( requestID ) );
286 }
287
288
289 if ( responseOrder == ResponseOrder.UNORDERED )
290 {
291 element.addAttribute( "responseOrder", "unordered" );
292 }
293
294
295 if ( processing == Processing.PARALLEL )
296 {
297 element.addAttribute( "processing", "parallel" );
298 }
299
300
301 if ( onError == OnError.RESUME )
302 {
303 element.addAttribute( "onError", "resume" );
304 }
305
306
307 for ( DsmlDecorator<? extends Request> request : requests )
308 {
309 request.toDsml( element );
310 }
311
312 return ParserUtils.styleDocument( document ).asXML();
313 }
314
315
316
317
318
319 public boolean isStoringRequests()
320 {
321 return storeReq;
322 }
323
324
325
326
327
328
329
330
331
332
333 public void setStoreReq( boolean storeReq )
334 {
335 this.storeReq = storeReq;
336 }
337
338
339
340
341
342 @Override
343 public String toString()
344 {
345 StringBuffer sb = new StringBuffer();
346
347 sb.append( "[" );
348 sb.append( "processing: " ).append( processing );
349 sb.append( " - " );
350 sb.append( "onError: " ).append( onError );
351 sb.append( " - " );
352 sb.append( "responseOrder: " ).append( responseOrder );
353 sb.append( "]" );
354
355 return sb.toString();
356 }
357 }