package magic.ui.screen.stats; import magic.data.stats.GameStatsInfo; import java.util.List; import javax.swing.table.AbstractTableModel; import magic.data.stats.MagicStats; @SuppressWarnings("serial") class GameStatsTableModel extends AbstractTableModel { private static final int PAGE_SIZE = 17; private final List<GameStatsInfo> games; private final int totalGames; private final int totalPages; private int currentPage = 1; GameStatsTableModel(int page) { this.totalGames = MagicStats.getTotalGamesPlayed(); this.totalPages = ((totalGames - 1) / PAGE_SIZE) + 1; this.currentPage = page; this.games = MagicStats.getGameStats(PAGE_SIZE, getGamesToSkip()); } GameStatsTableModel() { this(1); } private int getGamesToSkip() { return currentPage == 1 ? 0 : (currentPage - 1) * PAGE_SIZE; } @Override public int getRowCount() { return games.size(); } @Override public int getColumnCount() { return GameStatsInfo.fieldsCount(); } @Override public String getColumnName(int columnIndex) { return GameStatsInfo.getFieldName(columnIndex); } @Override public Class<?> getColumnClass(int columnIndex) { return String.class; } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return false; } @Override public Object getValueAt(int row, int col) { return GameStatsInfo.getValueAt(games.get(row), col); } int getPages() { return totalPages; } boolean hasNextPage() { return currentPage < totalPages; } int getNextPageNum() { return currentPage + 1; } boolean hasPrevPage() { return currentPage > 1; } int getPrevPageNum() { return currentPage - 1; } int getPageNum() { return currentPage; } int getTotalPages() { return totalPages; } int getTotalGames() { return totalGames; } }