Revision 901d433e
Added by Katja Luther over 4 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/databaseAdmin/preferencePage/FeatureAdminMenuPreference.java | ||
---|---|---|
10 | 10 |
|
11 | 11 |
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate; |
12 | 12 |
import eu.etaxonomy.cdm.model.term.TermType; |
13 |
import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput; |
|
13 | 14 |
import eu.etaxonomy.taxeditor.preference.menu.FeatureMenuPreferences; |
14 | 15 |
|
15 | 16 |
/** |
... | ... | |
32 | 33 |
if (!isApply()){ |
33 | 34 |
return true; |
34 | 35 |
} |
35 |
return performOkAdmin(); |
|
36 |
|
|
37 |
boolean result = performOkAdmin(); |
|
38 |
if (result){ |
|
39 |
TermEditorInput.getPreferredTaxonFeatureTree(true); |
|
40 |
} |
|
41 |
return result; |
|
36 | 42 |
} |
37 | 43 |
|
38 | 44 |
|
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java | ||
---|---|---|
1697 | 1697 |
} |
1698 | 1698 |
|
1699 | 1699 |
public static List<UUID> createUUIDListFromStringPref(String prefKey) { |
1700 |
if (prefKey == null){ |
|
1701 |
return null; |
|
1702 |
} |
|
1700 | 1703 |
String prefValue = PreferencesUtil.getStringValue(prefKey); |
1701 | 1704 |
if (prefValue == null){ |
1702 | 1705 |
return null; |
... | ... | |
1847 | 1850 |
CdmPreference pref = cache.get(PreferencePredicate.TaxonFeatures.getKey()); |
1848 | 1851 |
List<Feature> terms; |
1849 | 1852 |
boolean override = PreferencesUtil.getBooleanValue(PreferencesUtil.createOverridePreferenceString(PreferencePredicate.TaxonFeatures.getKey())); |
1850 |
if (pref != null && !override){ |
|
1851 |
List<UUID> uuids = PreferencesUtil.createUUIDListFromStringPref(pref.getValue()); |
|
1852 |
terms = CdmStore.getTermManager().getTerms(uuids, Feature.class); |
|
1853 |
}else if (override){ |
|
1854 |
terms= CdmStore.getTermManager().getPreferredTerms(TermType.Feature); |
|
1855 |
TermVocabulary nameVocabulary = CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid()); |
|
1856 |
Set<Feature> nameFeature = nameVocabulary.getTerms(); |
|
1857 |
terms.removeAll(nameFeature); |
|
1858 |
|
|
1859 |
}else{ |
|
1853 |
List<UUID> uuids = PreferencesUtil.createUUIDListFromStringPref(PreferencePredicate.TaxonFeatures.getKey()); |
|
1854 |
terms = CdmStore.getTermManager().getTerms(uuids, Feature.class); |
|
1855 |
if (terms == null || terms.isEmpty()){ |
|
1860 | 1856 |
terms= CdmStore.getTermManager().getPreferredTerms(TermType.Feature); |
1861 | 1857 |
TermVocabulary nameVocabulary = CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid()); |
1862 | 1858 |
Set<Feature> nameFeature = nameVocabulary.getTerms(); |
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/store/TermManager.java | ||
---|---|---|
81 | 81 |
return terms; |
82 | 82 |
} |
83 | 83 |
|
84 |
/** |
|
85 |
* |
|
86 |
* @param clazz |
|
87 |
* @return |
|
88 |
*/ |
|
89 |
public List<TermDto> getPreferredTerms(TermVocabularyDto termVocabularyDto){ |
|
90 |
List terms = cachedTermMap.get(termVocabularyDto.getUuid()); |
|
91 |
if(terms==null){ |
|
92 |
terms = getFilteredTermDtos(new ArrayList<>(termVocabularyDto.getTerms())); |
|
93 |
cachedTermMap.put(termVocabularyDto.getUuid(), terms); |
|
94 |
} |
|
95 |
return terms; |
|
96 |
} |
|
84 | 97 |
|
85 | 98 |
/** |
86 | 99 |
* |
... | ... | |
165 | 178 |
return filteredTerms; |
166 | 179 |
} |
167 | 180 |
|
181 |
/** |
|
182 |
* Generic method to get term preferences for a term vocabulary |
|
183 |
* |
|
184 |
* @param initialTerms a {@link java.util.List} object. |
|
185 |
* @return a {@link java.util.List} object. |
|
186 |
*/ |
|
187 |
public List<TermDto> getFilteredTermDtos(List<TermDto> initialTerms){ |
|
188 |
|
|
189 |
List<TermDto> filteredTerms = new ArrayList(); |
|
190 |
|
|
191 |
for (TermDto term : initialTerms){ |
|
192 |
|
|
193 |
//TODO:inverse terms!! |
|
194 |
|
|
195 |
if(PreferencesUtil.getBooleanValue(getPrefNameByDto(term))){ |
|
196 |
filteredTerms.add(term); |
|
197 |
} |
|
198 |
} |
|
199 |
if (filteredTerms.isEmpty()){ |
|
200 |
return initialTerms; |
|
201 |
} |
|
202 |
|
|
203 |
return filteredTerms; |
|
204 |
} |
|
205 |
|
|
168 | 206 |
private <T extends TermBase> String getPrefName(T term) { |
169 | 207 |
return term.getTermType()!=null?term.getTermType().toString()+term.getUuid().toString():""+term.getUuid().toString(); |
170 | 208 |
} |
... | ... | |
230 | 268 |
public <T extends DefinedTermBase> void setPreferredTermsByType(Collection<T> preferredTerms, TermType type){ |
231 | 269 |
|
232 | 270 |
|
233 |
Collection<UUID> undesiredTermUuids = new ArrayList<UUID>(); |
|
271 |
|
|
234 | 272 |
List<DefinedTermBase> oldValues = getPreferredTerms(type); |
235 | 273 |
for (DefinedTermBase term: oldValues){ |
236 | 274 |
PreferencesUtil.setBooleanValue(getPrefName(term), false); |
... | ... | |
241 | 279 |
} |
242 | 280 |
|
243 | 281 |
clearTermMapForTermType(type); |
282 |
List<DefinedTermBase> list = new ArrayList<>(preferredTerms); |
|
283 |
cachedTermMap.put(type.getUuid(), list); |
|
244 | 284 |
|
245 | 285 |
|
246 | 286 |
|
... | ... | |
254 | 294 |
*/ |
255 | 295 |
public void setPreferredTermsByDto(Collection<TermDto> preferredTerms, TermVocabularyDto vocDto){ |
256 | 296 |
|
257 |
|
|
258 |
Collection<UUID> undesiredTermUuids = new ArrayList<UUID>(); |
|
259 |
|
|
297 |
List<TermDto> oldValues = getPreferredTerms(vocDto); |
|
298 |
for (TermDto term: oldValues){ |
|
299 |
PreferencesUtil.setBooleanValue(getPrefNameByDto(term), false); |
|
300 |
} |
|
260 | 301 |
for(TermDto term : preferredTerms){ |
261 |
if(!preferredTerms.contains(term)){ |
|
262 |
undesiredTermUuids.add(term.getUuid()); |
|
263 |
PreferencesUtil.setBooleanValue(getPrefNameByDto(term), false); |
|
264 |
}else{ |
|
265 |
PreferencesUtil.setBooleanValue(getPrefNameByDto(term), true); |
|
266 |
} |
|
302 |
PreferencesUtil.setBooleanValue(getPrefNameByDto(term), true); |
|
303 |
|
|
267 | 304 |
} |
305 |
|
|
268 | 306 |
//if (initialTerms.iterator().hasNext()){ |
269 | 307 |
clearTermMapForTermVoc(vocDto.getUuid()); |
270 | 308 |
List<TermDto> list = new ArrayList<>(preferredTerms); |
Also available in: Unified diff
ref #8389: fix preferred TaxonFeature Tree creation