All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.effektif.mongo.Update Maven / Gradle / Ivy

There is a newer version: 3.0.0-beta14
Show newest version
/* Copyright (c) 2014, Effektif GmbH.
 * 
 * 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.effektif.mongo;

import com.mongodb.BasicDBObject;


public class Update {
  
  protected BasicDBObject update = new BasicDBObject();

  public Update push(String field, Object value) {
    return push(field, value, null);
  }

  public Update push(String field, Object value, String prefix) {
    add("$push", prefix, field, value);
    return this;
  }

  public Update pushAll(String field, Object value) {
    return pushAll(field, value, null);
  }

  public Update pushAll(String field, Object value, String prefix) {
    add("$pushAll", prefix, field, value);
    return this;
  }

  public Update pull(String field, Object value) {
    return pull(field, value, null);
  }

  public Update pull(String field, Object value, String prefix) {
    add("$pull", prefix, field, value);
    return this;
  }

  public Update pullAll(String field, Object value) {
    return pullAll(field, value, null);
  }

  public Update pullAll(String field, Object value, String prefix) {
    add("$pullAll", prefix, field, value);
    return this;
  }

  public Update addToSet(String field, Object value) {
    addToSet(field, value, null);
    return this;
  }

  public Update addToSet(String field, Object value, String prefix) {
    add("$addToSet", prefix, field, value);
    return this;
  }

  public Update setOpt(String field, Object value) {
    return setOpt(field, value, null);
  }

  public Update setOpt(String field, Object value, String prefix) {
    if (value!=null) {
      add("$set", prefix, field, value);
    }
    return this;
  }

  public Update unset(String field) {
    set(field, null, null);
    return this;
  }

  public Update set(String field, Object value) {
    return set(field, value, null);
  }
  
  public Update set(String field, Object value, String prefix) {
    if (value!=null) {
      add("$set", prefix, field, value);
    } else {
      add("$unset", prefix, field, 1);
    }
    return this;
  }
  
  public Update inc(String field, int amount) {
    add("$inc", null, field, amount);
    return this;
  }

  private void add(String operation, String prefix, String field, Object value) {
    BasicDBObject fields = (BasicDBObject) update.get(operation);
    if (fields==null) {
      fields = new BasicDBObject();
      update.put(operation, fields);
    }
    fields.put(applyPrefix(prefix, field), value);
  }
  
  private static String applyPrefix(String prefix, String field) {
    return prefix!=null ? prefix+field : field;
  }

  public BasicDBObject get() {
    return update;
  }

  public boolean isEmpty() {
    return update.isEmpty();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy