diff --git a/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/Comparison.java b/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/Comparison.java index 25ae55fd2aa964056f8d566eab14a670edb965e6..8c7fb5cd3e4f940b5a56160174d64360220e6c3b 100644 --- a/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/Comparison.java +++ b/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/Comparison.java @@ -12,6 +12,7 @@ public abstract class Comparison { private static String[] like = new String[] { "like" }; private static String[] notLike = new String[] { "notLike", "not like" }; private static String[] between = new String[] { "range", "between" }; + private static String[] isMember = new String[] { "isMember", "in" }; public static boolean isEquals(String comparison) throws Exception { for (String str : equals) { @@ -94,6 +95,15 @@ public abstract class Comparison { return false; } + public static boolean isIsMember(String comparison) throws Exception { + for (String str : isMember) { + if (StringUtils.equalsIgnoreCase(str, StringUtils.trim(comparison))) { + return true; + } + } + return false; + } + public static String getMatchCom(String comparison) throws Exception { if(isNotEquals(comparison)){ return notEquals[notEquals.length-1]; @@ -116,6 +126,9 @@ public abstract class Comparison { }else if(isNotLike(comparison)){ return notLike[notLike.length-1]; + }else if(isIsMember(comparison)){ + return isMember[isMember.length-1]; + }else{ return equals[equals.length-1]; } diff --git a/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/FilterEntry.java b/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/FilterEntry.java index 49f0a5d9dfb6a66b03142c018400ea9af9d7c532..038c074ca051051e5ce4629bb338f4e8e81e9705 100644 --- a/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/FilterEntry.java +++ b/o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/FilterEntry.java @@ -1,7 +1,6 @@ package com.x.query.core.express.plan; -import java.util.Date; -import java.util.Objects; +import java.util.*; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.Predicate; @@ -559,6 +558,12 @@ public class FilterEntry extends GsonPropertyObject { p = cb.and(p, cb.notLike(root.get(Item_.stringShortValue), "%" + compareValue + "%")); } else if (Comparison.isBetween(this.comparison)) { p = cb.and(p, cb.between(root.get(Item_.stringShortValue), compareValue, compareOtherValue)); + } else if (Comparison.isIsMember(this.comparison)) { + if(compareValue.indexOf(",") > -1){ + p = cb.and(p, root.get(Item_.stringShortValue).in(Arrays.asList(compareValue.split(",")))); + }else{ + p = cb.and(p, cb.equal(root.get(Item_.stringShortValue), compareValue)); + } } else { p = cb.and(p, cb.equal(root.get(Item_.stringShortValue), compareValue)); } @@ -974,6 +979,12 @@ public class FilterEntry extends GsonPropertyObject { p = cb.and(p, cb.notLike(root.get(paramName), "%" + compareValue + "%")); } else if (Comparison.isBetween(this.comparison)) { p = cb.and(p, cb.between(root.get(paramName), compareValue, compareOtherValue)); + } else if (Comparison.isIsMember(this.comparison)) { + if(compareValue.indexOf(",") > -1){ + p = cb.and(p, root.get(paramName).in(Arrays.asList(compareValue.split(",")))); + }else{ + p = cb.and(p, cb.equal(root.get(paramName), compareValue)); + } } else { p = cb.and(p, cb.equal(root.get(paramName), compareValue)); }