package foundation.data.rule; import foundation.dao.bizlogic.ICodeProvider; import foundation.data.entity.Entity; import foundation.data.meta.field.Field; import foundation.data.object.IParamProvider; import foundation.handler.IMessageReporter; import foundation.variant.provider.DataEvent; public class FieldDefaultValueRule { private RuleSource source; private Field field; private DataEvent dataEvent; private String rule; private FieldDefaultValueCreator valueCreator; private String remark; public FieldDefaultValueRule(Field field, String rule, RuleSource source, String remark) throws Exception { this.field = field; this.rule = rule; this.source = source; this.remark = remark; valueCreator = FieldDefaultValueCreator.getInstance(field.getName(), rule); } public FieldDefaultValueRule(Field field, FieldDefaultValueCreator creator, RuleSource source) throws Exception { this.field = field; this.valueCreator = creator; this.source = source; this.remark = field.getLabelChinese(); } public void exec(DataEvent dataEvent, Entity entity, IParamProvider paramProvider, IMessageReporter reporter) { if (valueCreator == null) { return; } if (this.dataEvent != null && !this.dataEvent.isCompatibleWith(dataEvent)) { return; } Object value = valueCreator.exec(dataEvent, entity, paramProvider); if (reporter != null) { String str = String.valueOf(value); reporter.reportOneMessage("默认值", remark + "=" + str); } } public String getRule() { return rule; } public DataEvent getDataEvent() { return dataEvent; } public void setDataEvent(DataEvent dataEvent) { this.dataEvent = dataEvent; } public String getFieldName() { return field.getName(); } public RuleSource getSource() { return source; } public String getRemark() { return remark; } public FieldDefaultValueCreator getValueCreator() { return valueCreator; } public FieldDefaultValueType getType() { if (valueCreator == null) { return null; } return valueCreator.getType(); } public ICodeProvider getCodeProvider() { ICodeProvider provider = ICodeProvider.getInstance(field, rule); return provider; } }