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