LOGGER.debug("Going to search for TreeBASE IDs");
if (null != index && ! index.endsWith(".tb1") ) {
TreebaseIDString idstr;
try {
idstr = new TreebaseIDString(identifier, Taxon.class, true);
Taxon match = getTaxonHome().findPersistedObjectByID(idstr.getTBClass(), idstr.getId());
if ( match != null ) {
taxaFound.add(match);
}
} catch (MalformedTreebaseIDString e) {
addMessage(request, "Ignoring malformed taxon ID string '" + identifier + "'; try 'Tx####' or just a number");
}
}
// looking up by legacy IDs, which we might have for Taxon and TaxonVariant
else {
LOGGER.debug("Searching for legacy " + index);
Integer tb1LegacyId = null;
try {
tb1LegacyId = Integer.parseInt(identifier);
} catch ( NumberFormatException e ) {
addMessage(request, "Ignoring malformed TreeBASE1 ID string '" + identifier + "', because: " + e.getMessage());
LOGGER.error("Couldn't parse legacy ID: "+e.getMessage());
}
if ( null != tb1LegacyId && null != index && index.matches(".*taxonVariant.*") ) {
TaxonVariant tv = getTaxonHome().findVariantByTB1LegacyId(tb1LegacyId);
LOGGER.debug("Found taxon variant: " + tv.getId());
if ( null != tv.getTaxon() ) {
taxaFound.add(tv.getTaxon());
}
}
else if ( null != tb1LegacyId ){
Taxon taxon = getTaxonHome().findByTB1LegacyId(tb1LegacyId);
LOGGER.debug("Found taxon: " + taxon.getId());
if ( null != taxon ) {
taxaFound.add(taxon);
}
}
}
break;
case NCBI :
LOGGER.debug("Going to search for NCBI taxon ids");
Taxon match = getTaxonHome().findByNcbiTaxId(Integer.parseInt(identifier));
if ( match != null ) {
taxaFound.add(match);
}
break;
case UBIO :
LOGGER.debug("Going to search for uBio nameBankIDs");
Taxon match1 = getTaxonHome().findByUBIOTaxId(Long.parseLong(identifier));
if ( match1 != null ) {
taxaFound.add(match1);
}
break;
}