package io.vertx.ext.mongo;
import io.vertx.codegen.annotations.DataObject;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
Options for configuring updates.
Author: Nick Scavelli
/**
* Options for configuring updates.
*
* @author <a href="mailto:nscavell@redhat.com">Nick Scavelli</a>
*/
@DataObject
public class UpdateOptions {
The default value of upsert = false
/**
* The default value of upsert = false
*/
public static final boolean DEFAULT_UPSERT = false;
The default value of multi = false
/**
* The default value of multi = false
*/
public static final boolean DEFAULT_MULTI = false;
The default value of returning new document = false
/**
* The default value of returning new document = false
*/
public static final boolean DEFAULT_RETURN_NEW_DOCUMENT = false;
private WriteOption writeOption;
private boolean upsert;
private boolean multi;
private boolean returnNewDocument; // uniquely valid on findOneAnd* methods
private JsonArray arrayFilters;
Default constructor
/**
* Default constructor
*/
public UpdateOptions() {
this.upsert = DEFAULT_UPSERT;
this.multi = DEFAULT_MULTI;
this.returnNewDocument = DEFAULT_RETURN_NEW_DOCUMENT;
}
Constructor specify upsert
Params: - upsert – the value of upsert
/**
* Constructor specify upsert
* @param upsert the value of upsert
*/
public UpdateOptions(boolean upsert) {
this.upsert = upsert;
this.multi = DEFAULT_MULTI;
this.returnNewDocument = DEFAULT_RETURN_NEW_DOCUMENT;
}
Constructor specify upsert and multi
Params: - upsert – the value of upsert
- multi – the value of multi
/**
* Constructor specify upsert and multi
* @param upsert the value of upsert
* @param multi the value of multi
*/
public UpdateOptions(boolean upsert, boolean multi) {
this.upsert = upsert;
this.multi = multi;
}
Copy constructor
Params: - other – the one to copy
/**
* Copy constructor
* @param other the one to copy
*/
public UpdateOptions(UpdateOptions other) {
this.writeOption = other.writeOption;
this.upsert = other.upsert;
this.multi = other.multi;
this.returnNewDocument = other.returnNewDocument;
this.arrayFilters = other.arrayFilters;
}
Constructor from JSON
Params: - json – the json
/**
* Constructor from JSON
*
* @param json the json
*/
public UpdateOptions(JsonObject json) {
String wo = json.getString("writeOption");
if (wo != null) {
writeOption = WriteOption.valueOf(wo.toUpperCase());
}
upsert = json.getBoolean("upsert", DEFAULT_UPSERT);
multi = json.getBoolean("multi", DEFAULT_MULTI);
returnNewDocument = json.getBoolean("return_new_document", DEFAULT_RETURN_NEW_DOCUMENT);
arrayFilters = json.getJsonArray("arrayFilters", null);
}
Get the write option.
Returns: the write option
/**
* Get the write option.
*
* @return the write option
*/
public WriteOption getWriteOption() {
return writeOption;
}
Set the write option
Params: - writeOption – the write option
Returns: reference to this, for fluency
/**
* Set the write option
* @param writeOption the write option
* @return reference to this, for fluency
*/
public UpdateOptions setWriteOption(WriteOption writeOption) {
this.writeOption = writeOption;
return this;
}
Get whether upsert is enabled
Returns: upsert is enabled?
/**
* Get whether upsert is enabled
*
* @return upsert is enabled?
*/
public boolean isUpsert() {
return upsert;
}
Set whether upsert is enabled
Params: - upsert – true if enabled
Returns: reference to this, for fluency
/**
* Set whether upsert is enabled
*
* @param upsert true if enabled
* @return reference to this, for fluency
*/
public UpdateOptions setUpsert(boolean upsert) {
this.upsert = upsert;
return this;
}
Get whether returning new document property is enabled. Valid only on findOneAnd* methods.
Returns: new document property is enabled?
/**
* Get whether returning new document property is enabled. Valid only on findOneAnd* methods.
*
* @return new document property is enabled?
*/
public boolean isReturningNewDocument() {
return returnNewDocument;
}
Set whether new document property is enabled. Valid only on findOneAnd* methods.
Params: - returnNewDocument – true if enabled
Returns: reference to this, for fluency
/**
* Set whether new document property is enabled. Valid only on findOneAnd* methods.
*
* @param returnNewDocument true if enabled
*
* @return reference to this, for fluency
*/
public UpdateOptions setReturningNewDocument(boolean returnNewDocument) {
this.returnNewDocument = returnNewDocument;
return this;
}
Get whether multi is enabled. Multi means more than one document can be updated.
Returns: multi is enabled?
/**
* Get whether multi is enabled. Multi means more than one document can be updated.
*
* @return multi is enabled?
*/
public boolean isMulti() {
return multi;
}
Set whether multi is enabled
Params: - multi – true if enabled
Returns: reference to this, for fluency
/**
* Set whether multi is enabled
*
* @param multi true if enabled
* @return reference to this, for fluency
*/
public UpdateOptions setMulti(boolean multi) {
this.multi = multi;
return this;
}
Get the arrayFilters option.
Returns: the arrayFilters option
/**
* Get the arrayFilters option.
*
* @return the arrayFilters option
*/
public JsonArray getArrayFilters() {
return arrayFilters;
}
Set the arrayFilters option
Params: - arrayFilters – the arrayFilters option
Returns: reference to this, for fluency
/**
* Set the arrayFilters option
* @param arrayFilters the arrayFilters option
* @return reference to this, for fluency
*/
public UpdateOptions setArrayFilters(JsonArray arrayFilters) {
this.arrayFilters = arrayFilters;
return this;
}
public JsonObject toJson() {
JsonObject json = new JsonObject();
if (writeOption != null) {
json.put("writeOption", writeOption.name());
}
if (upsert) {
json.put("upsert", true);
}
if (multi) {
json.put("multi", true);
}
if (returnNewDocument) {
json.put("return_new_document", true);
}
if (arrayFilters != null && !arrayFilters.isEmpty()) {
json.put("arrayFilters", arrayFilters);
}
return json;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UpdateOptions options = (UpdateOptions) o;
if (multi != options.multi) return false;
if (upsert != options.upsert) return false;
if (writeOption != options.writeOption) return false;
if (returnNewDocument != options.returnNewDocument) return false;
if (arrayFilters != options.arrayFilters) return false;
return true;
}
@Override
public int hashCode() {
int result = writeOption != null ? writeOption.hashCode() : 0;
result = 31 * result + (upsert ? 1 : 0);
result = 31 * result + (multi ? 1 : 0);
result = 31 * result + (returnNewDocument ? 1 : 0);
result = 31 * result + (arrayFilters != null ? arrayFilters.hashCode() : 0);
return result;
}
}