jaghaimo/hypernet

View on GitHub
src/main/java/hypernet/helper/CollectionHelper.java

Summary

Maintainability
A
0 mins
Test Coverage
package hypernet.helper;

import java.util.Iterator;

import hypernet.filter.Filter;

public class CollectionHelper {

    public static <E, F extends Filter<E>> void reduce(Iterable<E> entities, Iterable<F> filters) {
        Iterator<E> entity = entities.iterator();
        while (entity.hasNext()) {
            if (!matches(entity.next(), filters)) {
                entity.remove();
            }
        }
    }

    public static <E, F extends Filter<E>> void reduce(Iterable<E> entities, F filter) {
        Iterator<E> entity = entities.iterator();
        while (entity.hasNext()) {
            if (!filter.accept(entity.next())) {
                entity.remove();
            }
        }
    }

    private static <E, F extends Filter<E>> boolean matches(E item, Iterable<F> filters) {
        Iterator<F> filter = filters.iterator();
        while (filter.hasNext()) {
            if (!filter.next().accept(item)) {
                return false;
            }
        }
        return true;
    }
}