Revision 905236e8
Added by Katja Luther over 4 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/TermManager.java | ||
---|---|---|
21 | 21 |
import eu.etaxonomy.cdm.model.term.TermBase; |
22 | 22 |
import eu.etaxonomy.cdm.model.term.TermType; |
23 | 23 |
import eu.etaxonomy.cdm.model.term.TermVocabulary; |
24 |
import eu.etaxonomy.cdm.persistence.dto.TermDto; |
|
25 |
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto; |
|
24 | 26 |
import eu.etaxonomy.taxeditor.model.DefaultTermComparator; |
25 | 27 |
import eu.etaxonomy.taxeditor.model.TaxonRelationshipTypeInverseContainer; |
26 | 28 |
import eu.etaxonomy.taxeditor.preference.PreferencesUtil; |
... | ... | |
42 | 44 |
|
43 | 45 |
private Map<Object, List> cachedTermMap = new HashMap<>(); |
44 | 46 |
|
47 |
|
|
45 | 48 |
//new cache for features!! |
46 | 49 |
//dinstinguish preferences for both |
47 | 50 |
//load at start |
... | ... | |
69 | 72 |
* @return |
70 | 73 |
*/ |
71 | 74 |
public <T extends DefinedTermBase> List<T> getPreferredTerms(TermVocabulary<T> termVocabulary){ |
72 |
List terms = cachedTermMap.get(termVocabulary); |
|
75 |
List terms = cachedTermMap.get(termVocabulary.getUuid());
|
|
73 | 76 |
if(terms==null){ |
74 | 77 |
terms = getFilteredTerms(new ArrayList<T>(TermStore.getTerms(termVocabulary,null))); |
75 |
cachedTermMap.put(termVocabulary, terms); |
|
78 |
cachedTermMap.put(termVocabulary.getUuid(), terms);
|
|
76 | 79 |
} |
77 | 80 |
return terms; |
78 | 81 |
} |
... | ... | |
87 | 90 |
if (comp == null){ |
88 | 91 |
comp = new DefaultTermComparator<T>(); |
89 | 92 |
} |
90 |
List terms = cachedTermMap.get(termVocabulary); |
|
93 |
List terms = cachedTermMap.get(termVocabulary.getUuid());
|
|
91 | 94 |
if(terms==null){ |
92 | 95 |
terms = getFilteredTerms(new ArrayList<T>(TermStore.getTerms(termVocabulary,comp))); |
93 |
cachedTermMap.put(termVocabulary, terms); |
|
96 |
cachedTermMap.put(termVocabulary.getUuid(), terms);
|
|
94 | 97 |
} |
95 | 98 |
terms.sort(comp); |
96 | 99 |
return terms; |
... | ... | |
130 | 133 |
} |
131 | 134 |
} |
132 | 135 |
|
133 |
if(!PreferencesUtil.getBooleanValue(getPrefName(term))){
|
|
136 |
if(PreferencesUtil.getBooleanValue(getPrefName(term))){ |
|
134 | 137 |
filteredTerms.add(term); |
135 | 138 |
} |
136 | 139 |
} |
... | ... | |
141 | 144 |
private <T extends TermBase> String getPrefName(T term) { |
142 | 145 |
return term.getTermType()!=null?term.getTermType().toString()+term.getUuid().toString():""+term.getUuid().toString(); |
143 | 146 |
} |
144 |
|
|
147 |
private String getPrefNameByDto(TermDto term) { |
|
148 |
return term.getTermType()!=null?term.getTermType().toString()+term.getUuid().toString():""+term.getUuid().toString(); |
|
149 |
} |
|
145 | 150 |
|
146 | 151 |
private <T extends DefinedTermBase> TermVocabulary<T> getTermVocabulary(Collection<T> initialTerms){ |
147 | 152 |
|
... | ... | |
153 | 158 |
return null; |
154 | 159 |
} |
155 | 160 |
|
161 |
private TermVocabularyDto getTermVocabularyByDto(Collection<TermDto> initialTerms){ |
|
162 |
|
|
163 |
TermType result = null; |
|
164 |
if(!initialTerms.isEmpty()){ |
|
165 |
TermDto entity = initialTerms.iterator().next(); |
|
166 |
return entity.getVocabularyDto(); |
|
167 |
} |
|
168 |
return null; |
|
169 |
} |
|
170 |
|
|
171 |
|
|
156 | 172 |
/** |
157 | 173 |
* Generic method to set term preferences |
158 | 174 |
* |
... | ... | |
168 | 184 |
for(TermBase term : initialTerms){ |
169 | 185 |
if(! preferredTerms.contains(term)){ |
170 | 186 |
undesiredTermUuids.add(term.getUuid()); |
171 |
PreferencesUtil.setBooleanValue(getPrefName(term), true);
|
|
187 |
PreferencesUtil.setBooleanValue(getPrefName(term), false);
|
|
172 | 188 |
}else{ |
173 |
PreferencesUtil.setBooleanValue(getPrefName(term), false);
|
|
189 |
PreferencesUtil.setBooleanValue(getPrefName(term), true);
|
|
174 | 190 |
} |
175 | 191 |
} |
176 |
//if (initialTerms.iterator().hasNext()){ |
|
177 |
clearTermMapForTermVoc(voc); |
|
178 |
//} |
|
192 |
clearTermMapForTermVoc(voc.getUuid()); |
|
179 | 193 |
|
180 | 194 |
} |
181 | 195 |
|
196 |
/** |
|
197 |
* Generic method to set term preferences |
|
198 |
* |
|
199 |
* @param preferredTerms a {@link java.util.List} object. |
|
200 |
* @param initialTerms a {@link java.util.List} object. |
|
201 |
* @param <T> a T object. |
|
202 |
*/ |
|
203 |
public void setPreferredTermsByDto(Collection<TermDto> preferredTerms, TermVocabularyDto vocDto){ |
|
204 |
|
|
205 |
|
|
206 |
Collection<UUID> undesiredTermUuids = new ArrayList<UUID>(); |
|
207 |
|
|
208 |
for(TermDto term : vocDto.getTerms()){ |
|
209 |
if(!preferredTerms.contains(term)){ |
|
210 |
undesiredTermUuids.add(term.getUuid()); |
|
211 |
PreferencesUtil.setBooleanValue(getPrefNameByDto(term), false); |
|
212 |
}else{ |
|
213 |
PreferencesUtil.setBooleanValue(getPrefNameByDto(term), true); |
|
214 |
} |
|
215 |
} |
|
216 |
//if (initialTerms.iterator().hasNext()){ |
|
217 |
clearTermMapForTermVoc(vocDto.getUuid()); |
|
218 |
//} |
|
219 |
|
|
220 |
} |
|
221 |
|
|
182 | 222 |
|
183 |
public <T extends DefinedTermBase> void clearTermMapForTermVoc(TermVocabulary<T> voc){
|
|
184 |
cachedTermMap.remove(voc); |
|
223 |
public <T extends DefinedTermBase> void clearTermMapForTermVoc(UUID vocUuid){
|
|
224 |
cachedTermMap.remove(vocUuid);
|
|
185 | 225 |
} |
186 | 226 |
|
187 | 227 |
public void clearTermMapForTermType(TermType termType){ |
Also available in: Unified diff
ref #8385: adapt strucutre of db prefs to local prefs