From a7acf646f9cfcb8673461eb5fb856bf66655ffca Mon Sep 17 00:00:00 2001 From: Servicepoint Date: Tue, 4 Nov 2014 18:03:48 +0100 Subject: [PATCH] =?UTF-8?q?Angefangen,=20Controller=20f=C3=BCr=20die=20ein?= =?UTF-8?q?zelnen=20GUI-Formulare=20zu=20implementieren,=20um=20Daten=20un?= =?UTF-8?q?d=20Gesch=C3=A4ftslogik=20strenger=20zu=20trennen.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 1 + src/de/katho/kBorrow/db/DbConnector.java | 1 + src/de/katho/kBorrow/db/SqlConnector.java | 6 + src/de/katho/kBorrow/db/SqliteConnector.java | 96 +++++++------ .../{PanelArticle.java => ArticlePanel.java} | 127 ++++++++++-------- src/de/katho/kBorrow/gui/MainWindow.java | 4 +- src/de/katho/kBorrow/gui/PanelNewLending.java | 93 ++++++++++++- .../gui/{PanelUser.java => UserPanel.java} | 120 +++++++++-------- .../listener/ArticleDeleteTableButton.java | 11 +- .../listener/ArticleEditTableButton.java | 8 +- .../listener/NewLendingTableButton.java | 4 +- .../listener/UserDeleteTableButton.java | 11 +- .../kBorrow/listener/UserEditTableButton.java | 8 +- ...ticleTableModel.java => ArticleModel.java} | 94 +++++-------- .../kBorrow/models/FreeArticleTableModel.java | 74 ---------- .../{UserTableModel.java => UserModel.java} | 55 +++----- 16 files changed, 368 insertions(+), 345 deletions(-) rename src/de/katho/kBorrow/gui/{PanelArticle.java => ArticlePanel.java} (66%) rename src/de/katho/kBorrow/gui/{PanelUser.java => UserPanel.java} (66%) rename src/de/katho/kBorrow/models/{ArticleTableModel.java => ArticleModel.java} (50%) delete mode 100644 src/de/katho/kBorrow/models/FreeArticleTableModel.java rename src/de/katho/kBorrow/models/{UserTableModel.java => UserModel.java} (64%) diff --git a/.classpath b/.classpath index f074f2a..a6ea1d0 100644 --- a/.classpath +++ b/.classpath @@ -4,5 +4,6 @@ + diff --git a/src/de/katho/kBorrow/db/DbConnector.java b/src/de/katho/kBorrow/db/DbConnector.java index e258800..7856ea5 100644 --- a/src/de/katho/kBorrow/db/DbConnector.java +++ b/src/de/katho/kBorrow/db/DbConnector.java @@ -15,5 +15,6 @@ public interface DbConnector { public int createArticle(String pName, String pDesc); public boolean deleteArticle(int id); public int editArticle(int pId, String pName, String pDesc); + public ArrayList getFreeArticleList(); } diff --git a/src/de/katho/kBorrow/db/SqlConnector.java b/src/de/katho/kBorrow/db/SqlConnector.java index 0c89cb5..5aab9b7 100644 --- a/src/de/katho/kBorrow/db/SqlConnector.java +++ b/src/de/katho/kBorrow/db/SqlConnector.java @@ -59,5 +59,11 @@ public class SqlConnector implements DbConnector{ // TODO Auto-generated method stub return 0; } + + @Override + public ArrayList getFreeArticleList() { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/de/katho/kBorrow/db/SqliteConnector.java b/src/de/katho/kBorrow/db/SqliteConnector.java index 8c4e53a..4f952d2 100644 --- a/src/de/katho/kBorrow/db/SqliteConnector.java +++ b/src/de/katho/kBorrow/db/SqliteConnector.java @@ -182,44 +182,6 @@ public class SqliteConnector implements DbConnector { return text.toString(); } - /** - * - * @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 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; - } - } - public ArrayList getUserList(){ ArrayList userArr = new ArrayList(); @@ -260,6 +222,48 @@ public class SqliteConnector implements DbConnector { } } + public ArrayList getFreeArticleList() { + ArrayList artArr = new ArrayList(); + + try { + Statement st = this.connection.createStatement(); + String query = "SELECT article.id, name, description FROM article LEFT OUTER JOIN lending ON article.id = lending.article_id WHERE lending.start_date IS NULL OR (lending.start_date IS NOT NULL AND lending.end_date IS NOT NULL);"; + ResultSet rs = st.executeQuery(query); + + while (rs.next()){ + artArr.add(new KArticle(rs.getInt("id"), rs.getString("name"), rs.getString("description"))); + } + + return artArr; + } + catch(SQLException ex){ + ex.printStackTrace(); + return null; + } + } + + /** + * + * @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 0; + + } catch (SQLException e) { + e.printStackTrace(); + return 1; + } + } + public int editUser(int pId, String pName, String pSurname) { if(pName.isEmpty() && pSurname.isEmpty()) return 2; try { @@ -276,6 +280,22 @@ public class SqliteConnector implements DbConnector { } } + 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; + } + } + public int createArticle(String pName, String pDesc) { if (pName.isEmpty()) return 2; try { diff --git a/src/de/katho/kBorrow/gui/PanelArticle.java b/src/de/katho/kBorrow/gui/ArticlePanel.java similarity index 66% rename from src/de/katho/kBorrow/gui/PanelArticle.java rename to src/de/katho/kBorrow/gui/ArticlePanel.java index ee65c54..70d4503 100644 --- a/src/de/katho/kBorrow/gui/PanelArticle.java +++ b/src/de/katho/kBorrow/gui/ArticlePanel.java @@ -22,15 +22,17 @@ import javax.swing.JTextField; import javax.swing.UIManager; import javax.swing.border.TitledBorder; +import de.katho.kBorrow.controller.ArticleController; import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.listener.ArticleDeleteTableButton; import de.katho.kBorrow.listener.ArticleEditTableButton; -import de.katho.kBorrow.models.ArticleTableModel; +import de.katho.kBorrow.models.ArticleModel; -public class PanelArticle extends JPanel implements ActionListener, KeyListener { +public class ArticlePanel extends JPanel implements ActionListener, KeyListener { private static final long serialVersionUID = -8511924597640457608L; - private ArticleTableModel articleTableModel; + private ArticleModel articleModel; + private ArticleController articleController; private JTextArea textAreaArticleDescription; private JTextField textFieldArticleName; private JButton btnArticleSave; @@ -43,17 +45,19 @@ public class PanelArticle extends JPanel implements ActionListener, KeyListener * Create the panel. * @throws IOException */ - public PanelArticle(final DbConnector dbCon) throws IOException { + public ArticlePanel(final DbConnector dbCon) throws IOException { super(); - this.setLayout(null); + this.setLayout(null); + articleModel = new ArticleModel(dbCon); + articleController = new ArticleController(dbCon, articleModel); /* * Tabelle und drumherum */ - this.articleTableModel = new ArticleTableModel(dbCon); - JTable articleTable = new JTable(articleTableModel); + + JTable articleTable = new JTable(articleModel); articleTable.setRowHeight(30); - ArticleDeleteTableButton articleDeleteTableButton = new ArticleDeleteTableButton("Löschen", articleTable); + ArticleDeleteTableButton articleDeleteTableButton = new ArticleDeleteTableButton("Löschen", articleTable, this, articleController); ArticleEditTableButton articleEditTableButton = new ArticleEditTableButton("Bearbeiten", articleTable, this); for (int i = 3; i <= 4; i++){ @@ -64,6 +68,9 @@ public class PanelArticle extends JPanel implements ActionListener, KeyListener articleTable.getColumnModel().getColumn(i).setMaxWidth(30); articleTable.getColumnModel().getColumn(i).setPreferredWidth(30); } + articleTable.getColumnModel().getColumn(0).setMinWidth(30); + articleTable.getColumnModel().getColumn(0).setMaxWidth(30); + articleTable.getColumnModel().getColumn(0).setPreferredWidth(30); articleTable.setFillsViewportHeight(true); @@ -122,7 +129,7 @@ public class PanelArticle extends JPanel implements ActionListener, KeyListener * PanelArticleEdit */ JPanel panelArticleEdit = new JPanel(); - panelArticleEdit.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Artikel hinzuf\u00FCgen / bearbeiten", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0))); + panelArticleEdit.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Artikel hinzufügen / bearbeiten", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0))); panelArticleEdit.setBounds(0, 273, 589, 170); panelArticleEdit.setLayout(null); panelArticleEdit.add(lblName); @@ -145,47 +152,23 @@ public class PanelArticle extends JPanel implements ActionListener, KeyListener * Aktionen für den Button "Artikel speichern" */ if(e.getSource() == this.btnArticleSave){ - if(this.articleModeEdit){ - int re = this.articleTableModel.editArticle(this.articleEditId, this.textFieldArticleName.getText(), this.textAreaArticleDescription.getText()); - - switch(re){ - case 0: - this.lblArticleStatus.setText("Artikel-ID \""+this.articleEditId+"\" erfolgreich bearbeitet."); - this.textFieldArticleName.setText(""); - this.textAreaArticleDescription.setText(""); - break; - - case 1: - this.lblArticleStatus.setText("SQL-Fehler. Artikel konnte nicht bearbeitet werden."); - this.textFieldArticleName.setText(""); - this.textAreaArticleDescription.setText(""); - break; - - case 2: - this.lblArticleStatus.setText("Artikelname muss ausgefüllt sein."); - break; - - } - - this.articleModeEdit = false; - this.articleEditId = -1; - } - - else { - saveButtonPressed(); - } + saveButtonPressed(); } /** * Aktionen für den Button "Artikel abbrechen" */ if(e.getSource() == this.btnArticleCancel){ - this.articleModeEdit = false; - this.textFieldArticleName.setText(""); - this.textAreaArticleDescription.setText(""); + this.resetModeEditArticle(); } } + public void resetModeEditArticle() { + this.articleModeEdit = false; + this.textFieldArticleName.setText(""); + this.textAreaArticleDescription.setText(""); + } + public void setModeEditArticle(int articleId, String articleName, String articleDescription) { this.articleModeEdit = true; this.articleEditId = articleId; @@ -194,25 +177,53 @@ public class PanelArticle extends JPanel implements ActionListener, KeyListener } private void saveButtonPressed(){ - int re = this.articleTableModel.createArticle(this.textFieldArticleName.getText(), this.textAreaArticleDescription.getText()); - - switch(re){ - case 0: - this.lblArticleStatus.setText("Artikel \""+this.textFieldArticleName.getText()+"\" erfolgreich hinzugefügt."); - this.textFieldArticleName.setText(""); - this.textAreaArticleDescription.setText(""); - break; + if(this.articleModeEdit){ + int re = articleController.editArticle(this.articleEditId, this.textFieldArticleName.getText(), this.textAreaArticleDescription.getText()); - case 1: - this.lblArticleStatus.setText("SQL-Fehler. Artikel konnte nicht erstellt werden."); - this.textFieldArticleName.setText(""); - this.textAreaArticleDescription.setText(""); - break; - - case 2: - this.lblArticleStatus.setText("Es muss ein Artikelname vergeben werden"); - break; + switch(re){ + case 0: + this.lblArticleStatus.setText("Artikel-ID \""+this.articleEditId+"\" erfolgreich bearbeitet."); + this.textFieldArticleName.setText(""); + this.textAreaArticleDescription.setText(""); + break; + + case 1: + this.lblArticleStatus.setText("SQL-Fehler. Artikel konnte nicht bearbeitet werden."); + this.textFieldArticleName.setText(""); + this.textAreaArticleDescription.setText(""); + break; + + case 2: + this.lblArticleStatus.setText("Artikelname muss ausgefüllt sein."); + break; + + } + + this.articleModeEdit = false; + this.articleEditId = -1; } + + else { + int re = articleController.createArticle(this.textFieldArticleName.getText(), this.textAreaArticleDescription.getText()); + + switch(re){ + case 0: + this.lblArticleStatus.setText("Artikel \""+this.textFieldArticleName.getText()+"\" erfolgreich hinzugefügt."); + this.textFieldArticleName.setText(""); + this.textAreaArticleDescription.setText(""); + break; + + case 1: + this.lblArticleStatus.setText("SQL-Fehler. Artikel konnte nicht erstellt werden."); + this.textFieldArticleName.setText(""); + this.textAreaArticleDescription.setText(""); + break; + + case 2: + this.lblArticleStatus.setText("Es muss ein Artikelname vergeben werden"); + break; + } + } } @Override diff --git a/src/de/katho/kBorrow/gui/MainWindow.java b/src/de/katho/kBorrow/gui/MainWindow.java index 5a0577e..462c5fe 100644 --- a/src/de/katho/kBorrow/gui/MainWindow.java +++ b/src/de/katho/kBorrow/gui/MainWindow.java @@ -55,8 +55,8 @@ public class MainWindow { this.frame.getContentPane().add(this.tabbedPane, BorderLayout.CENTER); this.tabbedPane.addTab("Neue Ausleihe", new PanelNewLending(this.dbCon)); this.tabbedPane.addTab("Ausleihen verwalten", new PanelManageLendings(this.dbCon)); - this.tabbedPane.addTab("Artikel verwalten", new PanelArticle(this.dbCon)); - this.tabbedPane.addTab("Benutzer verwalten", new PanelUser(this.dbCon)); + this.tabbedPane.addTab("Artikel verwalten", new ArticlePanel(this.dbCon)); + this.tabbedPane.addTab("Benutzer verwalten", new UserPanel(this.dbCon)); } catch(ClassNotFoundException | InstantiationException | IllegalAccessException | IOException | UnsupportedLookAndFeelException | SQLException e) { diff --git a/src/de/katho/kBorrow/gui/PanelNewLending.java b/src/de/katho/kBorrow/gui/PanelNewLending.java index a2a00ff..9856371 100644 --- a/src/de/katho/kBorrow/gui/PanelNewLending.java +++ b/src/de/katho/kBorrow/gui/PanelNewLending.java @@ -4,7 +4,7 @@ import javax.swing.JPanel; import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.listener.NewLendingTableButton; -import de.katho.kBorrow.models.FreeArticleTableModel; +import de.katho.kBorrow.models.FreeArticleModel; import javax.swing.border.TitledBorder; import javax.swing.JScrollPane; @@ -13,13 +13,25 @@ import javax.swing.JTable; import java.awt.BorderLayout; import java.io.IOException; +import javax.swing.JLabel; +import javax.swing.JComboBox; +import javax.swing.JSeparator; +import javax.swing.JButton; +import javax.swing.JTextField; +import javax.swing.UIManager; + +import java.awt.Color; + public class PanelNewLending extends JPanel { /** * */ private static final long serialVersionUID = -7346953418572781322L; - private FreeArticleTableModel freeArticleTableModel; + private FreeArticleModel freeArticleModel; + private JTextField tfName; + private JTextField tfSurname; + private JTextField tfStudentNumber; /** * Create the panel. @@ -30,8 +42,8 @@ public class PanelNewLending extends JPanel { this.setLayout(null); // FreeArticleTable - this.freeArticleTableModel = new FreeArticleTableModel(dbCon); - JTable freeArticleTable = new JTable(freeArticleTableModel); + this.freeArticleModel = new FreeArticleModel(dbCon); + JTable freeArticleTable = new JTable(freeArticleModel); freeArticleTable.setRowHeight(30); NewLendingTableButton newLendingTableButton = new NewLendingTableButton("Artikel ausleihen", freeArticleTable, this); @@ -40,6 +52,9 @@ public class PanelNewLending extends JPanel { freeArticleTable.getColumnModel().getColumn(3).setMinWidth(30); freeArticleTable.getColumnModel().getColumn(3).setMaxWidth(30); freeArticleTable.getColumnModel().getColumn(3).setPreferredWidth(30); + freeArticleTable.getColumnModel().getColumn(0).setMinWidth(30); + freeArticleTable.getColumnModel().getColumn(0).setMaxWidth(30); + freeArticleTable.getColumnModel().getColumn(0).setPreferredWidth(30); freeArticleTable.setFillsViewportHeight(true); @@ -47,7 +62,7 @@ public class PanelNewLending extends JPanel { // Panel: FreeArticleList JPanel panelFreeArticleList = new JPanel(); - panelFreeArticleList.setBorder(new TitledBorder(null, "Vorhandene Artikel", TitledBorder.LEADING, TitledBorder.TOP, null, null)); + panelFreeArticleList.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Verf\u00FCgbare Artikel", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0))); panelFreeArticleList.setBounds(0, 0, 589, 253); panelFreeArticleList.setLayout(new BorderLayout(0, 0)); panelFreeArticleList.add(new JScrollPane(freeArticleTable)); @@ -60,6 +75,74 @@ public class PanelNewLending extends JPanel { this.add(panelFreeArticleList); this.add(panelNewLending); + panelNewLending.setLayout(null); + + JLabel lblArtikelname = new JLabel("Artikelname:"); + lblArtikelname.setBounds(10, 20, 90, 20); + panelNewLending.add(lblArtikelname); + + JLabel lblArticleName = new JLabel(""); + lblArticleName.setBounds(110, 20, 100, 20); + panelNewLending.add(lblArticleName); + + JLabel lblAusgeliehenAm = new JLabel("Ausgeliehen am:"); + lblAusgeliehenAm.setBounds(10, 40, 90, 20); + panelNewLending.add(lblAusgeliehenAm); + + JLabel lblStartDate = new JLabel(""); + lblStartDate.setBounds(110, 40, 100, 20); + panelNewLending.add(lblStartDate); + + JLabel lblNewLabel = new JLabel("Vor. Rückgabe:"); + lblNewLabel.setBounds(10, 60, 90, 20); + panelNewLending.add(lblNewLabel); + + JLabel lblBenutzer = new JLabel("Benutzer:"); + lblBenutzer.setBounds(350, 20, 70, 20); + panelNewLending.add(lblBenutzer); + + JComboBox comboBox = new JComboBox(); + comboBox.setBounds(430, 20, 130, 20); + panelNewLending.add(comboBox); + + JSeparator separator = new JSeparator(); + separator.setBounds(10, 90, 569, 2); + panelNewLending.add(separator); + + JButton btnAbbrechen = new JButton("Abbrechen"); + btnAbbrechen.setBounds(471, 130, 89, 23); + panelNewLending.add(btnAbbrechen); + + JButton btnSpeichern = new JButton("Speichern"); + btnSpeichern.setBounds(471, 160, 89, 23); + panelNewLending.add(btnSpeichern); + + JLabel lblNewLabel_1 = new JLabel("Name:"); + lblNewLabel_1.setBounds(10, 100, 90, 20); + panelNewLending.add(lblNewLabel_1); + + JLabel lblNewLabel_2 = new JLabel("Nachname:"); + lblNewLabel_2.setBounds(10, 130, 90, 20); + panelNewLending.add(lblNewLabel_2); + + JLabel lblNewLabel_3 = new JLabel("Matrikelnummer:"); + lblNewLabel_3.setBounds(10, 160, 90, 20); + panelNewLending.add(lblNewLabel_3); + + tfName = new JTextField(); + tfName.setBounds(110, 100, 90, 20); + panelNewLending.add(tfName); + tfName.setColumns(10); + + tfSurname = new JTextField(); + tfSurname.setBounds(110, 130, 90, 20); + panelNewLending.add(tfSurname); + tfSurname.setColumns(10); + + tfStudentNumber = new JTextField(); + tfStudentNumber.setBounds(110, 160, 90, 20); + panelNewLending.add(tfStudentNumber); + tfStudentNumber.setColumns(10); } diff --git a/src/de/katho/kBorrow/gui/PanelUser.java b/src/de/katho/kBorrow/gui/UserPanel.java similarity index 66% rename from src/de/katho/kBorrow/gui/PanelUser.java rename to src/de/katho/kBorrow/gui/UserPanel.java index 0b9cc40..e417993 100644 --- a/src/de/katho/kBorrow/gui/PanelUser.java +++ b/src/de/katho/kBorrow/gui/UserPanel.java @@ -18,12 +18,13 @@ import javax.swing.JTextField; import javax.swing.UIManager; import javax.swing.border.TitledBorder; +import de.katho.kBorrow.controller.UserController; import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.listener.UserDeleteTableButton; import de.katho.kBorrow.listener.UserEditTableButton; -import de.katho.kBorrow.models.UserTableModel; +import de.katho.kBorrow.models.UserModel; -public class PanelUser extends JPanel implements ActionListener, KeyListener { +public class UserPanel extends JPanel implements ActionListener, KeyListener { private static final long serialVersionUID = -319340262589243978L; private JLabel lblUserStatus; @@ -33,17 +34,19 @@ public class PanelUser extends JPanel implements ActionListener, KeyListener { private JButton btnUserCancel; private boolean userModeEdit; private int userEditId; - private UserTableModel userTableModel; + private UserModel userModel; + private UserController userController; - public PanelUser(final DbConnector dbCon) throws IOException{ + public UserPanel(final DbConnector dbCon) throws IOException{ super(); this.setLayout(null); + this.userModel = new UserModel(dbCon); + this.userController = new UserController(dbCon, this.userModel); //Tabelle und drumherum - this.userTableModel = new UserTableModel(dbCon); - JTable userTable = new JTable(userTableModel); + JTable userTable = new JTable(userModel); userTable.setRowHeight(30); - UserDeleteTableButton userDeleteTableButton = new UserDeleteTableButton("Löschen", userTable); + UserDeleteTableButton userDeleteTableButton = new UserDeleteTableButton("Löschen", userTable, this, userController); UserEditTableButton userEditTableButton = new UserEditTableButton("Bearbeiten", userTable, this); for (int i = 3; i <= 4; i++){ @@ -54,6 +57,9 @@ public class PanelUser extends JPanel implements ActionListener, KeyListener { userTable.getColumnModel().getColumn(i).setMaxWidth(30); userTable.getColumnModel().getColumn(i).setPreferredWidth(30); } + userTable.getColumnModel().getColumn(0).setMinWidth(30); + userTable.getColumnModel().getColumn(0).setMaxWidth(30); + userTable.getColumnModel().getColumn(0).setPreferredWidth(30); userTable.setFillsViewportHeight(true); @@ -121,47 +127,24 @@ public class PanelUser extends JPanel implements ActionListener, KeyListener { @Override public void actionPerformed(ActionEvent e) { if(e.getSource() == this.btnUserSave){ - if(this.userModeEdit){ - int re = this.userTableModel.editUser(this.userEditId, this.textFieldUserName.getText(), this.textFieldUserSurname.getText()); - - switch(re){ - case 0: - this.lblUserStatus.setText("Benutzer-ID \""+this.userEditId+"\" erfolgreich bearbeitet."); - this.textFieldUserName.setText(""); - this.textFieldUserSurname.setText(""); - break; - - case 1: - this.lblUserStatus.setText("SQL-Fehler. Benutzer konnte nicht bearbeitet werden."); - this.textFieldUserName.setText(""); - this.textFieldUserSurname.setText(""); - break; - - case 2: - this.lblUserStatus.setText("Entweder Vor- oder Nachname müssen ausgefüllt sein."); - break; - - } - - this.userModeEdit = false; - this.userEditId = -1; - } - else { - saveButtonPressed(); - } + saveButtonPressed(); } /** * Aktionen für den Button "Benutzer abbrechen" */ if(e.getSource() == this.btnUserCancel){ - this.userModeEdit = false; - this.textFieldUserName.setText(""); - this.textFieldUserSurname.setText(""); + this.resetModeEditUser(); } } + public void resetModeEditUser() { + this.userModeEdit = false; + this.textFieldUserName.setText(""); + this.textFieldUserSurname.setText(""); + } + public void setModeEditUser(int pId, String pName, String pSurname){ this.userModeEdit = true; this.userEditId = pId; @@ -170,24 +153,51 @@ public class PanelUser extends JPanel implements ActionListener, KeyListener { } private void saveButtonPressed(){ - int re = this.userTableModel.createUser(this.textFieldUserName.getText(), this.textFieldUserSurname.getText()); + if(this.userModeEdit){ + int re = this.userController.editUser(this.userEditId, this.textFieldUserName.getText(), this.textFieldUserSurname.getText()); + + switch(re){ + case 0: + this.lblUserStatus.setText("Benutzer-ID \""+this.userEditId+"\" erfolgreich bearbeitet."); + this.textFieldUserName.setText(""); + this.textFieldUserSurname.setText(""); + break; + + case 1: + this.lblUserStatus.setText("SQL-Fehler. Benutzer konnte nicht bearbeitet werden."); + this.textFieldUserName.setText(""); + this.textFieldUserSurname.setText(""); + break; + + case 2: + this.lblUserStatus.setText("Entweder Vor- oder Nachname müssen ausgefüllt sein."); + break; + + } + + this.userModeEdit = false; + this.userEditId = -1; + } + else { + int re = userController.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(""); - 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; + switch (re){ + case 0: + this.lblUserStatus.setText("Benutzer \""+this.textFieldUserName.getText()+" "+this.textFieldUserSurname.getText()+"\" erfolgreich hinzugefügt."); + this.textFieldUserName.setText(""); + this.textFieldUserSurname.setText(""); + 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; + } } } diff --git a/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java b/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java index 22ee89e..54d47bf 100644 --- a/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java +++ b/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java @@ -9,7 +9,9 @@ import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JTable; -import de.katho.kBorrow.models.ArticleTableModel; +import de.katho.kBorrow.controller.ArticleController; +import de.katho.kBorrow.gui.ArticlePanel; +import de.katho.kBorrow.models.ArticleModel; public class ArticleDeleteTableButton extends TableButton { @@ -18,7 +20,7 @@ public class ArticleDeleteTableButton extends TableButton { */ private static final long serialVersionUID = 7701712368979056068L; - public ArticleDeleteTableButton(String pLabel, final JTable pTable) throws IOException { + public ArticleDeleteTableButton(String pLabel, final JTable pTable, final ArticlePanel pPanel, final ArticleController pController) throws IOException { super(pLabel); ImageIcon icon = new ImageIcon(ImageIO.read(new File("assets/icons/edit-delete.png"))); @@ -29,12 +31,13 @@ public class ArticleDeleteTableButton extends TableButton { public void actionPerformed(ActionEvent e){ fireEditingStopped(); - ArticleTableModel model = (ArticleTableModel) pTable.getModel(); + ArticleModel model = (ArticleModel) pTable.getModel(); int row = pTable.getSelectedRow(); int id = model.getArticleId(row); - model.deleteArticle(id); + pController.deleteArticle(id); + pPanel.resetModeEditArticle(); } }); } diff --git a/src/de/katho/kBorrow/listener/ArticleEditTableButton.java b/src/de/katho/kBorrow/listener/ArticleEditTableButton.java index 954fc11..0fb6433 100644 --- a/src/de/katho/kBorrow/listener/ArticleEditTableButton.java +++ b/src/de/katho/kBorrow/listener/ArticleEditTableButton.java @@ -9,8 +9,8 @@ import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JTable; -import de.katho.kBorrow.gui.PanelArticle; -import de.katho.kBorrow.models.ArticleTableModel; +import de.katho.kBorrow.gui.ArticlePanel; +import de.katho.kBorrow.models.ArticleModel; public class ArticleEditTableButton extends TableButton { @@ -19,7 +19,7 @@ public class ArticleEditTableButton extends TableButton { */ private static final long serialVersionUID = -5902626427691636902L; - public ArticleEditTableButton(String pLabel, final JTable pTable, final PanelArticle articleTab) throws IOException { + public ArticleEditTableButton(String pLabel, final JTable pTable, final ArticlePanel articleTab) throws IOException { super(pLabel); ImageIcon icon = new ImageIcon(ImageIO.read(new File("assets/icons/accessories-text-editor.png"))); @@ -30,7 +30,7 @@ public class ArticleEditTableButton extends TableButton { public void actionPerformed(ActionEvent e){ fireEditingStopped(); - ArticleTableModel model = (ArticleTableModel) pTable.getModel(); + ArticleModel model = (ArticleModel) pTable.getModel(); int row = pTable.getSelectedRow(); articleTab.setModeEditArticle(model.getArticleId(row), model.getArticleName(row), model.getArticleDescription(row)); diff --git a/src/de/katho/kBorrow/listener/NewLendingTableButton.java b/src/de/katho/kBorrow/listener/NewLendingTableButton.java index dab5736..139b81e 100644 --- a/src/de/katho/kBorrow/listener/NewLendingTableButton.java +++ b/src/de/katho/kBorrow/listener/NewLendingTableButton.java @@ -10,7 +10,7 @@ import javax.swing.ImageIcon; import javax.swing.JTable; import de.katho.kBorrow.gui.PanelNewLending; -import de.katho.kBorrow.models.FreeArticleTableModel; +import de.katho.kBorrow.models.FreeArticleModel; public class NewLendingTableButton extends TableButton { @@ -30,7 +30,7 @@ public class NewLendingTableButton extends TableButton { public void actionPerformed(ActionEvent e){ fireEditingStopped(); - FreeArticleTableModel model = (FreeArticleTableModel) pTable.getModel(); + FreeArticleModel model = (FreeArticleModel) pTable.getModel(); int row = pTable.getSelectedRow(); pPanel.setModeNewLending(model.getArticleId(row), model.getArticleName(row), model.getArticleDescription(row)); diff --git a/src/de/katho/kBorrow/listener/UserDeleteTableButton.java b/src/de/katho/kBorrow/listener/UserDeleteTableButton.java index 0b9ab67..b897a2e 100644 --- a/src/de/katho/kBorrow/listener/UserDeleteTableButton.java +++ b/src/de/katho/kBorrow/listener/UserDeleteTableButton.java @@ -9,13 +9,15 @@ import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JTable; -import de.katho.kBorrow.models.UserTableModel; +import de.katho.kBorrow.controller.UserController; +import de.katho.kBorrow.gui.UserPanel; +import de.katho.kBorrow.models.UserModel; public class UserDeleteTableButton extends TableButton { private static final long serialVersionUID = -886584066497429394L; - public UserDeleteTableButton(String pLabel, final JTable pTable) throws IOException{ + public UserDeleteTableButton(String pLabel, final JTable pTable, final UserPanel pPanel, final UserController pController ) throws IOException{ super(pLabel); ImageIcon icon = new ImageIcon(ImageIO.read(new File("assets/icons/edit-delete.png"))); @@ -26,12 +28,13 @@ public class UserDeleteTableButton extends TableButton { public void actionPerformed(ActionEvent e){ fireEditingStopped(); - UserTableModel model = (UserTableModel) pTable.getModel(); + UserModel model = (UserModel) pTable.getModel(); int row = pTable.getSelectedRow(); int id = model.getUserId(row); - model.deleteUser(id); + pController.deleteUser(id); + pPanel.resetModeEditUser(); } }); diff --git a/src/de/katho/kBorrow/listener/UserEditTableButton.java b/src/de/katho/kBorrow/listener/UserEditTableButton.java index fd2f90b..542a2c9 100644 --- a/src/de/katho/kBorrow/listener/UserEditTableButton.java +++ b/src/de/katho/kBorrow/listener/UserEditTableButton.java @@ -9,8 +9,8 @@ import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JTable; -import de.katho.kBorrow.gui.PanelUser; -import de.katho.kBorrow.models.UserTableModel; +import de.katho.kBorrow.gui.UserPanel; +import de.katho.kBorrow.models.UserModel; public class UserEditTableButton extends TableButton { @@ -19,7 +19,7 @@ public class UserEditTableButton extends TableButton { */ private static final long serialVersionUID = -886584066497429394L; - public UserEditTableButton(String pLabel, final JTable pTable, final PanelUser pPanel) throws IOException{ + public UserEditTableButton(String pLabel, final JTable pTable, final UserPanel pPanel) throws IOException{ super(pLabel); ImageIcon icon = new ImageIcon(ImageIO.read(new File("assets/icons/accessories-text-editor.png"))); @@ -30,7 +30,7 @@ public class UserEditTableButton extends TableButton { public void actionPerformed(ActionEvent e){ fireEditingStopped(); - UserTableModel model = (UserTableModel) pTable.getModel(); + UserModel model = (UserModel) pTable.getModel(); int row = pTable.getSelectedRow(); pPanel.setModeEditUser(model.getUserId(row), model.getUserName(row), model.getUserSurname(row)); diff --git a/src/de/katho/kBorrow/models/ArticleTableModel.java b/src/de/katho/kBorrow/models/ArticleModel.java similarity index 50% rename from src/de/katho/kBorrow/models/ArticleTableModel.java rename to src/de/katho/kBorrow/models/ArticleModel.java index 17bbbcb..5b15041 100644 --- a/src/de/katho/kBorrow/models/ArticleTableModel.java +++ b/src/de/katho/kBorrow/models/ArticleModel.java @@ -7,17 +7,18 @@ import javax.swing.table.AbstractTableModel; import de.katho.kBorrow.data.KArticle; import de.katho.kBorrow.db.DbConnector; -public class ArticleTableModel extends AbstractTableModel { +public class ArticleModel extends AbstractTableModel { /** * */ private static final long serialVersionUID = -1860949772989116745L; - private DbConnector dbCon; - private String[] header = {"ID", "Artikelname", "Artikelbeschreibung", "", ""}; - private ArrayList data = new ArrayList(); + protected String[] header; + protected DbConnector dbCon; + protected ArrayList data = new ArrayList(); - public ArticleTableModel(DbConnector pDbCon){ + public ArticleModel(DbConnector pDbCon){ + header = new String [] {"ID", "Artikelname", "Artikelbeschreibung", "", ""}; this.dbCon = pDbCon; this.updateTable(); } @@ -26,20 +27,19 @@ public class ArticleTableModel extends AbstractTableModel { return header[index]; } - private void updateTable() { + public void updateTable() { this.data = this.dbCon.getArticleList(); this.fireTableDataChanged(); } - @Override public int getColumnCount() { - return this.header.length; + return header.length; } public int getRowCount() { - return this.data.size(); + return data.size(); } @@ -94,75 +94,51 @@ public class ArticleTableModel extends AbstractTableModel { return this.data.get(pRow).getDescription(); } - /** - * Löscht den Artikel mit der gegebenen ID in der Datenbank und aktualisiert die Tabelle. - * - * @param id ID des Artikels, der gelöscht werden soll. - * @return true, wenn der Artikel erfolgreich gelöscht wurde. false, wenn ein Fehler aufgetreten ist. - */ - public boolean deleteArticle(int id) { - if(this.dbCon.deleteArticle(id)){ - int row = this.getRowFromId(id); - this.data.remove(row); - this.fireTableRowsDeleted(row, row); - - return true; - } - - return false; - } + /** * Gibt die entsprechende Zeile in der Tabelle für ein Objekt mit der gegebenen ID zurück. * * @param id ID, für die die Tabellenzeile herausgesucht werden soll * @return Zeile in der Tabelle. -1, wenn die ID nicht vorhanden ist. */ - private int getRowFromId(int id) { + public int getRowFromId(int id) { for (KArticle elem : this.data){ if(elem.getId() == id) return data.indexOf(elem); } return -1; } - + /** - * Erzeugt einen neuen Artikel in der Datenbank und aktualisiert die Tabelle + * Entfernt die gegebene Zeile aus der ArrayList * - * @param pName Name des Artikels - * @param pDesc Beschreibung des Artikels - * @return 0: Artikel erfolgreich erzeugt - * 1: SQL-Fehler beim Erzeugen - * 2: Feld "Name" leer + * @param pRow Zeile, die gelöscht wird. */ - public int createArticle(String pName, String pDesc) { - int status = this.dbCon.createArticle(pName, pDesc); - - updateTable(); - - return status; + public void removeRow(int pRow){ + data.remove(pRow); + fireTableRowsDeleted(pRow, pRow); } - + /** - * Ändert einen Artikel in der Datenbank und aktualisiert die Tabelle + * Gibt das Article-Objekt der übergebenen Zeile zurück. * - * @param pId Id des Artikels, der geändert werden soll - * @param pName (Neuer) Name des Artikels - * @param pDesc (Neue) Beschreibung des Artikels - * @return 0: Artikel erfolgreich geändert - * 1: SQL-Fehler beim Erzeugen - * 2: Artikelname ist leer + * @param pRow Zeile, deren Article-Objekt zurückgegeben werden soll. + * @return KArticle-Objekt */ - public int editArticle(int pId, String pName, String pDesc) { - int status = this.dbCon.editArticle(pId, pName, pDesc); - - if(status == 0){ - int row = this.getRowFromId(pId); - - this.data.get(row).setName(pName); - this.data.get(row).setDescription(pDesc); - this.fireTableRowsUpdated(row, row); + public KArticle getArticleByRow(int pRow){ + return this.data.get(pRow); + } + + /** + * Gibt das Article-Objekt mit der entsprechendne ID zurück. + * + * @param pId Id, deren Objekt zurückgegeben werden soll. + * @return KArticle-Objekt + */ + public KArticle getArticleById(int pId){ + for(KArticle elem : data){ + if(elem.getId() == pId) return elem; } - - return status; + return null; } } diff --git a/src/de/katho/kBorrow/models/FreeArticleTableModel.java b/src/de/katho/kBorrow/models/FreeArticleTableModel.java deleted file mode 100644 index 444169a..0000000 --- a/src/de/katho/kBorrow/models/FreeArticleTableModel.java +++ /dev/null @@ -1,74 +0,0 @@ -package de.katho.kBorrow.models; - -import javax.swing.table.AbstractTableModel; -import java.util.ArrayList; - -import de.katho.kBorrow.db.DbConnector; -import de.katho.kBorrow.data.KArticle; - -public class FreeArticleTableModel extends AbstractTableModel { - - /** - * - */ - private static final long serialVersionUID = -7318589937150373541L; - private DbConnector dbCon; - String[] header = {"ID", "Artikelname", "Artikelbeschreibung", ""}; - private ArrayList data = new ArrayList(); - - public FreeArticleTableModel(DbConnector pDbCon) { - this.dbCon = pDbCon; - this.updateTable(); - } - - public String getColumnName(int pIndex){ - return header[pIndex]; - } - - public int getColumnCount() { - return header.length; - } - - public int getRowCount() { - return data.size(); - } - - public Object getValueAt(int pRow, int pCol) { - switch(pCol){ - case 0: - return String.valueOf(data.get(pRow).getId()); - - case 1: - return data.get(pRow).getName(); - - case 2: - return data.get(pRow).getDescription(); - - default: - return null; - } - } - - public boolean isCellEditable(int row, int col){ - if (col > 2) return true; - return false; - } - - // TODO: Implement! - private void updateTable(){ - - } - - public int getArticleId(int pRow){ - return data.get(pRow).getId(); - } - - public String getArticleName(int pRow){ - return data.get(pRow).getName(); - } - - public String getArticleDescription(int pRow){ - return data.get(pRow).getDescription(); - } - -} diff --git a/src/de/katho/kBorrow/models/UserTableModel.java b/src/de/katho/kBorrow/models/UserModel.java similarity index 64% rename from src/de/katho/kBorrow/models/UserTableModel.java rename to src/de/katho/kBorrow/models/UserModel.java index e761803..ca66c00 100644 --- a/src/de/katho/kBorrow/models/UserTableModel.java +++ b/src/de/katho/kBorrow/models/UserModel.java @@ -7,7 +7,7 @@ import javax.swing.table.AbstractTableModel; import de.katho.kBorrow.data.KUser; import de.katho.kBorrow.db.DbConnector; -public class UserTableModel extends AbstractTableModel { +public class UserModel extends AbstractTableModel { /** * @@ -17,7 +17,7 @@ public class UserTableModel extends AbstractTableModel { private String[] header = {"ID", "Vorname", "Nachname", "", ""}; private ArrayList data = new ArrayList(); - public UserTableModel(DbConnector pDbCon){ + public UserModel(DbConnector pDbCon){ this.dbCon = pDbCon; this.updateTable(); } @@ -76,50 +76,33 @@ public class UserTableModel extends AbstractTableModel { return this.data.get(row).getSurname(); } - public boolean deleteUser(int id){ - if(dbCon.deleteUser(id)){ - int row = this.getRowFromId(id); - this.data.remove(row); - this.fireTableRowsDeleted(row, row); - - return true; - } - return false; - } - - public int createUser(String pName, String pSurname){ - int status = this.dbCon.createUser(pName, pSurname); - - updateTable(); - - return status; - } - - public int editUser(int pId, String pName, String pSurname) { - int status = this.dbCon.editUser(pId, pName, pSurname); - - if(status == 0){ - int row = this.getRowFromId(pId); - - this.data.get(row).setName(pName); - this.data.get(row).setSurname(pSurname); - this.fireTableRowsUpdated(row, row); - } - - return status; - } - /** * * @param pId * @return Returns -1 if there is no row for the given id. */ - private int getRowFromId(int pId){ + public int getRowFromId(int pId){ for(KUser elem : this.data){ if(elem.getId() == pId) return data.indexOf(elem); } return -1; } + + public KUser getUserByRow(int pRow){ + return this.data.get(pRow); + } + + public KUser getUserById(int pId){ + for(KUser elem : this.data){ + if(elem.getId() == pId) return elem; + } + return null; + } + + public void removeRow(int pRow){ + data.remove(pRow); + fireTableRowsDeleted(pRow, pRow); + } }