1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.chemistry.opencmis.client.bindings.cache.impl;
20
21 import java.util.Map;
22
23 import org.apache.chemistry.opencmis.client.bindings.cache.CacheLevel;
24
25
26
27
28 public abstract class AbstractMapCacheLevel implements CacheLevel {
29
30 private static final long serialVersionUID = 1L;
31
32 private Map<String, Object> fMap;
33 private boolean fFallbackEnabled = false;
34 private String fFallbackKey;
35 private boolean fSingleValueEnabled = false;
36
37 @Override
38 public abstract void initialize(Map<String, String> parameters);
39
40 @Override
41 public Object get(String key) {
42 Object value = fMap.get(key);
43
44 if (value == null && fFallbackEnabled) {
45 value = fMap.get(fFallbackKey);
46 }
47
48 if (value == null && fSingleValueEnabled) {
49 if (fMap.size() == 1) {
50 value = fMap.values().iterator().next();
51 }
52 }
53
54 return value;
55 }
56
57 @Override
58 public void put(Object value, String key) {
59 fMap.put(key, value);
60 }
61
62 @Override
63 public void remove(String key) {
64 fMap.remove(key);
65 }
66
67
68
69
70 protected Map<String, Object> getMap() {
71 return fMap;
72 }
73
74
75
76
77 protected void setMap(Map<String, Object> map) {
78 fMap = map;
79 }
80
81
82
83
84 protected void enableKeyFallback(String key) {
85 fFallbackKey = key;
86 fFallbackEnabled = true;
87 }
88
89
90
91
92 protected void disableKeyFallback() {
93 fFallbackEnabled = false;
94 }
95
96
97
98
99 protected void enableSingeValueFallback() {
100 fSingleValueEnabled = true;
101 }
102
103
104
105
106 protected void disableSingeValueFallback() {
107 fSingleValueEnabled = false;
108 }
109
110
111
112
113
114
115
116
117
118
119
120 protected int getIntParameter(Map<String, String> parameters, String name, int defValue) {
121 if (parameters == null) {
122 return defValue;
123 }
124
125 String value = parameters.get(name);
126 if (value == null || value.trim().length() == 0) {
127 return defValue;
128 }
129
130 try {
131 return Integer.valueOf(value);
132 } catch (NumberFormatException e) {
133 return defValue;
134 }
135 }
136
137
138
139
140
141
142
143
144
145
146
147 protected float getFloatParameter(Map<String, String> parameters, String name, float defValue) {
148 if (parameters == null) {
149 return defValue;
150 }
151
152 String value = parameters.get(name);
153 if (value == null || value.trim().length() == 0) {
154 return defValue;
155 }
156
157 try {
158 return Float.valueOf(value);
159 } catch (NumberFormatException e) {
160 return defValue;
161 }
162 }
163
164
165
166
167
168
169
170
171
172
173
174 protected boolean getBooleanParameter(Map<String, String> parameters, String name, boolean defValue) {
175 if (parameters == null) {
176 return defValue;
177 }
178
179 String value = parameters.get(name);
180 if (value == null || value.trim().length() == 0) {
181 return defValue;
182 }
183
184 return Boolean.parseBoolean(value);
185 }
186
187
188
189
190
191
192 @Override
193 public String toString() {
194 return fMap == null ? "[no map]" : fMap.toString();
195 }
196 }