Revision 2455d1e1
Added by Andreas Müller over 3 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/CdmPreferenceCache.java | ||
---|---|---|
31 | 31 |
/** |
32 | 32 |
* @author k.luther |
33 | 33 |
* @since 27.04.2018 |
34 |
* |
|
35 | 34 |
*/ |
36 | 35 |
public class CdmPreferenceCache { |
37 |
Map<String,List<CdmPreference>> preferenceCache = new HashMap(); |
|
36 |
Map<String,List<CdmPreference>> preferenceCache = new HashMap<>();
|
|
38 | 37 |
|
39 | 38 |
private static CdmPreferenceCache instance; |
40 | 39 |
|
41 | 40 |
private final static Logger logger = Logger.getLogger(CdmPreferenceCache.class); |
42 | 41 |
|
43 |
|
|
44 |
|
|
45 | 42 |
public static CdmPreferenceCache instance(){ |
46 | 43 |
if(instance == null){ |
47 | 44 |
instance = new CdmPreferenceCache(); |
... | ... | |
94 | 91 |
cachedPreferences.remove(prefToRemove); |
95 | 92 |
cachedPreferences.add(pref); |
96 | 93 |
}else{ |
97 |
List<CdmPreference> prefs = new ArrayList(); |
|
94 |
List<CdmPreference> prefs = new ArrayList<>();
|
|
98 | 95 |
prefs.add(pref); |
99 | 96 |
preferenceCache.put(pref.getPredicate(), prefs); |
100 | 97 |
} |
101 |
|
|
102 |
|
|
103 | 98 |
} |
104 | 99 |
|
105 | 100 |
public boolean remove(CdmPreference pref){ |
... | ... | |
114 | 109 |
cachedPreferences.remove(prefToRemove); |
115 | 110 |
} |
116 | 111 |
return true; |
117 |
|
|
118 | 112 |
} |
119 | 113 |
|
120 | 114 |
public void getAllTaxEditorDBPreferences(){ |
... | ... | |
133 | 127 |
if (!PreferencesUtil.getOverrideForPreference(PreferencePredicate.AvailableDistributionStatus.getKey()) || !get(key).isAllowOverride()){ |
134 | 128 |
//get terms for the uuids... and add them to the termManager as preferred terms |
135 | 129 |
ITermService termService = CdmStore.getService(ITermService.class); |
136 |
List<UUID> uuidList = new ArrayList(); |
|
130 |
List<UUID> uuidList = new ArrayList<>();
|
|
137 | 131 |
if (get(key).getValue() != null){ |
138 | 132 |
String[] uuidArray =findBestMatching(key).getValue().split(";"); |
139 | 133 |
for (String uuidString:uuidArray){ |
... | ... | |
147 | 141 |
|
148 | 142 |
List<DefinedTermBase> definedTermBases = termService.load(uuidList, null); |
149 | 143 |
List<TermDto> dtos = new ArrayList<>(); |
150 |
for (DefinedTermBase term: definedTermBases){ |
|
144 |
for (DefinedTermBase<?> term: definedTermBases){
|
|
151 | 145 |
dtos.add(TermDto.fromTerm(term)); |
152 | 146 |
} |
153 | 147 |
CdmStore.getTermManager().setPreferredTermsByType(dtos, TermType.PresenceAbsenceTerm); |
... | ... | |
159 | 153 |
if (!PreferencesUtil.getOverrideForPreference(PreferencePredicate.AvailableRanks.getKey()) || !get(key).isAllowOverride()){ |
160 | 154 |
//get terms for the uuids... and add them to the termManager as preferred terms |
161 | 155 |
ITermService termService = CdmStore.getService(ITermService.class); |
162 |
List<UUID> uuidList = new ArrayList(); |
|
156 |
List<UUID> uuidList = new ArrayList<>();
|
|
163 | 157 |
if (get(key).getValue() != null){ |
164 | 158 |
String[] uuidArray =findBestMatching(key).getValue().split(";"); |
165 | 159 |
for (String uuidString:uuidArray){ |
... | ... | |
172 | 166 |
} |
173 | 167 |
|
174 | 168 |
List<DefinedTermBase> definedTermBases = termService.load(uuidList, null); |
175 |
List<TermDto> dtos = new ArrayList(); |
|
176 |
for (DefinedTermBase term: definedTermBases){ |
|
169 |
List<TermDto> dtos = new ArrayList<>();
|
|
170 |
for (DefinedTermBase<?> term: definedTermBases){
|
|
177 | 171 |
dtos.add(TermDto.fromTerm(term)); |
178 | 172 |
} |
179 | 173 |
CdmStore.getTermManager().setPreferredTermsByType(dtos, TermType.Rank); |
... | ... | |
186 | 180 |
if (!PreferencesUtil.getOverrideForPreference(PreferencePredicate.AvailableNomenclaturalStatus.getKey()) || !get(key).isAllowOverride()){ |
187 | 181 |
//get terms for the uuids... and add them to the termManager as preferred terms |
188 | 182 |
ITermService termService = CdmStore.getService(ITermService.class); |
189 |
List<UUID> uuidList = new ArrayList(); |
|
183 |
List<UUID> uuidList = new ArrayList<>();
|
|
190 | 184 |
if (get(key).getValue() != null){ |
191 | 185 |
String[] uuidArray =findBestMatching(key).getValue().split(";"); |
192 | 186 |
for (String uuidString:uuidArray){ |
... | ... | |
199 | 193 |
} |
200 | 194 |
|
201 | 195 |
List<DefinedTermBase> definedTermBases = termService.load(uuidList, null); |
202 |
List<TermDto> dtos = new ArrayList(); |
|
203 |
for (DefinedTermBase term: definedTermBases){ |
|
196 |
List<TermDto> dtos = new ArrayList<>();
|
|
197 |
for (DefinedTermBase<?> term: definedTermBases){
|
|
204 | 198 |
dtos.add(TermDto.fromTerm(term)); |
205 | 199 |
} |
206 | 200 |
CdmStore.getTermManager().setPreferredTermsByType(dtos, TermType.NomenclaturalStatusType); |
... | ... | |
208 | 202 |
} |
209 | 203 |
} |
210 | 204 |
|
211 |
|
|
212 |
|
|
213 | 205 |
public CdmPreference findBestMatching(PrefKey key) { |
214 |
List<CdmPreference> allPrefs = new ArrayList(); |
|
206 |
List<CdmPreference> allPrefs = new ArrayList<>();
|
|
215 | 207 |
for (String predicate: preferenceCache.keySet()){ |
216 | 208 |
allPrefs.addAll(preferenceCache.get(predicate)); |
217 | 209 |
} |
218 |
return PreferenceResolver.resolve(allPrefs, key); |
|
219 |
|
|
210 |
return PreferenceResolver.resolve(allPrefs, key); |
|
220 | 211 |
} |
221 |
|
|
222 | 212 |
} |
Also available in: Unified diff
cleanup