迁移
This commit is contained in:
parent
91428f8a90
commit
0043bc5bac
@ -7,7 +7,7 @@ import com.example.demo.parser.process.constant.ParserProcessConstant;
|
||||
import com.example.demo.parser.process.domain.ConfigValue;
|
||||
import com.example.demo.parser.process.domain.LevelConfig;
|
||||
import com.example.demo.parser.process.domain.ValueConfig;
|
||||
import com.example.demo.draft.demo043.util.FormatUtil;
|
||||
import com.example.demo.parser.process.util.FormatUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
@ -6,7 +6,7 @@ import com.alibaba.fastjson2.JSON;
|
||||
import com.example.demo.parser.process.domain.ConfigValue;
|
||||
import com.example.demo.parser.process.domain.LevelConfig;
|
||||
import com.example.demo.parser.process.domain.ValueConfig;
|
||||
import com.example.demo.draft.demo043.util.FormatUtil;
|
||||
import com.example.demo.parser.process.util.FormatUtil;
|
||||
import com.hubspot.jinjava.Jinjava;
|
||||
import com.hubspot.jinjava.JinjavaConfig;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.example.demo.draft.demo043.util;
|
||||
package com.example.demo.parser.process.util;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.extern.slf4j.Slf4j;
|
@ -1,17 +0,0 @@
|
||||
|
||||
# 自定义配置
|
||||
xml-parser:
|
||||
# 文件存储配置
|
||||
file:
|
||||
upload-dir: ${user.dir}/upload
|
||||
temp-dir: ${user.dir}/temp
|
||||
|
||||
# 解析配置
|
||||
parser:
|
||||
default-encoding: UTF-8
|
||||
validate-xml: true
|
||||
|
||||
# 转换配置
|
||||
converter:
|
||||
default-encoding: UTF-8
|
||||
indent-size: 4
|
@ -23,5 +23,5 @@ spring:
|
||||
profiles:
|
||||
active: dev
|
||||
group:
|
||||
dev: orm,h2,sqlite,parser,rule,springdoc
|
||||
prod: orm,h2,sqlite,parser,rule
|
||||
dev: orm,h2,sqlite,springdoc
|
||||
prod: orm,h2,sqlite
|
||||
|
@ -4,7 +4,7 @@
|
||||
{
|
||||
"levelName": "platform",
|
||||
"enableLoop": true,
|
||||
"loopCount": "单个空中平台任务数据.架数",
|
||||
"loopCount": "{{单个空中平台任务数据.架数}}",
|
||||
"subLevels": [
|
||||
{
|
||||
"levelName": "comm",
|
||||
@ -14,7 +14,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "string tacanWorkChannel = \"单个空中平台任务数据.塔康工作频道\" # 塔康工作频道"
|
||||
"value": "string tacanWorkChannel = \"{{单个空中平台任务数据.塔康工作频道}}\" # 塔康工作频道"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -32,7 +32,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "string platformIdCardCode = \"单个空中平台任务数据.平台识别码\" # 平台识别码"
|
||||
"value": "string platformIdCardCode = \"{{单个空中平台任务数据.平台识别码}}\" # 平台识别码"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -40,7 +40,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "string platformIdCardNumber = \"单个空中平台任务数据.平台识别号\" # 平台识别号"
|
||||
"value": "string platformIdCardNumber = \"{{单个空中平台任务数据.平台识别号}}\" # 平台识别号"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -62,8 +62,8 @@
|
||||
}
|
||||
],
|
||||
"values": [
|
||||
"单个空中平台任务数据.主挂载武器",
|
||||
"单个空中平台任务数据.挂载类型"
|
||||
"{{单个空中平台任务数据.主挂载武器}}",
|
||||
"{{单个空中平台任务数据.挂载类型}}"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -81,8 +81,8 @@
|
||||
}
|
||||
],
|
||||
"values": [
|
||||
"单个空中平台任务数据.次挂载武器",
|
||||
"单个空中平台任务数据.挂载类型"
|
||||
"{{单个空中平台任务数据.次挂载武器}}",
|
||||
"{{单个空中平台任务数据.挂载类型}}"
|
||||
]
|
||||
}
|
||||
],
|
||||
@ -107,8 +107,8 @@
|
||||
}
|
||||
],
|
||||
"values": [
|
||||
"单个空中平台任务数据.平台名称",
|
||||
"单个空中平台任务数据.机型"
|
||||
"{{单个空中平台任务数据.平台名称}}",
|
||||
"{{单个空中平台任务数据.机型}}"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
@ -15,7 +15,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域生效时间段.日期时间使用模式"
|
||||
"value": "{{空域数据.空域生效时间段.日期时间使用模式}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -25,7 +25,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域生效时间段.开始时间"
|
||||
"value": "{{空域数据.空域生效时间段.开始时间}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -35,7 +35,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域生效时间段.结束时间"
|
||||
"value": "{{空域数据.空域生效时间段.结束时间}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -45,7 +45,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域生效时间段.结束时间标识符"
|
||||
"value": "{{空域数据.空域生效时间段.结束时间标识符}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -55,7 +55,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域生效时间段.间隔频率"
|
||||
"value": "{{空域数据.空域生效时间段.间隔频率}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -65,7 +65,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域生效时间段.间隔结束时间"
|
||||
"value": "{{空域数据.空域生效时间段.间隔结束时间}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -75,7 +75,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域生效时间段.相对时开始时间"
|
||||
"value": "{{空域数据.空域生效时间段.相对时开始时间}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -85,7 +85,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域生效时间段.相对时结束数据"
|
||||
"value": "{{空域数据.空域生效时间段.相对时结束数据}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -95,7 +95,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域生效时间段.时间类型"
|
||||
"value": "{{空域数据.空域生效时间段.时间类型}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -113,7 +113,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.代表空域相关的控制点.控制点类型"
|
||||
"value": "{{空域数据.代表空域相关的控制点.控制点类型}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -123,7 +123,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域几何数据.几何数据信息.纬度N 空域数据.空域几何数据.几何数据信息.经度E"
|
||||
"value": "{{空域数据.空域几何数据.几何数据信息.纬度}}N {{空域数据.空域几何数据.几何数据信息.经度}}E"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -134,7 +134,7 @@
|
||||
{
|
||||
"combined": false,
|
||||
"unit": "m",
|
||||
"value": "空域数据.代表空域相关的控制点.控制点的顶高"
|
||||
"value": "{{空域数据.代表空域相关的控制点.控制点的顶高}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -145,7 +145,7 @@
|
||||
{
|
||||
"combined": false,
|
||||
"unit": "m",
|
||||
"value": "空域数据.代表空域相关的控制点.控制点的底高"
|
||||
"value": "{{空域数据.代表空域相关的控制点.控制点的底高}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -155,14 +155,14 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.代表空域相关的控制点.是否隐藏控制点"
|
||||
"value": "{{空域数据.代表空域相关的控制点.是否隐藏控制点}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"values": [
|
||||
"空域数据.代表空域相关的控制点.控制点ID",
|
||||
"空域数据.代表空域相关的控制点.控制点名称"
|
||||
"{{空域数据.代表空域相关的控制点.控制点ID}}",
|
||||
"{{空域数据.代表空域相关的控制点.控制点名称}}"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -176,7 +176,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域几何数据.形状类型"
|
||||
"value": "{{空域数据.空域几何数据.形状类型}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -186,7 +186,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.代表空域相关的控制点.控制点的坐标位置纬度N 空域数据.代表空域相关的控制点.控制点的坐标位置经度E"
|
||||
"value": "{{空域数据.代表空域相关的控制点.控制点的坐标位置纬度}}N {{空域数据.代表空域相关的控制点.控制点的坐标位置经度}}E"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -196,7 +196,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域几何数据.数据点数目"
|
||||
"value": "{{空域数据.空域几何数据.数据点数目}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -211,7 +211,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域ID"
|
||||
"value": "{{空域数据.空域ID}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -221,7 +221,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域名称"
|
||||
"value": "{{空域数据.空域名称}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -231,7 +231,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.协调措施所属的大类型"
|
||||
"value": "{{空域数据.协调措施所属的大类型}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -241,7 +241,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域的具体协调措施类型"
|
||||
"value": "{{空域数据.空域的具体协调措施类型}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -251,7 +251,7 @@
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "空域数据.空域管控状态"
|
||||
"value": "{{空域数据.空域管控状态}}"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -1,75 +0,0 @@
|
||||
package com.example.demo.draft.demo043;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.example.demo.parser.process.domain.ConfigDocument;
|
||||
import com.example.demo.parser.process.domain.LevelConfig;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* LevelConfig loopCount字段集成测试
|
||||
*/
|
||||
class LoopCountIntegrationTest {
|
||||
|
||||
@Test
|
||||
void testLoopCountFieldParsing() throws Exception {
|
||||
// 读取default.json文件
|
||||
String templateContent = Files.readString(
|
||||
Path.of("src/main/resources/data/02-单个空中平台任务数据/default.json"),
|
||||
StandardCharsets.UTF_8
|
||||
);
|
||||
|
||||
// 解析JSON到ConfigDocument对象
|
||||
ConfigDocument document = JSON.parseObject(templateContent, ConfigDocument.class);
|
||||
|
||||
// 验证解析结果
|
||||
assertNotNull(document);
|
||||
assertNotNull(document.getLevelConfigs());
|
||||
assertEquals(1, document.getLevelConfigs().size());
|
||||
|
||||
LevelConfig platformLevel = document.getLevelConfigs().get(0);
|
||||
|
||||
// 验证关键字段
|
||||
assertEquals("platform", platformLevel.getLevelName());
|
||||
assertTrue(platformLevel.getEnableLoop(), "enableLoop字段应该为true");
|
||||
assertEquals("单个空中平台任务数据.架数", platformLevel.getLoopCount(), "loopCount字段应该正确获取值");
|
||||
|
||||
System.out.println("✅ SUCCESS: loopCount字段已正确获取值: " + platformLevel.getLoopCount());
|
||||
System.out.println("✅ SUCCESS: enableLoop字段已正确获取值: " + platformLevel.getEnableLoop());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testApplicationTest__02Scenario() throws Exception {
|
||||
// 模拟ApplicationTest__02中的场景
|
||||
String templateContent = Files.readString(
|
||||
Path.of("src/main/resources/data/02-单个空中平台任务数据/default.json"),
|
||||
StandardCharsets.UTF_8
|
||||
);
|
||||
|
||||
ConfigDocument document = JSON.parseObject(templateContent, ConfigDocument.class);
|
||||
String result = JSON.toJSONString(document);
|
||||
|
||||
// 验证JSON序列化和反序列化过程
|
||||
ConfigDocument reParsedDocument = JSON.parseObject(result, ConfigDocument.class);
|
||||
|
||||
assertNotNull(reParsedDocument);
|
||||
assertNotNull(reParsedDocument.getLevelConfigs());
|
||||
|
||||
LevelConfig platformLevel = reParsedDocument.getLevelConfigs().get(0);
|
||||
|
||||
// 验证关键字段在序列化/反序列化后仍然正确
|
||||
assertEquals("platform", platformLevel.getLevelName());
|
||||
assertTrue(platformLevel.getEnableLoop());
|
||||
assertEquals("单个空中平台任务数据.架数", platformLevel.getLoopCount());
|
||||
|
||||
System.out.println("✅ SUCCESS: ApplicationTest__02场景测试通过");
|
||||
System.out.println("levelName: " + platformLevel.getLevelName());
|
||||
System.out.println("enableLoop: " + platformLevel.getEnableLoop());
|
||||
System.out.println("loopCount: " + platformLevel.getLoopCount());
|
||||
}
|
||||
}
|
@ -1,147 +0,0 @@
|
||||
package com.example.demo.draft.demo043.core;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* EnhancedTemplateGenerator 测试类
|
||||
* 用于验证 applyEnhancedProcessing 方法修复后的功能
|
||||
*/
|
||||
public class EnhancedTemplateGeneratorTest {
|
||||
|
||||
@Test
|
||||
public void testApplyEnhancedProcessing_WithValueConfigs() {
|
||||
// 构建包含 valueConfigs 的测试数据
|
||||
Map<String, Object> testData = new HashMap<>();
|
||||
|
||||
// 构建 levelConfigs
|
||||
List<Map<String, Object>> levelConfigs = new ArrayList<>();
|
||||
|
||||
// 构建平台层级配置
|
||||
Map<String, Object> platformLevel = new HashMap<>();
|
||||
platformLevel.put("levelName", "platform");
|
||||
platformLevel.put("values", Arrays.asList("airspace", "AERIAL_REGION"));
|
||||
|
||||
// 构建平台层级的 valueConfigs
|
||||
List<Map<String, Object>> platformValueConfigs = new ArrayList<>();
|
||||
|
||||
Map<String, Object> platformValueConfig = new HashMap<>();
|
||||
platformValueConfig.put("valueName", "platform_config");
|
||||
platformValueConfig.put("comment", "平台配置信息");
|
||||
|
||||
List<Map<String, Object>> platformConfigValues = new ArrayList<>();
|
||||
Map<String, Object> configValue1 = new HashMap<>();
|
||||
configValue1.put("value", "config_value_1");
|
||||
configValue1.put("unit", "unit1");
|
||||
platformConfigValues.add(configValue1);
|
||||
|
||||
platformValueConfig.put("values", platformConfigValues);
|
||||
platformValueConfigs.add(platformValueConfig);
|
||||
|
||||
platformLevel.put("valueConfigs", platformValueConfigs);
|
||||
|
||||
// 构建子层级
|
||||
List<Map<String, Object>> subLevels = new ArrayList<>();
|
||||
|
||||
// 时间窗口子层级
|
||||
Map<String, Object> timeWindowLevel = new HashMap<>();
|
||||
timeWindowLevel.put("levelName", "time_window");
|
||||
timeWindowLevel.put("values", Arrays.asList("【不应该为空,实际有值】"));
|
||||
timeWindowLevel.put("comment", "空域生效时间配置");
|
||||
subLevels.add(timeWindowLevel);
|
||||
|
||||
// 控制点子层级
|
||||
Map<String, Object> controlPointLevel = new HashMap<>();
|
||||
controlPointLevel.put("levelName", "control_point");
|
||||
controlPointLevel.put("values", Arrays.asList("CP001", "训练区中心"));
|
||||
controlPointLevel.put("comment", "控制点ID和名称");
|
||||
subLevels.add(controlPointLevel);
|
||||
|
||||
// 几何形状子层级
|
||||
Map<String, Object> geometryLevel = new HashMap<>();
|
||||
geometryLevel.put("levelName", "geometry");
|
||||
geometryLevel.put("values", new ArrayList<>()); // 空数组
|
||||
geometryLevel.put("comment", "空域几何形状配置");
|
||||
|
||||
// 几何形状的 valueConfigs
|
||||
List<Map<String, Object>> geometryValueConfigs = new ArrayList<>();
|
||||
|
||||
Map<String, Object> geometryValueConfig = new HashMap<>();
|
||||
geometryValueConfig.put("valueName", "geometry_config");
|
||||
geometryValueConfig.put("comment", "几何形状配置");
|
||||
|
||||
List<Map<String, Object>> geometryConfigValues = new ArrayList<>();
|
||||
Map<String, Object> configValue2 = new HashMap<>();
|
||||
configValue2.put("value", "geometry_value_1");
|
||||
configValue2.put("unit", "unit2");
|
||||
geometryConfigValues.add(configValue2);
|
||||
|
||||
geometryValueConfig.put("values", geometryConfigValues);
|
||||
geometryValueConfigs.add(geometryValueConfig);
|
||||
|
||||
geometryLevel.put("valueConfigs", geometryValueConfigs);
|
||||
subLevels.add(geometryLevel);
|
||||
|
||||
platformLevel.put("subLevels", subLevels);
|
||||
levelConfigs.add(platformLevel);
|
||||
|
||||
testData.put("levelConfigs", levelConfigs);
|
||||
testData.put("conditionMap", new HashMap<>());
|
||||
|
||||
System.out.println("原始数据:");
|
||||
System.out.println(JSON.toJSONString(testData));
|
||||
|
||||
// 应用增强处理
|
||||
Map<String, Object> processedData = EnhancedTemplateGenerator.applyEnhancedProcessing(testData);
|
||||
|
||||
System.out.println("\n处理后的数据:");
|
||||
System.out.println(JSON.toJSONString(processedData));
|
||||
|
||||
// 验证处理结果
|
||||
assertNotNull(processedData, "处理后的数据不应为空");
|
||||
assertTrue(processedData.containsKey("levelConfigs"), "处理后的数据应包含 levelConfigs");
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Object> processedLevelConfigs = (List<Object>) processedData.get("levelConfigs");
|
||||
assertFalse(processedLevelConfigs.isEmpty(), "处理后的 levelConfigs 不应为空");
|
||||
|
||||
// 验证平台层级的 valueConfigs 是否存在
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, Object> processedPlatformLevel = (Map<String, Object>) processedLevelConfigs.get(0);
|
||||
assertTrue(processedPlatformLevel.containsKey("valueConfigs"), "平台层级的 valueConfigs 不应丢失");
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Object> platformValueConfigsResult = (List<Object>) processedPlatformLevel.get("valueConfigs");
|
||||
assertFalse(platformValueConfigsResult.isEmpty(), "平台层级的 valueConfigs 不应为空");
|
||||
|
||||
// 验证几何形状层级的 valueConfigs 是否存在
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Object> processedSubLevels = (List<Object>) processedPlatformLevel.get("subLevels");
|
||||
assertFalse(processedSubLevels.isEmpty(), "子层级不应为空");
|
||||
|
||||
// 找到几何形状层级
|
||||
Map<String, Object> processedGeometryLevel = null;
|
||||
for (Object subLevel : processedSubLevels) {
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, Object> subLevelMap = (Map<String, Object>) subLevel;
|
||||
if ("geometry".equals(subLevelMap.get("levelName"))) {
|
||||
processedGeometryLevel = subLevelMap;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
assertNotNull(processedGeometryLevel, "几何形状层级不应丢失");
|
||||
assertTrue(processedGeometryLevel.containsKey("valueConfigs"), "几何形状层级的 valueConfigs 不应丢失");
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<Object> geometryValueConfigsResult = (List<Object>) processedGeometryLevel.get("valueConfigs");
|
||||
assertFalse(geometryValueConfigsResult.isEmpty(), "几何形状层级的 valueConfigs 不应为空");
|
||||
|
||||
System.out.println("\n测试通过:valueConfigs 数据已正确保留!");
|
||||
}
|
||||
}
|
@ -1,93 +0,0 @@
|
||||
package com.example.demo.draft.demo043.domain;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.example.demo.parser.process.domain.ConfigDocument;
|
||||
import com.example.demo.parser.process.domain.LevelConfig;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* LevelConfig JSON解析测试
|
||||
*/
|
||||
class LevelConfigTest {
|
||||
|
||||
@Test
|
||||
void testLevelConfigJsonParsing() {
|
||||
// 测试JSON数据,包含enableLoop和loopCount字段
|
||||
String json = """
|
||||
{
|
||||
"levelName": "platform",
|
||||
"enableLoop": true,
|
||||
"loopCount": "单个空中平台任务数据.架数",
|
||||
"values": ["单个空中平台任务数据.平台名称", "单个空中平台任务数据.机型"],
|
||||
"valueConfigs": [],
|
||||
"subLevels": []
|
||||
}
|
||||
""";
|
||||
|
||||
// 解析JSON到LevelConfig对象
|
||||
LevelConfig levelConfig = JSON.parseObject(json, LevelConfig.class);
|
||||
|
||||
// 验证字段值
|
||||
assertNotNull(levelConfig);
|
||||
assertEquals("platform", levelConfig.getLevelName());
|
||||
assertTrue(levelConfig.getEnableLoop());
|
||||
assertEquals("单个空中平台任务数据.架数", levelConfig.getLoopCount());
|
||||
assertNotNull(levelConfig.getValues());
|
||||
assertEquals(2, levelConfig.getValues().size());
|
||||
|
||||
System.out.println("LevelConfig解析成功:");
|
||||
System.out.println("levelName: " + levelConfig.getLevelName());
|
||||
System.out.println("enableLoop: " + levelConfig.getEnableLoop());
|
||||
System.out.println("loopCount: " + levelConfig.getLoopCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testConfigDocumentJsonParsing() {
|
||||
// 测试完整的ConfigDocument JSON解析
|
||||
String json = """
|
||||
{
|
||||
"conditionMap": {},
|
||||
"levelConfigs": [
|
||||
{
|
||||
"levelName": "platform",
|
||||
"enableLoop": true,
|
||||
"loopCount": "单个空中平台任务数据.架数",
|
||||
"values": ["单个空中平台任务数据.平台名称", "单个空中平台任务数据.机型"],
|
||||
"valueConfigs": [
|
||||
{
|
||||
"valueName": "side",
|
||||
"values": [
|
||||
{
|
||||
"combined": false,
|
||||
"value": "red"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"subLevels": []
|
||||
}
|
||||
]
|
||||
}
|
||||
""";
|
||||
|
||||
// 解析JSON到ConfigDocument对象
|
||||
ConfigDocument document = JSON.parseObject(json, ConfigDocument.class);
|
||||
|
||||
// 验证字段值
|
||||
assertNotNull(document);
|
||||
assertNotNull(document.getLevelConfigs());
|
||||
assertEquals(1, document.getLevelConfigs().size());
|
||||
|
||||
LevelConfig levelConfig = document.getLevelConfigs().get(0);
|
||||
assertEquals("platform", levelConfig.getLevelName());
|
||||
assertTrue(levelConfig.getEnableLoop());
|
||||
assertEquals("单个空中平台任务数据.架数", levelConfig.getLoopCount());
|
||||
|
||||
System.out.println("ConfigDocument解析成功:");
|
||||
System.out.println("levelName: " + levelConfig.getLevelName());
|
||||
System.out.println("enableLoop: " + levelConfig.getEnableLoop());
|
||||
System.out.println("loopCount: " + levelConfig.getLoopCount());
|
||||
}
|
||||
}
|
@ -11,13 +11,13 @@
|
||||
// 7、 XML标签值 部分内容需要确定统一单位,例如: 速度单位 m/s
|
||||
|
||||
// TODO XML 转成 JSON 可能存在的问题
|
||||
// 8、 XML标签,一定存在部分数据是固定数据,例如: 各种类型、枚举
|
||||
// 9、 XML标签、值、属性 内容需要合并
|
||||
// 97、 增量更新问题,例如: 推演过程中,数据是动态不断更新的,这种是需要追加旧数据,还是读到什么数据就是什么数据?
|
||||
// 98、 允许组合规则、条件生效
|
||||
// 99、 对接时,需要一个字段一个字段对应
|
||||
|
||||
// DONE
|
||||
// 8、 XML标签,一定存在部分数据是固定数据,例如: 各种类型、枚举
|
||||
// 10、 XML标签 自定义函数问题
|
||||
// 可以调用自定义函数
|
||||
// 11、 XML标签值,存在一部分值需要拆分成多个数据
|
@ -1,10 +1,10 @@
|
||||
package com.example.demo.draft.demo043;
|
||||
package com.example.demo.parser.process.core.draft;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.example.demo.parser.process.domain.ConfigDocument;
|
||||
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;
|
||||
import com.example.demo.parser.process.core.Xml2AFSIMTransformation;
|
||||
import com.example.demo.draft.demo043.util.FormatUtil;
|
||||
import com.example.demo.parser.process.util.FormatUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
@ -1,10 +1,10 @@
|
||||
package com.example.demo.draft.demo043;
|
||||
package com.example.demo.parser.process.core.draft;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.example.demo.parser.process.domain.ConfigDocument;
|
||||
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;
|
||||
import com.example.demo.parser.process.core.Xml2AFSIMTransformation;
|
||||
import com.example.demo.draft.demo043.util.FormatUtil;
|
||||
import com.example.demo.parser.process.util.FormatUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@ -44,8 +44,11 @@ public class ApplicationTest__02 {
|
||||
}
|
||||
|
||||
// Step.2
|
||||
String targetContent = Files.readString(Path.of(processJSONFile), StandardCharsets.UTF_8);
|
||||
List<Object> list = JSON.parseArray(targetContent);
|
||||
// String targetContent = Files.readString(Path.of(processJSONFile), StandardCharsets.UTF_8);
|
||||
// List<Object> list = JSON.parseArray(targetContent);
|
||||
|
||||
// 通过 {{key}} 限制变量范围
|
||||
List<Object> list = FormatUtil.loadJSON(processJSONFile);
|
||||
|
||||
String templateContent = Files.readString(Path.of(inputTemplateData), StandardCharsets.UTF_8);
|
||||
ConfigDocument document = JSON.parseObject(templateContent, ConfigDocument.class);
|
||||
@ -54,7 +57,8 @@ public class ApplicationTest__02 {
|
||||
System.out.println(result);
|
||||
for(Object obj: list) {
|
||||
Map<String, String> map = JSON.parseObject(JSON.toJSONString(obj), Map.class);
|
||||
result = FormatUtil.stealBeamsAndReplacePillars(result, map);
|
||||
// result = FormatUtil.stealBeamsAndReplacePillars(result, map);
|
||||
result = FormatUtil.stealBeamsAndReplacePillars(result, map, true, false, false);
|
||||
}
|
||||
|
||||
// Step.3
|
@ -1,10 +1,10 @@
|
||||
package com.example.demo.draft.demo043;
|
||||
package com.example.demo.parser.process.core.draft;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.example.demo.parser.process.domain.ConfigDocument;
|
||||
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;
|
||||
import com.example.demo.parser.process.core.Xml2AFSIMTransformation;
|
||||
import com.example.demo.draft.demo043.util.FormatUtil;
|
||||
import com.example.demo.parser.process.util.FormatUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@ -18,11 +18,11 @@ public class ApplicationTest__03 {
|
||||
public static void main(String[] args) throws IOException {
|
||||
|
||||
List<String> dataList = new ArrayList<>() {{
|
||||
// add("20250923_4c32c8.xml");
|
||||
add("20250923_4c32c8.xml");
|
||||
add("20250923_82c579.xml");
|
||||
// add("20250923_422dc2.xml");
|
||||
// add("20250923_b43a26.xml");
|
||||
// add("20250923_c87aa1.xml");
|
||||
add("20250923_422dc2.xml");
|
||||
add("20250923_b43a26.xml");
|
||||
add("20250923_c87aa1.xml");
|
||||
}};
|
||||
|
||||
String prefix = "src/main/resources/data/03-任务航线/";
|
@ -1,10 +1,10 @@
|
||||
package com.example.demo.draft.demo043;
|
||||
package com.example.demo.parser.process.core.draft;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.example.demo.parser.process.domain.ConfigDocument;
|
||||
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;
|
||||
import com.example.demo.parser.process.core.Xml2AFSIMTransformation;
|
||||
import com.example.demo.draft.demo043.util.FormatUtil;
|
||||
import com.example.demo.parser.process.util.FormatUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@ -42,8 +42,11 @@ public class ApplicationTest__04 {
|
||||
}
|
||||
|
||||
// Step.2
|
||||
String targetContent = Files.readString(Path.of(processJSONFile), StandardCharsets.UTF_8);
|
||||
List<Object> list = JSON.parseArray(targetContent);
|
||||
// String targetContent = Files.readString(Path.of(processJSONFile), StandardCharsets.UTF_8);
|
||||
// List<Object> list = JSON.parseArray(targetContent);
|
||||
|
||||
// 通过 {{key}} 限制变量范围
|
||||
List<Object> list = FormatUtil.loadJSON(processJSONFile);
|
||||
|
||||
String templateContent = Files.readString(Path.of(inputTemplateData), StandardCharsets.UTF_8);
|
||||
ConfigDocument document = JSON.parseObject(templateContent, ConfigDocument.class);
|
||||
@ -52,7 +55,8 @@ public class ApplicationTest__04 {
|
||||
System.out.println(result);
|
||||
for(Object obj: list) {
|
||||
Map<String, String> map = JSON.parseObject(JSON.toJSONString(obj), Map.class);
|
||||
result = FormatUtil.stealBeamsAndReplacePillars(result, map);
|
||||
// result = FormatUtil.stealBeamsAndReplacePillars(result, map);
|
||||
result = FormatUtil.stealBeamsAndReplacePillars(result, map, true, false, false);
|
||||
}
|
||||
|
||||
// Step.3
|
@ -1,8 +1,6 @@
|
||||
package com.example.demo.draft.demo043;
|
||||
package com.example.demo.parser.process.domain;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.example.demo.parser.process.domain.ConfigDocument;
|
||||
import com.example.demo.parser.process.domain.LevelConfig;
|
||||
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
@ -1,4 +1,4 @@
|
||||
package com.example.demo.draft.demo043;
|
||||
package com.example.demo.parser.process.domain.draft;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;
|
@ -1,4 +1,4 @@
|
||||
package com.example.demo.draft.demo043;
|
||||
package com.example.demo.parser.process.domain.draft;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;
|
@ -1,4 +1,4 @@
|
||||
package com.example.demo.draft.demo043;
|
||||
package com.example.demo.parser.process.domain.draft;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.example.demo.parser.process.core.EnhancedTemplateGenerator;
|
@ -1,4 +1,4 @@
|
||||
package com.example.demo;
|
||||
package com.example.demo.parser.process.util;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@ -7,8 +7,6 @@ import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import com.example.demo.draft.demo043.util.FormatUtil;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
@ -955,7 +953,7 @@ public class FormatUtilTest {
|
||||
// 执行测试
|
||||
Object result = FormatUtil.cartesianConvert(coordinate, params);
|
||||
// 断言验证
|
||||
String expectedResult = "HELLO WORLD";
|
||||
String expectedResult = "待定 。。。";
|
||||
log.info("预期结果:'{}'", expectedResult);
|
||||
log.info("实际结果:'{}'", result);
|
||||
assertEquals(expectedResult, result);
|
||||
@ -1597,6 +1595,5 @@ public class FormatUtilTest {
|
||||
return;
|
||||
}
|
||||
assertTrue(false);
|
||||
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user