Project

General

Profile

« Previous | Next » 

Revision 901d433e

Added by Katja Luther over 4 years ago

ref #8389: fix preferred TaxonFeature Tree creation

View differences:

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