rio, lca, refactoring
[jalview.git] / forester / java / src / org / forester / datastructures / IntMatrix.java
1
2 package org.forester.datastructures;
3
4 import java.util.List;
5
6 import org.forester.util.ForesterUtil;
7
8 public final class IntMatrix {
9
10     private final int    _data[][];
11     private final String _labels[];
12
13     public IntMatrix( final int size ) {
14         _data = new int[ size ][ size ];
15         _labels = new String[ size ];
16     }
17
18     public IntMatrix( final List<String> labels ) {
19         final int size = labels.size();
20         _data = new int[ size ][ size ];
21         _labels = new String[ size ];
22         for( int i = 0; i < size; ++i ) {
23             setLabel( i, labels.get( i ) );
24         }
25     }
26
27     final public int get( final int x, final int y ) {
28         return _data[ x ][ y ];
29     }
30
31     final public void set( final int x, final int y, final int value ) {
32         _data[ x ][ y ] = value;
33     }
34
35     final public String getLabel( final int x ) {
36         return _labels[ x ];
37     }
38
39     final public void setLabel( final int x, final String label ) {
40         if ( label == null ) {
41             throw new IllegalArgumentException( "matrix label must not be null" );
42         }
43         _labels[ x ] = label;
44     }
45
46     final public int size() {
47         return _labels.length;
48     }
49
50     @Override
51     public String toString() {
52         final StringBuilder sb = new StringBuilder();
53         for( int x = 0; x < size(); ++x ) {
54             if ( getLabel( x ) != null ) {
55                 sb.append( getLabel( x ) );
56                 sb.append( "\t" );
57             }
58             for( int y = 0; y < size(); ++y ) {
59                 sb.append( get( x, y ) );
60                 sb.append( "\t" );
61             }
62             sb.append( ForesterUtil.LINE_SEPARATOR );
63         }
64         return sb.toString();
65     }
66 }