package eu.etaxonomy.taxeditor.store;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.UUID;
+import org.apache.commons.lang3.StringUtils;
+
+import eu.etaxonomy.cdm.api.service.ITermService;
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.term.TermBase;
import eu.etaxonomy.cdm.model.term.TermType;
filteredTerms.add(type);
}
}
-
+
if(PreferencesUtil.getBooleanValue(getPrefName(term), true)){
filteredTerms.add(term);
}
preferredTerms = cachedTermMap.get(initialTerms.get(0).getVocabulary().getUuid());
}
if (preferredTerms == null){
- preferredTerms = cachedTermMap.get(initialTerms.get(0).getTermType());
+ preferredTerms = cachedTermMap.get(initialTerms.get(0).getTermType().getUuid());
}
if (preferredTerms == null){
return initialTerms;
return filteredTerms;
}
+
+ public <T extends DefinedTermBase>List<T> createTermListFromString(String stringValue, TermType type){
+ String[] listChecked = stringValue.split(";"); //$NON-NLS-1$
+ String[] listCheckedComma = stringValue.split(","); //$NON-NLS-1$
+ List<String> checked = new ArrayList<>();
+ if (listChecked != null ){
+ checked = Arrays.asList(listChecked);
+ }
+ if (listCheckedComma != null && stringValue.contains(",")){ //$NON-NLS-1$
+ checked = Arrays.asList(listCheckedComma);
+ }
+ List<T> termsFromStringValues = getTermsFromStringValues(checked, type);
+ return termsFromStringValues;
+ }
+ protected <T extends DefinedTermBase>List<T> getTermsFromStringValues(List<String> listValue, TermType type) {
+ Collection<DefinedTermBase> termlist = new ArrayList<>();
+ ITermService termService = CdmStore.getService(ITermService.class);
+ Set<UUID> uuidList = new HashSet();
+ for (String s : listValue) {
+ if (!StringUtils.isBlank(s)){
+ UUID uuid = UUID.fromString(s);
+ uuidList.add(uuid);
+ }
+ }
+ if (!uuidList.isEmpty()){
+ termlist = termService.find(uuidList);
+ }
+
+ if (listValue == null || listValue.isEmpty() ){
+ termlist = termService.listByTermType(type, null, null, null, null);
+
+ }
+
+ return new ArrayList(termlist);
+ }
+
/**
* Generic method to get term preferences for a term vocabulary
*
clearTermMapForTermType(type);
List<TermDto> list = new ArrayList<>(preferredTerms);
- cachedTermMap.put(type, list);
+ cachedTermMap.put(type.getUuid(), list);
}
/**
}
public void clearTermMapForTermType(TermType termType){
- cachedTermMap.remove(termType);
+ cachedTermMap.remove(termType.getUuid());
}
/**