wuxw7
2018-04-18 ea3bded6c8659fbc0f2c1cb604bfe466c00ed32a
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
package com.java110.center.smo.impl;
 
import com.java110.center.dao.ICenterServiceDAO;
import com.java110.center.smo.ICenterServiceCacheSMO;
import com.java110.common.cache.AppRouteCache;
import com.java110.common.cache.MappingCache;
import com.java110.entity.center.AppRoute;
import com.java110.entity.mapping.Mapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * 刷新缓存
 * Created by wuxw on 2018/4/18.
 */
@Service("centerServiceCacheSMOImpl")
public class CenterServiceCacheSMOImpl implements ICenterServiceCacheSMO {
 
    @Autowired
    ICenterServiceDAO centerServiceDAOImpl;
 
    @Override
    public void flush() {
 
        //1.0 封装 AppRoute
        flushAppRoute();
 
        //2.0 分装 Mapping
        flushMapping();
    }
 
    /**
     * 刷新 Mapping 数据
     */
    private void flushMapping() {
 
        List<Mapping> mappings = centerServiceDAOImpl.getMappingInfoAll();
 
        for(Mapping mapping : mappings){
            MappingCache.setVaule(mapping);
        }
 
        Map<String,List<Mapping>> mappingMap = new HashMap<String,List<Mapping>>();
        List<Mapping> mappingsNew = null;
        for(Mapping mapping : mappings){
            if(mappingMap.containsKey(mapping.getDomain())){
                mappingsNew = mappingMap.get(mapping.getDomain());
                mappingsNew.add(mapping);
            }else{
                mappingsNew = new ArrayList<Mapping>();
                mappingsNew.add(mapping);
                mappingMap.put(mapping.getDomain(),mappingsNew);
            }
        }
 
        for (String domain : mappingMap.keySet()) {
            MappingCache.setValue(mappingMap.get(domain));
        }
    }
 
    /**
     * 刷新AppRoute数据
     */
    private void flushAppRoute(){
 
        List<Map> appInfos = centerServiceDAOImpl.getAppRouteAndServiceInfoAll();
        Map<String,List<AppRoute>> appRoustsMap = new HashMap<String,List<AppRoute>>();
        List<AppRoute> appRoutes = null;
        for(Map appInfo : appInfos){
            if(appRoustsMap.containsKey(appInfo.get("app_id").toString())){
                appRoutes = appRoustsMap.get(appInfo.get("app_id").toString());
                appRoutes.add(AppRoute.newInstance().builder(appInfo));
            }else{
                appRoutes = new ArrayList<AppRoute>();
                appRoutes.add(AppRoute.newInstance().builder(appInfo));
                appRoustsMap.put(appInfo.get("app_id").toString(),appRoutes);
            }
        }
 
        for (String appId : appRoustsMap.keySet()) {
            AppRouteCache.setAppRoute(appRoustsMap.get(appId));
        }
 
    }
 
    public ICenterServiceDAO getCenterServiceDAOImpl() {
        return centerServiceDAOImpl;
    }
 
    public void setCenterServiceDAOImpl(ICenterServiceDAO centerServiceDAOImpl) {
        this.centerServiceDAOImpl = centerServiceDAOImpl;
    }
}