package org.opencb.opencga.storage.core.variant.adaptors; import com.google.common.base.Throwables; import org.opencb.biodata.models.variant.Variant; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; import java.util.Objects; import java.util.function.Consumer; /** * Created on 13/03/17. * * @author Jacobo Coll <jacobo167@gmail.com> */ public interface VariantIterable extends Iterable<Variant> { @Override default VariantDBIterator iterator() { return iterator(new Query(), new QueryOptions()); } VariantDBIterator iterator(Query query, QueryOptions options); @Override default void forEach(Consumer<? super Variant> action) { forEach(new Query(), action, new QueryOptions()); } default void forEach(Query query, Consumer<? super Variant> action, QueryOptions options) { Objects.requireNonNull(action); try (VariantDBIterator variantDBIterator = iterator(query, options)) { while (variantDBIterator.hasNext()) { action.accept(variantDBIterator.next()); } } catch (Exception e) { Throwables.propagate(e); } } }