shikeyin
2024-01-11 65da8373531677b1c37a98f53eaa30c892f35e5a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package com.iplatform.base.support;
 
import com.iplatform.base.Constants;
import com.iplatform.base.service.ConfigArgumentServiceImpl;
import com.iplatform.base.util.ArgumentsManagerUtils;
import com.iplatform.core.SimpleVariable;
import com.iplatform.model.po.S_config;
import com.walker.cache.AbstractCacheProvider;
import com.walker.cache.Cache;
import com.walker.infrastructure.arguments.ArgumentsManager;
import com.walker.infrastructure.arguments.Group;
import com.walker.infrastructure.arguments.Variable;
import com.walker.infrastructure.arguments.VariableType;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.security.SystemLogMan;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * 基于内存实现的可变参数管理器实现。
 * @author 时克英
 * @date 2022-11-29
 */
public class DatabaseArgumentsManager extends AbstractCacheProvider<Variable> implements ArgumentsManager {
 
    private ConfigArgumentServiceImpl configArgumentService = null;
 
    // 2023-05-16,按照formId分组配置集合
    private Map<String, List<Variable>> formGroupReference = new HashMap<>();
 
    public void setConfigArgumentService(ConfigArgumentServiceImpl configArgumentService) {
        this.configArgumentService = configArgumentService;
        SystemLogMan.getInstance().checkMan();
    }
 
    @Override
    protected int loadDataToCache(Cache cache) {
        List<S_config> hosts = this.configArgumentService.selectAll(new S_config());
        if(!StringUtils.isEmptyList(hosts)){
            Variable variable = null;
            List<Variable> groupList = null;
            for(S_config h : hosts){
//                cache.put(String.valueOf(h.getId()), h);
                variable = ArgumentsManagerUtils.toVariable(h.getConfig_key(), h.getConfig_value(), h.getData_type());
                cache.put(String.valueOf(h.getConfig_key()), variable);
 
                // 2023-05-16
                groupList = this.formGroupReference.get(String.valueOf(h.getForm_id()));
                if(groupList == null){
                    groupList = new ArrayList<>(8);
                    this.formGroupReference.put(String.valueOf(h.getForm_id()), groupList);
                }
                groupList.add(variable);
            }
            return hosts.size();
        }
        return 0;
    }
 
    @Override
    public String getProviderName() {
        return Constants.CACHE_NAME_ARGUMENTS;
    }
 
    @Override
    public Class<?> getProviderType() {
        return Variable.class;
    }
 
    @Override
    public Variable getVariable(String id) {
        return this.getCacheData(id);
    }
 
    @Override
    public void persist(String variableId, Object value) {
        SimpleVariable variable = ArgumentsManagerUtils.toVariable(variableId, value.toString(), VariableType.DEF_STRING);
        this.updateCacheData(variableId, variable);
    }
 
    @Override
    public void persist(String groupId, String variableId, Object value) {
        this.persist(variableId, value);
    }
 
    @Override
    public void persist(List<Object[]> changedList) {
        throw new UnsupportedOperationException("未实现代码");
    }
 
    @Override
    public void insert(List<Object[]> insertList) {
        throw new UnsupportedOperationException("未实现代码");
    }
 
    @Override
    public List<Group> getGroupList() {
        throw new UnsupportedOperationException("未实现代码");
    }
 
    @Override
    public List<Variable> getVariableList(String groupId) {
//        List<S_config> configList = this.configArgumentService.queryGroupConfigList(groupId);
//        return ArgumentsManagerUtils.acquireGroupVariableList(configList);
        // 使用新机制,根据formId返回分组参数集合。
        return this.formGroupReference.get(groupId);
    }
 
    @Override
    public void setSource(Object source) {
 
    }
}