make PH, aPH, CL selection
[jalview.git] / forester / java / src / org / forester / util / BasicTable.java
index 2469129..cb96dca 100644 (file)
@@ -5,7 +5,7 @@
 // Copyright (C) 2008-2009 Christian M. Zmasek
 // Copyright (C) 2008-2009 Burnham Institute for Medical Research
 // All rights reserved
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
@@ -15,7 +15,7 @@
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 // Lesser General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
@@ -31,14 +31,28 @@ import java.util.Map;
 
 public class BasicTable<E> {
 
-    private Map<String, Map<String, E>> _rows;
-    private int                         _max_row;
     private int                         _max_col;
+    private int                         _max_row;
+    private Map<String, Map<String, E>> _rows;
 
     public BasicTable() {
         init();
     }
 
+    // Returns -1 if not found, IllegalArgumentException if not unique.
+    public int findRow( final String first_col_value ) throws IllegalArgumentException {
+        int result = -1;
+        for( int i = 0; i < this.getNumberOfRows(); ++i ) {
+            if ( getValueAsString( 0, i ).equals( first_col_value ) ) {
+                if ( result >= 0 ) {
+                    throw new IllegalArgumentException( "\"" + first_col_value + "\" is not unique" );
+                }
+                result = i;
+            }
+        }
+        return result;
+    }
+
     public Map<String, E> getColumnsAsMap( final int key_col, final int value_col ) throws IllegalArgumentException {
         final Map<String, E> map = new HashMap<String, E>();
         for( int row = 0; row < getNumberOfRows(); ++row ) {
@@ -76,20 +90,6 @@ public class BasicTable<E> {
         return map;
     }
 
-    // Returns -1 if not found, IllegalArgumentException if not unique.
-    public int findRow( final String first_col_value ) throws IllegalArgumentException {
-        int result = -1;
-        for( int i = 0; i < this.getNumberOfRows(); ++i ) {
-            if ( getValueAsString( 0, i ).equals( first_col_value ) ) {
-                if ( result >= 0 ) {
-                    throw new IllegalArgumentException( "\"" + first_col_value + "\" is not unique" );
-                }
-                result = i;
-            }
-        }
-        return result;
-    }
-
     public int getNumberOfColumns() {
         return _max_col + 1;
     }
@@ -98,16 +98,19 @@ public class BasicTable<E> {
         return _max_row + 1;
     }
 
-    private Map<String, E> getRow( final int row ) {
-        return getRows().get( "" + row );
-    }
-
-    private Map<String, Map<String, E>> getRows() {
-        return _rows;
+    public final String getRowAsString( final int row, final String separator ) {
+        final StringBuilder sb = new StringBuilder();
+        for( int col = 0; col < getNumberOfColumns(); ++col ) {
+            sb.append( getValue( col, row ).toString() );
+            if ( col < ( getNumberOfColumns() - 1 ) ) {
+                sb.append( separator );
+            }
+        }
+        return sb.toString();
     }
 
     public E getValue( final int col, final int row ) throws IllegalArgumentException {
-        if ( ( row > getNumberOfRows() - 1 ) || ( row < 0 ) ) {
+        if ( ( row > ( getNumberOfRows() - 1 ) ) || ( row < 0 ) ) {
             throw new IllegalArgumentException( "value for row (" + row + ") is out of range [number of rows: "
                     + getNumberOfRows() + "]" );
         }
@@ -129,32 +132,18 @@ public class BasicTable<E> {
         return null;
     }
 
-    private void init() {
-        _rows = new HashMap<String, Map<String, E>>();
-        setMaxCol( -1 );
-        setMaxRow( -1 );
-    }
-
     public boolean isEmpty() {
         return getNumberOfRows() <= 0;
     }
 
-    private void setMaxCol( final int max_col ) {
-        _max_col = max_col;
-    }
-
-    private void setMaxRow( final int max_row ) {
-        _max_row = max_row;
-    }
-
     public void setValue( final int col, final int row, final E value ) {
         if ( ( row < 0 ) || ( col < 0 ) ) {
             throw new IllegalArgumentException( "attempt to use negative values for row or column" );
         }
-        if ( row > getNumberOfRows() - 1 ) {
+        if ( row > ( getNumberOfRows() - 1 ) ) {
             setMaxRow( row );
         }
-        if ( col > getNumberOfColumns() - 1 ) {
+        if ( col > ( getNumberOfColumns() - 1 ) ) {
             setMaxCol( col );
         }
         final String row_key = "" + row;
@@ -171,18 +160,40 @@ public class BasicTable<E> {
 
     @Override
     public String toString() {
-        final StringBuffer sb = new StringBuffer();
+        final StringBuilder sb = new StringBuilder();
         for( int row = 0; row < getNumberOfRows(); ++row ) {
             for( int col = 0; col < getNumberOfColumns(); ++col ) {
                 sb.append( getValue( col, row ) );
-                if ( col < getNumberOfColumns() - 1 ) {
+                if ( col < ( getNumberOfColumns() - 1 ) ) {
                     sb.append( " " );
                 }
             }
-            if ( row < getNumberOfRows() - 1 ) {
+            if ( row < ( getNumberOfRows() - 1 ) ) {
                 sb.append( ForesterUtil.LINE_SEPARATOR );
             }
         }
         return sb.toString();
     }
+
+    private Map<String, E> getRow( final int row ) {
+        return getRows().get( "" + row );
+    }
+
+    private Map<String, Map<String, E>> getRows() {
+        return _rows;
+    }
+
+    private void init() {
+        _rows = new HashMap<String, Map<String, E>>();
+        setMaxCol( -1 );
+        setMaxRow( -1 );
+    }
+
+    private void setMaxCol( final int max_col ) {
+        _max_col = max_col;
+    }
+
+    private void setMaxRow( final int max_row ) {
+        _max_row = max_row;
+    }
 }