X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fxdcc%2Fui%2Fstdin%2FSearchCommand.java;h=3b3afe8f40cab24ae468edd2860ce96163f53128;hb=622f19bf29f11c2feaf1b86ae962be6498a6bde8;hp=170365ae4e81832ad37c40fe160fe7930e364f28;hpb=e4882fefb159ba6de40048796c943cc2115fc193;p=xudocci.git diff --git a/src/main/java/net/pterodactylus/xdcc/ui/stdin/SearchCommand.java b/src/main/java/net/pterodactylus/xdcc/ui/stdin/SearchCommand.java index 170365a..3b3afe8 100644 --- a/src/main/java/net/pterodactylus/xdcc/ui/stdin/SearchCommand.java +++ b/src/main/java/net/pterodactylus/xdcc/ui/stdin/SearchCommand.java @@ -22,6 +22,7 @@ import static java.util.Arrays.asList; 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; @@ -72,9 +73,10 @@ public class SearchCommand implements Command { @Override public State execute(State state, List parameters, Writer outputWriter) throws IOException { List lastResult = newArrayList(); + List 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)); } } @@ -85,22 +87,21 @@ public class SearchCommand implements Command { 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) {