private Map<Object, List> cachedTermMap = new HashMap<>();
+ //new cache for features!!
+ //dinstinguish preferences for both
+ //load at start
+
public TermManager(){
}
*/
public <T extends DefinedTermBase> List<T> getPreferredTerms(TermType termType){
List terms = cachedTermMap.get(termType);
- if(terms==null){
+ if(terms==null || terms.isEmpty()){
terms = getFilteredTerms(TermStore.<T>getTerms(termType, null));
cachedTermMap.put(termType, terms);
}
}
- private <T extends DefinedTermBase> String getTermClass(Collection<T> initialTerms){
+ private <T extends DefinedTermBase> TermVocabulary<T> getTermVocabulary(Collection<T> initialTerms){
- String result = null;
+ TermType result = null;
if(!initialTerms.isEmpty()){
-
- //TODO: there should be a more generic solution!!
T entity = initialTerms.iterator().next();
- if (entity instanceof TaxonRelationshipTypeInverseContainer){
- result = ((TaxonRelationshipTypeInverseContainer) entity).getType().getClass().getName();
- } else {
- result = entity.getClass().getName();
- }
- return result;
+ return entity.getVocabulary();
}
return null;
}
* @param <T> a T object.
*/
public <T extends DefinedTermBase> void setPreferredTerms(Collection<T> preferredTerms, Collection<T> initialTerms){
- String typeName = getTermClass(initialTerms);
+ TermVocabulary<T> voc = getTermVocabulary(initialTerms);
Collection<UUID> undesiredTermUuids = new ArrayList<UUID>();
}else{
PreferencesUtil.setBooleanValue(getPrefName(term), false);
}
-
-
}
-
+ //if (initialTerms.iterator().hasNext()){
+ clearTermMapForTermVoc(voc);
+ //}
}
- public void clearTermMapForTermType(TermType termType){
- cachedTermMap.remove(termType);
+ public <T extends DefinedTermBase> void clearTermMapForTermVoc(TermVocabulary<T> voc){
+ cachedTermMap.remove(voc);
}
+ public void clearTermMapForTermType(TermType termType){
+ cachedTermMap.remove(termType);
+ }
+
/**
* Generic method to get term preferences for a term vocabulary
*
List<T> filteredTerms = new ArrayList<T>();
List<T> terms = TermStore.getTerms(clazz);
- if (uuidList.isEmpty()){
+ if (uuidList == null || uuidList.isEmpty()){
return terms;
}
for (T term : terms){
return filteredTerms;
}
+
+ /**
+ * Generic method to get term preferences for a term vocabulary
+ *
+ * @param initialTerms a {@link java.util.List} object.
+ * @return a {@link java.util.List} object.
+ */
+ public <T extends DefinedTermBase> List<T> getAllTerms(TermType type, Comparator comparator){
+ List<T> terms = TermStore.getTerms(type, comparator);
+ return terms;
+ }
}