Fixed issue with reading from TreeBase
[jalview.git] / forester / java / src / org / forester / archaeopteryx / ArchaeopteryxA.java
index b4e3801..6b4cdd7 100644 (file)
@@ -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;
 
@@ -40,17 +40,18 @@ import org.forester.util.ForesterUtil;
 
 public class ArchaeopteryxA extends JApplet {
 
-    private static final long  serialVersionUID    = 2314899014580484146L;
-    private final static Color background_color    = new Color( 0, 0, 0 );
-    private final static Color font_color          = new Color( 0, 255, 0 );
-    private final static Color ex_background_color = new Color( 0, 0, 0 );
-    private final static Color ex_font_color       = new Color( 255, 0, 0 );
-    private final static Font  font                = new Font( Configuration.getDefaultFontFamilyName(), Font.BOLD, 9 );
+    private static final long  serialVersionUID      = 2314899014580484146L;
+    private final static Color background_color      = new Color( 0, 0, 0 );
+    private final static Color font_color            = new Color( 0, 255, 0 );
+    private final static Color ex_background_color   = new Color( 0, 0, 0 );
+    private final static Color ex_font_color         = new Color( 255, 0, 0 );
+    private final static Font  font                  = new Font( Configuration.getDefaultFontFamilyName(), Font.BOLD, 9 );
     private MainFrameApplet    _mainframe_applet;
-    private String             _url_string         = "";
-    private String             _message_1          = "";
-    private String             _message_2          = "";
-    public final static String NAME                = "ArchaeopteryxA";
+    private String             _tree_url_str         = "";
+    private String             _species_tree_url_str = "";
+    private String             _message_1            = "";
+    private String             _message_2            = "";
+    public final static String NAME                  = "ArchaeopteryxA";
 
     @Override
     public void destroy() {
@@ -60,28 +61,54 @@ public class ArchaeopteryxA extends JApplet {
         }
     }
 
-    private MainFrameApplet getMainFrameApplet() {
-        return _mainframe_applet;
+    /**
+     * This method returns the current external node data which
+     * has been selected by the user by clicking the "Return ..."
+     * menu item. This method is expected to be called from Javascript or
+     * something like it.
+     *
+     * @return current external node data as String
+     */
+    public String getCurrentExternalNodesDataBuffer() {
+        return getMainFrameApplet().getCurrentTreePanel().getCurrentExternalNodesDataBufferAsString();
     }
 
-    private String getMessage1() {
-        return _message_1;
+    public int getCurrentExternalNodesDataBufferChangeCounter() {
+        return getMainFrameApplet().getCurrentTreePanel().getCurrentExternalNodesDataBufferChangeCounter();
     }
 
-    private String getMessage2() {
-        return _message_2;
+    public int getCurrentExternalNodesDataBufferLength() {
+        return getMainFrameApplet().getCurrentTreePanel().getCurrentExternalNodesDataBufferAsString().length();
+    }
+
+    public String getSpeciesTreeUrlStr() {
+        return _species_tree_url_str;
     }
 
-    public String getUrlString() {
-        return _url_string;
+    public String getTreeUrlStr() {
+        return _tree_url_str;
     }
 
     @Override
     public void init() {
         boolean has_exception = false;
         setName( NAME );
-        setUrlString( getParameter( Constants.APPLET_PARAM_NAME_FOR_URL_OF_TREE_TO_LOAD ) );
-        AptxUtil.printAppletMessage( NAME, "URL of phylogenies to load: \"" + getUrlString() + "\"" );
+        setTreeUrlStr( getParameter( AptxConstants.APPLET_PARAM_NAME_FOR_URL_OF_TREE_TO_LOAD ) );
+        setSpeciesTreeUrlStr( getParameter( AptxConstants.APPLET_PARAM_NAME_FOR_URL_OF_SPECIES_TREE_TO_LOAD ) );
+        if ( !ForesterUtil.isEmpty( getTreeUrlStr() ) ) {
+            AptxUtil.printAppletMessage( NAME, "URL of tree(s) to load: " + getTreeUrlStr() );
+        }
+        else {
+            ForesterUtil.printErrorMessage( NAME, "no URL for tree(s) to load!" );
+            setBackground( ex_background_color );
+            setForeground( ex_font_color );
+            has_exception = true;
+            setMessage1( "no URL for tree(s) to load" );
+            repaint();
+        }
+        if ( !ForesterUtil.isEmpty( getSpeciesTreeUrlStr() ) ) {
+            AptxUtil.printAppletMessage( NAME, "URL of species tree to load: " + getSpeciesTreeUrlStr() );
+        }
         setBackground( background_color );
         setForeground( font_color );
         setFont( font );
@@ -97,7 +124,7 @@ public class ArchaeopteryxA extends JApplet {
             setMessage2( "[Your Java version: " + s + "]" );
             repaint();
         }
-        final String config_filename = getParameter( Constants.APPLET_PARAM_NAME_FOR_CONFIG_FILE_URL );
+        final String config_filename = getParameter( AptxConstants.APPLET_PARAM_NAME_FOR_CONFIG_FILE_URL );
         AptxUtil.printAppletMessage( NAME, "URL for configuration file is: " + config_filename );
         final Configuration configuration = new Configuration( config_filename, true, true, true );
         try {
@@ -108,14 +135,26 @@ public class ArchaeopteryxA extends JApplet {
                 UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName() );
             }
             setVisible( false );
-            _mainframe_applet = new MainFrameApplet( this, configuration );
-            URL url = null;
-            url = new URL( getUrlString() );
-            final Phylogeny[] phys = AptxUtil.readPhylogeniesFromUrl( url,
-                                                                      configuration.isValidatePhyloXmlAgainstSchema() );
+            _mainframe_applet = new MainFrameApplet( this, configuration, getSpeciesTreeUrlStr() );
+            final URL tree_url = new URL( getTreeUrlStr() );
+            final Phylogeny[] phys = AptxUtil.readPhylogeniesFromUrl( tree_url, configuration
+                    .isValidatePhyloXmlAgainstSchema(), configuration.isReplaceUnderscoresInNhParsing(), configuration
+                    .isInternalNumberAreConfidenceForNhParsing(), configuration.getTaxonomyExtraction(), configuration
+                    .isMidpointReroot() );
+            if ( phys == null ) {
+                ForesterUtil.printErrorMessage( NAME, "phylogenies from [" + tree_url + "] are null" );
+            }
+            else if ( phys.length < 1 ) {
+                ForesterUtil.printErrorMessage( NAME, "phylogenies from [" + tree_url + "] are empty" );
+            }
+            else {
+                AptxUtil.printAppletMessage( NAME, "loaded " + phys.length + " phylogenies from: " + tree_url );
+            }
+            AptxUtil.printAppletMessage( ArchaeopteryxA.NAME, "loaded " + phys.length + " phylogenies from: "
+                    + tree_url );
             AptxUtil.addPhylogeniesToTabs( phys,
-                                           new File( url.getFile() ).getName(),
-                                           getUrlString(),
+                                           new File( tree_url.getFile() ).getName(),
+                                           getTreeUrlStr(),
                                            getMainFrameApplet().getConfiguration(),
                                            getMainFrameApplet().getMainPanel() );
             getMainFrameApplet().getMainPanel().getControlPanel().showWholeAll();
@@ -141,22 +180,22 @@ public class ArchaeopteryxA extends JApplet {
         getMainFrameApplet().requestFocusInWindow();
         getMainFrameApplet().requestFocus();
         /* GUILHEM_BEG */
-        final String default_relation = getParameter( Constants.APPLET_PARAM_NAME_FOR_DEFAULT_SEQUENCE_RELATION_TYPE );
+        final String default_relation = getParameter( AptxConstants.APPLET_PARAM_NAME_FOR_DEFAULT_SEQUENCE_RELATION_TYPE );
         if ( default_relation != null ) {
             getMainFrameApplet().getMainPanel().getControlPanel().getSequenceRelationTypeBox()
                     .setSelectedItem( default_relation );
         }
-        final String default_sequence = getParameter( Constants.APPLET_PARAM_NAME_FOR_DEFAULT_QUERY_SEQUENCE );
+        final String default_sequence = getParameter( AptxConstants.APPLET_PARAM_NAME_FOR_DEFAULT_QUERY_SEQUENCE );
         if ( default_sequence != null ) {
             getMainFrameApplet().getMainPanel().getControlPanel().getSequenceRelationBox()
                     .setSelectedItem( default_sequence );
-            /* GUILHEM_END */
         }
+        /* GUILHEM_END */
     }
 
     /**
      * Prints message when initialization is finished. Called automatically.
-     * 
+     *
      * @param g
      *            Graphics
      */
@@ -169,6 +208,27 @@ public class ArchaeopteryxA extends JApplet {
         g.drawString( getMessage1(), 10, 40 );
     }
 
+    @Override
+    public void start() {
+        getMainFrameApplet().getMainPanel().validate();
+        getMainFrameApplet().requestFocus();
+        getMainFrameApplet().requestFocusInWindow();
+        getMainFrameApplet().requestFocus();
+        AptxUtil.printAppletMessage( NAME, "started" );
+    }
+
+    private MainFrameApplet getMainFrameApplet() {
+        return _mainframe_applet;
+    }
+
+    private String getMessage1() {
+        return _message_1;
+    }
+
+    private String getMessage2() {
+        return _message_2;
+    }
+
     private void setMessage1( final String message_1 ) {
         _message_1 = message_1;
     }
@@ -177,16 +237,11 @@ public class ArchaeopteryxA extends JApplet {
         _message_2 = message_2;
     }
 
-    private void setUrlString( final String url_string ) {
-        _url_string = url_string;
+    private void setSpeciesTreeUrlStr( final String url_string ) {
+        _species_tree_url_str = url_string;
     }
 
-    @Override
-    public void start() {
-        getMainFrameApplet().getMainPanel().validate();
-        getMainFrameApplet().requestFocus();
-        getMainFrameApplet().requestFocusInWindow();
-        getMainFrameApplet().requestFocus();
-        AptxUtil.printAppletMessage( NAME, "started" );
+    private void setTreeUrlStr( final String url_string ) {
+        _tree_url_str = url_string;
     }
 }