Forráskód Böngészése

rwd: BOOLEAN类型信息点值设定为0/1,原值为true/false, 同时修改枚举型数据结构报错

yaoll 4 éve
szülő
commit
64ff6df6d9

+ 1 - 1
dmp-rwd-funcid-parser/src/main/java/com/persagy/dmp/rwd/funcid/parse/parser/ParserUtils.java

@@ -29,7 +29,7 @@ public class ParserUtils {
 		} else if (type == FuncidDataType.DOUBLE) {
 			return ObjectNodeUtils.isDouble(node);
 		} else if (type == FuncidDataType.BOOLEAN) {
-			return ObjectNodeUtils.isBoolean(node);
+			return ObjectNodeUtils.isLong(node);
 		} else if (type == FuncidDataType.DATETIME) { // TODO
 			return ObjectNodeUtils.isString(node);
 		} else if (type == FuncidDataType.ENUM) { // TODO

+ 25 - 9
dmp-rwd-funcid-parser/src/main/java/com/persagy/dmp/rwd/funcid/parse/parser/impl/BooleanParser.java

@@ -15,10 +15,10 @@ import java.util.List;
  * 不支持区间
  * <p>
  * 假设信息点编码的值为Info01, 入参格式:<br/>
- * 单数 非区间: { "Info01": true }<br/>
- * 复数 非区间: { "Info01": [ true, false, false] }<br/>
+ * 单数 非区间: { "Info01": 0 }<br/>
+ * 复数 非区间: { "Info01": [ 0, 1, 0] }<br/>
  */
-public class BooleanParser extends AbstractParser<Boolean> {
+public class BooleanParser extends AbstractParser<Integer> {
 
 	@Override
 	public void checkDef(ParserContext context) {
@@ -28,7 +28,7 @@ public class BooleanParser extends AbstractParser<Boolean> {
 	}
 
 	@Override
-	public void checkValue(ParserContext<Boolean> context) {
+	public void checkValue(ParserContext<Integer> context) {
 		super.checkValue(context);
 		if (context.isHasError()) {
 			return;
@@ -37,33 +37,49 @@ public class BooleanParser extends AbstractParser<Boolean> {
 		FuncidDefModel def = context.getDef();
 		JsonNode source = context.getSource();
 		Boolean isMultiple = def.getIsMultiple();
+		Boolean isRegion = def.getIsRegion();
 		FuncidDataType dataType = def.getDataType();
 		String sourceStr = source.toString();
-		String error = "值错误, 需要[ true or false], 传入[" + sourceStr + "]";
+		if (isRegion) {
+			// 区间
+			context.addError("不支持[Boolean 区间]");
+			return;
+		}
 		if (isMultiple) {
+			String error = "值错误, 需要[ 0 / 1 ]数组, 传入[" + sourceStr + "]";
 			// 复数
 			if (!ParserUtils.isArray(source, dataType)) {
 				context.addError(error);
 				return;
 			}
-			List<Boolean> value = ParserUtils.parseToList(sourceStr, Boolean.class);
+			List<Integer> value = ParserUtils.parseToList(sourceStr, Integer.class);
 			if (value == null || value.size() == 0) {
 				context.addError(error);
 				return;
 			}
+			for (Integer v : value) {
+				if (v != 0 && v != 1) {
+					context.addError(error);
+					return;
+				}
+			}
 			context.setArrayValue(value);
-		}
-		if (!isMultiple) {
+		} else {
+			String error = "值错误, 需要[ 0 / 1 ], 传入[" + sourceStr + "]";
 			// 单数 非区间
 			if (!ParserUtils.is(source, dataType)) {
 				context.addError(error);
 				return;
 			}
-			Boolean value = ParserUtils.parse(sourceStr, Boolean.class);
+			Integer value = ParserUtils.parse(sourceStr, Integer.class);
 			if (value == null) {
 				context.addError(error);
 				return;
 			}
+			if (value != 0 && value != 1) {
+				context.addError(error);
+				return;
+			}
 			context.setValue(value);
 		}
 	}

+ 4 - 12
dmp-rwd-funcid-parser/src/main/java/com/persagy/dmp/rwd/funcid/parse/parser/impl/EnumParser.java

@@ -60,13 +60,13 @@ public class EnumParser extends AbstractParser<String> {
 
 		Boolean isMultiple = def.getIsMultiple();
 		Boolean isRegion = def.getIsRegion();
-		if (isMultiple && isRegion) {
+		if (isRegion) {
 			// 复数, 区间
-			context.addError("不支持[Enum 复数 区间]");
+			context.addError("不支持[ENUM]区间");
 			return;
 		}
 
-		if (isMultiple && !isRegion) {
+		if (isMultiple) {
 			// 复数 非区间
 			if (!ParserUtils.isArray(source, dataType)) {
 				context.addError(error);
@@ -85,15 +85,7 @@ public class EnumParser extends AbstractParser<String> {
 				}
 			}
 			context.setArrayValue(value);
-		}
-
-		if (!isMultiple && isRegion) {
-			// 单数, 区间
-			context.addError("不支持[Enum 单数 区间]");
-			return;
-		}
-
-		if (!isMultiple && !isRegion) {
+		} else {
 			// 单数 非区间
 			if (!ParserUtils.is(source, dataType)) {
 				context.addError(error);

+ 6 - 13
dmp-rwd-funcid-parser/src/main/java/com/persagy/dmp/rwd/funcid/parse/parser/impl/MEnumParser.java

@@ -47,17 +47,17 @@ public class MEnumParser extends AbstractParser<List<String>> {
 			return;
 		}
 
-		String error = "值错误, 需要[" + dataSourceStr + "], 传入[" + sourceStr + "]";
 
 		Boolean isMultiple = def.getIsMultiple();
 		Boolean isRegion = def.getIsRegion();
-		if (isMultiple && isRegion) {
+		if (isRegion) {
 			// 复数, 区间
-			context.addError("不支持[Enum 复数 区间]");
+			context.addError("不支持[MENUM]区间");
 			return;
 		}
 
-		if (isMultiple && !isRegion) {
+		if (isMultiple) {
+			String error = "值错误, 需要[MENUM]数组, 传入[" + sourceStr + "]";
 			// 复数 非区间 二维数组
 			if (!isMatrix(source, dataType)) {
 				context.addError(error);
@@ -78,15 +78,8 @@ public class MEnumParser extends AbstractParser<List<String>> {
 				}
 			}
 			context.setArrayValue(value);
-		}
-
-		if (!isMultiple && isRegion) {
-			// 单数, 区间
-			context.addError("不支持[Enum 单数 区间]");
-			return;
-		}
-
-		if (!isMultiple && !isRegion) {
+		} else {
+			String error = "值错误, 需要[MENUM], 传入[" + sourceStr + "]";
 			// 单数 非区间
 			if (!ParserUtils.isArray(source, dataType)) {
 				context.addError(error);

+ 3 - 0
dmp-rwd-funcid-parser/src/test/java/com/persagy/dmp/rwd/funcid/parse/parser/impl/TestBooleanParser.java

@@ -11,6 +11,9 @@ import org.junit.Test;
 import java.util.Arrays;
 
 /**
+ *
+ * 废弃, boolean值修改为0/1
+ *
  * @author: yaoll
  * @date: 2020-09-22
  * @verison: 1.0

+ 186 - 0
dmp-rwd-funcid-parser/src/test/java/com/persagy/dmp/rwd/funcid/parse/parser/impl/TestBooleanParser2.java

@@ -0,0 +1,186 @@
+package com.persagy.dmp.rwd.funcid.parse.parser.impl;
+
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.persagy.dmp.rwd.enums.FuncidCategory;
+import com.persagy.dmp.rwd.enums.FuncidDataType;
+import com.persagy.dmp.rwd.model.FuncidDefModel;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.Arrays;
+
+/**
+ * @author: yaoll
+ * @date: 2020-09-22
+ * @verison: 1.0
+ */
+public class TestBooleanParser2 extends TestBaseParser{
+
+	FuncidDefModel def;
+	ArrayNode region;
+	Object param;
+
+	@Before
+	public void before() {
+		parser = new BooleanParser();
+
+		def = prepareModel(FuncidCategory.STATIC, FuncidDataType.BOOLEAN, false, false, null, null);
+		region = JsonNodeFactory.instance.arrayNode();
+		region.add(prepareRegion(10L, null, 50L, null));
+		region.add(prepareRegion(200L, null, 250L, null));
+	}
+
+	@Test
+	public void testParser() {
+
+		param = 0;
+		doAssert(def, false, false, null, param, true, 0); // 单数 非区间 无限制
+		doAssert(def, true, false, null, param, false, 0); // 复数 非区间 无限制
+
+		param = 0;
+		doAssert(def, false, false, null, param, true, 0); // 单数 非区间 无限制
+		doAssert(def, true, false, null, param, false, null); // 复数 非区间 无限制
+		doAssert(def, false, true, null, param, false, null); // 单数 区间 无限制
+		doAssert(def, true, true, null, param, false, null);  // 复数 区间 无限制
+
+		param = Arrays.asList(0, 1, 0);
+		doAssert(def, false, false, null, param, false, null); // 单数 非区间 无限制
+		doAssert(def, true, false, null, param, true, null); // 复数 非区间 无限制
+
+		param = 2;
+		doAssert(def, false, false, null, param, false, 0); // 单数 非区间 无限制
+		doAssert(def, true, false, null, param, false, 0); // 复数 非区间 无限制
+
+		param = Arrays.asList(2, 1, 0);
+		doAssert(def, false, false, null, param, false, null); // 单数 非区间 无限制
+		doAssert(def, true, false, null, param, false, null); // 复数 非区间 无限制
+
+		param = true;
+		doAssert(def, false, false, null, param, false, 0); // 单数 非区间 无限制
+		doAssert(def, true, false, null, param, false, 0); // 复数 非区间 无限制
+
+		param = "abc";
+		doAssert(def, false, false, null, param, false, 0); // 单数 非区间 无限制
+		doAssert(def, true, false, null, param, false, 0); // 复数 非区间 无限制
+
+
+//
+//		param = true;
+//		doAssert(def, false, false, null, param, true, true); // 单数 非区间 无限制
+//		doAssert(def, true, false, null, param, false, null); // 复数 非区间 无限制
+////		doAssert(def, false, true, null, param, false, null); // 单数 区间 无限制
+////		doAssert(def, true, true, null, param, false, null);  // 复数 区间 无限制
+//		doAssert(def, false, false, region, param, true, true); // 单数 非区间 有限制
+//		doAssert(def, true, false, region, param, false, null);// 复数 非区间 有限制
+////		doAssert(def, false, true, region, param, false, null);// 单数 区间 有限制
+////		doAssert(def, true, true, region, param, false, null);// 复数 区间 有限制
+//
+//		param = Arrays.asList(true, false, true);
+//		doAssert(def, false, false, null, param, false, null); // 单数 非区间 无限制
+//		doAssert(def, true, false, null, param, true, null); // 复数 非区间 无限制
+////		doAssert(def, false, true, null, param, false, null); // 单数 区间 无限制
+////		doAssert(def, true, true, null, param, false, null);  // 复数 区间 无限制
+//		doAssert(def, false, false, region, param, false, null); // 单数 非区间 有限制
+//		doAssert(def, true, false, region, param, true, null);// 复数 非区间 有限制
+////		doAssert(def, false, true, region, param, false, null);// 单数 区间 有限制
+////		doAssert(def, true, true, region, param, false, null);// 复数 区间 有限制
+//
+//		param = "true";
+//		doAssert(def, false, false, null, param, true, true); // 单数 非区间 无限制
+//		doAssert(def, true, false, null, param, false, null); // 复数 非区间 无限制
+////		doAssert(def, false, true, null, param, false, null); // 单数 区间 无限制
+////		doAssert(def, true, true, null, param, false, null);  // 复数 区间 无限制
+//		doAssert(def, false, false, region, param, true, true); // 单数 非区间 有限制
+//		doAssert(def, true, false, region, param, false, null);// 复数 非区间 有限制
+////		doAssert(def, false, true, region, param, false, null);// 单数 区间 有限制
+////		doAssert(def, true, true, region, param, false, null);// 复数 区间 有限制
+//
+//		param = "false";
+//		doAssert(def, false, false, null, param, true, false); // 单数 非区间 无限制
+//		doAssert(def, true, false, null, param, false, null); // 复数 非区间 无限制
+////		doAssert(def, false, true, null, param, false, null); // 单数 区间 无限制
+////		doAssert(def, true, true, null, param, false, null);  // 复数 区间 无限制
+//		doAssert(def, false, false, region, param, true, null); // 单数 非区间 有限制
+//		doAssert(def, true, false, region, param, false, null);// 复数 非区间 有限制
+////		doAssert(def, false, true, region, param, false, null);// 单数 区间 有限制
+////		doAssert(def, true, true, region, param, false, null);// 复数 区间 有限制
+//
+//		param = "abc";
+//		doAssert(def, false, false, null, param, false, null); // 单数 非区间 无限制
+//		doAssert(def, true, false, null, param, false, null); // 复数 非区间 无限制
+////		doAssert(def, false, true, null, param, false, null); // 单数 区间 无限制
+////		doAssert(def, true, true, null, param, false, null);  // 复数 区间 无限制
+//		doAssert(def, false, false, region, param, false, null); // 单数 非区间 有限制
+//		doAssert(def, true, false, region, param, false, null);// 复数 非区间 有限制
+////		doAssert(def, false, true, region, param, false, null);// 单数 区间 有限制
+////		doAssert(def, true, true, region, param, false, null);// 复数 区间 有限制
+//
+//		param = "[\"abc\"]";
+//		param = Arrays.asList("abc");
+//		doAssert(def, false, false, null, param, false, null); // 单数 非区间 无限制
+//		doAssert(def, true, false, null, param, false, null); // 复数 非区间 无限制
+////		doAssert(def, false, true, null, param, false, null); // 单数 区间 无限制
+////		doAssert(def, true, true, null, param, false, null);  // 复数 区间 无限制
+//		doAssert(def, false, false, region, param, false, null); // 单数 非区间 有限制
+//		doAssert(def, true, false, region, param, false, null);// 复数 非区间 有限制
+////		doAssert(def, false, true, region, param, false, null);// 单数 区间 有限制
+////		doAssert(def, true, true, region, param, false, null);// 复数 区间 有限制
+//
+//		param = "{\"$gt\": 12, \"$lt\": 44}";
+//		param = prepareRegion(12L, null, null, 44L);
+//		doAssert(def, false, false, null, param, false, null); // 单数 非区间 无限制
+//		doAssert(def, true, false, null, param, false, null); // 复数 非区间 无限制
+////		doAssert(def, false, true, null, param, true, null); // 单数 区间 无限制
+////		doAssert(def, true, true, null, param, false, null);  // 复数 区间 无限制
+//		doAssert(def, false, false, region, param, false, null); // 单数 非区间 有限制
+//		doAssert(def, true, false, region, param, false, null);// 复数 非区间 有限制
+////		doAssert(def, false, true, region, param, true, null);// 单数 区间 有限制
+////		doAssert(def, true, true, region, param, false, null);// 复数 区间 有限制
+//
+//		param = "{\"$gt\": 112, \"$lt\": 144}";
+//		param = prepareRegion(112L, null, null, 144L);
+//		doAssert(def, false, false, null, param, false, null); // 单数 非区间 无限制
+//		doAssert(def, true, false, null, param, false, null); // 复数 非区间 无限制
+////		doAssert(def, false, true, null, param, true, null); // 单数 区间 无限制
+////		doAssert(def, true, true, null, param, false, null);  // 复数 区间 无限制
+//		doAssert(def, false, false, region, param, false, null); // 单数 非区间 有限制
+//		doAssert(def, true, false, region, param, false, null);// 复数 非区间 有限制
+////		doAssert(def, false, true, region, param, false, null);// 单数 区间 有限制
+////		doAssert(def, true, true, region, param, false, null);// 复数 区间 有限制
+//
+//		param = "[{\"$gt\": 33, \"$lt\": 44}]";
+//		param = Arrays.asList(prepareRegion(33L, null, null, 44L));
+//		doAssert(def, false, false, null, param, false, null); // 单数 非区间 无限制
+//		doAssert(def, true, false, null, param, false, null); // 复数 非区间 无限制
+////		doAssert(def, false, true, null, param, false, null); // 单数 区间 无限制
+////		doAssert(def, true, true, null, param, true, null);  // 复数 区间 无限制
+//		doAssert(def, false, false, region, param, false, null); // 单数 非区间 有限制
+//		doAssert(def, true, false, region, param, false, null);// 复数 非区间 有限制
+////		doAssert(def, false, true, region, param, false, null);// 单数 区间 有限制
+////		doAssert(def, true, true, region, param, true, null);// 复数 区间 有限制
+//
+//		param = "[{\"$gt\": 33, \"$lt\": 144}]";
+//		param = Arrays.asList(prepareRegion(33L, null, null, 144L));
+//		doAssert(def, false, false, null, param, false, null); // 单数 非区间 无限制
+//		doAssert(def, true, false, null, param, false, null); // 复数 非区间 无限制
+////		doAssert(def, false, true, null, param, false, null); // 单数 区间 无限制
+////		doAssert(def, true, true, null, param, true, null);  // 复数 区间 无限制
+//		doAssert(def, false, false, region, param, false, null); // 单数 非区间 有限制
+//		doAssert(def, true, false, region, param, false, null);// 复数 非区间 有限制
+////		doAssert(def, false, true, region, param, false, null);// 单数 区间 有限制
+////		doAssert(def, true, true, region, param, false, null);// 复数 区间 有限制
+//
+//		param = "[{\"$gt\": 133, \"$lt\": 144}]";
+//		param = Arrays.asList(prepareRegion(133L, null, null, 144L));
+//		doAssert(def, false, false, null, param, false, null); // 单数 非区间 无限制
+//		doAssert(def, true, false, null, param, false, null); // 复数 非区间 无限制
+////		doAssert(def, false, true, null, param, false, null); // 单数 区间 无限制
+////		doAssert(def, true, true, null, param, true, null);  // 复数 区间 无限制
+//		doAssert(def, false, false, region, param, false, null); // 单数 非区间 有限制
+//		doAssert(def, true, false, region, param, false, null);// 复数 非区间 有限制
+////		doAssert(def, false, true, region, param, false, null);// 单数 区间 有限制
+////		doAssert(def, true, true, region, param, false, null);// 复数 区间 有限制
+
+	}
+}