Project

General

Profile

« Previous | Next » 

Revision 8a7e7d33

Added by Katja Luther over 4 years ago

fix preferences and term issues

View differences:

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