import static java.util.regex.Pattern.CASE_INSENSITIVE;
import static java.util.regex.Pattern.UNICODE_CASE;
import static java.util.regex.Pattern.compile;
+import static java.util.stream.Collectors.toList;
import java.io.IOException;
import java.io.Writer;
@Override
public State execute(State state, List<String> parameters, Writer outputWriter) throws IOException {
List<Result> lastResult = newArrayList();
+ List<SearchParameter> searchParameters = parameters.stream().map(SearchParameter::from).collect(toList());
for (Bot bot : newArrayList(core.bots())) {
for (Pack pack : newArrayList(bot)) {
- if (parameters.stream().map(SearchParameter::from).allMatch((parameter) -> parameter.matches(pack.name()))) {
+ if (searchParameters.stream().allMatch((parameter) -> parameter.matches(pack.name()))) {
lastResult.add(new Result(core, bot, pack));
}
}
outputWriter.write(String.format("[%d] %s (%s) from %s (#%s) on %s\n", counter++, result.pack().name(), result.pack().size(), result.bot().name(), result.pack().id(), result.bot().network().name()));
}
outputWriter.write("End of Search.\n");
- outputWriter.flush();
return state.setLastResults(lastResult);
}
- private static class SearchParameter {
+ static class SearchParameter {
private final boolean exclude;
private final Pattern pattern;
- private SearchParameter(boolean exclude, Pattern pattern) {
+ SearchParameter(boolean exclude, Pattern pattern) {
this.exclude = exclude;
this.pattern = pattern;
}
public boolean matches(String filename) {
- return pattern.matcher(filename).find() && !exclude;
+ return pattern.matcher(filename).find() == !exclude;
}
public static SearchParameter from(String parameter) {