Project

General

Profile

« Previous | Next » 

Revision 905236e8

Added by Katja Luther over 4 years ago

ref #8385: adapt strucutre of db prefs to local prefs

View differences:

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