All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.immutables.fixture.modifiable.ModifiableExtra Maven / Gradle / Ivy

There is a newer version: 2.10.1
Show newest version
package org.immutables.fixture.modifiable;

import com.google.common.base.MoreObjects;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.HashMultiset;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Multimap;
import com.google.common.collect.Multiset;
import com.google.common.collect.SetMultimap;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
import java.util.Arrays;
import java.util.Map;
import java.util.Objects;
import javax.annotation.Nullable;
import javax.annotation.ParametersAreNonnullByDefault;
import javax.annotation.concurrent.NotThreadSafe;
import org.immutables.value.Generated;

/**
 * A modifiable implementation of the {@link Companion.Extra Extra} type.
 * 

Use the {@link #create()} static factory methods to create new instances. *

ModifiableExtra is not thread-safe */ @Generated(from = "Companion.Extra", generator = "Modifiables") @SuppressWarnings({"all"}) @ParametersAreNonnullByDefault @javax.annotation.Generated({"Modifiables.generator", "Companion.Extra"}) @NotThreadSafe public final class ModifiableExtra implements Companion.Extra { private final HashMultiset bag = HashMultiset.create(); private final ArrayListMultimap index = ArrayListMultimap.create(); private final ArrayListMultimap indexList = ArrayListMultimap.create(); private final HashMultimap indexSet = HashMultimap.create(); private final HashBiMap biMap = HashBiMap.create(); private ModifiableExtra() {} /** * Construct a modifiable instance of {@code Extra}. * @param bag The value for the {@code bag} attribute * @param index The value for the {@code index} attribute * @param indexList The value for the {@code indexList} attribute * @param indexSet The value for the {@code indexSet} attribute * @param biMap The value for the {@code biMap} attribute * @return A new modifiable instance */ public static ModifiableExtra create(Iterable bag, Multimap index, Multimap indexList, Multimap indexSet, Map biMap) { return new ModifiableExtra() .addAllBag(bag) .putAllIndex(index) .putAllIndexList(indexList) .putAllIndexSet(indexSet) .putAllBiMap(biMap); } /** * Construct a modifiable instance of {@code Extra}. * @return A new modifiable instance */ public static ModifiableExtra create() { return new ModifiableExtra(); } /** * @return modifiable multiset {@code bag} */ @Override public final Multiset bag() { return bag; } /** * @return value of {@code index} attribute */ @Override public final Multimap index() { return index; } /** * @return value of {@code indexList} attribute */ @Override public final ListMultimap indexList() { return indexList; } /** * @return value of {@code indexSet} attribute */ @Override public final SetMultimap indexSet() { return indexSet; } /** * @return value of {@code biMap} attribute */ @Override public final BiMap biMap() { return biMap; } /** * Clears the object by setting all attributes to their initial values. * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra clear() { bag.clear(); index.clear(); indexList.clear(); indexSet.clear(); biMap.clear(); return this; } /** * Fill this modifiable instance with attribute values from the provided {@link Companion.Extra} instance. * Regular attribute values will be overridden, i.e. replaced with ones of an instance. * Any of the instance's absent optional values will not be copied (will not override current values). * Collection elements and entries will be added, not replaced. * @param instance The instance from which to copy values * @return {@code this} for use in a chained invocation */ public ModifiableExtra from(Companion.Extra instance) { Objects.requireNonNull(instance, "instance"); if (instance instanceof ModifiableExtra) { from((ModifiableExtra) instance); return this; } addAllBag(instance.bag()); putAllIndex(instance.index()); putAllIndexList(instance.indexList()); putAllIndexSet(instance.indexSet()); putAllBiMap(instance.biMap()); return this; } /** * Fill this modifiable instance with attribute values from the provided {@link Companion.Extra} instance. * Regular attribute values will be overridden, i.e. replaced with ones of an instance. * Any of the instance's absent optional values will not be copied (will not override current values). * Collection elements and entries will be added, not replaced. * @param instance The instance from which to copy values * @return {@code this} for use in a chained invocation */ public ModifiableExtra from(ModifiableExtra instance) { Objects.requireNonNull(instance, "instance"); addAllBag(instance.bag()); putAllIndex(instance.index()); putAllIndexList(instance.indexList()); putAllIndexSet(instance.indexSet()); putAllBiMap(instance.biMap()); return this; } /** * Adds one element to {@code bag} multiset. * @param element The bag element * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra addBag(String element) { Objects.requireNonNull(element, "bag element"); this.bag.add(element); return this; } /** * Adds elements to {@code bag} multiset. * @param elements An array of bag elements * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public final ModifiableExtra addBag(String... elements) { for (String e : elements) { addBag(e); } return this; } /** * Sets or replaces all elements for {@code bag} multiset. * @param elements An iterable of bag elements * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra setBag(Iterable elements) { this.bag.clear(); addAllBag(elements); return this; } /** * Adds elements to {@code bag} multiset. * @param elements An iterable of bag elements * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra addAllBag(Iterable elements) { for (String e : elements) { addBag(e); } return this; } /** * Put all mappings from the specified key to values for {@code index} true. Nulls are not permitted * @param key The key for index * @param values The values for index * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public final ModifiableExtra putIndex(int key, String... values) { putAllIndex(key, Arrays.asList(values)); return this; } /** * Put all mappings from the specified key to values for {@code index} true. Nulls are not permitted * @param key The key for index * @param values The values for index * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra putAllIndex(int key, Iterable values) { for (String v : values) { this.index.put( Objects.requireNonNull(key, "index key"), Objects.requireNonNull(v, "index value")); } return this; } /** * Put one entry to the {@code index} map. * @param key The key in index map * @param value The associated value in the index map * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra putIndex(int key, String value) { this.index.put( key, Objects.requireNonNull(value, "index value")); return this; } /** * Sets or replaces all mappings from the specified map as entries for the {@code index} map. * Nulls are not permitted as keys or values. * @param entries The entries that will be added to the index map * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra setIndex(Multimap entries) { this.index.clear(); for (Map.Entry e : entries.entries()) { Integer k = e.getKey(); String v = e.getValue(); this.index.put( Objects.requireNonNull(k, "index key"), Objects.requireNonNull(v, "index value")); } return this; } /** * Put all mappings from the specified map as entries to the {@code index} map. * Nulls are not permitted as keys or values. * @param entries to be added to index map * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra putAllIndex(Multimap entries) { for (Map.Entry e : entries.entries()) { Integer k = e.getKey(); String v = e.getValue(); this.index.put( Objects.requireNonNull(k, "index key"), Objects.requireNonNull(v, "index value")); } return this; } /** * Put all mappings from the specified key to values for {@code indexList} true. Nulls are not permitted * @param key The key for indexList * @param values The values for indexList * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public final ModifiableExtra putIndexList(int key, String... values) { putAllIndexList(key, Arrays.asList(values)); return this; } /** * Put all mappings from the specified key to values for {@code indexList} true. Nulls are not permitted * @param key The key for indexList * @param values The values for indexList * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra putAllIndexList(int key, Iterable values) { for (String v : values) { this.indexList.put( Objects.requireNonNull(key, "indexList key"), Objects.requireNonNull(v, "indexList value")); } return this; } /** * Put one entry to the {@code indexList} map. * @param key The key in indexList map * @param value The associated value in the indexList map * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra putIndexList(int key, String value) { this.indexList.put( key, Objects.requireNonNull(value, "indexList value")); return this; } /** * Sets or replaces all mappings from the specified map as entries for the {@code indexList} map. * Nulls are not permitted as keys or values. * @param entries The entries that will be added to the indexList map * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra setIndexList(Multimap entries) { this.indexList.clear(); for (Map.Entry e : entries.entries()) { Integer k = e.getKey(); String v = e.getValue(); this.indexList.put( Objects.requireNonNull(k, "indexList key"), Objects.requireNonNull(v, "indexList value")); } return this; } /** * Put all mappings from the specified map as entries to the {@code indexList} map. * Nulls are not permitted as keys or values. * @param entries to be added to indexList map * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra putAllIndexList(Multimap entries) { for (Map.Entry e : entries.entries()) { Integer k = e.getKey(); String v = e.getValue(); this.indexList.put( Objects.requireNonNull(k, "indexList key"), Objects.requireNonNull(v, "indexList value")); } return this; } /** * Put all mappings from the specified key to values for {@code indexSet} true. Nulls are not permitted * @param key The key for indexSet * @param values The values for indexSet * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public final ModifiableExtra putIndexSet(int key, String... values) { putAllIndexSet(key, Arrays.asList(values)); return this; } /** * Put all mappings from the specified key to values for {@code indexSet} true. Nulls are not permitted * @param key The key for indexSet * @param values The values for indexSet * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra putAllIndexSet(int key, Iterable values) { for (String v : values) { this.indexSet.put( Objects.requireNonNull(key, "indexSet key"), Objects.requireNonNull(v, "indexSet value")); } return this; } /** * Put one entry to the {@code indexSet} map. * @param key The key in indexSet map * @param value The associated value in the indexSet map * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra putIndexSet(int key, String value) { this.indexSet.put( key, Objects.requireNonNull(value, "indexSet value")); return this; } /** * Sets or replaces all mappings from the specified map as entries for the {@code indexSet} map. * Nulls are not permitted as keys or values. * @param entries The entries that will be added to the indexSet map * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra setIndexSet(Multimap entries) { this.indexSet.clear(); for (Map.Entry e : entries.entries()) { Integer k = e.getKey(); String v = e.getValue(); this.indexSet.put( Objects.requireNonNull(k, "indexSet key"), Objects.requireNonNull(v, "indexSet value")); } return this; } /** * Put all mappings from the specified map as entries to the {@code indexSet} map. * Nulls are not permitted as keys or values. * @param entries to be added to indexSet map * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra putAllIndexSet(Multimap entries) { for (Map.Entry e : entries.entries()) { Integer k = e.getKey(); String v = e.getValue(); this.indexSet.put( Objects.requireNonNull(k, "indexSet key"), Objects.requireNonNull(v, "indexSet value")); } return this; } /** * Put one entry to the {@code biMap} map. * @param key The key in biMap map * @param value The associated value in the biMap map * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra putBiMap(int key, String value) { this.biMap.put( key, Objects.requireNonNull(value, "biMap value")); return this; } /** * Sets or replaces all mappings from the specified map as entries for the {@code biMap} map. * Nulls are not permitted as keys or values. * @param entries The entries that will be added to the biMap map * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra setBiMap(Map entries) { this.biMap.clear(); for (Map.Entry e : entries.entrySet()) { Integer k = e.getKey(); String v = e.getValue(); this.biMap.put( Objects.requireNonNull(k, "biMap key"), Objects.requireNonNull(v, "biMap value")); } return this; } /** * Put all mappings from the specified map as entries to the {@code biMap} map. * Nulls are not permitted as keys or values. * @param entries to be added to biMap map * @return {@code this} for use in a chained invocation */ @CanIgnoreReturnValue public ModifiableExtra putAllBiMap(Map entries) { for (Map.Entry e : entries.entrySet()) { Integer k = e.getKey(); String v = e.getValue(); this.biMap.put( Objects.requireNonNull(k, "biMap key"), Objects.requireNonNull(v, "biMap value")); } return this; } /** * Returns {@code true} if all required attributes are set, indicating that the object is initialized. * @return {@code true} if set */ public final boolean isInitialized() { return true; } /** * This instance is equal to all instances of {@code ModifiableExtra} that have equal attribute values. * @return {@code true} if {@code this} is equal to {@code another} instance */ @Override public boolean equals(@Nullable Object another) { if (this == another) return true; if (!(another instanceof ModifiableExtra)) return false; ModifiableExtra other = (ModifiableExtra) another; return equalTo(other); } private boolean equalTo(ModifiableExtra another) { return bag.equals(another.bag) && index.equals(another.index) && indexList.equals(another.indexList) && indexSet.equals(another.indexSet) && biMap.equals(another.biMap); } /** * Computes a hash code from attributes: {@code bag}, {@code index}, {@code indexList}, {@code indexSet}, {@code biMap}. * @return hashCode value */ @Override public int hashCode() { int h = 5381; h += (h << 5) + bag.hashCode(); h += (h << 5) + index.hashCode(); h += (h << 5) + indexList.hashCode(); h += (h << 5) + indexSet.hashCode(); h += (h << 5) + biMap.hashCode(); return h; } /** * Generates a string representation of this {@code Extra}. * If uninitialized, some attribute values may appear as question marks. * @return A string representation */ @Override public String toString() { return MoreObjects.toStringHelper("ModifiableExtra") .add("bag", bag()) .add("index", index()) .add("indexList", indexList()) .add("indexSet", indexSet()) .add("biMap", biMap()) .toString(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy