package io.vertx.ext.mongo;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import io.vertx.codegen.annotations.DataObject;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
Result propagated from mongodb driver bulk write result.
Author: sschmitt
/**
* Result propagated from mongodb driver bulk write result.
*
* @author sschmitt
*/
@DataObject
public class MongoClientBulkWriteResult {
Constant to be used when storing and retrieving Json for documents inserted.
/**
* Constant to be used when storing and retrieving Json for documents inserted.
*/
public static final String INSERTED_COUNT = "insertedCount";
Constant to be used when storing and retrieving Json for documents matched.
/**
* Constant to be used when storing and retrieving Json for documents matched.
*/
public static final String MATCHED_COUNT = "matchedCount";
Constant to be used when storing and retrieving Json for documents modified.
/**
* Constant to be used when storing and retrieving Json for documents modified.
*/
public static final String MODIFIED_COUNT = "modifiedCount";
Constant to be used when storing and retrieving Json for documents deleted.
/**
* Constant to be used when storing and retrieving Json for documents deleted.
*/
public static final String DELETED_COUNT = "deletedCount";
Constant to be used when storing and retrieving Json for upsert information.
/**
* Constant to be used when storing and retrieving Json for upsert information.
*/
public static final String UPSERTS = "upserts";
Constant to be used when storing and retrieving Json for ID of upsert information.
/**
* Constant to be used when storing and retrieving Json for ID of upsert information.
*/
public static final String ID = "_id";
Constant to be used when storing and retrieving Json for index of upsert information.
/**
* Constant to be used when storing and retrieving Json for index of upsert information.
*/
public static final String INDEX = "index";
The default value is 0, signifying no document was inserted
/**
* The default value is 0, signifying no document was inserted
*/
public static final long DEFAULT_INSERTED_COUNT = 0l;
The default value is 0, signifying no document was matched
/**
* The default value is 0, signifying no document was matched
*/
public static final long DEFAULT_MATCHED_COUNT = 0l;
The default value is 0, signifying no document was deleted
/**
* The default value is 0, signifying no document was deleted
*/
public static final long DEFAULT_DELETED_COUNT = 0l;
The default value is 0, signifying no document was modified
/**
* The default value is 0, signifying no document was modified
*/
public static final long DEFAULT_MODIFIED_COUNT = 0l;
private long insertedCount;
private long matchedCount;
private long deletedCount;
private long modifiedCount;
private List<JsonObject> upserts;
Default constructor
/**
* Default constructor
*/
public MongoClientBulkWriteResult() {
insertedCount = DEFAULT_INSERTED_COUNT;
matchedCount = DEFAULT_MATCHED_COUNT;
deletedCount = DEFAULT_DELETED_COUNT;
modifiedCount = DEFAULT_MODIFIED_COUNT;
}
Constructor to specify the result of the bulk write operation.
Params: - insertedCount –
the number of inserted documents
- matchedCount –
the number of documents matched by update or replacements
- deletedCount –
the number of deleted documents
- modifiedCount –
the number of modified documents
- upserts –
the list of upserted items
/**
* Constructor to specify the result of the bulk write operation.
*
* @param insertedCount
* the number of inserted documents
* @param matchedCount
* the number of documents matched by update or replacements
* @param deletedCount
* the number of deleted documents
* @param modifiedCount
* the number of modified documents
* @param upserts
* the list of upserted items
*/
public MongoClientBulkWriteResult(long insertedCount, long matchedCount, long deletedCount, long modifiedCount,
List<JsonObject> upserts) {
this.insertedCount = insertedCount;
this.matchedCount = matchedCount;
this.deletedCount = deletedCount;
this.modifiedCount = modifiedCount;
this.upserts = upserts;
}
Copy constructor
Params: - other –
/**
* Copy constructor
*
* @param other
*/
public MongoClientBulkWriteResult(MongoClientBulkWriteResult other) {
insertedCount = other.insertedCount;
matchedCount = other.matchedCount;
deletedCount = other.deletedCount;
modifiedCount = other.modifiedCount;
if (other.upserts != null) {
this.upserts = other.upserts.stream().map(JsonObject::copy).collect(Collectors.toList());
} else
this.upserts = null;
}
Constructor from JSON
Params: - mongoClientBulkWriteResultJson –
/**
* Constructor from JSON
*
* @param mongoClientBulkWriteResultJson
*/
public MongoClientBulkWriteResult(JsonObject mongoClientBulkWriteResultJson) {
insertedCount = mongoClientBulkWriteResultJson.getLong(INSERTED_COUNT, DEFAULT_INSERTED_COUNT);
matchedCount = mongoClientBulkWriteResultJson.getLong(MATCHED_COUNT, DEFAULT_MATCHED_COUNT);
deletedCount = mongoClientBulkWriteResultJson.getLong(DELETED_COUNT, DEFAULT_DELETED_COUNT);
modifiedCount = mongoClientBulkWriteResultJson.getLong(MODIFIED_COUNT, DEFAULT_MODIFIED_COUNT);
JsonArray upsertArray = mongoClientBulkWriteResultJson.getJsonArray(UPSERTS);
if (upsertArray != null)
this.upserts = upsertArray.stream().filter(object -> object instanceof JsonObject)
.map(object -> (JsonObject) object).collect(Collectors.toList());
}
Convert to JSON
Returns: the JSON
/**
* Convert to JSON
*
* @return the JSON
*/
public JsonObject toJson() {
JsonObject mongoClientBulkWriteResultJson = new JsonObject();
if (insertedCount != DEFAULT_INSERTED_COUNT) {
mongoClientBulkWriteResultJson.put(INSERTED_COUNT, insertedCount);
}
if (matchedCount != DEFAULT_MATCHED_COUNT) {
mongoClientBulkWriteResultJson.put(MATCHED_COUNT, matchedCount);
}
if (deletedCount != DEFAULT_DELETED_COUNT) {
mongoClientBulkWriteResultJson.put(DELETED_COUNT, deletedCount);
}
if (modifiedCount != DEFAULT_MODIFIED_COUNT) {
mongoClientBulkWriteResultJson.put(MODIFIED_COUNT, modifiedCount);
}
if (upserts != null) {
mongoClientBulkWriteResultJson.put(UPSERTS, new JsonArray(upserts));
}
return mongoClientBulkWriteResultJson;
}
Returns the number of inserted documents
Returns: the inserted documents
/**
* Returns the number of inserted documents
*
* @return the inserted documents
*/
public long getInsertedCount() {
return insertedCount;
}
Returns the number of matched documents
Returns: the matched documents
/**
* Returns the number of matched documents
*
* @return the matched documents
*/
public long getMatchedCount() {
return matchedCount;
}
Returns the number of deleted documents
Returns: the deleted documents
/**
* Returns the number of deleted documents
*
* @return the deleted documents
*/
public long getDeletedCount() {
return deletedCount;
}
Returns the number of modified documents
Returns: the modified documents
/**
* Returns the number of modified documents
*
* @return the modified documents
*/
public long getModifiedCount() {
return modifiedCount;
}
An unmodifiable list of upsert data. Each entry has the index of the request that lead to the upsert, and the
generated ID of the upsert.
Returns: an unmodifiable list of upsert info
/**
* An unmodifiable list of upsert data. Each entry has the index of the request that lead to the upsert, and the
* generated ID of the upsert.
*
* @return an unmodifiable list of upsert info
*/
public List<JsonObject> getUpserts() {
if (upserts != null)
return Collections.unmodifiableList(upserts);
else
return null;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (int) (deletedCount ^ (deletedCount >>> 32));
result = prime * result + (int) (insertedCount ^ (insertedCount >>> 32));
result = prime * result + (int) (matchedCount ^ (matchedCount >>> 32));
result = prime * result + (int) (modifiedCount ^ (modifiedCount >>> 32));
result = prime * result + ((upserts == null) ? 0 : upserts.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
MongoClientBulkWriteResult other = (MongoClientBulkWriteResult) obj;
if (deletedCount != other.deletedCount)
return false;
if (insertedCount != other.insertedCount)
return false;
if (matchedCount != other.matchedCount)
return false;
if (modifiedCount != other.modifiedCount)
return false;
if (upserts == null) {
if (other.upserts != null)
return false;
} else if (!upserts.equals(other.upserts))
return false;
return true;
}
}