package tc.oc.pgm.compose; import java.util.List; import java.util.stream.Stream; import com.google.common.collect.ImmutableList; import tc.oc.commons.core.stream.Collectors; import tc.oc.pgm.filters.query.ITransientQuery; public class All extends CompositionImpl { @Inspect private final List> elements; public All(Iterable> elements) { this.elements = ImmutableList.copyOf(elements); } public All(Stream> elements) { this.elements = elements.collect(Collectors.toImmutableList()); } @Override public boolean isConstant() { return elements.stream().allMatch(Composition::isConstant); } @Override public Stream dependencies() { return elements.stream().flatMap(Composition::dependencies); } @Override public Stream elements(ITransientQuery query) { return elements.stream().flatMap(e -> e.elements(query)); } }