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;
|
}
|
|
}
|