in seatunnel-server/seatunnel-dynamicform/src/main/java/org/apache/seatunnel/app/dynamicforms/FormStructureValidate.java [228:269]
private static List<String> validateMutuallyExclusive(@NonNull FormStructure formStructure) {
List<String> errorMessageList = new ArrayList();
Map<String, List<String>> exclusiveMap = new HashMap<>();
// find all mutually-exclusive options
formStructure
.getForms()
.forEach(
formOption -> {
if (formOption.getValidate() != null
&& formOption.getValidate()
instanceof MutuallyExclusiveValidate) {
exclusiveMap.put(
formOption.getField(),
((MutuallyExclusiveValidate) formOption.getValidate())
.getFields());
}
});
exclusiveMap.forEach(
(k, v) -> {
if (v == null || !v.contains(k)) {
errorMessageList.add(
String.format(
"MutuallyExclusiveValidate Option field[%s] must in validate field list",
k));
}
if (v != null) {
v.forEach(
field -> {
if (!exclusiveMap.keySet().contains(field)) {
errorMessageList.add(
String.format(
"MutuallyExclusiveValidate Option field[%s] , validate field[%s] can not found in form options",
k, field));
}
});
}
});
return errorMessageList;
}