Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
package org.immutables.fixture;
import com.google.common.annotations.Beta;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Range;
import com.google.common.primitives.UnsignedInteger;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import javax.annotation.CheckReturnValue;
import javax.annotation.ParametersAreNonnullByDefault;
import javax.annotation.concurrent.Immutable;
import javax.annotation.concurrent.NotThreadSafe;
import javax.annotation.concurrent.ThreadSafe;
import org.bson.codecs.Encoder;
import org.bson.codecs.configuration.CodecRegistry;
import org.bson.conversions.Bson;
import org.immutables.mongo.concurrent.FluentFuture;
import org.immutables.mongo.repository.Repositories;
import org.immutables.mongo.repository.RepositorySetup;
import org.immutables.mongo.repository.internal.Constraints;
import org.immutables.mongo.repository.internal.Support;
import org.immutables.value.Generated;
/**
* A {@code SillyEntityRepository} provides type-safe access for storing and retrieving documents
* from the MongoDB collection {@code "sillyEntity"}.
*/
@Generated(from = "SillyEntity", generator = "Repositories")
@SuppressWarnings({"all"})
@ParametersAreNonnullByDefault
@javax.annotation.processing.Generated("org.immutables.processor.ProxyProcessor")
@ThreadSafe
public class SillyEntityRepository extends Repositories.Repository {
private static final String DOCUMENT_COLLECTION_NAME = "sillyEntity";
private final Serialization serialization;
private final Criteria anyCriteria;
/**
* Constructs a {@link SillyEntity} repository using {@link RepositorySetup configuration}.
* @param configuration The repository configuration
*/
public SillyEntityRepository(RepositorySetup configuration) {
super(configuration, DOCUMENT_COLLECTION_NAME, SillyEntity.class);
this.serialization = new Serialization(codecRegistry(), fieldNamingStrategy());
this.anyCriteria = new Criteria(this.serialization, Constraints.nilConstraint());
}
/**
* Inserts a single document into the collection.
* @param document The sillyEntity to insert
* @return A future representing the number of inserted documents (1) if WriteConcern allows the insertion.
*/
public FluentFuture insert(SillyEntity document) {
return super.doInsert(ImmutableList.of(document));
}
/**
* Insert documents into the collection.
* @param documents The documents to insert
* @return A future representing the number of inserted documents if WriteConcern allows the insertion.
*/
public FluentFuture insert(Iterable extends SillyEntity> documents) {
return super.doInsert(ImmutableList.copyOf(documents));
}
/**
* Finds all documents. Use the returned {@link Finder} object to complete
* {@link Finder#fetchAll() fetch all} or other operations.
* @return A finder object used to complete operations
*/
@CheckReturnValue
public Finder findAll() {
return find(criteria());
}
/**
* Find documents by the criteria expressed as a JSON string. Use the returned {@link Finder} object to complete
* {@link Finder#fetchAll() fetch} or {@link Finder#fetchFirst() fetch} operations.
* @param jsonCriteria A JSON string for native criteria
* @return A finder object used to complete operations
*/
@CheckReturnValue
public Finder find(String jsonCriteria) {
return new Finder(this, Support.jsonQuery(jsonCriteria));
}
/**
* Find documents by the {@link SillyEntity#id() id} identity attribute. Use the returned {@link Finder} object to complete
* {@link Finder#fetchFirst() fetch} or {@link Finder#fetchAll() fetchAll} read operations.
* You can also use {@link Finder#andModifyFirst() modify}, {@link Finder#andReplaceFirst(SillyEntity) replace}
* or {@link Finder#deleteFirst() delete} operations to update / delete the document.
* @param id The exact {@code id} value
* @return A finder object used to complete operations
*/
@CheckReturnValue
public Finder findById(int id) {
return find(criteria().id(id));
}
/**
* Update or insert a document, matched by the identifier value of the 'id' attribute.
* @param document The sillyEntity to upsert
* @return A future representing the of number of inserted documents (1) if WriteConcern allows the insertion.
*/
public FluentFuture upsert(SillyEntity document) {
Criteria byId = criteria().id(document.id());
return super.doUpsert(byId.constraint, document);
}
/**
* Find a document by the given {@link SillyEntityRepository#criteria() criteria}. Use the returned {@link Finder} object to complete
* {@link Finder#fetchAll() fetch} operations.
* You can also use {@link Finder#andModifyFirst() modify} or {@link Finder#deleteFirst() delete}
* operations to update / delete the document(s).
* @param criteria The search criteria
* @return A finder object used to complete operations
*/
@CheckReturnValue
public Finder find(Criteria criteria) {
return new Finder(this, criteria.constraint);
}
/**
* The finder object used to proceed with find operations via the
* {@link Finder#fetchAll()}, {@link Finder#fetchFirst()}, {@link Finder#andModifyFirst()}, or {@link Finder#deleteFirst()} methods.
* Configure exclusion and sort ordering for results using the family of {@code exclude*()} and {@code orderBy*()} attribute-specific methods.
* @see SillyEntityRepository#find(Criteria)
*/
@Generated(from = "SillyEntity", generator = "Repositories")
@NotThreadSafe
public static final class Finder extends Repositories.FinderWithDelete {
private final Serialization serialization;
private Finder(SillyEntityRepository repository, Constraints.ConstraintHost criteria) {
super(repository);
this.criteria = criteria;
this.serialization = repository.serialization;
}
/**
* Order by {@link SillyEntity#id() id} in the ascending direction.
* Specify that the next attribute to sort will be the {@link SillyEntity#id() id} attribute using ascending order
* in the the chain of comparisons performed to sort results.
* @return {@code this} finder for use in a chained invocation
*/
public Finder orderById() {
ordering = ordering.equal(serialization.idName, false, 1);
return this;
}
/**
* Order by {@link SillyEntity#id() id} in the descending direction.
* Specify that the next attribute to sort will be the {@link SillyEntity#id() id} attribute using descending order
* in the the chain of comparisons performed to sort results.
* @return {@code this} finder for use in a chained invocation
*/
public Finder orderByIdDesceding() {
ordering = ordering.equal(serialization.idName, false, -1);
return this;
}
/**
* Order by {@link SillyEntity#val() val} in the ascending direction.
* Specify that the next attribute to sort will be the {@link SillyEntity#val() val} attribute using ascending order
* in the the chain of comparisons performed to sort results.
* @return {@code this} finder for use in a chained invocation
*/
public Finder orderByVal() {
ordering = ordering.equal(serialization.valName, false, 1);
return this;
}
/**
* Order by {@link SillyEntity#val() val} in the descending direction.
* Specify that the next attribute to sort will be the {@link SillyEntity#val() val} attribute using descending order
* in the the chain of comparisons performed to sort results.
* @return {@code this} finder for use in a chained invocation
*/
public Finder orderByValDesceding() {
ordering = ordering.equal(serialization.valName, false, -1);
return this;
}
/**
* Order by {@link SillyEntity#payload() payload} in the ascending direction.
* Specify that the next attribute to sort will be the {@link SillyEntity#payload() payload} attribute using ascending order
* in the the chain of comparisons performed to sort results.
* @return {@code this} finder for use in a chained invocation
*/
public Finder orderByPayload() {
ordering = ordering.equal(serialization.payloadName, false, 1);
return this;
}
/**
* Order by {@link SillyEntity#payload() payload} in the descending direction.
* Specify that the next attribute to sort will be the {@link SillyEntity#payload() payload} attribute using descending order
* in the the chain of comparisons performed to sort results.
* @return {@code this} finder for use in a chained invocation
*/
public Finder orderByPayloadDesceding() {
ordering = ordering.equal(serialization.payloadName, false, -1);
return this;
}
/**
* Order by {@link SillyEntity#ints() ints} in the ascending direction.
* Specify that the next attribute to sort will be the {@link SillyEntity#ints() ints} attribute using ascending order
* in the the chain of comparisons performed to sort results.
* @return {@code this} finder for use in a chained invocation
*/
public Finder orderByInts() {
ordering = ordering.equal(serialization.intsName, false, 1);
return this;
}
/**
* Order by {@link SillyEntity#ints() ints} in the descending direction.
* Specify that the next attribute to sort will be the {@link SillyEntity#ints() ints} attribute using descending order
* in the the chain of comparisons performed to sort results.
* @return {@code this} finder for use in a chained invocation
*/
public Finder orderByIntsDesceding() {
ordering = ordering.equal(serialization.intsName, false, -1);
return this;
}
/**
* Order by {@link SillyEntity#der() der} in the ascending direction.
* Specify that the next attribute to sort will be the {@link SillyEntity#der() der} attribute using ascending order
* in the the chain of comparisons performed to sort results.
* @return {@code this} finder for use in a chained invocation
*/
public Finder orderByDer() {
ordering = ordering.equal(serialization.derName, false, 1);
return this;
}
/**
* Order by {@link SillyEntity#der() der} in the descending direction.
* Specify that the next attribute to sort will be the {@link SillyEntity#der() der} attribute using descending order
* in the the chain of comparisons performed to sort results.
* @return {@code this} finder for use in a chained invocation
*/
public Finder orderByDerDesceding() {
ordering = ordering.equal(serialization.derName, false, -1);
return this;
}
/**
* Exclude the {@link SillyEntity#payload() payload} attribute from each document in the results.
* @return {@code this} finder for use in a chained invocation
*/
public Finder excludePayload() {
exclusion = exclusion.equal(serialization.payloadName, false, -1);
return this;
}
/**
* Exclude the {@link SillyEntity#ints() ints} attribute from each document in the results.
* @return {@code this} finder for use in a chained invocation
*/
public Finder excludeInts() {
exclusion = exclusion.equal(serialization.intsName, false, -1);
return this;
}
/**
* Turn a find operation into an atomic {@link DBCollection#findAndModify(DBObject, DBObject, DBObject, boolean, DBObject, boolean, boolean) findAndModify}
* operation. Use the family of {@code set*()}, {@code unset*()}, {@code add*()}, {@code remove*()}, {@code put*()}m and {@code init*()}
* (and other attribute-specific) methods to describe the modification.
* @return A modifier object to complete the {@code findAndModify} operation
*/
@CheckReturnValue
public Modifier andModifyFirst() {
return new Modifier((SillyEntityRepository) repository, criteria, ordering, exclusion);
}
/**
* Used to replace in-place existing version of the document
*/
@CheckReturnValue
public Replacer andReplaceFirst(SillyEntity document) {
return new Replacer((SillyEntityRepository) repository, document, criteria, ordering);
}
}
/**
* Update the set of {@code "sillyEntity"} documents.
* @param criteria The search criteria for update
* @return An updater object that will be used to complete the update.
*/
@CheckReturnValue
public Updater update(Criteria criteria) {
return new Updater(this, criteria);
}
/**
* {@link #update(Criteria) Given} the criteria updater describes how to perform
* update operations on sets of documents.
*/
@Generated(from = "SillyEntity", generator = "Repositories")
@NotThreadSafe
public static final class Updater extends Repositories.Updater {
private final Serialization serialization;
private Updater(SillyEntityRepository repository, Criteria criteria) {
super(repository);
this.criteria = criteria.constraint;
this.serialization = repository.serialization;
}
/**
* Specify a new value for the {@code id} attribute.
*
* Corresponds to the MongoDB {@code $set} operator.
* @param value A new value for the {@code id} attribute
* @return {@code this} updater to be used to complete the update operation
*/
public Updater setId(int value) {
setFields = setFields.equal(serialization.idName, false, Support.writable(value));
return this;
}
/**
* Specify an initial value for the {@code id} attribute. The value will be used if the document is
* to be inserted. If one or more documents are found for an update, this value will not be used.
*
* Corresponds to the MongoDB {@code $setOnInsert} operator.
* @param value The {@code id} value for an insert.
* @return {@code this} updater to be used to complete the update operation
*/
public Updater initId(int value) {
setOnInsertFields = setOnInsertFields.equal(serialization.idName, false, Support.writable(value));
return this;
}
/**
* Specify an increment amount for the {@code id} attribute. If the document is to inserted
* and no initial value has been provided, then {@code 0} will be the default value and the increment will adjust it.
*
* Corresponds to the MongoDB {@code $inc} operator.
* @param increment An amount by which to increment the {@code id} attribute (may be negative)
* @return {@code this} updater to be used to complete the update operation
*/
public Updater incrementId(int increment) {
incrementFields = incrementFields.equal(serialization.idName, false, increment);
return this;
}
/**
* Specify a new value for the {@code val} attribute.
*
* Corresponds to the MongoDB {@code $set} operator.
* @param value A new value for the {@code val} attribute
* @return {@code this} updater to be used to complete the update operation
*/
public Updater setVal(java.lang.String value) {
setFields = setFields.equal(serialization.valName, false, Support.writable(value));
return this;
}
/**
* Specify an initial value for the {@code val} attribute. The value will be used if the document is
* to be inserted. If one or more documents are found for an update, this value will not be used.
*
* Corresponds to the MongoDB {@code $setOnInsert} operator.
* @param value The {@code val} value for an insert.
* @return {@code this} updater to be used to complete the update operation
*/
public Updater initVal(java.lang.String value) {
setOnInsertFields = setOnInsertFields.equal(serialization.valName, false, Support.writable(value));
return this;
}
/**
* Clear the {@code payload} map attribute.
*
* Corresponds to the MongoDB {@code $set} operator, used to reset to empty object
* @return {@code this} updater to be used to complete the update operation
*/
public Updater clearPayload() {
setFields = setFields.equal(serialization.payloadName, false, Support.emptyBsonObject());
return this;
}
/**
* Put the given key and value into the {@code payload} map attribute.
*
* Corresponds to the MongoDB {@code $set} operator for nested objects
* @param key The key
* @param value The value
* @return {@code this} updater to be used to complete the update operation
*/
public Updater putPayload(java.lang.String key, int value) {
setFields = setFields.equal(serialization.payloadName + "." + key, false, Support.writable(serialization.payloadSecondaryEncoder, value));
return this;
}
/**
* Remove the key to value mapping from the {@code payload} map attribute.
*
* Corresponds to MongoDB {@code $unset} operator for nested objects
* @param key The key
* @return {@code this} updater to be used to complete the update operation
*/
public Updater removePayload(java.lang.String key) {
unsetFields = unsetFields.equal(serialization.payloadName + "." + key, false, 1);
return this;
}
/**
* Clear the {@code ints} list attribute.
*
* Corresponds to the MongoDB {@code $set} operator resetting to empty array
* @return {@code this} updater to be used to complete the update operation
*/
public Updater clearInts() {
setFields = setFields.equal(serialization.intsName, false, ImmutableList.