package se20.coursework; import java.sql.ResultSet; import java.sql.SQLException; import javax.swing.table.AbstractTableModel; /** * * @author James Szabo * @version */ public abstract class EventsModel extends AbstractTableModel { private static final int NUM_COLUMNS = 6; public int getColumnCount() { return NUM_COLUMNS; } @Override public String getColumnName(int columnIndex) { switch (columnIndex) { case 0: return "Date"; case 1: return "Time"; case 2: return "Room"; case 3: return "Artist"; case 4: return "Ticket Price"; case 5: return "Tickets Available"; default: return null; } } public Object getValueAt(int rowIndex, int columnIndex) { switch (columnIndex) { case 0: return getEvent(rowIndex).getDate(); case 1: return getEvent(rowIndex).getTime(); case 2: return getEvent(rowIndex).getRoom(); case 3: return getEvent(rowIndex).getArtist(); case 4: return getEvent(rowIndex).getTicketPrice(); case 5: return getEvent(rowIndex).getTicketsRemaining(); default: return null; } } private ResultSet data; public EventsModel() { data = null; } public EventsModel(ResultSet results) { update(results); } public void update(ResultSet results) { data = results; fireTableDataChanged(); } public int getRowCount() { if (data == null) return 0; try { data.last(); return data.getRow(); } catch (SQLException error) { return 0; } } protected Event getEvent(int rowIndex) { if (data == null) return null; try { if (!data.absolute(rowIndex+1)) return null; else { String date = data.getString(1); String time = data.getString(2); String room = data.getString(3); String artist = data.getString(4); int ticketPrice = data.getInt(5); int ticketsRemaining = data.getInt(6); return new Event(date, time, room, artist, ticketPrice, ticketsRemaining); } } catch (SQLException error) { return null; } } }