Revision 8a7e7d33
Added by Katja Luther over 4 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/TermManager.java | ||
---|---|---|
13 | 13 |
import java.util.Collection; |
14 | 14 |
import java.util.Comparator; |
15 | 15 |
import java.util.HashMap; |
16 |
import java.util.Iterator; |
|
16 | 17 |
import java.util.List; |
17 | 18 |
import java.util.Map; |
18 | 19 |
import java.util.UUID; |
... | ... | |
91 | 92 |
comp = new DefaultTermComparator<T>(); |
92 | 93 |
} |
93 | 94 |
List terms = cachedTermMap.get(termVocabulary.getUuid()); |
95 |
List<T> termBaseList = new ArrayList(); |
|
94 | 96 |
if(terms==null){ |
95 | 97 |
terms = getFilteredTerms(new ArrayList<T>(TermStore.getTerms(termVocabulary,comp))); |
96 | 98 |
cachedTermMap.put(termVocabulary.getUuid(), terms); |
99 |
}else{ |
|
100 |
Iterator iterator = terms.iterator(); |
|
101 |
DefinedTermBase termBase = null; |
|
102 |
List<UUID> uuids = new ArrayList(); |
|
103 |
while (iterator.hasNext()){ |
|
104 |
Object term = iterator.next(); |
|
105 |
if (term instanceof TermDto){ |
|
106 |
TermDto dto = (TermDto)term; |
|
107 |
uuids.add(dto.getUuid()); |
|
108 |
}else { |
|
109 |
termBaseList.add((T)term); |
|
110 |
} |
|
111 |
|
|
112 |
} |
|
113 |
if (!uuids.isEmpty()){ |
|
114 |
termBaseList.addAll(this.getTerms(uuids, DefinedTermBase.class)); |
|
115 |
} |
|
116 |
|
|
97 | 117 |
} |
98 |
terms.sort(comp); |
|
118 |
termBaseList.sort(comp); |
|
119 |
terms = termBaseList; |
|
99 | 120 |
return terms; |
100 | 121 |
} |
101 | 122 |
/** |
... | ... | |
137 | 158 |
filteredTerms.add(term); |
138 | 159 |
} |
139 | 160 |
} |
161 |
if (filteredTerms.isEmpty()){ |
|
162 |
return initialTerms; |
|
163 |
} |
|
140 | 164 |
|
141 | 165 |
return filteredTerms; |
142 | 166 |
} |
... | ... | |
191 | 215 |
} |
192 | 216 |
clearTermMapForTermVoc(voc.getUuid()); |
193 | 217 |
|
218 |
|
|
219 |
|
|
194 | 220 |
} |
195 | 221 |
|
222 |
|
|
223 |
/** |
|
224 |
* Generic method to set term preferences |
|
225 |
* |
|
226 |
* @param preferredTerms a {@link java.util.List} object. |
|
227 |
* @param initialTerms a {@link java.util.List} object. |
|
228 |
* @param <T> a T object. |
|
229 |
*/ |
|
230 |
public <T extends DefinedTermBase> void setPreferredTermsByType(Collection<T> preferredTerms, TermType type){ |
|
231 |
|
|
232 |
|
|
233 |
Collection<UUID> undesiredTermUuids = new ArrayList<UUID>(); |
|
234 |
List<DefinedTermBase> oldValues = getPreferredTerms(type); |
|
235 |
for (DefinedTermBase term: oldValues){ |
|
236 |
PreferencesUtil.setBooleanValue(getPrefName(term), false); |
|
237 |
} |
|
238 |
for(TermBase term : preferredTerms){ |
|
239 |
PreferencesUtil.setBooleanValue(getPrefName(term), true); |
|
240 |
|
|
241 |
} |
|
242 |
|
|
243 |
clearTermMapForTermType(type); |
|
244 |
|
|
245 |
|
|
246 |
|
|
247 |
} |
|
196 | 248 |
/** |
197 | 249 |
* Generic method to set term preferences |
198 | 250 |
* |
... | ... | |
205 | 257 |
|
206 | 258 |
Collection<UUID> undesiredTermUuids = new ArrayList<UUID>(); |
207 | 259 |
|
208 |
for(TermDto term : vocDto.getTerms()){
|
|
260 |
for(TermDto term : preferredTerms){
|
|
209 | 261 |
if(!preferredTerms.contains(term)){ |
210 | 262 |
undesiredTermUuids.add(term.getUuid()); |
211 | 263 |
PreferencesUtil.setBooleanValue(getPrefNameByDto(term), false); |
... | ... | |
215 | 267 |
} |
216 | 268 |
//if (initialTerms.iterator().hasNext()){ |
217 | 269 |
clearTermMapForTermVoc(vocDto.getUuid()); |
270 |
List<TermDto> list = new ArrayList<>(preferredTerms); |
|
271 |
cachedTermMap.put(vocDto.getUuid(), list); |
|
218 | 272 |
//} |
219 | 273 |
|
220 | 274 |
} |
Also available in: Unified diff
fix preferences and term issues