import org.apache.commons.lang3.StringUtils;
import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.term.TermBase;
import eu.etaxonomy.cdm.model.term.TermType;
protected <T extends DefinedTermBase> List<T> getTermsFromStringValues(List<String> listValue, TermType type) {
List<DefinedTermBase> termlist = new ArrayList<>();
ITermService termService = CdmStore.getService(ITermService.class);
- Set<UUID> uuidList = new HashSet<>();
+ List<UUID> uuidList = new ArrayList<>();
+
for (String s : listValue) {
if (StringUtils.isNotBlank(s)){
UUID uuid = UUID.fromString(s);
uuidList.add(uuid);
}
}
- if (!uuidList.isEmpty()){
- termlist = termService.find(uuidList);
+
+ List<T> allTerms = getTerms(uuidList, type);
+ if (!allTerms.isEmpty()) {
+ return allTerms;
+ }
+
+ if (!uuidList.isEmpty() && allTerms.isEmpty()){
+ termlist = termService.find(new HashSet(uuidList));
}else{
termlist = termService.listByTermType(type, null, null, null, null);
}
if (uuidList == null || uuidList.isEmpty()){
return terms;
}
+ Set<UUID> alreadyAdded = new HashSet<>();
+ Set<UUID> temp = new HashSet<>();
for (T term : terms){
if(uuidList.contains(term.getUuid())){
filteredTerms.add(term);
+ alreadyAdded.add(term.getUuid());
}
- }
-
+ }
return filteredTerms;
}