X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Futil%2FBasicTable.java;h=cb96dcae13a63ff78697a3ba3c27af4ae073af1b;hb=dcb2f35ce9e088b3a06bf4c4da8fdc907ba901fc;hp=2469129b517ac3ec1556ac1bdce1d8cc08fcacab;hpb=48f7a89be9d34f1930a1f863e608235cc27184c5;p=jalview.git diff --git a/forester/java/src/org/forester/util/BasicTable.java b/forester/java/src/org/forester/util/BasicTable.java index 2469129..cb96dca 100644 --- a/forester/java/src/org/forester/util/BasicTable.java +++ b/forester/java/src/org/forester/util/BasicTable.java @@ -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 { - private Map> _rows; - private int _max_row; private int _max_col; + private int _max_row; + private Map> _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 getColumnsAsMap( final int key_col, final int value_col ) throws IllegalArgumentException { final Map map = new HashMap(); for( int row = 0; row < getNumberOfRows(); ++row ) { @@ -76,20 +90,6 @@ public class BasicTable { 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 { return _max_row + 1; } - private Map getRow( final int row ) { - return getRows().get( "" + row ); - } - - private Map> 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 { return null; } - private void init() { - _rows = new HashMap>(); - 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 { @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 getRow( final int row ) { + return getRows().get( "" + row ); + } + + private Map> getRows() { + return _rows; + } + + private void init() { + _rows = new HashMap>(); + 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; + } }