in progress
[jalview.git] / forester / java / src / org / forester / archaeopteryx / UrlTreeReader.java
index ea4bca0..36c6265 100644 (file)
@@ -59,6 +59,11 @@ 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;
@@ -88,6 +93,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 );
@@ -101,6 +107,16 @@ 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( NHXParser.TAXONOMY_EXTRACTION.NO );
@@ -109,13 +125,14 @@ public class UrlTreeReader implements Runnable {
                         break;
                     case NH_EXTRACT_TAXONOMY:
                         parser = new NHXParser();
-                        ( ( NHXParser ) parser ).setTaxonomyExtraction( NHXParser.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( NHXParser.TAXONOMY_EXTRACTION.PFAM_STYLE_ONLY );
+                        ( ( NHXParser ) parser )
+                        .setTaxonomyExtraction( NHXParser.TAXONOMY_EXTRACTION.PFAM_STYLE_STRICT );
                         ( ( NHXParser ) parser ).setReplaceUnderscores( false );
                         ( ( NHXParser ) parser ).setGuessRootedness( true );
                         break;
@@ -126,7 +143,7 @@ public class UrlTreeReader implements Runnable {
                         ( ( NHXParser ) parser ).setGuessRootedness( true );
                         break;
                     case PHYLOXML:
-                        parser = new PhyloXmlParser();
+                        parser = PhyloXmlParser.createPhyloXmlParserXsdValidating();
                         break;
                     default:
                         throw new IllegalArgumentException( "unknown format: " + client.getReturnFormat() );
@@ -141,24 +158,28 @@ public class UrlTreeReader implements Runnable {
                 trees = factory.create( url.openStream(), parser );
             }
             catch ( final MalformedURLException e ) {
+                exception = true;
                 JOptionPane.showMessageDialog( _main_frame,
                                                "Malformed URL: " + url + "\n" + e.getLocalizedMessage(),
                                                "Malformed URL",
                                                JOptionPane.ERROR_MESSAGE );
             }
             catch ( final IOException e ) {
+                exception = true;
                 JOptionPane.showMessageDialog( _main_frame,
                                                "Could not read from " + url + "\n" + e.getLocalizedMessage(),
                                                "Failed to read tree from " + client.getName() + " for " + identifier,
                                                JOptionPane.ERROR_MESSAGE );
             }
             catch ( final NumberFormatException e ) {
+                exception = true;
                 JOptionPane.showMessageDialog( _main_frame,
                                                "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,
                                                e.getLocalizedMessage(),
@@ -180,11 +201,6 @@ 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 ) {
                             try {
                                 WebserviceUtil.processInstructions( client, phylogeny );
@@ -229,19 +245,23 @@ public class UrlTreeReader implements Runnable {
                         }
                         _main_frame.getMainPanel().getCurrentTreePanel().setTreeFile( new File( my_name_for_file ) );
                         AptxUtil.lookAtSomeTreePropertiesForAptxControlSettings( phylogeny, _main_frame.getMainPanel()
-                                .getControlPanel(), _main_frame.getConfiguration() );
+                                                                                 .getControlPanel(), _main_frame.getConfiguration() );
                         _main_frame.getMainPanel().getControlPanel().showWhole();
                     }
                 }
             }
+            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 ),
-                                                   "Success",
-                                                   JOptionPane.INFORMATION_MESSAGE );
+                                                                          + " tree(s) from [" + url + "]", 80 ),
+                                                                          "Success",
+                                                                          JOptionPane.INFORMATION_MESSAGE );
                 }
                 catch ( final Exception e ) {
                     // Not important if this fails, do nothing.
@@ -252,9 +272,4 @@ public class UrlTreeReader implements Runnable {
         _main_frame.activateSaveAllIfNeeded();
         System.gc();
     }
-
-    @Override
-    public void run() {
-        readPhylogeniesFromWebservice();
-    }
 }