io.sphere.client.shop.model.VariantList Maven / Gradle / Ivy
package io.sphere.client.shop.model;
import com.google.common.base.Optional;
import io.sphere.internal.util.ListUtil;
import javax.annotation.Nonnull;
import java.util.*;
/** List of variants of a {@link Product} that supports filtering by various criteria. */
public class VariantList implements Iterable {
private final List variants;
public VariantList(@Nonnull List variants) {
if (variants == null) throw new NullPointerException("variants");
this.variants = variants;
}
@Override public Iterator iterator() {
return variants.iterator();
}
/** Returns the number of items in this list. */
public int size() {
return variants.size();
}
/** Returns {@code true} if this list contains no items. */
public boolean isEmpty() {
return variants.isEmpty();
}
/** Returns the first element in this list, or {@link Optional#absent()} if the list is empty. */
public Optional first() {
return (variants.size() == 0) ? Optional.absent() : Optional.of(variants.get(0));
}
/** Returns the items as a {@link List}. */
public List asList() {
return new ArrayList(variants);
}
/** Gets distinct values of given attribute across all variants of this product. */
@Nonnull public List getAvailableAttributes(String attributeName) {
List attributes = new ArrayList();
Set