diff --git a/src/de/katho/kBorrow/controller/ArticleController.java b/src/de/katho/kBorrow/controller/ArticleController.java index a65fdac..1e44d14 100644 --- a/src/de/katho/kBorrow/controller/ArticleController.java +++ b/src/de/katho/kBorrow/controller/ArticleController.java @@ -60,20 +60,23 @@ public class ArticleController { * Löscht den Artikel mit der gegebenen ID in der Datenbank und aktualisiert die Tabelle. * * @param pRow Row des Artikels, der gelöscht werden soll. - * @return true, wenn der Artikel erfolgreich gelöscht wurde. false, wenn ein Fehler aufgetreten ist. + * @return 0: Artikel konnte erfolgreich gelöscht werden + * 1: Artikel konnte nicht gelöscht werden, unbekannter Fehler (SQL-Fehler) + * 2: Artikel konnte nicht gelöscht werden, weil er im Moment verliehen ist. */ - public boolean deleteArticle(int pRow) { - - int id = articleTableModel.getArticleByRow(pRow).getId(); + public int deleteArticle(int pRow) { - if(this.dbCon.deleteArticle(id)){ + if(!articleTableModel.getArticleByRow(pRow).getIsFree()) return 2; + + int id = articleTableModel.getArticleByRow(pRow).getId(); + int returnCode = dbCon.deleteArticle(id); + + if(returnCode == 0){ articleTableModel.updateModel(); freeArticleTableModel.updateModel(); - - return true; } - return false; + return returnCode; } } diff --git a/src/de/katho/kBorrow/data/KArticle.java b/src/de/katho/kBorrow/data/KArticle.java index a0adc64..a0bf8f4 100644 --- a/src/de/katho/kBorrow/data/KArticle.java +++ b/src/de/katho/kBorrow/data/KArticle.java @@ -4,11 +4,13 @@ public class KArticle { private int id; private String name; private String description; + private boolean isFree; - public KArticle(int pId, String pName, String pDesc) { + public KArticle(int pId, String pName, boolean pFree, String pDesc) { this.id = pId; this.name = pName; this.description = pDesc; + isFree = pFree; } public int getId() { @@ -23,6 +25,10 @@ public class KArticle { return this.description; } + public boolean getIsFree(){ + return isFree; + } + public void setName(String pName){ this.name = pName; } @@ -30,5 +36,9 @@ public class KArticle { public void setDescription(String pDesc){ this.description = pDesc; } + + public void setIsFree(boolean pFree){ + isFree = pFree; + } } diff --git a/src/de/katho/kBorrow/db/DbConnector.java b/src/de/katho/kBorrow/db/DbConnector.java index e71acdc..f1ada8c 100644 --- a/src/de/katho/kBorrow/db/DbConnector.java +++ b/src/de/katho/kBorrow/db/DbConnector.java @@ -15,7 +15,7 @@ public interface DbConnector { public int editUser(int pId, String pName, String pSurname); public ArrayList getArticleList(); public int createArticle(String pName, String pDesc); - public boolean deleteArticle(int id); + public int deleteArticle(int id); public int editArticle(int pId, String pName, String pDesc); public ArrayList getFreeArticleList(); public ArrayList getLenderList(); diff --git a/src/de/katho/kBorrow/db/SqlConnector.java b/src/de/katho/kBorrow/db/SqlConnector.java index 399a2b4..691fd73 100644 --- a/src/de/katho/kBorrow/db/SqlConnector.java +++ b/src/de/katho/kBorrow/db/SqlConnector.java @@ -51,9 +51,9 @@ public class SqlConnector implements DbConnector{ } @Override - public boolean deleteArticle(int id) { + public int deleteArticle(int id) { // TODO Auto-generated method stub - return false; + return 0; } @Override diff --git a/src/de/katho/kBorrow/db/SqliteConnector.java b/src/de/katho/kBorrow/db/SqliteConnector.java index 80c270b..d95e119 100644 --- a/src/de/katho/kBorrow/db/SqliteConnector.java +++ b/src/de/katho/kBorrow/db/SqliteConnector.java @@ -211,11 +211,11 @@ public class SqliteConnector implements DbConnector { try { Statement st = this.connection.createStatement(); - String query = "SELECT id, name, description FROM article"; + String query = "SELECT id, name, is_free, description FROM article"; ResultSet rs = st.executeQuery(query); while (rs.next()){ - artArr.add(new KArticle(rs.getInt("id"), rs.getString("name"), rs.getString("description"))); + artArr.add(new KArticle(rs.getInt("id"), rs.getString("name"), rs.getBoolean("is_free"), rs.getString("description"))); } return artArr; @@ -231,11 +231,11 @@ public class SqliteConnector implements DbConnector { try { Statement st = this.connection.createStatement(); - String query = "SELECT id, name, description FROM article WHERE is_free = 1;"; + String query = "SELECT id, name, is_free, description FROM article WHERE is_free = 1;"; ResultSet rs = st.executeQuery(query); while (rs.next()){ - artArr.add(new KArticle(rs.getInt("id"), rs.getString("name"), rs.getString("description"))); + artArr.add(new KArticle(rs.getInt("id"), rs.getString("name"), rs.getBoolean("is_free"), rs.getString("description"))); } return artArr; @@ -378,18 +378,18 @@ public class SqliteConnector implements DbConnector { } } - public boolean deleteArticle(int id) { + public int deleteArticle(int id) { try { - Statement st = this.connection.createStatement(); + Statement st = connection.createStatement(); String query = "DELETE FROM article WHERE id = '"+id+"'"; st.executeUpdate(query); - return true; + return 0; } catch (SQLException e){ e.printStackTrace(); - return false; + return 1; } } diff --git a/src/de/katho/kBorrow/gui/ArticlePanel.java b/src/de/katho/kBorrow/gui/ArticlePanel.java index 1ee9e07..1c782bb 100644 --- a/src/de/katho/kBorrow/gui/ArticlePanel.java +++ b/src/de/katho/kBorrow/gui/ArticlePanel.java @@ -96,7 +96,7 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener this.lblArticleStatus = new JLabel(""); lblName.setBounds(10, 30, 70, 20); lblDescription.setBounds(10, 61, 70, 20); - this.lblArticleStatus.setBounds(90, 145, 250, 14); + this.lblArticleStatus.setBounds(90, 145, 390, 14); // Edit: Name-Textfield this.textFieldArticleName = new JTextField(); @@ -232,7 +232,6 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener } } - @Override public void keyPressed(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_ENTER) saveButtonPressed(); @@ -247,5 +246,19 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener // Nothing to implement } + + public void setDeleteStatusLabel(int pCode){ + switch(pCode){ + case 0: + lblArticleStatus.setText("Artikel erfolgreich gelöscht."); + break; + case 1: + lblArticleStatus.setText("Artikel kann nicht gelöscht werden."); + break; + case 2: + lblArticleStatus.setText("Artikel kann nicht gelöscht werden, während er verliehen ist."); + break; + } + } } diff --git a/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java b/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java index d2c796e..c46dad9 100644 --- a/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java +++ b/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java @@ -33,7 +33,7 @@ public class ArticleDeleteTableButton extends TableButton { int row = pTable.getSelectedRow(); - pController.deleteArticle(row); + pPanel.setDeleteStatusLabel(pController.deleteArticle(row)); pPanel.resetModeEditArticle(); } });