地质所 沉降监测网建设项目
chenhuan
2024-05-16 f992b4e508b358eba4170b1e9b1bb21319f7a3cd
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
/**
 * Copyright &copy; 2012-2014 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 */
package com.javaweb.ehcache.util;
 
import com.javaweb.common.utils.spring.SpringUtils;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
 
 
import java.util.Iterator;
import java.util.List;
 
/**
 * Cache工具类
 * @author wujiyue
 */
public class EhCacheUtils {
 
    private static CacheManager cacheManager =SpringUtils.getBean("ehCacheManager");
    public static final String SYS_CACHE = "sysCache";
    public static final String USER_CACHE = "userCache";
    public static final String DEFAULT_CACHE = "defaultCache";
    /**
     * 根据缓存键获取系统缓存的缓存值
     * @param key
     * @return
     */
    public static Object getSysInfo(String key) {
        return get(SYS_CACHE, key);
    }
    public static Object getDefaultInfo(String key) {
        return get(DEFAULT_CACHE, key);
    }
    public static Object getSysInfo(String prefix,String key) {
        return get(SYS_CACHE, prefix+"_"+key);
    }
    public static Object getUserInfo(String key,String yhid) {
        return get(USER_CACHE, key+"_"+yhid);
    }
    /**
     * 写入SYS_CACHE缓存
     * @param key
     * @return
     */
    public static void putSysInfo(String key, Object value) {
        put(SYS_CACHE, key, value);
    }
    public static void putDefaultInfo(String key, Object value) {
        put(DEFAULT_CACHE, key, value);
    }
    public static void putSysInfo(String prefix,String key, Object value) {
        put(SYS_CACHE, prefix+"_"+key, value);
    }
    public static void putUserInfo(String key,String yhid, Object value) {
        put(USER_CACHE, key+"_"+yhid, value);
    }
    /**
     * 从SYS_CACHE缓存中移除
     * @param key
     * @return
     */
    public static void removeSysInfo(String key) {
        remove(SYS_CACHE, key);
    }
    public static void removeSysInfo(String prefix,String key) {
        remove(SYS_CACHE, prefix+"_"+key);
    }
    public static void removeUserInfo(String key,String yhid) {
        remove(USER_CACHE, key+"_"+yhid);
    }
    public static void clearUserInfo(String yhid){
        Cache cache=getCache(USER_CACHE);
        List list = cache.getKeys();
        for (Iterator localIterator = list.iterator(); localIterator.hasNext();) {
            Object key = localIterator.next();
            if(key.toString().indexOf("_"+yhid)>=0){
                cache.remove(key);
            }
 
        }
    }
    /**
     * 清空缓存
     * @param cacheName
     */
    public static void clear(String cacheName){
        Cache cache=getCache(cacheName);
 
        List list = cache.getKeys();
        for (Iterator localIterator = list.iterator(); localIterator.hasNext();) {
            Object key = localIterator.next();
                cache.remove(key);
        }
    }
 
    /**
     * 获取缓存值
     * @param cacheName 缓存的名称
     * @param key 缓存的键
     * @return
     */
    private static Object get(String cacheName, String key) {
        Element element = getCache(cacheName).get(key);
        return element==null?null:element.getObjectValue();
    }
 
    /**
     * 写入缓存
     * @param cacheName
     * @param key
     * @param value
     */
    private static void put(String cacheName, String key, Object value) {
        Element element = new Element(key, value);
        getCache(cacheName).put(element);
    }
 
    /**
     * 从缓存中移除
     * @param cacheName
     * @param key
     */
    private static void remove(String cacheName, String key) {
        getCache(cacheName).remove(key);
    }
    
    /**
     * 获得一个Cache,没有则创建一个。
     * @param cacheName
     * @return
     */
    private static Cache getCache(String cacheName){
        Cache cache = cacheManager.getCache(cacheName);
        if (cache == null){
            cacheManager.addCache(cacheName);
            cache = cacheManager.getCache(cacheName);
            cache.getCacheConfiguration().setEternal(true);
        }
        return cache;
    }
 
    public static CacheManager getCacheManager() {
        return cacheManager;
    }
 
}