projects
/
xudocci.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Only handle replies if the connection has not been established yet.
[xudocci.git]
/
src
/
main
/
java
/
net
/
pterodactylus
/
xdcc
/
ui
/
stdin
/
SearchCommand.java
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
ad1d9d7
..
0ae1b15
100644
(file)
--- a/
src/main/java/net/pterodactylus/xdcc/ui/stdin/SearchCommand.java
+++ b/
src/main/java/net/pterodactylus/xdcc/ui/stdin/SearchCommand.java
@@
-19,12
+19,17
@@
package net.pterodactylus.xdcc.ui.stdin;
import static com.google.common.collect.Lists.newArrayList;
import static java.util.Arrays.asList;
import static com.google.common.collect.Lists.newArrayList;
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;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.io.IOException;
import java.io.Writer;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.regex.Pattern;
import net.pterodactylus.xdcc.core.Core;
import net.pterodactylus.xdcc.data.Bot;
import net.pterodactylus.xdcc.core.Core;
import net.pterodactylus.xdcc.data.Bot;
@@
-68,9
+73,10
@@
public class SearchCommand implements Command {
@Override
public State execute(State state, List<String> parameters, Writer outputWriter) throws IOException {
List<Result> lastResult = newArrayList();
@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)) {
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));
}
}
lastResult.add(new Result(core, bot, pack));
}
}
@@
-88,21
+94,20
@@
public class SearchCommand implements Command {
private static class SearchParameter {
private final boolean exclude;
private static class SearchParameter {
private final boolean exclude;
- private final
String
pattern;
+ private final
Pattern
pattern;
- private SearchParameter(boolean exclude,
String
pattern) {
+ private SearchParameter(boolean exclude,
Pattern
pattern) {
this.exclude = exclude;
this.pattern = pattern;
}
public boolean matches(String filename) {
this.exclude = exclude;
this.pattern = pattern;
}
public boolean matches(String filename) {
- boolean matches = filename.toLowerCase().contains(pattern.toLowerCase());
- return matches && !exclude;
+ return pattern.matcher(filename).find() && !exclude;
}
public static SearchParameter from(String parameter) {
boolean exclude = parameter.startsWith("-");
}
public static SearchParameter from(String parameter) {
boolean exclude = parameter.startsWith("-");
-
String pattern = exclude ? parameter.substring(1) : parameter
;
+
Pattern pattern = compile(exclude ? parameter.substring(1) : parameter, CASE_INSENSITIVE | UNICODE_CASE)
;
return new SearchParameter(exclude, pattern);
}
return new SearchParameter(exclude, pattern);
}