package foundation.code; import foundation.dao.bizlogic.ICodeProvider; import foundation.data.entity.Entity; import foundation.data.entity.EntitySet; import foundation.data.object.DataObject; import foundation.data.rule.FieldDefaultValueCreator; import foundation.server.Initializer; public class CodeLoader extends Initializer { public CodeLoader() { } @Override public void startUp() throws Exception { //1. 加载配置 load(); //2. 注册编码默认值Creator registerCodeDefaultValueCreator(); //3. CodeEngine codeEngine = CodeEngine.getInstance(); ICodeProvider.providerCreator = codeEngine; } @Override public void shutDown() throws Exception { } public void load() throws Exception { CodeEngine codeEngine = CodeEngine.createInstance(); try { DataObject dataObject = DataObject.getInstance("sys_code"); EntitySet entitySet = dataObject.getTableEntitySet(); for (Entity entity: entitySet) { CodeRule codeRule = new CodeRule(); codeRule.load(entity); CodeRuleRuntime runtime = codeRule.toRuntime(); codeEngine.addOneRule(codeRule.getCode(), runtime); } //2. register code provider // VariantCenter center = VariantCenter.getInstance(); // CodeProvider provider = CodeProvider.getInstance(); // center.registPersist(CodeProvider.getInstance().getVariantNames(), provider); } finally { codeEngine.active(); } } public void reload() throws Exception { CodeEngine codeEngine = CodeEngine.createInstance(); DataObject dataObject = DataObject.getInstance("sys_code"); EntitySet entitySet = dataObject.getTableEntitySet(); for (Entity entity: entitySet) { CodeRule codeRule = new CodeRule(); codeRule.load(entity); CodeRuleRuntime runtime = codeRule.toRuntime(); codeEngine.addOneRule(codeRule.getCode(), runtime); } //2. codeEngine.active(); } private void registerCodeDefaultValueCreator() { //1. 注册到 field default value creator 中 (data object 中单条使用) FieldDefaultValueCreator.registerOne("code", CodeDefaultValueCreator.class); //2. } }