From 6049b67a8eca39d3a02949ebbcb28fbe356e1228 Mon Sep 17 00:00:00 2001 From: drdev Date: Sun, 6 Sep 2015 02:15:18 +0000 Subject: [PATCH] Flesh out CustomList operators --- .../forge/itemmanager/AdvancedSearch.java | 76 +++++++++++++------ 1 file changed, 53 insertions(+), 23 deletions(-) diff --git a/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java b/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java index 7a1f9fea888..417be76ff52 100644 --- a/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java +++ b/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java @@ -294,61 +294,91 @@ public class AdvancedSearch { IS_EXACTLY("is exactly", "%1$s is %2$s", FilterValueCount.MANY, new OperatorEvaluator() { @Override public boolean apply(Object input, List values) { + if (input != null && values.size() == 1) { + return input.equals(values.get(0)); + } return false; } @Override public boolean apply(Set inputs, List values) { + if (inputs != null && inputs.size() == values.size()) { + for (Object value : values) { + if (!inputs.contains(value)) { + return false; + } + } + return true; + } return false; } }), IS_ANY("is any of", "%1$s is %2$s", FilterValueCount.MANY_OR, new OperatorEvaluator() { @Override public boolean apply(Object input, List values) { + if (input != null) { + for (Object value : values) { + if (input.equals(value)) { + return true; + } + } + } return false; } @Override public boolean apply(Set inputs, List values) { + if (inputs != null) { + for (Object value : values) { + if (inputs.contains(value)) { + return true; + } + } + } return false; } }), IS_ALL("is all of", "%1$s is %2$s", FilterValueCount.MANY_AND, new OperatorEvaluator() { @Override public boolean apply(Object input, List values) { + if (input != null && values.size() == 1) { + return input.equals(values.get(0)); + } return false; } @Override public boolean apply(Set inputs, List values) { + if (inputs != null) { + for (Object value : values) { + if (!inputs.contains(value)) { + return false; + } + } + return true; + } return false; } }), IS_NONE("is none of", "%1$s is not %2$s", FilterValueCount.MANY_OR, new OperatorEvaluator() { @Override public boolean apply(Object input, List values) { - return false; + if (input != null) { + for (Object value : values) { + if (input.equals(value)) { + return false; + } + } + } + return true; } @Override public boolean apply(Set inputs, List values) { - return false; - } - }), - INCLUDES_ANY("includes any of", "%1$s includes %2$s", FilterValueCount.MANY_OR, new OperatorEvaluator() { - @Override - public boolean apply(Object input, List values) { - return false; - } - @Override - public boolean apply(Set inputs, List values) { - return false; - } - }), - INCLUDES_ALL("includes all of", "%1$s includes %2$s", FilterValueCount.MANY_AND, new OperatorEvaluator() { - @Override - public boolean apply(Object input, List values) { - return false; - } - @Override - public boolean apply(Set inputs, List values) { - return false; + if (inputs != null) { + for (Object value : values) { + if (inputs.contains(value)) { + return false; + } + } + } + return true; } }); @@ -362,7 +392,7 @@ public class AdvancedSearch { IS_EXACTLY, IS_ANY, IS_NONE }; public static final FilterOperator[] MULTI_LIST_OPS = new FilterOperator[] { - IS_EXACTLY, IS_ANY, IS_ALL, IS_NONE, INCLUDES_ANY, INCLUDES_ALL + IS_EXACTLY, IS_ANY, IS_ALL, IS_NONE }; private final String caption, formatStr;