
com.effektif.mongo.Update Maven / Gradle / Ivy
/* 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