import org.forester.ws.uniprot.UniProtTaxonomy;
import org.forester.ws.uniprot.UniProtWsTools;
-public class TaxonomyDataObtainer extends RunnableProcess {
+public final class TaxonomyDataManager extends RunnableProcess {
enum QUERY_TYPE {
CODE, SN, CN, ID, LIN;
private static final HashMap<String, UniProtTaxonomy> _cn_up_cache_map = new HashMap<String, UniProtTaxonomy>();
private static final HashMap<String, UniProtTaxonomy> _id_up_cache_map = new HashMap<String, UniProtTaxonomy>();
+ private final Phylogeny _phy;
+ private final MainFrameApplication _mf;
+ private final TreePanel _treepanel;
+ private final boolean _delete;
+ private final boolean _allow_simple_names;
+
+ public TaxonomyDataManager( final MainFrameApplication mf, final TreePanel treepanel, final Phylogeny phy ) {
+ _phy = phy;
+ _mf = mf;
+ _treepanel = treepanel;
+ _delete = false;
+ _allow_simple_names = false;
+ }
+
+ public TaxonomyDataManager( final MainFrameApplication mf,
+ final TreePanel treepanel,
+ final Phylogeny phy,
+ final boolean delete,
+ final boolean allow_simple_name ) {
+ _phy = phy;
+ _mf = mf;
+ _treepanel = treepanel;
+ _delete = delete;
+ _allow_simple_names = allow_simple_name;
+ }
+
+
synchronized static void clearCachesIfTooLarge() {
if ( getSnTaxCacheMap().size() > MAX_CACHE_SIZE ) {
getSnTaxCacheMap().clear();
}
}
- synchronized static HashMap<String, UniProtTaxonomy> getCnTaxCacheMap() {
+ synchronized final static HashMap<String, UniProtTaxonomy> getCnTaxCacheMap() {
return _cn_up_cache_map;
}
- synchronized static HashMap<String, UniProtTaxonomy> getCodeTaxCacheMap() {
+ synchronized final static HashMap<String, UniProtTaxonomy> getCodeTaxCacheMap() {
return _code_up_cache_map;
}
- synchronized static HashMap<String, UniProtTaxonomy> getIdTaxCacheMap() {
+ synchronized final static HashMap<String, UniProtTaxonomy> getIdTaxCacheMap() {
return _id_up_cache_map;
}
- synchronized static HashMap<String, UniProtTaxonomy> getLineageTaxCacheMap() {
+ synchronized final static HashMap<String, UniProtTaxonomy> getLineageTaxCacheMap() {
return _lineage_up_cache_map;
}
- synchronized static HashMap<String, UniProtTaxonomy> getSnTaxCacheMap() {
+ synchronized final static HashMap<String, UniProtTaxonomy> getSnTaxCacheMap() {
return _sn_up_cache_map;
}
- private static UniProtTaxonomy getTaxonomies( final HashMap<String, UniProtTaxonomy> cache,
+ private final static UniProtTaxonomy getTaxonomies( final HashMap<String, UniProtTaxonomy> cache,
final Object query,
final QUERY_TYPE qt ) throws IOException,
AncestralTaxonomyInferenceException {
if ( ( up_taxonomies != null ) && ( up_taxonomies.size() == 1 ) ) {
final UniProtTaxonomy up_tax = up_taxonomies.get( 0 );
if ( !ForesterUtil.isEmpty( up_tax.getScientificName() ) ) {
- TaxonomyDataObtainer.getSnTaxCacheMap().put( up_tax.getScientificName(), up_tax );
+ TaxonomyDataManager.getSnTaxCacheMap().put( up_tax.getScientificName(), up_tax );
}
if ( !ForesterUtil.isEmpty( up_tax.getCode() ) ) {
- TaxonomyDataObtainer.getCodeTaxCacheMap().put( up_tax.getCode(), up_tax );
+ TaxonomyDataManager.getCodeTaxCacheMap().put( up_tax.getCode(), up_tax );
}
if ( !ForesterUtil.isEmpty( up_tax.getCommonName() ) ) {
- TaxonomyDataObtainer.getCnTaxCacheMap().put( up_tax.getCommonName(), up_tax );
+ TaxonomyDataManager.getCnTaxCacheMap().put( up_tax.getCommonName(), up_tax );
}
if ( !ForesterUtil.isEmpty( up_tax.getId() ) ) {
- TaxonomyDataObtainer.getIdTaxCacheMap().put( up_tax.getId(), up_tax );
+ TaxonomyDataManager.getIdTaxCacheMap().put( up_tax.getId(), up_tax );
}
return up_tax;
}
}
}
- private static List<UniProtTaxonomy> getTaxonomiesFromCommonName( final String query ) throws IOException {
+ private final static List<UniProtTaxonomy> getTaxonomiesFromCommonName( final String query ) throws IOException {
return UniProtWsTools.getTaxonomiesFromCommonNameStrict( query, MAX_TAXONOMIES_TO_RETURN );
}
- private static List<UniProtTaxonomy> getTaxonomiesFromId( final String query ) throws IOException {
+ private final static List<UniProtTaxonomy> getTaxonomiesFromId( final String query ) throws IOException {
return UniProtWsTools.getTaxonomiesFromId( query, MAX_TAXONOMIES_TO_RETURN );
}
- //
- private static List<UniProtTaxonomy> getTaxonomiesFromScientificName( final String query ) throws IOException {
+
+ private final static List<UniProtTaxonomy> getTaxonomiesFromScientificName( final String query ) throws IOException {
return UniProtWsTools.getTaxonomiesFromScientificNameStrict( query, MAX_TAXONOMIES_TO_RETURN );
}
- //
- private static List<UniProtTaxonomy> getTaxonomiesFromTaxonomyCode( final String query ) throws IOException {
+
+ private final static List<UniProtTaxonomy> getTaxonomiesFromTaxonomyCode( final String query ) throws IOException {
return UniProtWsTools.getTaxonomiesFromTaxonomyCode( query, MAX_TAXONOMIES_TO_RETURN );
}
- static boolean isHasAppropriateId( final Taxonomy tax ) {
+ static final boolean isHasAppropriateId( final Taxonomy tax ) {
return ( ( tax.getIdentifier() != null ) && ( !ForesterUtil.isEmpty( tax.getIdentifier().getValue() ) && ( tax
.getIdentifier().getProvider().equalsIgnoreCase( "ncbi" )
|| tax.getIdentifier().getProvider().equalsIgnoreCase( "uniprot" ) || tax.getIdentifier().getProvider()
.equalsIgnoreCase( "uniprotkb" ) ) ) );
}
- synchronized private static SortedSet<String> obtainDetailedTaxonomicInformation( final Phylogeny phy,
- final boolean delete )
+ synchronized final private static SortedSet<String> obtainDetailedTaxonomicInformation( final Phylogeny phy,
+ final boolean delete,
+ final boolean allow_to_use_basic_node_names )
throws IOException, AncestralTaxonomyInferenceException {
clearCachesIfTooLarge();
final SortedSet<String> not_found = new TreeSet<String>();
if ( node.getNodeData().isHasTaxonomy() ) {
tax = node.getNodeData().getTaxonomy();
}
+ else if ( allow_to_use_basic_node_names && !ForesterUtil.isEmpty( node.getName() ) ) {
+ // Nothing to be done.
+ }
else if ( node.isExternal() ) {
if ( !ForesterUtil.isEmpty( node.getName() ) ) {
not_found.add( node.getName() );
}
}
UniProtTaxonomy uniprot_tax = null;
- if ( ( tax != null )
+ if ( ( ( tax != null )
&& ( isHasAppropriateId( tax ) || !ForesterUtil.isEmpty( tax.getScientificName() )
|| !ForesterUtil.isEmpty( tax.getTaxonomyCode() ) || !ForesterUtil.isEmpty( tax
- .getCommonName() ) ) ) {
+ .getCommonName() ) ) ) ||
+ ( allow_to_use_basic_node_names && !ForesterUtil.isEmpty( node.getName() ) ) ) {
uniprot_tax = obtainUniProtTaxonomy( tax, null, qt );
if ( uniprot_tax != null ) {
updateTaxonomy( qt, node, tax, uniprot_tax );
return not_found;
}
- public static UniProtTaxonomy obtainUniProtTaxonomy( final Taxonomy tax, Object query, QUERY_TYPE qt )
+ public final static UniProtTaxonomy obtainUniProtTaxonomy( final Taxonomy tax, Object query, QUERY_TYPE qt )
throws IOException, AncestralTaxonomyInferenceException {
- if ( TaxonomyDataObtainer.isHasAppropriateId( tax ) ) {
+ if ( tax == null ) {
+ throw new IllegalArgumentException( "illegal attempt to use empty taxonomy object");
+ }
+
+
+ if ( TaxonomyDataManager.isHasAppropriateId( tax ) ) {
query = tax.getIdentifier().getValue();
qt = QUERY_TYPE.ID;
- return getTaxonomies( TaxonomyDataObtainer.getIdTaxCacheMap(), query, qt );
+ return getTaxonomies( TaxonomyDataManager.getIdTaxCacheMap(), query, qt );
}
else if ( !ForesterUtil.isEmpty( tax.getScientificName() ) ) {
if ( !ForesterUtil.isEmpty( tax.getLineage() ) ) {
query = tax.getLineage();
qt = QUERY_TYPE.LIN;
- return getTaxonomies( TaxonomyDataObtainer.getLineageTaxCacheMap(), query, qt );
+ return getTaxonomies( TaxonomyDataManager.getLineageTaxCacheMap(), query, qt );
}
else {
query = tax.getScientificName();
qt = QUERY_TYPE.SN;
- return getTaxonomies( TaxonomyDataObtainer.getSnTaxCacheMap(), query, qt );
+ return getTaxonomies( TaxonomyDataManager.getSnTaxCacheMap(), query, qt );
}
}
else if ( !ForesterUtil.isEmpty( tax.getTaxonomyCode() ) ) {
query = tax.getTaxonomyCode();
qt = QUERY_TYPE.CODE;
- return getTaxonomies( TaxonomyDataObtainer.getCodeTaxCacheMap(), query, qt );
+ return getTaxonomies( TaxonomyDataManager.getCodeTaxCacheMap(), query, qt );
}
else {
query = tax.getCommonName();
qt = QUERY_TYPE.CN;
- return getTaxonomies( TaxonomyDataObtainer.getCnTaxCacheMap(), query, qt );
+ return getTaxonomies( TaxonomyDataManager.getCnTaxCacheMap(), query, qt );
}
}
- static UniProtTaxonomy obtainUniProtTaxonomyFromLineage( final List<String> lineage )
+ static final UniProtTaxonomy obtainUniProtTaxonomyFromLineage( final List<String> lineage )
throws AncestralTaxonomyInferenceException, IOException {
final String lineage_str = ForesterUtil.stringListToString( lineage, ">" );
UniProtTaxonomy up_tax = null;
- if ( TaxonomyDataObtainer.getLineageTaxCacheMap().containsKey( lineage_str ) ) {
- up_tax = TaxonomyDataObtainer.getLineageTaxCacheMap().get( lineage_str ).copy();
+ if ( TaxonomyDataManager.getLineageTaxCacheMap().containsKey( lineage_str ) ) {
+ up_tax = TaxonomyDataManager.getLineageTaxCacheMap().get( lineage_str ).copy();
}
else {
final List<UniProtTaxonomy> up_taxonomies = getTaxonomiesFromScientificName( lineage
throw new AncestralTaxonomyInferenceException( "lineage \""
+ ForesterUtil.stringListToString( lineage, " > " ) + "\" not found" );
}
- TaxonomyDataObtainer.getLineageTaxCacheMap().put( lineage_str, up_tax );
+ TaxonomyDataManager.getLineageTaxCacheMap().put( lineage_str, up_tax );
if ( !ForesterUtil.isEmpty( up_tax.getScientificName() ) ) {
- TaxonomyDataObtainer.getSnTaxCacheMap().put( up_tax.getScientificName(), up_tax );
+ TaxonomyDataManager.getSnTaxCacheMap().put( up_tax.getScientificName(), up_tax );
}
if ( !ForesterUtil.isEmpty( up_tax.getCode() ) ) {
- TaxonomyDataObtainer.getCodeTaxCacheMap().put( up_tax.getCode(), up_tax );
+ TaxonomyDataManager.getCodeTaxCacheMap().put( up_tax.getCode(), up_tax );
}
if ( !ForesterUtil.isEmpty( up_tax.getCommonName() ) ) {
- TaxonomyDataObtainer.getCnTaxCacheMap().put( up_tax.getCommonName(), up_tax );
+ TaxonomyDataManager.getCnTaxCacheMap().put( up_tax.getCommonName(), up_tax );
}
if ( !ForesterUtil.isEmpty( up_tax.getId() ) ) {
- TaxonomyDataObtainer.getIdTaxCacheMap().put( up_tax.getId(), up_tax );
+ TaxonomyDataManager.getIdTaxCacheMap().put( up_tax.getId(), up_tax );
}
}
}
return up_tax;
}
- synchronized private static void updateTaxonomy( final QUERY_TYPE qt,
+ synchronized final private static void updateTaxonomy( final QUERY_TYPE qt,
final PhylogenyNode node,
final Taxonomy tax,
final UniProtTaxonomy up_tax ) {
}
}
}
- private final Phylogeny _phy;
- private final MainFrameApplication _mf;
- private final TreePanel _treepanel;
- private final boolean _delete;
-
- public TaxonomyDataObtainer( final MainFrameApplication mf, final TreePanel treepanel, final Phylogeny phy ) {
- _phy = phy;
- _mf = mf;
- _treepanel = treepanel;
- _delete = false;
- }
-
- public TaxonomyDataObtainer( final MainFrameApplication mf,
- final TreePanel treepanel,
- final Phylogeny phy,
- final boolean delete ) {
- _phy = phy;
- _mf = mf;
- _treepanel = treepanel;
- _delete = delete;
- }
-
- private void execute() {
+
+ private final void execute() {
start( _mf, "taxonomy data" );
SortedSet<String> not_found = null;
try {
- not_found = obtainDetailedTaxonomicInformation( _phy, _delete );
+ not_found = obtainDetailedTaxonomicInformation( _phy, _delete, _allow_simple_names );
}
catch ( final UnknownHostException e ) {
JOptionPane.showMessageDialog( _mf,
}
}
- private String getBaseUrl() {
+ private final String getBaseUrl() {
return UniProtWsTools.BASE_URL;
}