package foundation.data.rule; import foundation.data.entity.Entity; import foundation.data.object.IParamProvider; import foundation.token.IUser; import foundation.token.IUserManager; import foundation.variant.expression.VariantExpression; import foundation.variant.expression.VariantList; import foundation.variant.expression.VariantSegment; import foundation.variant.provider.DataEvent; import foundation.variant.provider.VariantCenter; public class VariantDefaultValueCreator extends FieldDefaultValueCreator { public VariantDefaultValueCreator() { type = FieldDefaultValueType.Variant; } @Override protected void setRule(String rule) { try { VariantExpression expression = new VariantExpression(rule); VariantList varinats = expression.getVariantList(); if (varinats.isEmpty()) { return; } VariantSegment variant = varinats.get(0); String name = variant.getName(); super.setRule(name); } catch (Exception e) { e.printStackTrace(); } } @Override public Object exec(DataEvent dataEvent, Entity entity, IParamProvider paramProvider) { IUser user = IUserManager.getCurrentUser(); Object value = VariantCenter.getValue(dataEvent, rule, user); if (value != null) { entity.set(fieldName, value); } return value; } }