diff --git a/src/de/katho/kBorrow/db/DbConnector.java b/src/de/katho/kBorrow/db/DbConnector.java index 6638427..4303033 100644 --- a/src/de/katho/kBorrow/db/DbConnector.java +++ b/src/de/katho/kBorrow/db/DbConnector.java @@ -6,7 +6,8 @@ import de.katho.kBorrow.data.KUser; public interface DbConnector { - public boolean createUser(String pName, String pSurname); + public int createUser(String pName, String pSurname); public ArrayList getUserList(); + public boolean deleteUser(int id); } diff --git a/src/de/katho/kBorrow/db/SqlConnector.java b/src/de/katho/kBorrow/db/SqlConnector.java index aeddd38..dbf9e3a 100644 --- a/src/de/katho/kBorrow/db/SqlConnector.java +++ b/src/de/katho/kBorrow/db/SqlConnector.java @@ -7,9 +7,14 @@ import de.katho.kBorrow.data.KUser; public class SqlConnector implements DbConnector{ @Override - public boolean createUser(String pName, String pSurname) { + /** + * @return 0: Benutzer erfolgreich erzeugt + * 1: SQL-Fehler + * 2: Benutzername darf nicht leer sein. + */ + public int createUser(String pName, String pSurname) { // TODO Auto-generated method stub - return false; + return 0; } @Override @@ -17,5 +22,11 @@ public class SqlConnector implements DbConnector{ // TODO Auto-generated method stub return null; } + + @Override + public boolean deleteUser(int id) { + // TODO Auto-generated method stub + return false; + } } diff --git a/src/de/katho/kBorrow/db/SqliteConnector.java b/src/de/katho/kBorrow/db/SqliteConnector.java index d6d5302..2732235 100644 --- a/src/de/katho/kBorrow/db/SqliteConnector.java +++ b/src/de/katho/kBorrow/db/SqliteConnector.java @@ -181,17 +181,39 @@ public class SqliteConnector implements DbConnector { return text.toString(); } - - public boolean createUser(String pName, String pSurname){ + /** + * + * @return 0: Benutzer erfolgreich erzeugt + * 1: SQL-Fehler beim Erzeugen + * 2: Benutzername ist leer + */ + public int createUser(String pName, String pSurname){ + if (pName.isEmpty() && pSurname.isEmpty()) return 2; try { Statement st = this.connection.createStatement(); String query = "INSERT INTO user (name, surname) VALUES ('"+pName+"', '"+pSurname+"')"; st.executeUpdate(query); - return true; + return 0; } catch (SQLException e) { + e.printStackTrace(); + return 1; + } + } + + public boolean deleteUser(int id){ + // @TODO: Ausleihen auf einen anderen User umschreiben! + try { + Statement st = this.connection.createStatement(); + String query = "DELETE FROM user WHERE id = '"+id+"'"; + + st.executeUpdate(query); + + return true; + } + catch (SQLException e){ e.printStackTrace(); return false; } diff --git a/src/de/katho/kBorrow/gui/MainWindow.java b/src/de/katho/kBorrow/gui/MainWindow.java index d4a3568..bd9fae6 100644 --- a/src/de/katho/kBorrow/gui/MainWindow.java +++ b/src/de/katho/kBorrow/gui/MainWindow.java @@ -1,5 +1,6 @@ package de.katho.kBorrow.gui; +import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JTabbedPane; import javax.swing.UIManager; @@ -11,21 +12,12 @@ import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.border.TitledBorder; -import javax.swing.table.AbstractTableModel; -import javax.swing.table.TableModel; import javax.swing.JLabel; import javax.swing.JButton; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; - - - - - - -import de.katho.kBorrow.Main; import de.katho.kBorrow.db.DbConnector; import javax.swing.JTable; @@ -111,8 +103,13 @@ public class MainWindow implements ActionListener { userTable = new JTable(new UserTableModel(this.dbCon)); userTable.setFillsViewportHeight(true); userTableModel = (UserTableModel)userTable.getModel(); - //userTableModel. + TableButton userDeleteButton = new TableButton("Löschen", this.userTable, new UserDeleteListener(userTable)); + userTable.getColumn("Löschen").setCellEditor(userDeleteButton); + userTable.getColumn("Löschen").setCellRenderer(userDeleteButton); + TableButton userEditButton = new TableButton("Bearbeiten", this.userTable, new UserEditListener()); + userTable.getColumn("Bearbeiten").setCellEditor(userEditButton); + userTable.getColumn("Bearbeiten").setCellRenderer(userEditButton); scrollUserList = new JScrollPane(userTable); panelUserList.add(scrollUserList); @@ -161,14 +158,24 @@ public class MainWindow implements ActionListener { public void actionPerformed(ActionEvent e) { if(e.getSource() == this.btnUserSave){ if(this.userModeSave){ - if(this.dbCon.createUser(this.textFieldUserName.getText(), this.textFieldUserSurname.getText())){ + int re = this.userTableModel.createUser(this.textFieldUserName.getText(), this.textFieldUserSurname.getText()); + + switch (re){ + case 0: this.lblUserStatus.setText("Benutzer \""+this.textFieldUserName.getText()+" "+this.textFieldUserSurname.getText()+"\" erfolgreich hinzugefügt."); this.textFieldUserName.setText(""); this.textFieldUserSurname.setText(""); - this.userTableModel.updateTable(); - } - else { - this.lblUserStatus.setText("Benutzer konnte nicht erstellt werden."); + break; + + case 1: + this.lblUserStatus.setText("SQL-Fehler. Benutzer konnte nicht erstellt werden."); + this.textFieldUserName.setText(""); + this.textFieldUserSurname.setText(""); + break; + + case 2: + this.lblUserStatus.setText("Entweder Vor- oder Nachname müssen ausgefüllt sein."); + break; } } else { diff --git a/src/de/katho/kBorrow/gui/TableButton.java b/src/de/katho/kBorrow/gui/TableButton.java new file mode 100644 index 0000000..b27c02d --- /dev/null +++ b/src/de/katho/kBorrow/gui/TableButton.java @@ -0,0 +1,95 @@ +package de.katho.kBorrow.gui; + +import java.awt.Component; +import java.awt.event.ActionListener; +import java.util.EventObject; + +import javax.swing.AbstractCellEditor; +import javax.swing.JButton; +import javax.swing.JTable; +import javax.swing.UIManager; +import javax.swing.event.CellEditorListener; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; + +public class TableButton extends AbstractCellEditor implements TableCellRenderer, TableCellEditor { + private int selectedRow; + private int selectedColumn; + private JButton button; + private JTable parentTable; + private UserTableModel tModel; + /** + * + */ + private static final long serialVersionUID = 2605797435586840499L; + + public TableButton(String pLabel, JTable pTable, ActionListener listener){ + this.button = new JButton(pLabel); + this.parentTable = pTable; + this.tModel = (UserTableModel)this.parentTable.getModel(); + this.button.addActionListener(listener); + } + + @Override + public void addCellEditorListener(CellEditorListener arg0) { + } + + @Override + public void cancelCellEditing() { + } + + @Override + public Object getCellEditorValue() { + return ""; + } + + @Override + public boolean isCellEditable(EventObject arg0) { + return true; + } + + @Override + public void removeCellEditorListener(CellEditorListener arg0) { + + } + + @Override + public boolean shouldSelectCell(EventObject anEvent) { + return true; + } + + @Override + public boolean stopCellEditing() { + return true; + } + + @Override + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + selectedRow = row; + selectedColumn = column; + + if(isSelected){ + this.button.setForeground(table.getSelectionForeground()); + this.button.setBackground(table.getSelectionBackground()); + } + else { + this.button.setForeground(table.getForeground()); + this.button.setBackground(table.getBackground()); + } + + return this.button; + } + + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) { + if (isSelected){ + this.button.setForeground(table.getSelectionForeground()); + this.button.setBackground(table.getSelectionBackground()); + } else { + this.button.setForeground(table.getForeground()); + this.button.setBackground(UIManager.getColor("Button.background")); + } + //this.button.setText((value == null) ? "" : value.toString()); + return this.button; + } +} diff --git a/src/de/katho/kBorrow/gui/UserDeleteListener.java b/src/de/katho/kBorrow/gui/UserDeleteListener.java new file mode 100644 index 0000000..1e810e7 --- /dev/null +++ b/src/de/katho/kBorrow/gui/UserDeleteListener.java @@ -0,0 +1,24 @@ +package de.katho.kBorrow.gui; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JTable; + +public class UserDeleteListener implements ActionListener { + + private JTable table; + private UserTableModel model; + + public UserDeleteListener(JTable pTable){ + this.table = pTable; + this.model = (UserTableModel)table.getModel(); + } + + public void actionPerformed(ActionEvent arg0) { + int row = table.getSelectedRow(); + + this.model.deleteUser(model.getUserId(row)); + } + +} diff --git a/src/de/katho/kBorrow/gui/UserEditListener.java b/src/de/katho/kBorrow/gui/UserEditListener.java new file mode 100644 index 0000000..c0c6663 --- /dev/null +++ b/src/de/katho/kBorrow/gui/UserEditListener.java @@ -0,0 +1,13 @@ +package de.katho.kBorrow.gui; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class UserEditListener implements ActionListener { + + @Override + public void actionPerformed(ActionEvent e) { + System.out.println("Edit"); + } + +} diff --git a/src/de/katho/kBorrow/gui/UserTableModel.java b/src/de/katho/kBorrow/gui/UserTableModel.java index 3938187..9f8c15d 100644 --- a/src/de/katho/kBorrow/gui/UserTableModel.java +++ b/src/de/katho/kBorrow/gui/UserTableModel.java @@ -14,7 +14,7 @@ public class UserTableModel extends AbstractTableModel { */ private static final long serialVersionUID = 435829735305533728L; private DbConnector dbCon; - private String[] header = {"Vorname", "Nachname", "Aktion"}; + private String[] header = {"Vorname", "Nachname", "Bearbeiten", "Löschen"}; private ArrayList data; public UserTableModel(DbConnector pDbCon){ @@ -47,4 +47,38 @@ public class UserTableModel extends AbstractTableModel { this.data = this.dbCon.getUserList(); this.fireTableDataChanged(); } + + // Die Funktion muss differenzierter werden + public boolean isCellEditable(int row, int col){ + if (col > 1) return true; + return false; + } + + public int getUserId(int row){ + return this.data.get(row).getId(); + } + + public String getUserName(int row){ + return this.data.get(row).getName(); + } + + public String getUserSurname(int row){ + return this.data.get(row).getSurname(); + } + + public boolean deleteUser(int id){ + if (dbCon.deleteUser(id)){ + updateTable(); + return true; + } + return false; + } + + public int createUser(String pName, String pSurname){ + int status = this.dbCon.createUser(pName, pSurname); + + updateTable(); + + return status; + } }