import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
+import java.util.regex.Matcher;
import javax.swing.JOptionPane;
return _sn_up_cache_map;
}
+
+ @SuppressWarnings("unchecked")
private final static UniProtTaxonomy obtainTaxonomy( final HashMap<String, UniProtTaxonomy> cache,
final Object query,
final QUERY_TYPE qt ) throws IOException,
- AncestralTaxonomyInferenceException {
+ AncestralTaxonomyInferenceException {
if ( cache.containsKey( query ) ) {
return cache.get( query ).copy();
}
break;
case LIN:
return obtainUniProtTaxonomyFromLineage( ( List<String> ) query );
+
default:
throw new RuntimeException();
}
}
private final static List<UniProtTaxonomy> getTaxonomiesFromTaxonomyCode( final String query ) throws IOException {
- if ( ( query.indexOf( "XX" ) == 3 ) && TaxonomyUtil.isHasTaxIdFromFakeTaxCode( query ) ) {
+ //FIXME fix "SPHAR" issue
+ if ( ( ( query.indexOf( "XX" ) == 3 ) && TaxonomyUtil.isHasTaxIdFromFakeTaxCode( query ) )
+ || query.equals( "SPHAR" ) /* TODO remove me, is same as Sphingomonas aromaticivorans */
+ ) {
final int id = TaxonomyUtil.getTaxIdFromFakeTaxCode( query );
return SequenceDbWsTools.getTaxonomiesFromId( String.valueOf( id ), MAX_TAXONOMIES_TO_RETURN );
}
synchronized final private static SortedSet<String> obtainDetailedTaxonomicInformation( final Phylogeny phy,
final boolean delete,
final boolean allow_to_use_basic_node_names )
- throws IOException, AncestralTaxonomyInferenceException {
+ throws IOException, AncestralTaxonomyInferenceException {
clearCachesIfTooLarge();
final SortedSet<String> not_found = new TreeSet<String>();
List<PhylogenyNode> not_found_external_nodes = null;
ut = obtainTaxonomy( TaxonomyDataManager.getIdTaxCacheMap(), id, qt );
}
}
- //
- // qt = QUERY_TYPE.SN;
- // UniProtTaxonomy ut = obtainTaxonomy( TaxonomyDataManager.getSnTaxCacheMap(), simple_name, qt );
- // if ( ut == null ) {
- // qt = QUERY_TYPE.CODE;
- // ut = obtainTaxonomy( TaxonomyDataManager.getCodeTaxCacheMap(), simple_name, qt );
- // }
- // if ( ut == null ) {
- // qt = QUERY_TYPE.CN;
- // ut = obtainTaxonomy( TaxonomyDataManager.getCnTaxCacheMap(), simple_name, qt );
- // }
+ if ( ut == null ) {
+ String sn = "";
+ final Matcher m = ParserUtils.TAXOMONY_SN_PATTERN_GENUS.matcher( simple_name );
+ if ( m.matches() ) {
+ sn = m.group( 1 );
+ }
+ if ( !ForesterUtil.isEmpty( sn ) ) {
+ qt = QUERY_TYPE.SN;
+ ut = obtainTaxonomy( TaxonomyDataManager.getSnTaxCacheMap(), sn, qt );
+ }
+ }
return ut;
}
else {
final List<UniProtTaxonomy> matching_taxonomies = new ArrayList<UniProtTaxonomy>();
final List<UniProtTaxonomy> up_taxonomies = getTaxonomiesFromScientificName( lineage
- .get( lineage.size() - 1 ) );
+ .get( lineage.size() - 1 ) );
if ( ( up_taxonomies != null ) && ( up_taxonomies.size() > 0 ) ) {
for( final UniProtTaxonomy up_taxonomy : up_taxonomies ) {
boolean match = true;
}
else {
throw new AncestralTaxonomyInferenceException( "taxonomy \"" + ( lineage.get( lineage.size() - 1 ) )
- + "\" not found" );
+ + "\" not found" );
}
}
}
final PhylogenyNode node,
final Taxonomy tax,
final UniProtTaxonomy up_tax )
- throws PhyloXmlDataFormatException {
+ throws PhyloXmlDataFormatException {
if ( ( qt != QUERY_TYPE.SN ) && !ForesterUtil.isEmpty( up_tax.getScientificName() )
&& ForesterUtil.isEmpty( tax.getScientificName() ) ) {
tax.setScientificName( up_tax.getScientificName() );
not_found = obtainDetailedTaxonomicInformation( _phy, _delete, _allow_simple_names );
}
catch ( final UnknownHostException e ) {
- JOptionPane.showMessageDialog( _mf,
+ JOptionPane.showMessageDialog( _mf.getThisFrame(),
"Could not connect to \"" + getBaseUrl() + "\"",
"Network error during taxonomic information gathering",
JOptionPane.ERROR_MESSAGE );
}
catch ( final IOException e ) {
e.printStackTrace();
- JOptionPane.showMessageDialog( _mf,
+ JOptionPane.showMessageDialog( _mf.getThisFrame(),
e.toString(),
"Failed to obtain taxonomic information",
JOptionPane.ERROR_MESSAGE );
}
catch ( final AncestralTaxonomyInferenceException e ) {
e.printStackTrace();
- JOptionPane.showMessageDialog( _mf,
+ JOptionPane.showMessageDialog( _mf.getThisFrame(),
e.toString(),
"Failed to obtain taxonomic information",
JOptionPane.ERROR_MESSAGE );
}
if ( ( _phy == null ) || _phy.isEmpty() ) {
try {
- JOptionPane.showMessageDialog( _mf,
+ JOptionPane.showMessageDialog( _mf.getThisFrame(),
"None of the external node taxonomies could be resolved",
"Taxonomy Tool Failed",
JOptionPane.WARNING_MESSAGE );
}
catch ( final Exception e ) {
- // Not important if this fails, do nothing.
+ // Not important if this fails, do nothing.
}
return;
}
sb.append( "..." );
}
try {
- JOptionPane.showMessageDialog( _mf,
+ JOptionPane.showMessageDialog( _mf.getThisFrame(),
sb.toString(),
"Taxonomy Tool Completed",
JOptionPane.WARNING_MESSAGE );
}
catch ( final Exception e ) {
- // Not important if this fails, do nothing.
+ // Not important if this fails, do nothing.
}
}
else {
try {
- JOptionPane.showMessageDialog( _mf,
+ JOptionPane.showMessageDialog( _mf.getThisFrame(),
"Taxonomy tool successfully completed",
"Taxonomy Tool Completed",
JOptionPane.INFORMATION_MESSAGE );