常量资源文件工具类

张军 2756 0

常量资源文件工具类,读取配置文件常量的工具类,可放入内存,速度及快

张军博客

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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
package zj.message.util;
 
import java.io.Serializable;
import java.text.MessageFormat;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
 
import org.apache.log4j.Logger;
 
import zj.check.util.CheckUtil;
import zj.java.util.JavaUtil;
 
/**
 * 常量资源文件工具类<br>
 
 * @version 1.00 (2011.12.02)
 * @author SHNKCS 张军 {@link  <a target=_blank href="http://www.zhangjunbk.com">张军个人网站</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target=_blank href="http://user.qzone.qq.com/360901061/">张军QQ空间</a>}
 */
public class MessageConstantsUtil implements Serializable {
    private static final long serialVersionUID = 1L;
    private transient static final Logger log = Logger.getLogger(MessageConstantsUtil.class);
    public static String AJAX_SUCCESS;
    public static String AJAX_FAIL;
    public static String AJAX_MSG;
    /** 资源键值对 **/
    public static final Map<String, String> CONSTANT_KEY_VALUE = Collections.synchronizedMap(new HashMap<String, String>());
    /** 资源文件地址集合,无序 **/
    public static Set<String> CONFIGS = new HashSet<String>();
    /** 国际化资源文件/资源文件内容初使化 **/
    static {
        AJAX_SUCCESS = "success";
        AJAX_FAIL = "fail";
        AJAX_MSG = "msg";
        loadConfig(null);
        setConstantKeyValueToMemory();
    }
 
    // 资源文件
    /**
     * 设置资源文件路径
     
     * @param configFile
     *            <p>
     *            ./constant.properties
     *            </p>
     *            <p>
     *            ./systemConfig.properties
     *            </p>
     *            <p>
     *            ./app.properties
     *            </p>
     * @return 资源文件值
     */
    public static void loadConfig(String configFile) {
        // 默认注册资源文件地址
        CONFIGS.add("./constant.properties");
        CONFIGS.add("./systemConfig.properties");
        CONFIGS.add("./app.properties");
        // 添加新的资源文件地址
        String[] configs = JavaUtil.split(configFile, ",");
        for (String s : configs) {
            if (CheckUtil.isNull(s))
                continue;
            CONFIGS.add(s);
        }
    }
 
    /**
     * 获取资源文件值
     
     * @param key
     *            资源文件key
     * @param notExistIsNull
     *            <p>
     *            true:如果资源文件键不存在,则返回null
     *            </p>
     *            <p>
     *            false:如果资源文件键不存在,则返回资源文件key
     *            </p>
     * @return 资源文件值
     */
    public static String getConstantValue(String key, boolean notExistIsNull) {
        String value = null;
        boolean exists = false;
        for (String path : CONFIGS) {
            value = ConfigUtil.getConfig(path, key);
            if (value != null && !value.equals(key)) {
                exists = true;
                break;
            }
        }
        if (!exists) {
            if (notExistIsNull) {
                value = null;
            else {
                value = key;
            }
        }
        CONSTANT_KEY_VALUE.put(key, value);
        return value;
    }
 
    /**
     * 获取资源文件值
     
     * @param key
     *            资源文件key
     * @return 资源文件值
     */
    public static String getConstantValue(String key) {
        return getConstantValue(key, true);
    }
 
    /**
     * 获取资源文件值
     
     * @param key
     *            资源文件key
     * @param notExistIsNull
     *            <p>
     *            true:如果资源文件键不存在,则返回null
     *            </p>
     *            <p>
     *            false:如果资源文件键不存在,则返回资源文件key
     *            </p>
     * @param arguments
     *            资源文件参数
     * @return 资源文件值
     */
    public static String getConstantValueByParams(String key, boolean notExistIsNull, Object... arguments) {
        return getValueByParams(getConstantValue(key, notExistIsNull), arguments);
    }
 
    /**
     * 获取资源文件值
     
     * @param key
     *            资源文件key
     * @param arguments
     *            资源文件参数
     * @return 资源文件值
     */
    public static String getConstantValueByParams(String key, Object... arguments) {
        return getConstantValueByParams(key, false, arguments);
    }
 
    /**
     * 获取资源文件值
     
     * @param key
     *            资源文件key
     * @param paths
     *            资源文件路径集合
     * @param notExistIsNull
     *            <p>
     *            true:如果资源文件键不存在,则返回null
     *            </p>
     *            <p>
     *            false:如果资源文件键不存在,则返回资源文件key
     *            </p>
     * @return 资源文件值
     */
    public static String getConstantValueByMemory(String key, Set<String> paths, boolean notExistIsNull) {
        String value = null;
        if (CheckUtil.isNull(key)) {
            // 先清除缓存
            CONSTANT_KEY_VALUE.clear();
            // 最好只调用一次
            CONSTANT_KEY_VALUE.putAll(ConfigUtil.getConstantKeyValues(paths));
            log.debug("加载所有常量数据至缓存成功");
        else {
            if ((value = CONSTANT_KEY_VALUE.get(key)) == null) {
                value = getConstantValue(key, notExistIsNull);
                CONSTANT_KEY_VALUE.put(key, value);
            }
        }
        return value;
    }
 
    /**
     * 获取资源文件值
     
     * @param key
     *            资源文件key
     * @param paths
     *            资源文件路径集合
     * @return 资源文件值
     */
    public static String getConstantValueByMemory(String key, Set<String> paths) {
        return getConstantValueByMemory(key, paths, false);
    }
 
    /**
     * 设置所有资源键值
     */
    public static void setConstantKeyValueToMemory() {
        setConstantKeyValueToMemory(CONFIGS);
    }
 
    /**
     * 设置所有资源键值
     */
    public static void setConstantKeyValueToMemory(boolean notExistIsNull) {
        setConstantKeyValueToMemory(CONFIGS, notExistIsNull);
    }
 
    /**
     * 设置所有资源文件键值到内存中
     
     * @param config
     */
    public static void setConstantKeyValueToMemory(Set<String> config) {
        getConstantValueByMemory(null, config);
    }
 
    /**
     * 设置所有资源文件键值到内存中
     
     * @param config
     */
    public static void setConstantKeyValueToMemory(Set<String> config, boolean notExistIsNull) {
        getConstantValueByMemory(null, config, notExistIsNull);
    }
 
    /**
     * 获取资源文件值
     
     * @param key
     *            资源文件key
     * @param notExistIsNull
     *            <p>
     *            true:如果资源文件键不存在,则返回null
     *            </p>
     *            <p>
     *            false:如果资源文件键不存在,则返回资源文件key
     *            </p>
     * @return 资源文件值
     */
    public static String getConstantValueByMemory(String key, boolean notExistIsNull) {
        return getConstantValueByMemory(key, CONFIGS, notExistIsNull);
    }
 
    /**
     * 获取资源文件值
     
     * @param key
     *            资源文件key
     * @return 资源文件值
     */
    public static String getConstantValueByMemory(String key) {
        return getConstantValueByMemory(key, true);
    }
 
    /**
     * 获取资源文件值
     
     * @param key
     *            资源文件key
     * @param notExistIsNull
     *            <p>
     *            true:如果资源文件键不存在,则返回null
     *            </p>
     *            <p>
     *            false:如果资源文件键不存在,则返回资源文件key
     *            </p>
     * @param arguments
     *            资源文件参数
     * @return 资源文件值
     */
    public static String getConstantValueByMemoryParams(String key, boolean notExistIsNull, Object... arguments) {
        return getValueByParams(getConstantValueByMemory(key, notExistIsNull), arguments);
    }
 
    /**
     * 获取资源文件值
     
     * @param key
     *            资源文件key
     * @param arguments
     *            资源文件参数
     * @return 资源文件值
     */
    public static String getConstantValueByMemoryParams(String key, Object... arguments) {
        return getConstantValueByMemoryParams(key, false, arguments);
    }
 
    /**
     * 配置文件内容取得带参数
     
     * @param value
     * @param arguments
     * @return
     */
    public static String getValueByParams(String value, Object... arguments) {
        try {
            return MessageFormat.format(value, arguments);
        catch (Exception e) {
            e.printStackTrace();
            return value;
        }
    }
 
    /**
     * 打印debug信息
     
     * @return
     */
    public static void debugString() {
        log.debug("资源文件列表如下:");
        for (String s : CONFIGS) {
            log.debug("CONFIGS:" + s);
        }
        log.debug("CONSTANT_KEY_VALUE:" + CONSTANT_KEY_VALUE.entrySet());
    }
 
}



更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论