@@ -225,57 +225,67 @@ public void setOutputDB(String outputDB) {
225
225
this ._outputDB = outputDB ;
226
226
}
227
227
228
+
228
229
229
230
public DBObject toDBObject () {
230
- BasicDBObjectBuilder builder = BasicDBObjectBuilder .start ();
231
-
232
- builder .add ("mapreduce" , _input )
233
- .add ("map" , _map )
234
- .add ("reduce" , _reduce )
235
- .add ("verbose" , _verbose );
236
-
237
- if (_outputType == OutputType .REPLACE && _outputDB == null ) {
238
- builder .add ("out" , _outputTarget );
239
- } else {
240
- BasicDBObject out = new BasicDBObject ();
241
- switch (_outputType ) {
242
- case INLINE :
243
- out .put ("inline" , 1 );
244
- break ;
245
- case REPLACE :
246
- out .put ("replace" , _outputTarget );
247
- break ;
248
- case MERGE :
249
- out .put ("merge" , _outputTarget );
250
- break ;
251
- case REDUCE :
252
- out .put ("reduce" , _outputTarget );
253
- break ;
254
- }
255
- if (_outputDB != null )
256
- out .put ("db" , _outputDB );
257
- builder .add ("out" , out );
231
+ BasicDBObject cmd = new BasicDBObject ();
232
+
233
+ cmd .put ("mapreduce" , _input );
234
+ cmd .put ("map" , _map );
235
+ cmd .put ("reduce" , _reduce );
236
+ cmd .put ("verbose" , _verbose );
237
+
238
+ BasicDBObject out = new BasicDBObject ();
239
+ switch (_outputType ) {
240
+ case INLINE :
241
+ out .put ("inline" , 1 );
242
+ break ;
243
+ case REPLACE :
244
+ out .put ("replace" , _outputTarget );
245
+ break ;
246
+ case MERGE :
247
+ out .put ("merge" , _outputTarget );
248
+ break ;
249
+ case REDUCE :
250
+ out .put ("reduce" , _outputTarget );
251
+ break ;
258
252
}
253
+ if (_outputDB != null )
254
+ out .put ("db" , _outputDB );
255
+ cmd .put ("out" , out );
259
256
260
257
if (_query != null )
261
- builder . add ("query" , _query );
258
+ cmd . put ("query" , _query );
262
259
263
260
if (_finalize != null )
264
- builder . add ( "finalize" , _finalize );
261
+ cmd . put ( "finalize" , _finalize );
265
262
266
263
if (_sort != null )
267
- builder . add ("sort" , _sort );
264
+ cmd . put ("sort" , _sort );
268
265
269
266
if (_limit > 0 )
270
- builder . add ("limit" , _limit );
267
+ cmd . put ("limit" , _limit );
271
268
272
269
if (_scope != null )
273
- builder . add ("scope" , _scope );
270
+ cmd . put ("scope" , _scope );
274
271
275
-
276
- return builder .get ();
272
+ if (_extra != null ) {
273
+ cmd .putAll (_extra );
274
+ }
275
+
276
+ return cmd ;
277
277
}
278
278
279
+ public void addExtraOption (String name , Object value ) {
280
+ if (_extra == null )
281
+ _extra = new BasicDBObject ();
282
+ _extra .put (name , value );
283
+ }
284
+
285
+ public DBObject getExtraOptions () {
286
+ return _extra ;
287
+ }
288
+
279
289
public String toString () {
280
290
return toDBObject ().toString ();
281
291
}
@@ -292,4 +302,5 @@ public String toString() {
292
302
int _limit ;
293
303
Map <String , Object > _scope ;
294
304
Boolean _verbose = true ;
305
+ DBObject _extra ;
295
306
}
0 commit comments