001/*
002 * Copyright c 2018 Rusi Popov, MDA Tools.net All rights reserved.
003 *
004 * This program and the accompanying materials are made available under the terms of the
005 * Eclipse Public License v2.0 which accompanies this distribution, and is available at
006 * http://www.eclipse.org/legal/epl-v20.html
007 */
008package net.mdatools.modelant.core.filter;
009
010import java.util.Collection;
011
012import net.mdatools.modelant.core.api.Filter;
013import net.mdatools.modelant.core.api.Function;
014
015/**
016 * Compose 2 filters
017 * @author Rusi Popov (popovr@mdatools.net)
018 */
019public final class ComposeFilter<T> implements Filter<T> {
020
021  private final Function<Collection<T>, Collection<T>> f;
022  private final Function<Collection<T>, Collection<T>> s;
023
024  public ComposeFilter(Function<Collection<T>, Collection<T>> f, Function<Collection<T>, Collection<T>> s) {
025    this.f = f;
026    this.s = s;
027  }
028
029  /**
030   * @see net.mdatools.modelant.core.api.Function#execute(java.lang.Object)
031   */
032  public Collection<T> execute(Collection<T> argument) throws RuntimeException, IllegalArgumentException {
033    return s.execute(f.execute(argument));
034  }
035}