package com.miguelfonseca.completely.text.analyze.filter; import com.miguelfonseca.completely.text.analyze.Analyzer; import java.util.Collection; import java.util.LinkedList; import java.util.List; import static com.miguelfonseca.completely.common.Precondition.checkPointer; /** * Exclude text with length outside boundaries. */ public class LengthFilter extends Analyzer { private final int min, max; /** * Constructs a new {@link LengthFilter}. */ public LengthFilter(int min, int max) { this.min = min; this.max = max; } @Override public Collection<String> apply(Collection<String> input) { checkPointer(input != null); List<String> result = new LinkedList<>(); for (String text : input) { checkPointer(text != null); if (text.length() >= min && text.length() <= max) { result.add(text); } } return result; } }