X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fxdcc%2Fui%2Fstdin%2FSearchCommand.java;h=ad1d9d791796d5e230b6583d9a0419a9ccb5282a;hb=724167e41ebefc51ee04f7b8437259c0f5ed1f47;hp=fb76f1f6587802f28518641c98c1b5f6ba700417;hpb=7cf4d960b265bfa56af6c7abda94eaf00233c6c0;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 fb76f1f..ad1d9d7 100644 --- a/src/main/java/net/pterodactylus/xdcc/ui/stdin/SearchCommand.java +++ b/src/main/java/net/pterodactylus/xdcc/ui/stdin/SearchCommand.java @@ -70,18 +70,7 @@ public class SearchCommand implements Command { List lastResult = newArrayList(); for (Bot bot : newArrayList(core.bots())) { for (Pack pack : newArrayList(bot)) { - boolean found = true; - for (String parameter : parameters) { - if (parameter.startsWith("-") && pack.name().toLowerCase().contains(parameter.toLowerCase().substring(1))) { - found = false; - break; - } - if (!parameter.startsWith("-") && !pack.name().toLowerCase().contains(parameter.toLowerCase())) { - found = false; - break; - } - } - if (found) { + if (parameters.stream().map(SearchParameter::from).allMatch((parameter) -> parameter.matches(pack.name()))) { lastResult.add(new Result(core, bot, pack)); } } @@ -96,4 +85,27 @@ public class SearchCommand implements Command { return state.setLastResults(lastResult); } + private static class SearchParameter { + + private final boolean exclude; + private final String pattern; + + private SearchParameter(boolean exclude, String pattern) { + this.exclude = exclude; + this.pattern = pattern; + } + + public boolean matches(String filename) { + boolean matches = filename.toLowerCase().contains(pattern.toLowerCase()); + return matches && !exclude; + } + + public static SearchParameter from(String parameter) { + boolean exclude = parameter.startsWith("-"); + String pattern = exclude ? parameter.substring(1) : parameter; + return new SearchParameter(exclude, pattern); + } + + } + }