Coverage Report - com.buckosoft.fibs.BuckoFIBS.gui.playerList.PlayerTableModel
 
Classes in this File Line Coverage Branch Coverage Complexity
PlayerTableModel
0%
0/76
0%
0/44
4.286
 
 1  
 /******************************************************************************
 2  
  * PlayerTableModel.java - The data model behind the list of Players
 3  
  * $Id$
 4  
  * 
 5  
  * BuckoFIBS - Backgammon by BuckoSoft
 6  
  * Copyright© 2009,2010 - Dick Balaska - BuckoSoft, Corp.
 7  
  * 
 8  
  * $Log$
 9  
  * Revision 1.5  2011/05/31 19:41:06  dick
 10  
  * Eliminate a to do marker.
 11  
  *
 12  
  * Revision 1.4  2010/12/24 02:59:32  dick
 13  
  * WinLoss becomes a light object instead of a String.
 14  
  *
 15  
  * Revision 1.3  2010/03/03 13:12:21  inim
 16  
  * Replaced (c) sign in comment mangled by CVS default encoding back to UTF-8
 17  
  *
 18  
  * Revision 1.2  2010/03/03 12:19:49  inim
 19  
  * Moved source to UTF8 encoding from CP1252 encoding. To this end all source files' (c) message was updated to "Copyright© 2009,2010 - Dick Balaska - BuckoSoft, Corp.". This replaces the (c) sign to UTF8, and adds the new year 2010.
 20  
  *
 21  
  * Revision 1.1  2010/02/04 05:57:53  inim
 22  
  * Mavenized project folder layout
 23  
  *
 24  
  * Revision 1.11  2010/01/23 07:48:49  dick
 25  
  * Turn off youInvited when a player's state changed.
 26  
  *
 27  
  * Revision 1.10  2010/01/23 06:26:42  dick
 28  
  * handle playerInvited().
 29  
  *
 30  
  * Revision 1.9  2009/03/12 15:46:20  dick
 31  
  * Add the client type.
 32  
  *
 33  
  * Revision 1.8  2009/03/04 19:02:34  dick
 34  
  * Add the win/loss column.
 35  
  *
 36  
  * Revision 1.7  2009/03/01 09:11:56  dick
 37  
  * ROP filtering is functional.
 38  
  *
 39  
  * Revision 1.6  2009/02/24 08:04:53  dick
 40  
  * Add the hostName as a column.  Javadoc.
 41  
  *
 42  
  * Revision 1.5  2009/02/14 15:46:36  dick
 43  
  * BuckoFIBS is released under the GNU license.
 44  
  *
 45  
  * Revision 1.4  2009/02/05 05:58:18  dick
 46  
  * Get rid of the toodoo markers.
 47  
  *
 48  
  * Revision 1.3  2009/02/01 21:29:23  dick
 49  
  * Column 0 is now a Player, not a name.
 50  
  *
 51  
  * Revision 1.2  2009/01/28 22:32:13  dick
 52  
  * Javadoc.
 53  
  *
 54  
  * Revision 1.1  2009/01/28 19:39:44  dick
 55  
  * package com.buckosoft.fibs.gui.playerList becomes com.buckosoft.fibs.BuckoFIBS.gui.playerList.
 56  
  *
 57  
  * Revision 1.7  2009/01/28 08:31:33  dick
 58  
  * Add removeAll to clean the list.
 59  
  *
 60  
  * Revision 1.6  2009/01/22 05:07:16  dick
 61  
  * Rating and exp are class Double and Integer.
 62  
  *
 63  
  * Revision 1.5  2009/01/22 04:42:58  dick
 64  
  * Move the "playing" test up top, it is the highest priority in the test.
 65  
  * Add getColumnWidth().
 66  
  *
 67  
  * Revision 1.4  2009/01/09 07:19:39  dick
 68  
  * Turn off debug.
 69  
  *
 70  
  * Revision 1.3  2008/12/11 10:01:40  dick
 71  
  * Display the correct status.
 72  
  *
 73  
  * Revision 1.2  2008/12/09 19:41:34  dick
 74  
  * getPlayer(String) searches the list for this player.
 75  
  *
 76  
  * Revision 1.1  2008/04/02 23:22:53  dick
 77  
  * Move playerList to it's own package.
 78  
  *
 79  
  * Revision 1.3  2008/04/01 04:22:15  dick
 80  
  * Handle player logging out.
 81  
  * Fire event when player changes.
 82  
  *
 83  
  * Revision 1.2  2008/03/31 07:11:39  dick
 84  
  * Start fleshing out the table.
 85  
  *
 86  
  * Revision 1.1  2008/03/29 08:57:43  dick
 87  
  * BuckoFIBS skeleton checkin.
 88  
  */
 89  
 
 90  
 /* 
 91  
  * This program is free software: you can redistribute it and/or modify
 92  
  * it under the terms of the GNU General Public License as published by
 93  
  * the Free Software Foundation, either version 3 of the License, or
 94  
  * (at your option) any later version.
 95  
  *
 96  
  * This program is distributed in the hope that it will be useful,
 97  
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 98  
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 99  
  * GNU General Public License for more details.
 100  
  *
 101  
  * You should have received a copy of the GNU General Public License
 102  
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 103  
  *
 104  
  * The Original Code is BuckoFIBS, <http://www.buckosoft.com/BuckoFIBS/>.
 105  
  * The Initial Developer of the Original Code is Dick Balaska and BuckoSoft, Corp.
 106  
  * 
 107  
  */
 108  
 package com.buckosoft.fibs.BuckoFIBS.gui.playerList;
 109  
 
 110  
 import java.util.LinkedList;
 111  
 import java.util.ListIterator;
 112  
 
 113  
 import javax.swing.table.AbstractTableModel;
 114  
 
 115  
 import com.buckosoft.fibs.domain.Player;
 116  
 
 117  
 /** The data model behind the list of Players
 118  
  * @author Dick Balaska
 119  
  * @since 2008/03/29
 120  
  * @version $Revision$ <br> $Date$
 121  
  * @see <a href="http://cvs.buckosoft.com/Projects/BuckoFIBS/BuckoFIBS/src/com/buckosoft/fibs/BuckoFIBS/gui/playerList/PlayerTableModel.java">cvs PlayerTableModel.java</a>
 122  
  */
 123  0
 public class PlayerTableModel extends AbstractTableModel {
 124  
         private        final static boolean DEBUG = false;
 125  
         private static final long serialVersionUID = 1L;
 126  
 
 127  0
         private        PlayerColumns        _playerColumns = new PlayerColumns();
 128  0
         private        LinkedList<Player>        players = new LinkedList<Player>();
 129  
         
 130  
 
 131  
         /** Update or add this player to the table.
 132  
          * @param player The player who's state has changed.
 133  
          */
 134  
         public void playerChanged(Player player) {
 135  0
                 ListIterator<Player> liter = players.listIterator();
 136  
 //                int row = -1;
 137  0
                 while (liter.hasNext()) {
 138  
 //                        row++;
 139  0
                         Player p = liter.next();
 140  0
                         if (p.getName().equals(player.getName())) {
 141  0
                                 liter.set(player);
 142  
                                 //this.fireTableRowsUpdated(row, row);
 143  
                                 if (DEBUG)
 144  
                                         System.out.println("playerChanged: " + player.getName() + " - " + player.isReady());
 145  0
                                 return;
 146  
                         }
 147  0
                 }
 148  0
                 players.add(player);
 149  
                 if (DEBUG)
 150  
                         System.out.println("playerChanged: " + player.getName());
 151  
 //                if (players.size()>1)
 152  
 //                        this.fireTableRowsInserted(players.size()-1, players.size()-1);
 153  0
         }
 154  
 
 155  
         /** Remove this player from the table.
 156  
          * @param playerName The name of the player who left.
 157  
          */
 158  
         public void playerGone(String playerName) {
 159  0
                 ListIterator<Player> liter = players.listIterator();
 160  
 //                int row = -1;
 161  0
                 while (liter.hasNext()) {
 162  
 //                        row++;
 163  0
                         Player p = liter.next();
 164  0
                         if (p.getName().equals(playerName)) {
 165  0
                                 liter.remove();
 166  
                                 //this.fireTableRowsDeleted(row, row);
 167  
                         }
 168  0
                 }
 169  0
         }
 170  
         /** You invited this player to play a match.
 171  
          * You only get one open invitation, so remove old values.
 172  
          * @param playerName The name of the player invited.
 173  
          */ 
 174  
         public void playerInvited(String playerName) {
 175  0
                 for (Player p : players) {
 176  0
                         if (p.getName().equals(playerName))
 177  0
                                 p.setInvited(true);
 178  
                         else
 179  0
                                 p.setInvited(false);
 180  0
                 }
 181  0
         }
 182  
 
 183  
         /** Clear the invited flag from any players.
 184  
          * @return if anyone had the flag (triggers redraw).
 185  
          */
 186  
         public boolean playerUninvited() {
 187  0
                 boolean ret = false;
 188  0
                 for (Player p : players) {
 189  0
                         if (p.isInvited())
 190  0
                                 ret = true;
 191  0
                         p.setInvited(false);
 192  0
                 }
 193  0
                 return(ret);
 194  
         }
 195  
 
 196  
         /** Remove all of the Players in the list.
 197  
          */
 198  
         public void removeAll() {
 199  0
                 players.clear();
 200  0
                 this.fireTableDataChanged();                
 201  0
         }
 202  
 
 203  
         /** Return the Player in the table that matches this name.
 204  
          * @param playerName The name to query
 205  
          * @return The Player found or null if no match
 206  
          */
 207  
         public Player getPlayer(String playerName) {
 208  0
                 for (Player p : players) {
 209  0
                         if (p.getName().equals(playerName))
 210  0
                                 return(p);
 211  0
                 }
 212  0
                 return(null);
 213  
         }
 214  
 
 215  
         /* (non-Javadoc)
 216  
          * @see javax.swing.table.TableModel#getColumnClass(int)
 217  
          */
 218  
         public Class<?> getColumnClass(int arg0) {
 219  
                 try {
 220  0
                         if (arg0 == 0)
 221  0
                                 return(Class.forName("com.buckosoft.fibs.domain.Player"));
 222  0
                         if (arg0 == 2)
 223  0
                                 return Class.forName("java.lang.Double");
 224  0
                         if (arg0 == 3)
 225  0
                                 return Class.forName("java.lang.Integer");
 226  0
                         if (arg0 == 4)
 227  0
                                 return(Class.forName("com.buckosoft.fibs.domain.WinLoss"));                                
 228  0
                         return Class.forName("java.lang.String");
 229  0
                 } catch (ClassNotFoundException e) {
 230  0
                         e.printStackTrace();
 231  
                 }
 232  0
                 return(null);
 233  
         }
 234  
 
 235  
         /* (non-Javadoc)
 236  
          * @see javax.swing.table.TableModel#getColumnCount()
 237  
          */
 238  
         public int getColumnCount() {
 239  0
                 return _playerColumns.getColumns().size();
 240  
         }
 241  
 
 242  
         /* (non-Javadoc)
 243  
          * @see javax.swing.table.TableModel#getColumnName(int)
 244  
          */
 245  
         public String getColumnName(int arg0) {
 246  0
                 return _playerColumns.getColumns().get(arg0).getName();
 247  
         }
 248  
 
 249  
         public int getColumnWidth(int arg0) {
 250  0
                 return _playerColumns.getColumns().get(arg0).getWidth();
 251  
         }
 252  
 
 253  
         /* (non-Javadoc)
 254  
          * @see javax.swing.table.TableModel#getRowCount()
 255  
          */
 256  
         public int getRowCount() {
 257  0
                 return this.players.size();
 258  
         }
 259  
 
 260  
         /* (non-Javadoc)
 261  
          * @see javax.swing.table.TableModel#getValueAt(int, int)
 262  
          */
 263  
         public Object getValueAt(int row, int col) {
 264  0
                 if (row >= players.size())
 265  0
                         return(null);
 266  0
                 Player p = players.get(row);
 267  0
                 switch (col) {
 268  
                 case 0:
 269  0
                         return(p);
 270  
                 case 1:
 271  0
                         if (!p.getOpponent().isEmpty())
 272  0
                                 return("Playing");
 273  0
                         if (p.isReady())
 274  0
                                 return("Ready");
 275  0
                         if (p.isAway())
 276  0
                                 return("Away");
 277  0
                         return("Online");
 278  
                 case 2:
 279  0
                         return(p.getRating());
 280  
                 case 3:
 281  0
                         return(p.getExperience());
 282  
                 case 4:
 283  0
                         return(p.getWinLoss());
 284  
                 case 5:
 285  0
                         return(p.getClient());
 286  
                 case 6:
 287  0
                         return(p.getHostName());
 288  
                 }
 289  0
                 return null;
 290  
         }
 291  
 
 292  
         /** All cells are non-editable.
 293  
          * @return false
 294  
          * @see javax.swing.table.TableModel#isCellEditable(int, int)
 295  
          */
 296  
         public boolean isCellEditable(int arg0, int arg1) {
 297  0
                 return false;
 298  
         }
 299  
 
 300  
         /* (non-Javadoc)
 301  
          * @see javax.swing.table.TableModel#setValueAt(java.lang.Object, int, int)
 302  
          */
 303  
         public void setValueAt(Object arg0, int arg1, int arg2) {
 304  0
         }
 305  
 
 306  
 }