@@ -225,57 +225,67 @@ public void setOutputDB(String outputDB) {
225225 this ._outputDB = outputDB ;
226226 }
227227
228+
228229
229230 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 ;
258252 }
253+ if (_outputDB != null )
254+ out .put ("db" , _outputDB );
255+ cmd .put ("out" , out );
259256
260257 if (_query != null )
261- builder . add ("query" , _query );
258+ cmd . put ("query" , _query );
262259
263260 if (_finalize != null )
264- builder . add ( "finalize" , _finalize );
261+ cmd . put ( "finalize" , _finalize );
265262
266263 if (_sort != null )
267- builder . add ("sort" , _sort );
264+ cmd . put ("sort" , _sort );
268265
269266 if (_limit > 0 )
270- builder . add ("limit" , _limit );
267+ cmd . put ("limit" , _limit );
271268
272269 if (_scope != null )
273- builder . add ("scope" , _scope );
270+ cmd . put ("scope" , _scope );
274271
275-
276- return builder .get ();
272+ if (_extra != null ) {
273+ cmd .putAll (_extra );
274+ }
275+
276+ return cmd ;
277277 }
278278
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+
279289 public String toString () {
280290 return toDBObject ().toString ();
281291 }
@@ -292,4 +302,5 @@ public String toString() {
292302 int _limit ;
293303 Map <String , Object > _scope ;
294304 Boolean _verbose = true ;
305+ DBObject _extra ;
295306}
0 commit comments