package foo;
import io.norberg.automatter.AutoMatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.annotation.Generated;
@Generated("io.norberg.automatter.processor.AutoMatterProcessor")
public final class NullableCollectionFieldsBuilder {
private List<String> strings;
private Map<String,Integer> integers;
private Set<Long> numbers;
public NullableCollectionFieldsBuilder() {
}
private NullableCollectionFieldsBuilder(NullableCollectionFields v) {
List<? extends String> _strings = v.strings();
this.strings = (_strings == null) ? null : new ArrayList<String>(_strings);
Map<? extends String,? extends Integer> _integers = v.integers();
this.integers = (_integers == null) ? null : new HashMap<String,Integer>(_integers);
Set<? extends Long> _numbers = v.numbers();
this.numbers = (_numbers == null) ? null : new HashSet<Long>(_numbers);
}
private NullableCollectionFieldsBuilder(NullableCollectionFieldsBuilder v) {
this.strings = (v.strings == null) ? null : new ArrayList<String>(v.strings);
this.integers = (v.integers == null) ? null : new HashMap<String,Integer>(v.integers);
this.numbers = (v.numbers == null) ? null : new HashSet<Long>(v.numbers);
}
public List<String> strings() {
return strings;
}
public NullableCollectionFieldsBuilder strings(List<? extends String> strings) {
return strings((Collection<? extends String>) strings);
}
public NullableCollectionFieldsBuilder strings(Collection<? extends String> strings) {
if (strings == null) {
this.strings = null;
return this;
}
this.strings = new ArrayList<String>(strings);
return this;
}
public NullableCollectionFieldsBuilder strings(Iterable<? extends String> strings) {
if (strings == null) {
this.strings = null;
return this;
}
if (strings instanceof Collection) {
return strings((Collection<? extends String>) strings);
}
return strings(strings.iterator());
}
public NullableCollectionFieldsBuilder strings(Iterator<? extends String> strings) {
if (strings == null) {
this.strings = null;
return this;
}
this.strings = new ArrayList<String>();
while (strings.hasNext()) {
String item = strings.next();
this.strings.add(item);
}
return this;
}
@SafeVarargs
public final NullableCollectionFieldsBuilder strings(String... strings) {
if (strings == null) {
this.strings = null;
return this;
}
return strings(Arrays.asList(strings));
}
public NullableCollectionFieldsBuilder addString(String string) {
if (this.strings == null) {
this.strings = new ArrayList<String>();
}
strings.add(string);
return this;
}
public Map<String,Integer> integers() {
return integers;
}
public NullableCollectionFieldsBuilder integers(Map<? extends String,? extends Integer> integers) {
if (integers == null) {
this.integers = null;
return this;
}
this.integers = new HashMap<String,Integer>(integers);
return this;
}
public NullableCollectionFieldsBuilder integers(String k1, Integer v1) {
integers = new HashMap<String,Integer>();
integers.put(k1, v1);
return this;
}
public NullableCollectionFieldsBuilder integers(String k1, Integer v1,
String k2, Integer v2) {
integers(k1, v1);
integers.put(k2, v2);
return this;
}
public NullableCollectionFieldsBuilder integers(String k1, Integer v1,
String k2, Integer v2,
String k3, Integer v3) {
integers(k1, v1, k2, v2);
integers.put(k3, v3);
return this;
}
public NullableCollectionFieldsBuilder integers(String k1, Integer v1,
String k2, Integer v2,
String k3, Integer v3,
String k4, Integer v4) {
integers(k1, v1, k2, v2, k3, v3);
integers.put(k4, v4);
return this;
}
public NullableCollectionFieldsBuilder integers(String k1, Integer v1,
String k2, Integer v2,
String k3, Integer v3,
String k4, Integer v4,
String k5, Integer v5) {
integers(k1, v1, k2, v2, k3, v3, k4, v4);
integers.put(k5, v5);
return this;
}
public NullableCollectionFieldsBuilder putInteger(String key, Integer value) {
if (this.integers == null) {
this.integers = new HashMap<String,Integer>();
}
integers.put(key, value);
return this;
}
public Set<Long> numbers() {
return numbers;
}
public NullableCollectionFieldsBuilder numbers(Set<? extends Long> numbers) {
return numbers((Collection<? extends Long>) numbers);
}
public NullableCollectionFieldsBuilder numbers(Collection<? extends Long> numbers) {
if (numbers == null) {
this.numbers = null;
return this;
}
this.numbers = new HashSet<Long>(numbers);
return this;
}
public NullableCollectionFieldsBuilder numbers(Iterable<? extends Long> numbers) {
if (numbers == null) {
this.numbers = null;
return this;
}
if (numbers instanceof Collection) {
return numbers((Collection<? extends Long>) numbers);
}
return numbers(numbers.iterator());
}
public NullableCollectionFieldsBuilder numbers(Iterator<? extends Long> numbers) {
if (numbers == null) {
this.numbers = null;
return this;
}
this.numbers = new HashSet<Long>();
while (numbers.hasNext()) {
Long item = numbers.next();
this.numbers.add(item);
}
return this;
}
@SafeVarargs
public final NullableCollectionFieldsBuilder numbers(Long... numbers) {
if (numbers == null) {
this.numbers = null;
return this;
}
return numbers(Arrays.asList(numbers));
}
public NullableCollectionFieldsBuilder addNumber(Long number) {
if (this.numbers == null) {
this.numbers = new HashSet<Long>();
}
numbers.add(number);
return this;
}
public NullableCollectionFields build() {
List<String> _strings = (strings != null) ? Collections.unmodifiableList(new ArrayList<String>(strings)) : null;
Map<String, Integer> _integers = (integers != null) ? Collections.unmodifiableMap(new HashMap<String, Integer>(integers)) : null;
Set<Long> _numbers = (numbers != null) ? Collections.unmodifiableSet(new HashSet<Long>(numbers)) : null;
return new Value(_strings, _integers, _numbers);
}
public static NullableCollectionFieldsBuilder from(NullableCollectionFields v) {
return new NullableCollectionFieldsBuilder(v);
}
public static NullableCollectionFieldsBuilder from(NullableCollectionFieldsBuilder v) {
return new NullableCollectionFieldsBuilder(v);
}
private static final class Value
implements NullableCollectionFields {
private final List<String> strings;
private final Map<String,Integer> integers;
private final Set<Long> numbers;
private Value(@AutoMatter.Field("strings") List<String> strings,
@AutoMatter.Field("integers") Map<String,Integer> integers,
@AutoMatter.Field("numbers") Set<Long> numbers) {
this.strings = strings;
this.integers = integers;
this.numbers = numbers;
}
@AutoMatter.Field
@Override
public List<String> strings() {
return strings;
}
@AutoMatter.Field
@Override
public Map<String,Integer> integers() {
return integers;
}
@AutoMatter.Field
@Override
public Set<Long> numbers() {
return numbers;
}
public NullableCollectionFieldsBuilder builder() {
return new NullableCollectionFieldsBuilder(this);
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof NullableCollectionFields)) {
return false;
}
final NullableCollectionFields that = (NullableCollectionFields) o;
if (strings != null ? !strings.equals(that.strings()) : that.strings() != null) {
return false;
}
if (integers != null ? !integers.equals(that.integers()) : that.integers() != null) {
return false;
}
if (numbers != null ? !numbers.equals(that.numbers()) : that.numbers() != null) {
return false;
}
return true;
}
@Override
public int hashCode() {
int result = 1;
long temp;
result = 31 * result + (this.strings != null ? this.strings.hashCode() : 0);
result = 31 * result + (this.integers != null ? this.integers.hashCode() : 0);
result = 31 * result + (this.numbers != null ? this.numbers.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "NullableCollectionFields{" +
"strings=" + strings +
", integers=" + integers +
", numbers=" + numbers +
'}';
}
}
}