X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Farchaeopteryx%2FUrlTreeReader.java;h=e3c81f9c303d92e6a4fe7344893b4f80d812e674;hb=56cc12bcb9783e1bd16f57e12534434c31901879;hp=838ce620b51499b99608b47ebcbb8f2e20f861a6;hpb=5958d8c92c06f76da04a466ef7636e93a640b6a3;p=jalview.git diff --git a/forester/java/src/org/forester/archaeopteryx/UrlTreeReader.java b/forester/java/src/org/forester/archaeopteryx/UrlTreeReader.java index 838ce62..e3c81f9 100644 --- a/forester/java/src/org/forester/archaeopteryx/UrlTreeReader.java +++ b/forester/java/src/org/forester/archaeopteryx/UrlTreeReader.java @@ -21,7 +21,7 @@ // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA // // Contact: phylosoft @ gmail . com -// WWW: www.phylosoft.org/forester +// WWW: https://sites.google.com/site/cmzmasek/home/software/forester package org.forester.archaeopteryx; @@ -29,7 +29,6 @@ import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; -import java.util.Date; import javax.swing.JOptionPane; @@ -39,13 +38,12 @@ import org.forester.archaeopteryx.webservices.WebservicesManager; import org.forester.io.parsers.PhylogenyParser; import org.forester.io.parsers.nexus.NexusPhylogeniesParser; import org.forester.io.parsers.nhx.NHXParser; +import org.forester.io.parsers.phyloxml.PhyloXmlDataFormatException; import org.forester.io.parsers.phyloxml.PhyloXmlParser; import org.forester.io.parsers.tol.TolParser; import org.forester.phylogeny.Phylogeny; import org.forester.phylogeny.PhylogenyMethods; import org.forester.phylogeny.data.Identifier; -import org.forester.phylogeny.factories.ParserBasedPhylogenyFactory; -import org.forester.phylogeny.factories.PhylogenyFactory; import org.forester.util.ForesterUtil; public class UrlTreeReader implements Runnable { @@ -58,14 +56,18 @@ public class UrlTreeReader implements Runnable { _webservice_client_index = webservice_client_index; } + @Override + public void run() { + readPhylogeniesFromWebservice(); + } + synchronized void readPhylogeniesFromWebservice() { - final long start_time = new Date().getTime(); URL url = null; Phylogeny[] trees = null; final WebservicesManager webservices_manager = WebservicesManager.getInstance(); final PhylogeniesWebserviceClient client = webservices_manager .getAvailablePhylogeniesWebserviceClient( _webservice_client_index ); - String identifier = JOptionPane.showInputDialog( _main_frame, client.getInstructions() + "\n(Reference: " + String identifier = JOptionPane.showInputDialog( _main_frame.getThisFrame(), client.getInstructions() + "\n(Reference: " + client.getReference() + ")", client.getDescription(), JOptionPane.QUESTION_MESSAGE ); if ( ( identifier != null ) && ( identifier.trim().length() > 0 ) ) { identifier = identifier.trim(); @@ -79,7 +81,7 @@ public class UrlTreeReader implements Runnable { id = -1; } if ( id < 1 ) { - JOptionPane.showMessageDialog( _main_frame, + JOptionPane.showMessageDialog( _main_frame.getThisFrame(), "Identifier is expected to be a number", "Can not open URL", JOptionPane.ERROR_MESSAGE ); @@ -87,6 +89,7 @@ public class UrlTreeReader implements Runnable { } identifier = id + ""; } + boolean exception = false; try { String url_str = client.getUrl(); url_str = url_str.replaceFirst( PhylogeniesWebserviceClient.QUERY_PLACEHOLDER, identifier ); @@ -100,34 +103,43 @@ public class UrlTreeReader implements Runnable { parser = new NexusPhylogeniesParser(); ( ( NexusPhylogeniesParser ) parser ).setReplaceUnderscores( true ); break; + case TREEBASE_TREE: + parser = new NexusPhylogeniesParser(); + ( ( NexusPhylogeniesParser ) parser ).setReplaceUnderscores( true ); + ( ( NexusPhylogeniesParser ) parser ).setTaxonomyExtraction( NHXParser.TAXONOMY_EXTRACTION.NO ); + break; + case TREEBASE_STUDY: + parser = new NexusPhylogeniesParser(); + ( ( NexusPhylogeniesParser ) parser ).setReplaceUnderscores( true ); + ( ( NexusPhylogeniesParser ) parser ).setTaxonomyExtraction( NHXParser.TAXONOMY_EXTRACTION.NO ); + break; case NH: parser = new NHXParser(); - ( ( NHXParser ) parser ).setTaxonomyExtraction( PhylogenyMethods.TAXONOMY_EXTRACTION.NO ); + ( ( NHXParser ) parser ).setTaxonomyExtraction( NHXParser.TAXONOMY_EXTRACTION.NO ); ( ( NHXParser ) parser ).setReplaceUnderscores( true ); ( ( NHXParser ) parser ).setGuessRootedness( true ); break; case NH_EXTRACT_TAXONOMY: parser = new NHXParser(); - ( ( NHXParser ) parser ) - .setTaxonomyExtraction( PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY ); + ( ( NHXParser ) parser ).setTaxonomyExtraction( NHXParser.TAXONOMY_EXTRACTION.AGGRESSIVE ); ( ( NHXParser ) parser ).setReplaceUnderscores( false ); ( ( NHXParser ) parser ).setGuessRootedness( true ); break; case PFAM: parser = new NHXParser(); ( ( NHXParser ) parser ) - .setTaxonomyExtraction( PhylogenyMethods.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY ); + .setTaxonomyExtraction( NHXParser.TAXONOMY_EXTRACTION.PFAM_STYLE_STRICT ); ( ( NHXParser ) parser ).setReplaceUnderscores( false ); ( ( NHXParser ) parser ).setGuessRootedness( true ); break; case NHX: parser = new NHXParser(); - ( ( NHXParser ) parser ).setTaxonomyExtraction( PhylogenyMethods.TAXONOMY_EXTRACTION.NO ); + ( ( NHXParser ) parser ).setTaxonomyExtraction( NHXParser.TAXONOMY_EXTRACTION.NO ); ( ( NHXParser ) parser ).setReplaceUnderscores( false ); ( ( NHXParser ) parser ).setGuessRootedness( true ); break; case PHYLOXML: - parser = new PhyloXmlParser(); + parser = PhyloXmlParser.createPhyloXmlParserXsdValidating(); break; default: throw new IllegalArgumentException( "unknown format: " + client.getReturnFormat() ); @@ -138,30 +150,33 @@ public class UrlTreeReader implements Runnable { else { _main_frame.getMainPanel().setWaitCursor(); } - final PhylogenyFactory factory = ParserBasedPhylogenyFactory.getInstance(); - trees = factory.create( url.openStream(), parser ); + trees = ForesterUtil.readPhylogeniesFromUrl( url, parser ); } catch ( final MalformedURLException e ) { - JOptionPane.showMessageDialog( _main_frame, + exception = true; + JOptionPane.showMessageDialog( _main_frame.getThisFrame(), "Malformed URL: " + url + "\n" + e.getLocalizedMessage(), "Malformed URL", JOptionPane.ERROR_MESSAGE ); } catch ( final IOException e ) { - JOptionPane.showMessageDialog( _main_frame, + exception = true; + JOptionPane.showMessageDialog( _main_frame.getThisFrame(), "Could not read from " + url + "\n" + e.getLocalizedMessage(), "Failed to read tree from " + client.getName() + " for " + identifier, JOptionPane.ERROR_MESSAGE ); } catch ( final NumberFormatException e ) { - JOptionPane.showMessageDialog( _main_frame, + exception = true; + JOptionPane.showMessageDialog( _main_frame.getThisFrame(), "Could not read from " + url + "\n" + e.getLocalizedMessage(), "Failed to read tree from " + client.getName() + " for " + identifier, JOptionPane.ERROR_MESSAGE ); } catch ( final Exception e ) { + exception = true; e.printStackTrace(); - JOptionPane.showMessageDialog( _main_frame, + JOptionPane.showMessageDialog( _main_frame.getThisFrame(), e.getLocalizedMessage(), "Unexpected Exception", JOptionPane.ERROR_MESSAGE ); @@ -181,16 +196,27 @@ public class UrlTreeReader implements Runnable { phylogeny.setRerootable( false ); phylogeny.setRooted( true ); } - if ( client.getName().equals( WebserviceUtil.PFAM_NAME ) ) { - phylogeny.setRerootable( false ); - phylogeny.setRooted( true ); - PhylogenyMethods.transferInternalNodeNamesToConfidence( phylogeny ); - } if ( client.getProcessingInstructions() != null ) { - WebserviceUtil.processInstructions( client, phylogeny ); + try { + WebserviceUtil.processInstructions( client, phylogeny ); + } + catch ( final PhyloXmlDataFormatException e ) { + JOptionPane.showMessageDialog( _main_frame.getThisFrame(), + "Error:\n" + e.getLocalizedMessage(), + "Error", + JOptionPane.ERROR_MESSAGE ); + } } if ( client.getNodeField() != null ) { - PhylogenyMethods.transferNodeNameToField( phylogeny, client.getNodeField() ); + try { + PhylogenyMethods.transferNodeNameToField( phylogeny, client.getNodeField(), false ); + } + catch ( final PhyloXmlDataFormatException e ) { + JOptionPane.showMessageDialog( _main_frame.getThisFrame(), + "Error:\n" + e.getLocalizedMessage(), + "Error", + JOptionPane.ERROR_MESSAGE ); + } } phylogeny.setIdentifier( new Identifier( identifier, client.getName() ) ); _main_frame.getJMenuBar().remove( _main_frame.getHelpMenu() ); @@ -219,12 +245,16 @@ public class UrlTreeReader implements Runnable { } } } + else if ( !exception ) { + JOptionPane.showMessageDialog( null, ForesterUtil.wordWrap( "Failed to read in tree(s) from [" + url + + "]", 80 ), "Error", JOptionPane.ERROR_MESSAGE ); + } _main_frame.getContentPane().repaint(); - if ( ( ( trees != null ) && ( trees.length > 0 ) ) && ( ( new Date().getTime() - start_time ) > 20000 ) ) { + if ( ( trees != null ) && ( trees.length > 0 ) ) { try { JOptionPane.showMessageDialog( null, ForesterUtil.wordWrap( "Successfully read in " + trees.length - + " evolutionry tree(s) from [" + url + "]", 80 ), + + " tree(s) from [" + url + "]", 80 ), "Success", JOptionPane.INFORMATION_MESSAGE ); } @@ -237,9 +267,4 @@ public class UrlTreeReader implements Runnable { _main_frame.activateSaveAllIfNeeded(); System.gc(); } - - @Override - public void run() { - readPhylogeniesFromWebservice(); - } }