DictionariesManager.java
4.55 KB
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
package com.studymachine.www.manager;
import com.google.gson.reflect.TypeToken;
import com.hjq.gson.factory.GsonFactory;
import com.hjq.http.EasyHttp;
import com.hjq.http.lifecycle.ApplicationLifecycle;
import com.hjq.http.listener.OnHttpListener;
import com.studymachine.www.enumtype.DictionariesEnum;
import com.studymachine.www.event.UserInfoEvent;
import com.studymachine.www.http.api.GetDictionariesApi;
import com.studymachine.www.http.model.HttpData;
import com.tencent.mmkv.MMKV;
import org.greenrobot.eventbus.EventBus;
import org.json.JSONObject;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import timber.log.Timber;
/**
* 字典管理
*/
public class DictionariesManager {
private final static String DICTIONARIES_TAG = "studyDictionaries";
private static volatile DictionariesManager dictionariesManager;
private Map<String, List<Object>> dictionariesMap;
private DictionariesManager() {
initData();
getHttpData();
}
public static DictionariesManager getInstance() {
if (dictionariesManager == null) {
synchronized (UserManager.class) {
if (dictionariesManager == null) {
dictionariesManager = new DictionariesManager();
}
}
}
return dictionariesManager;
}
public Map<String, List<Object>> getDictionariesMap() {
return dictionariesMap;
}
public void setDictionariesMap(Map<String, List<Object>> dictionariesMap) {
this.dictionariesMap = dictionariesMap;
String json=null;
if(dictionariesMap!=null){
json= GsonFactory.getSingletonGson().toJson(dictionariesMap);
}
MMKV.defaultMMKV().encode(DICTIONARIES_TAG,json);
EventBus.getDefault().post(new UserInfoEvent());
}
/**
* 获取字典中的key
* @param dictionariesEnum 字典key值
* @return 字典列表
*/
public List<GetDictionariesApi.Bean> getDictionItem(DictionariesEnum dictionariesEnum) {
if (dictionariesMap == null) {
return new ArrayList<>();
}
if (dictionariesMap.get(dictionariesEnum.getKey()) == null) {
return new ArrayList<>();
}
String json = GsonFactory.getSingletonGson().toJson(dictionariesMap.get(dictionariesEnum.getKey()));
Type type = new TypeToken<List<GetDictionariesApi.Bean>>() {}.getType();
return GsonFactory.getSingletonGson().fromJson(json, type);
}
/**
* 回显字典
*
* @param dictionariesEnum 字典key值
* @return 回显值
*/
public String parseDiction(String value, DictionariesEnum dictionariesEnum) {
GetDictionariesApi.Bean bean = findDictionItem(value, dictionariesEnum);
if (bean != null) {
return bean.getLabel();
}
return value;
}
/**
* 寻找字典的item
* @param value value值
* @param dictionariesEnum 字典key值
* @return 字典item
*/
public GetDictionariesApi.Bean findDictionItem(String value, DictionariesEnum dictionariesEnum) {
List<GetDictionariesApi.Bean> beanList = getDictionItem(dictionariesEnum);
List<GetDictionariesApi.Bean> list = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
list = beanList.stream().filter(d -> d.getValue().equals(value)).collect(Collectors.toList());
}
assert list != null;
return list.size() > 0 ? list.get(0) : null;
}
public void initData() {
String json = MMKV.defaultMMKV().decodeString(DICTIONARIES_TAG, null);
setDictionariesMap(GsonFactory.getSingletonGson().fromJson(json, new TypeToken<Map<String, List<Object>>>() {
}.getType()));
}
public void getHttpData() {
EasyHttp.post(new ApplicationLifecycle())
.api(new GetDictionariesApi())
.request(new OnHttpListener<HttpData<Map<String, List<Object>>>>() {
@Override
public void onSucceed(HttpData<Map<String, List<Object>>> result) {
setDictionariesMap(result.getData());
}
@Override
public void onFail(Exception e) {
}
});
}
// /**
// * 字典异常
// */
// public class DictionariesException extends Exception{
// public DictionariesException(String message) {
// super(message);
// }
// }
}