Project

General

Profile

Download (3.83 KB) Statistics
| Branch: | Tag: | Revision:
1 ea781c57 n.hoffmann
/**
2
* Copyright (C) 2007 EDIT
3 ccc7ac6f Patric Plitzner
* European Distributed Institute of Taxonomy
4 ea781c57 n.hoffmann
* http://www.e-taxonomy.eu
5 ccc7ac6f Patric Plitzner
*
6 ea781c57 n.hoffmann
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
10
package eu.etaxonomy.taxeditor.store;
11
12
import java.util.ArrayList;
13
import java.util.Collection;
14
import java.util.List;
15
import java.util.UUID;
16
17
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
18
import eu.etaxonomy.cdm.model.common.TermBase;
19 ccc7ac6f Patric Plitzner
import eu.etaxonomy.cdm.model.common.TermType;
20 7084aeff Patric Plitzner
import eu.etaxonomy.cdm.model.common.TermVocabulary;
21 69d856ba Katja Luther
import eu.etaxonomy.taxeditor.model.TaxonRelationshipTypeInverseContainer;
22 f4888ff9 Patrick Plitzner
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
23 ea781c57 n.hoffmann
24
/**
25
 * @author n.hoffmann
26
 * @created Dec 7, 2010
27
 * @version 1.0
28
 */
29 f4888ff9 Patrick Plitzner
public class TermManager {
30 ccc7ac6f Patric Plitzner
31 ea781c57 n.hoffmann
	private static final String TERMS = "terms";
32
	private static final String TERM = "term";
33
	private static final String HIDE = "hide";
34 ccc7ac6f Patric Plitzner
35 ea781c57 n.hoffmann
	private static final String CLASS = "class";
36
	private static final String UUID_STRING = "uuid";
37 ccc7ac6f Patric Plitzner
38 ea781c57 n.hoffmann
	public TermManager(){
39
	}
40 ccc7ac6f Patric Plitzner
41 b9a0d300 l.morris
	/**
42 ccc7ac6f Patric Plitzner
	 *
43
	 * @param clazz
44
	 * @return
45
	 */
46 1d716a84 Patrick Plitzner
	public <T extends DefinedTermBase> List<T> getPreferredTerms(TermType termType){
47
	    return getFilteredTerms(TermStore.<T>getTerms(termType, null));
48 ccc7ac6f Patric Plitzner
	}
49
50 7084aeff Patric Plitzner
	/**
51
	 *
52
	 * @param clazz
53
	 * @return
54
	 */
55
	public <T extends DefinedTermBase> List<T> getPreferredTerms(TermVocabulary<T> termVocabulary){
56
	    return getFilteredTerms(new ArrayList<T>(TermStore.getTerms(termVocabulary, null)));
57
	}
58
59 ccc7ac6f Patric Plitzner
	/**
60
	 *
61 b9a0d300 l.morris
	 * @param clazz
62
	 * @return
63
	 */
64
	public <T extends DefinedTermBase> List<T> getPreferredTerms(Class<T> clazz){
65
		return getFilteredTerms(TermStore.getTerms(clazz));
66
	}
67 ccc7ac6f Patric Plitzner
68 ea781c57 n.hoffmann
	/**
69
	 * Generic method to get term preferences for a term vocabulary
70
	 *
71
	 * @param initialTerms a {@link java.util.List} object.
72
	 * @return a {@link java.util.List} object.
73
	 */
74
	public <T extends DefinedTermBase> List<T> getFilteredTerms(List<T> initialTerms){
75
76
		List<T> filteredTerms = new ArrayList<T>();
77 ccc7ac6f Patric Plitzner
78
		for (T term : initialTerms){
79 f4888ff9 Patrick Plitzner
80 69d856ba Katja Luther
			if (term instanceof TaxonRelationshipTypeInverseContainer){
81 f4888ff9 Patrick Plitzner
				if(!PreferencesUtil.getPreferenceStore().getBoolean(getPrefName(term))){
82 69d856ba Katja Luther
					T type = (T)((TaxonRelationshipTypeInverseContainer) term).getType();
83
					filteredTerms.add(type);
84 7084aeff Patric Plitzner
85 69d856ba Katja Luther
				}
86
			}
87 e8684498 Katja Luther
88 f4888ff9 Patrick Plitzner
			if(!PreferencesUtil.getPreferenceStore().getBoolean(getPrefName(term))){
89 ea781c57 n.hoffmann
				filteredTerms.add(term);
90
			}
91
		}
92 ccc7ac6f Patric Plitzner
93
		return filteredTerms;
94 ea781c57 n.hoffmann
	}
95 ccc7ac6f Patric Plitzner
96 f4888ff9 Patrick Plitzner
    private <T extends TermBase> String getPrefName(T term) {
97 e8684498 Katja Luther
        return term.getTermType()!=null?term.getTermType().toString()+term.getUuid().toString():""+term.getUuid().toString();
98 f4888ff9 Patrick Plitzner
    }
99
100 e8684498 Katja Luther
101 ea781c57 n.hoffmann
	private <T extends DefinedTermBase> String getTermClass(Collection<T> initialTerms){
102 7084aeff Patric Plitzner
103 69d856ba Katja Luther
		String result = null;
104
		if(!initialTerms.isEmpty()){
105 7084aeff Patric Plitzner
106 69d856ba Katja Luther
			//TODO: there should be a more generic solution!!
107
	    	T entity = initialTerms.iterator().next();
108
	    	if (entity instanceof TaxonRelationshipTypeInverseContainer){
109
	    		result = ((TaxonRelationshipTypeInverseContainer) entity).getType().getClass().getName();
110
	    	} else {
111
	    		result = entity.getClass().getName();
112
	    	}
113
	        return result;
114 ccc7ac6f Patric Plitzner
	    }
115
	    return null;
116 ea781c57 n.hoffmann
	}
117 ccc7ac6f Patric Plitzner
118 ea781c57 n.hoffmann
	/**
119
	 * Generic method to set term preferences
120
	 *
121
	 * @param preferredTerms a {@link java.util.List} object.
122
	 * @param initialTerms a {@link java.util.List} object.
123
	 * @param <T> a T object.
124
	 */
125
	public <T extends DefinedTermBase> void setPreferredTerms(Collection<T> preferredTerms, Collection<T> initialTerms){
126 e8684498 Katja Luther
	String typeName = getTermClass(initialTerms);
127 ccc7ac6f Patric Plitzner
128 ea781c57 n.hoffmann
		Collection<UUID> undesiredTermUuids = new ArrayList<UUID>();
129 ccc7ac6f Patric Plitzner
130 ea781c57 n.hoffmann
		for(TermBase term : initialTerms){
131
			if(! preferredTerms.contains(term)){
132
				undesiredTermUuids.add(term.getUuid());
133 f4888ff9 Patrick Plitzner
				PreferencesUtil.getPreferenceStore().setValue(getPrefName(term), true);
134 a3c2ae78 Katja Luther
			}else{
135
			    PreferencesUtil.getPreferenceStore().setValue(getPrefName(term), false);
136 ea781c57 n.hoffmann
			}
137 e8684498 Katja Luther
138
139 ea781c57 n.hoffmann
		}
140
	}
141
}