package foundation.data.rule;
|
|
import java.util.List;
|
|
import foundation.dao.bizlogic.ICodeProvider;
|
import foundation.data.meta.field.Field;
|
import foundation.data.meta.field.FieldsRuntime;
|
import foundation.util.MapList;
|
import foundation.util.Util;
|
import foundation.variant.provider.DataEvent;
|
|
public class FieldRules {
|
|
private static MapList<String, GlobalDefaultValueTemplate> autoTemplates;
|
private String dataName;
|
private MapList<String, FieldValidateRule> valudateRules;
|
private MapList<String, FieldDefaultValueRule> defaultValueRules;
|
|
static {
|
autoTemplates = new MapList<String, GlobalDefaultValueTemplate>();
|
}
|
|
public FieldRules(String dataName) {
|
this.dataName = dataName;
|
valudateRules = new MapList<String, FieldValidateRule>();
|
defaultValueRules = new MapList<String, FieldDefaultValueRule>();
|
}
|
|
public void loadOne(Field field, RuleSource source) throws Exception {
|
String fieldName = field.getName();
|
|
//1. 加载校验规则
|
FieldValidateRule validateRule = FieldValidateRule.getInstance(field);
|
|
if (validateRule != null) {
|
valudateRules.add(fieldName, validateRule);
|
}
|
|
//2. 加载field中定义的默认值
|
if (field.hasDefaultValue()) {
|
FieldDefaultValueRule defaultValueRule = new FieldDefaultValueRule(field, field.getDefaultValue(), source, field.getLabelChinese());
|
defaultValueRules.add(fieldName, defaultValueRule);
|
}
|
}
|
|
public void loadOne(String fieldName, FieldDefaultValueRule defaultValueRule) throws Exception {
|
defaultValueRules.add(fieldName, defaultValueRule);
|
}
|
|
public static void loadOneGlobalDefaultValueTemplate(GlobalDefaultValueTemplate template) {
|
autoTemplates.add(template.getFieldName(), template);
|
}
|
|
public void loadGlobalDefaultValues(FieldsRuntime fieldsMeta) throws Exception {
|
for (GlobalDefaultValueTemplate autoTemplate: autoTemplates) {
|
String dataName = autoTemplate.getDataName();
|
|
if (!Util.isEmpty(dataName) && !dataName.equalsIgnoreCase(this.dataName)) {
|
continue;
|
}
|
|
String fieldName = autoTemplate.getFieldName();
|
Field field = fieldsMeta.get(fieldName);
|
|
if (!fieldsMeta.contains(fieldName)) {
|
continue;
|
}
|
|
if (defaultValueRules.contains(fieldName)) {
|
continue;
|
}
|
|
String defaultValue = autoTemplate.getValueCode();
|
DataEvent dataEvent = DataEvent.parse(autoTemplate.getDataEvent());
|
|
FieldDefaultValueRule defaultValueRule = new FieldDefaultValueRule(field, defaultValue, RuleSource.FieldMeta, autoTemplate.getRemark());
|
defaultValueRule.setDataEvent(dataEvent);
|
defaultValueRules.add(fieldName, defaultValueRule);
|
}
|
}
|
|
public List<FieldValidateRule> getValudateRules() {
|
return valudateRules.getItemList();
|
}
|
|
public List<FieldDefaultValueRule> getDefaultValueRules() {
|
return defaultValueRules.getItemList();
|
}
|
|
public void clear() {
|
//1.
|
valudateRules.clear();
|
|
//2.
|
MapList<String, FieldDefaultValueRule> temp = new MapList<String, FieldDefaultValueRule>();
|
|
for (FieldDefaultValueRule defaultRule: defaultValueRules) {
|
if (RuleSource.FieldMeta != defaultRule.getSource()) {
|
temp.add(defaultRule.getFieldName(), defaultRule);
|
}
|
}
|
|
defaultValueRules = temp;
|
}
|
|
public ICodeProvider getCodeProvider() {
|
for (FieldDefaultValueRule defaultValueRule: defaultValueRules) {
|
if (FieldDefaultValueType.Code == defaultValueRule.getType()) {
|
return defaultValueRule.getCodeProvider();
|
}
|
}
|
|
return null;
|
}
|
|
}
|