package GUI.TableModels; import java.util.Vector; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import main.error.VideothekException; import model.VideoUnit; import model.data.exceptions.RecordNotFoundException; import model.events.VideothekEvent; import model.exceptions.VideoUnitRentedException; /** * * @author Waldemar Smirnow * * @author Volha Baranouskaya */ public class RentTableModel extends DefaultTableModel { /** * Konstruktor * @param columnNames Vector mit Spaltennamen * @param rowCount #Zeilen */ public RentTableModel(Vector columnNames, int rowCount) { super(columnNames, rowCount); } /** * liefert false (alle Zellen sind nicht editierbar) * @param row * @param column * @return */ public boolean isCellEditable(int row, int column) { return false; } /** * fügt ein VideoUnit in die Tabele mit Abfragen ein * @param videoUnit VideoUnit * @throws model.exceptions.VideoUnitRentedException VideoUnit momentan ausgeliehen * @throws main.error.VideothekException VideoUnit schon in der Tabelle enthalten */ public void insertVideoUnit(VideoUnit videoUnit) throws VideoUnitRentedException, VideothekException { if (videoUnit.isRented()) throw new VideoUnitRentedException("Filmexemplar ist noch ausgeliehen!"); Vector<Vector> data = this.getDataVector(); for (Vector tmpVideoUnit : data) { if ((Integer)tmpVideoUnit.get(0) == videoUnit.getID()) { throw new VideothekException("Filmexemplar schon in der Liste enthalten!"); } } insertRow(videoUnit); } /** * fügt ein VideoUnit in die Tabelle ein * @param videoUnit VideoUnit */ public void insertRow(VideoUnit videoUnit) { try { Vector newRow = new Vector(3); newRow.add(videoUnit.getID()); newRow.add(videoUnit.getVideo().getTitle()); newRow.add(videoUnit.getVideo().getPriceCategory()); super.addRow(newRow); fireTableDataChanged(); } catch (RecordNotFoundException e) { JOptionPane.showMessageDialog(null, "Fehler: " + e.getMessage(), "Fehler", JOptionPane.ERROR_MESSAGE); } } /** * entfernt alle Elemente */ public void removeAll() { getDataVector().removeAllElements(); fireTableDataChanged(); } }