org.immutables.fixture.SillyEntitySecondRepository Maven / Gradle / Ivy
package org.immutables.fixture;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.reflect.TypeToken;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import java.util.List;
import javax.annotation.CheckReturnValue;
import javax.annotation.Generated;
import javax.annotation.ParametersAreNonnullByDefault;
import javax.annotation.concurrent.Immutable;
import javax.annotation.concurrent.NotThreadSafe;
import javax.annotation.concurrent.ThreadSafe;
import org.immutables.gson.adapter.FieldNamingTranslator;
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.mongo.types.Id;
/**
* A {@code SillyEntitySecondRepository} provides type-safe access for storing and retrieving documents
* from the MongoDB collection {@code "ent2"}.
*/
@SuppressWarnings("all")
@Generated({"Repositories.generator", "org.immutables.fixture.SillyEntitySecond"})
@ParametersAreNonnullByDefault
@ThreadSafe
public final class SillyEntitySecondRepository extends Repositories.Repository {
private static final String DOCUMENT_COLLECTION_NAME = "ent2";
private final Serialization serialization;
private final Criteria anyCriteria;
/**
* Constructs a {@link SillyEntitySecond} repository using {@link RepositorySetup configuration}.
* @param configuration The repository configuration
*/
public SillyEntitySecondRepository(RepositorySetup configuration) {
super(configuration, DOCUMENT_COLLECTION_NAME, SillyEntitySecond.class);
this.serialization = new Serialization(getGson());
this.anyCriteria = new Criteria(this.serialization, Constraints.nilConstraint());
}
/**
* Inserts a single document into the collection.
* @param document The sillyEntitySecond to insert
* @return A future representing the number of inserted documents (1) if WriteConcern allows the insertion.
*/
public FluentFuture insert(SillyEntitySecond 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 SillyEntitySecond> documents) {
return super.doInsert(ImmutableList.copyOf(documents));
}
/**
* Finds all documents. Use the returned {@link Finder} object to complete
* {@link Finder#fetchAll() fetch all}, {@link Finder#deleteAll() delete 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}, {@link Finder#andModifyFirst() modify}, or {@link Finder#deleteFirst() delete} 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 SillyEntitySecond#id() id} identity attribute. Use the returned {@link Finder} object to complete
* {@link Finder#fetchFirst() fetch}, {@link Finder#andModifyFirst() modify}, or {@link Finder#deleteFirst() delete} operations.
* @param id The exact {@code id} value
* @return A finder object used to complete operations
*/
@CheckReturnValue
public Finder findById(Id id) {
return find(criteria().id(id));
}
/**
* Update or insert a document, matched by the identifier value of the 'id' attribute.
* @param document The sillyEntitySecond to upsert
* @return A future representing the of number of inserted documents (1) if WriteConcern allows the insertion.
*/
public FluentFuture upsert(SillyEntitySecond document) {
Criteria byId = criteria().id(document.id());
return super.doUpsert(byId.constraint, document);
}
/**
* Find a document by the given {@link SillyEntitySecondRepository#criteria() criteria}. Use the returned {@link Finder} object to complete
* {@link Finder#fetchAll() fetch}, {@link Finder#andModifyFirst() modify}, or {@link Finder#deleteFirst() delete} operations.
* @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 SillyEntitySecondRepository#find(Criteria)
*/
@NotThreadSafe
public static final class Finder extends Repositories.Finder {
private final Serialization serialization;
private Finder(SillyEntitySecondRepository repository, Constraints.ConstraintHost criteria) {
super(repository);
this.criteria = criteria;
this.serialization = repository.serialization;
}
/**
* Order by {@link SillyEntitySecond#id() id} in the ascending direction.
* Specify that the next attribute to sort will be the {@link SillyEntitySecond#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 SillyEntitySecond#id() id} in the descending direction.
* Specify that the next attribute to sort will be the {@link SillyEntitySecond#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;
}
/**
* 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((SillyEntitySecondRepository) repository, criteria, ordering, exclusion);
}
}
/**
* Update the set of {@code "ent2"} 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.
*/
@NotThreadSafe
public static final class Updater extends Repositories.Updater {
private final Serialization serialization;
private Updater(SillyEntitySecondRepository repository, Criteria criteria) {
super(repository);
this.criteria = criteria.constraint;
this.serialization = repository.serialization;
}
}
@NotThreadSafe
public static final class Modifier extends Repositories.Modifier {
private final Serialization serialization;
private Modifier(
SillyEntitySecondRepository repository,
Constraints.ConstraintHost criteria,
Constraints.Constraint ordering,
Constraints.Constraint exclusion) {
super(repository);
this.serialization = repository.serialization;
this.criteria = criteria;
this.ordering = ordering;
this.exclusion = exclusion;
}
}
/**
* {@link DBCollection#ensureIndex(DBObject, DBObject) Ensure an index} on collection {@code "ent2"} by one or
* more attributes using the family of {@code with*()} attribute-specific methods.
* While indexes will usually be maintained by special administration scripts, for simple cases it is convenient
* to ensure an index on application startup.
* @see Indexer#named(String)
* @see Indexer#unique()
* @return An indexer object to be completed with the {@link Indexer#ensure()} operation.
*/
@CheckReturnValue
public Indexer index() {
return new Indexer(this);
}
/**
* An indexer used to create an index on the {@code "ent2"} collection if it does not exist by one or more attributes.
* @see DBCollection#ensureIndex(DBObject, DBObject)
*/
@NotThreadSafe
public static final class Indexer extends Repositories.Indexer {
private final Serialization serialization;
private Indexer(SillyEntitySecondRepository repository) {
super(repository);
this.serialization = repository.serialization;
}
/**
* Specify that the next attribute to index will be {@link SillyEntitySecond#id() id}, in the ascending direction.
* @return {@code this} indexer for use in a chained invocation
*/
public Indexer withId() {
fields = fields.equal(serialization.idName, false, 1);
return this;
}
/**
* Specify that the next attribute to index will be {@link SillyEntitySecond#id() id}, in the descending direction.
* @return {@code this} indexer for use in a chained invocation
*/
public Indexer withIdDesceding() {
fields = fields.equal(serialization.idName, false, -1);
return this;
}
}
/**
* Search criteria.
* Returns an initial object to create criteria by invoking methods that describe attribute specific constraints.
* @return An empty immutable criteria
*/
public Criteria criteria() {
return anyCriteria;
}
/**
* {@code SillyEntitySecondRepository.Criteria} is a SillyEntitySecond document search query.
* Call methods on the criteria to add constraints for search queries.
*/
@Immutable
@SuppressWarnings("unchecked")
public static final class Criteria extends Repositories.Criteria {
private final Constraints.Constraint constraint;
private final Serialization serialization;
Criteria(Serialization serialization, Constraints.Constraint constraint) {
this.constraint = constraint;
this.serialization = serialization;
}
public Criteria id(Id value) {
return new Criteria(serialization, constraint.equal(serialization.idName, false, Support.writable(serialization.idTypeAdapter, value)));
}
public Criteria idNot(Id value) {
return new Criteria(serialization, constraint.equal(serialization.idName, true, Support.writable(serialization.idTypeAdapter, value)));
}
public Criteria idIn(Iterable values) {
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy