content: /**
   *      Copyright (C) 2010 EdgyTech LLC.
   *
   *   Licensed under the Apache License, Version 2.0 (the "License");
   *   you may not use this file except in compliance with the License.
   *   You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
   *   Unless required by applicable law or agreed to in writing, software
   *   distributed under the License is distributed on an "AS IS" BASIS,
   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *   See the License for the specific language governing permissions and
   *   limitations under the License.
   */
  
  package com.edgytech.umongo;
  
  import com.mongodb.BasicDBObject;
  import com.mongodb.CommandResult;
  import com.mongodb.DB;
  import com.mongodb.DBCollection;
  import com.mongodb.DBObject;
  import com.mongodb.MongoClient;
  
  /**
   *
   * @author antoine
   */
  public class CmdField extends DocField {
      @Serial
      public String cmd;
      @Serial
      public String db;
  
      DB theDb;
      DBObject theCmd;
  
      public CmdField() {
          db = "admin";
      }
  
      @Override
      public void addView() {
          new DbJobCmd(theDb, theCmd).addJob();
      }
  
      void updateFromCmd(DB db) {
          theDb = db;
          if (cmd == null) {
              return;
          }
          updateFromCmd(db, new BasicDBObject(cmd, 1));
      }
  
      void updateFromCmd(DB db, DBObject cmd) {
          theDb = db;
          theCmd = cmd;
          if (theDb == null || theCmd == null) {
              return;
          }
          CommandResult res = db.command(cmd, db.getOptions());
          setDoc(res);
      }
  
      void updateFromCmd(MongoClient mongo) {
          if (db == null) {
              return;
          }
          updateFromCmd(mongo.getDB(db));
      }
  
      void updateFromCmd(DBCollection col) {
          updateFromCmd(col.getDB(), new BasicDBObject(cmd, col.getName()));
      }
  
      public String getCmd() {
          return cmd;
      }
  
      public String getDB() {
          return db;
      }
  
  }
  