소스 검색

增加startwith

menglu 3 년 전
부모
커밋
7a5bf9700f

+ 43 - 0
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/criteria/Match_startwith.java

@@ -0,0 +1,43 @@
+package com.persagy.ibms.data.sdk.criteria;
+
+import com.alibaba.fastjson.JSONObject;
+
+public class Match_startwith extends MatchBase {
+	public boolean pass;
+	public String value;
+	private boolean change = false;
+
+	public Match_startwith(Object value, boolean change) {
+		if (value instanceof JSONObject) {
+			JSONObject valueObject = (JSONObject) value;
+			if (valueObject.containsKey("pass")) {
+				this.pass = true;
+				return;
+			}
+		}
+
+		this.value = (String) value;
+		this.change = change;
+	}
+
+	public boolean match(Object item) {
+		if (this.pass) {
+			return true;
+		}
+
+		String itemValue = null;
+		if (item != null) {
+			itemValue = (String) (item);
+		}
+
+		if (itemValue == null) {
+			return false;
+		}
+
+		return itemValue.toLowerCase().startsWith(this.value.toLowerCase());
+	}
+
+	public boolean change() {
+		return this.change;
+	}
+}

+ 6 - 2
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/QueryUtil.java

@@ -32,10 +32,11 @@ import com.persagy.ibms.data.sdk.criteria.Match_lte;
 import com.persagy.ibms.data.sdk.criteria.Match_ne;
 import com.persagy.ibms.data.sdk.criteria.Match_notin;
 import com.persagy.ibms.data.sdk.criteria.Match_regex;
+import com.persagy.ibms.data.sdk.criteria.Match_startwith;
 import com.persagy.ibms.data.sdk.data.SceneDataObject;
-import com.persagy.ibms.data.sdk.data.SceneDataValue;
 import com.persagy.ibms.data.sdk.data.SceneDataPrimitive;
 import com.persagy.ibms.data.sdk.data.SceneDataSet;
+import com.persagy.ibms.data.sdk.data.SceneDataValue;
 import com.sagacloud.advanced.expression.AdvancedExpressionLexer;
 import com.sagacloud.advanced.expression.AdvancedExpressionParser;
 import com.sagacloud.advanced.expression.AdvancedExpressionScanner;
@@ -320,7 +321,7 @@ public class QueryUtil {
 							Object itemValueInner = valueInner.get(itemKeyInner);
 							if (itemKeyInner.equals("e") || itemKeyInner.equals("ne") || itemKeyInner.equals("gt") || itemKeyInner.equals("gte")
 									|| itemKeyInner.equals("lt") || itemKeyInner.equals("lte") || itemKeyInner.equals("regex")
-									|| itemKeyInner.equals("contain")) {
+									|| itemKeyInner.equals("contain") || itemKeyInner.equals("startwith")) {
 								boolean change = false;
 								if (itemValueInner instanceof JSONObject) {
 									JSONObject valueInnerInner = (JSONObject) itemValueInner;
@@ -354,6 +355,9 @@ public class QueryUtil {
 								} else if (itemKeyInner.equals("contain")) {
 									Match_contain MatchInner = new Match_contain(itemValueInner, change);
 									matchList.add(MatchInner);
+								} else if (itemKeyInner.equals("startwith")) {
+									Match_startwith MatchInner = new Match_startwith(itemValueInner, change);
+									matchList.add(MatchInner);
 								}
 							} else if (itemKeyInner.equals("in") || itemKeyInner.equals("notin")) {
 								if (itemValueInner instanceof JSONObject && ((JSONObject) itemValueInner).containsKey("pass")) {