package foundation.state; import foundation.data.entity.Entity; import foundation.data.object.IParamProvider; import foundation.data.rule.FieldDefaultValueCreator; import foundation.variant.provider.DataEvent; public class StateDefaultValueCreator extends FieldDefaultValueCreator { private StateMachine stateMachine; @Override public Object exec(DataEvent dataEvent, Entity entity, IParamProvider paramProvider) { if (DataEvent.New == dataEvent || DataEvent.Insert == dataEvent) { StateField stateField = stateMachine.getStateField(); State state = stateMachine.getFirst(); setStateValue(entity, stateField, state); return state.getCode(); } else if (DataEvent.Update == dataEvent) { StateField stateField = stateMachine.getStateField(); setStateValue(entity, stateField, null); return "不修改原值"; } return "不修改原值"; } private void setStateValue(Entity entity, StateField stateField, State state) { if (state == null) { return; } entity.set(stateField.getCode(), state.getCode()); entity.set(stateField.getName(), state.getName()); } public StateMachine getStateMachine() { return stateMachine; } public void setStateMachine(StateMachine stateMachine) { this.stateMachine = stateMachine; } }