From 1289d2d58d2fe525bc0d0eef3201e98d558150d7 Mon Sep 17 00:00:00 2001 From: Servicepoint Date: Tue, 25 Nov 2014 18:12:26 +0100 Subject: [PATCH] =?UTF-8?q?Es=20k=C3=B6nnen=20nun=20bestehende=20Ausleihen?= =?UTF-8?q?=20wieder=20zur=C3=BCckgebucht=20werden.=20Au=C3=9Ferdem=20eini?= =?UTF-8?q?ges=20an=20Refactoring=20betrieben.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/icons/edit-undo.png | Bin 0 -> 1011 bytes assets/icons/system-search.png | Bin 0 -> 1267 bytes kBorrow.ucls | 184 ++++++++---------- .../kBorrow/controller/ArticleController.java | 11 +- .../controller/ManageLendingsController.java | 36 ++++ .../controller/NewLendingController.java | 13 +- .../kBorrow/controller/UserController.java | 6 +- src/de/katho/kBorrow/data/KLending.java | 49 +++++ src/de/katho/kBorrow/db/DbConnector.java | 4 +- src/de/katho/kBorrow/db/SqlConnector.java | 13 ++ src/de/katho/kBorrow/db/SqliteConnector.java | 39 ++++ src/de/katho/kBorrow/gui/ArticlePanel.java | 13 +- src/de/katho/kBorrow/gui/MainWindow.java | 8 +- .../kBorrow/gui/ManageLendingsPanel.java | 55 +++++- src/de/katho/kBorrow/gui/NewLendingPanel.java | 13 +- src/de/katho/kBorrow/gui/UserPanel.java | 13 +- .../listener/ArticleDeleteTableButton.java | 6 +- .../listener/ArticleEditTableButton.java | 4 +- .../listener/LendingReturnTableButton.java | 40 ++++ .../listener/NewLendingTableButton.java | 4 +- .../listener/UserDeleteTableButton.java | 6 +- .../kBorrow/listener/UserEditTableButton.java | 4 +- .../kBorrow/models/ArticleTableModel.java | 33 +--- src/de/katho/kBorrow/models/LenderModel.java | 11 ++ .../kBorrow/models/LendingTableModel.java | 95 +++++++++ .../katho/kBorrow/models/UserTableModel.java | 15 -- 26 files changed, 476 insertions(+), 199 deletions(-) create mode 100644 assets/icons/edit-undo.png create mode 100644 assets/icons/system-search.png create mode 100644 src/de/katho/kBorrow/controller/ManageLendingsController.java create mode 100644 src/de/katho/kBorrow/data/KLending.java create mode 100644 src/de/katho/kBorrow/listener/LendingReturnTableButton.java create mode 100644 src/de/katho/kBorrow/models/LendingTableModel.java diff --git a/assets/icons/edit-undo.png b/assets/icons/edit-undo.png new file mode 100644 index 0000000000000000000000000000000000000000..f37c6963d5a09fca4392a9c624171b6ebd8ed75f GIT binary patch literal 1011 zcmVTE&9H7IvbZ+cqG6s%a3~8qyOAA9sH1p3h*yWIRf(}TT_~f(C;C};eLubYT zdu`WXWhbb`N1!U*0DeU>2Hvo6!?f^IgOT&sH`K)G_nOsCV7VQX(^bIpI0&KGGpZvz z7Dg~^g!=q)rI;`6edIy=#qfmsLn6sa9l;kCM-By$UY?v8N8K8OPu|D5zr&u0tdwe|HPw60!GtvqM83Cg^n%=@1wQ3jwc zeiV8k83PxWkjEA3x3NGm|N8;^k5q_W_{_)MwQ5yN996=1&+${)_|4qlOX9y9tjUB! zlGJ9Y+}*V8#-

wJV+jRz;EmK$?Few+vtafY+_6&a^C1bfcXAO|mFi6$?@k%mI@& ziWQd%=bZo`XHNId`g|nRr0T}nCJR=JjdK9H0n`PQ1K>(aPq!|jx^^M^d{CnM^fx2X zTK0?2m(@Et{_fi!;%flfzo!b81D9K%lKWy3b20!DjY|6B2Z2uleP%hnT(LJ+*<0^? ziiFs{19hz6q{U;!<*}@)P^J!PfvJPC;n!KeSFFHc!|e?JSZq^DTAjLaB+%Yd6 zk9Re0dWW32a4X-d2sw)^O9q9&f$6DKD(jyH%hK8k)4@XrXqmgLZpZeWq5CS1#gvXM zZ*L{-=OWs$Y8TfnsYsPim2XqV^o(lgSHcPH_ukQml79^4H#crI9X#}DCji^Mz&rr# z_~8A3e{S8f8;W4uNXz0IOJ|JuoD#8^IFV9N%AngMQO~IQT3)C5T;51g#?k;w6R@5^5L(>1YOvB}oR)3$97Q zgb-dg4Df=$$1{4`EOH!(pc;(jIYM${>HNs4OOf-0!xTmVUJ!Ty;5foh3Z|6mW>FAD zj0eK z)tk}Mo6*b}#vwuoH^MVSC_{n=+#t-Vj7FZWdZ?5rN=)^7eP{0l<_aEv8SFSYwA%0C zC9AZ^VAKXiI4~wKM$L>+J0&pXa=9|6+x_gyr`%l2;ja_%_*ih#b~||@7@AdG6|kBG zb@pSG@{MS|ZggnSElJXK@B~^e?}~&6wm4m`S60_JAgD3wn(9tmxzf9&a>m1lFZcAO zCIkb(OKV>I?a!V|n^&%cj-)T{!aj$8`Df=ehp= zew*E1qTNo!8y=Za`R(2CJBCp6zCCjW25$c1cDZv7N2$p_*YB7PKRqbSM~N85fJnsmA~@7wb_fVG2zgNq3v5@Re| zQBiRkz|p3__HP;+8}|~9y|-cgMs#&`fl_K*xY(VE#bQ;*emH*Xp5UU7xIo`gTvv-0^o|D zC>9EgtG+{hku3}W1z?Qlf`#*^RXtvHM3!Z*5*u6A*4B23OfdM#1VFyX=W+0O>V*Py d-2eYI{sF*Z|Ipo-va0|9002ovPDHLkV1mNbUMBzm literal 0 HcmV?d00001 diff --git a/kBorrow.ucls b/kBorrow.ucls index 9eb5338..d0f13b6 100644 --- a/kBorrow.ucls +++ b/kBorrow.ucls @@ -182,100 +182,101 @@ - - - + + - + - - + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -286,39 +287,26 @@ - - - - + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - diff --git a/src/de/katho/kBorrow/controller/ArticleController.java b/src/de/katho/kBorrow/controller/ArticleController.java index 09ac653..a65fdac 100644 --- a/src/de/katho/kBorrow/controller/ArticleController.java +++ b/src/de/katho/kBorrow/controller/ArticleController.java @@ -13,8 +13,8 @@ public class ArticleController { public ArticleController(DbConnector pDbCon, HashMap pModels){ dbCon = pDbCon; - articleTableModel = (ArticleTableModel)pModels.get("articlemodel"); - freeArticleTableModel = (FreeArticleTableModel)pModels.get("freearticlemodel"); + articleTableModel = (ArticleTableModel)pModels.get("articletablemodel"); + freeArticleTableModel = (FreeArticleTableModel)pModels.get("freearticletablemodel"); } /** @@ -59,10 +59,13 @@ public class ArticleController { /** * 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. + * @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. */ - public boolean deleteArticle(int id) { + public boolean deleteArticle(int pRow) { + + int id = articleTableModel.getArticleByRow(pRow).getId(); + if(this.dbCon.deleteArticle(id)){ articleTableModel.updateModel(); freeArticleTableModel.updateModel(); diff --git a/src/de/katho/kBorrow/controller/ManageLendingsController.java b/src/de/katho/kBorrow/controller/ManageLendingsController.java new file mode 100644 index 0000000..63b2f3c --- /dev/null +++ b/src/de/katho/kBorrow/controller/ManageLendingsController.java @@ -0,0 +1,36 @@ +package de.katho.kBorrow.controller; + +import java.util.HashMap; + +import de.katho.kBorrow.Util; +import de.katho.kBorrow.data.KLending; +import de.katho.kBorrow.db.DbConnector; +import de.katho.kBorrow.models.FreeArticleTableModel; +import de.katho.kBorrow.models.LendingTableModel; + +public class ManageLendingsController { + + private DbConnector dbCon; + private FreeArticleTableModel freeArticleTableModel; + private LendingTableModel lendingTableModel; + + public ManageLendingsController(DbConnector pDbCon, HashMap pModels){ + dbCon = pDbCon; + + freeArticleTableModel = (FreeArticleTableModel)pModels.get("freearticletablemodel"); + lendingTableModel = (LendingTableModel)pModels.get("lendingtablemodel"); + } + + public void returnLending(int pRow) { + KLending lending = lendingTableModel.getLendingByRow(pRow); + + int artId = lending.getArticleId(); + int lendingId = lending.getId(); + + dbCon.returnLending(lendingId, artId, Util.getCurrentDate()); + + freeArticleTableModel.updateModel(); + lendingTableModel.updateModel(); + } + +} diff --git a/src/de/katho/kBorrow/controller/NewLendingController.java b/src/de/katho/kBorrow/controller/NewLendingController.java index 4a24c7f..94a31ec 100644 --- a/src/de/katho/kBorrow/controller/NewLendingController.java +++ b/src/de/katho/kBorrow/controller/NewLendingController.java @@ -10,6 +10,7 @@ import de.katho.kBorrow.data.KLender; import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.models.FreeArticleTableModel; import de.katho.kBorrow.models.LenderModel; +import de.katho.kBorrow.models.LendingTableModel; import de.katho.kBorrow.models.UserListModel; public class NewLendingController { @@ -17,12 +18,14 @@ public class NewLendingController { private UserListModel userListModel; private LenderModel lenderModel; private FreeArticleTableModel freeArticleModel; + private LendingTableModel lendingTableModel; public NewLendingController(DbConnector pDbCon, HashMap pModels){ dbCon = pDbCon; userListModel = (UserListModel)pModels.get("userlistmodel"); lenderModel = (LenderModel)pModels.get("lendermodel"); - freeArticleModel = (FreeArticleTableModel)pModels.get("freearticlemodel"); + freeArticleModel = (FreeArticleTableModel)pModels.get("freearticletablemodel"); + lendingTableModel = (LendingTableModel)pModels.get("lendingtablemodel"); } /** @@ -34,10 +37,12 @@ public class NewLendingController { * 3: Das Rückgabedatum ist früher oder gleich dem Ausleihdatum * 4: Die gegebene Kombination aus Lender-Name, -Surname und -Studentnumber * existiert mehrmals in der Datenbank. Das darf nicht sein und wirft daher einen Fehler! + * 5: Matrikelnummer muss eine Zahl sein! */ public int newLending(int pArtId, String pLName, String pLSurname, String pLSN, String pStartDate, Date pEstEndDate, String pUsername){ - if (pArtId == -1 || pStartDate.isEmpty() || pEstEndDate == null || pLName.isEmpty() || pLSurname.isEmpty() || pUsername.isEmpty()) return 2; - if (pEstEndDate.before(new Date())) return 3; + if(pArtId == -1 || pStartDate.isEmpty() || pEstEndDate == null || pLName.isEmpty() || pLSurname.isEmpty() || pUsername.isEmpty()) return 2; + if(pEstEndDate.before(new Date())) return 3; + if(!pLSN.matches("[0-9]+")) return 5; ArrayList lenders = lenderModel.getLenders(pLName, pLSurname, pLSN); if(lenders.size() == 0) { @@ -45,6 +50,7 @@ public class NewLendingController { if(result == 0){ lenderModel.updateModel(); + return newLending(pArtId, pLName, pLSurname, pLSN, pStartDate, pEstEndDate, pUsername); } else return result; @@ -57,6 +63,7 @@ public class NewLendingController { if(result == 0){ freeArticleModel.updateModel(); + lendingTableModel.updateModel(); return result; } else return result; diff --git a/src/de/katho/kBorrow/controller/UserController.java b/src/de/katho/kBorrow/controller/UserController.java index 41c0083..d8250f9 100644 --- a/src/de/katho/kBorrow/controller/UserController.java +++ b/src/de/katho/kBorrow/controller/UserController.java @@ -14,7 +14,7 @@ public class UserController { public UserController(DbConnector pDbCon, HashMap pModels) { dbCon = pDbCon; - userTableModel = (UserTableModel)pModels.get("usermodel"); + userTableModel = (UserTableModel)pModels.get("usertablemodel"); userListModel = (UserListModel)pModels.get("userlistmodel"); } @@ -38,7 +38,9 @@ public class UserController { return status; } - public boolean deleteUser(int id){ + public boolean deleteUser(int pRow){ + int id = userTableModel.getUserByRow(pRow).getId(); + if(dbCon.deleteUser(id)){ userTableModel.updateModel(); userListModel.updateModel(); diff --git a/src/de/katho/kBorrow/data/KLending.java b/src/de/katho/kBorrow/data/KLending.java new file mode 100644 index 0000000..fff8218 --- /dev/null +++ b/src/de/katho/kBorrow/data/KLending.java @@ -0,0 +1,49 @@ +package de.katho.kBorrow.data; + +public class KLending { + private int id; + private int user_id; + private int article_id; + private int lender_id; + private String start_date; + private String expected_end_date; + private String end_date; + + public KLending(int pId, int pUserId, int pLenderId, int pArticleId, String pStartDate, String pExpEndDate, String pEndDate){ + id = pId; + user_id = pUserId; + article_id = pArticleId; + lender_id = pLenderId; + start_date = pStartDate; + expected_end_date = pExpEndDate; + end_date = pEndDate; + } + + public int getId(){ + return id; + } + + public int getUserId(){ + return user_id; + } + + public int getLenderId(){ + return lender_id; + } + + public int getArticleId(){ + return article_id; + } + + public String getStartDate() { + return start_date; + } + + public String getExpectedEndDate() { + return expected_end_date; + } + + public String getEndDate(){ + return end_date; + } +} diff --git a/src/de/katho/kBorrow/db/DbConnector.java b/src/de/katho/kBorrow/db/DbConnector.java index 6ee900e..312e863 100644 --- a/src/de/katho/kBorrow/db/DbConnector.java +++ b/src/de/katho/kBorrow/db/DbConnector.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import de.katho.kBorrow.data.KArticle; import de.katho.kBorrow.data.KLender; +import de.katho.kBorrow.data.KLending; import de.katho.kBorrow.data.KUser; public interface DbConnector { @@ -20,5 +21,6 @@ public interface DbConnector { public ArrayList getLenderList(); public int createNewLending(int pArtId, int pUId, int pLId, String pStartDate, String pEstEndDate); public int createNewLender(String pLName, String pLSurname, String pLSN); - + public ArrayList getActiveLendingList(); + public int returnLending(int lendingId, int artId, String string); } diff --git a/src/de/katho/kBorrow/db/SqlConnector.java b/src/de/katho/kBorrow/db/SqlConnector.java index 80f3241..a1dec79 100644 --- a/src/de/katho/kBorrow/db/SqlConnector.java +++ b/src/de/katho/kBorrow/db/SqlConnector.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import de.katho.kBorrow.data.KArticle; import de.katho.kBorrow.data.KLender; +import de.katho.kBorrow.data.KLending; import de.katho.kBorrow.data.KUser; public class SqlConnector implements DbConnector{ @@ -85,5 +86,17 @@ public class SqlConnector implements DbConnector{ // TODO Auto-generated method stub return 0; } + + @Override + public ArrayList getActiveLendingList() { + // TODO Auto-generated method stub + return null; + } + + @Override + public int returnLending(int id, int artId, String end_date) { + // TODO Auto-generated method stub + return 0; + } } diff --git a/src/de/katho/kBorrow/db/SqliteConnector.java b/src/de/katho/kBorrow/db/SqliteConnector.java index 7d9e9bb..7a6f032 100644 --- a/src/de/katho/kBorrow/db/SqliteConnector.java +++ b/src/de/katho/kBorrow/db/SqliteConnector.java @@ -14,6 +14,7 @@ import java.util.Map.Entry; import de.katho.kBorrow.data.KArticle; import de.katho.kBorrow.data.KLender; +import de.katho.kBorrow.data.KLending; import de.katho.kBorrow.data.KUser; /** @@ -264,6 +265,27 @@ public class SqliteConnector implements DbConnector { } } + public ArrayList getActiveLendingList() { + ArrayList lendingArr = new ArrayList(); + + try { + Statement st = connection.createStatement(); + String query = "SELECT id, user_id, lender_id, article_id, start_date, expected_end_date, end_date FROM lending WHERE end_date IS NULL"; + + ResultSet rs = st.executeQuery(query); + + while (rs.next()){ + lendingArr.add(new KLending(rs.getInt("id"), rs.getInt("user_id"), rs.getInt("lender_id"), rs.getInt("article_id"), rs.getString("start_date"), rs.getString("expected_end_date"), rs.getString("end_date"))); + } + + return lendingArr; + } + catch(SQLException e){ + e.printStackTrace(); + return lendingArr; + } + } + /** * * @return 0: Benutzer erfolgreich erzeugt @@ -403,5 +425,22 @@ public class SqliteConnector implements DbConnector { return 1; } } + + public int returnLending(int lendingId, int artId, String end_date) { + try{ + Statement st = connection.createStatement(); + String query = "UPDATE article SET is_free = 1 WHERE id = '"+artId+"';" + + "UPDATE lending SET end_date = '"+end_date+"' WHERE id = '"+lendingId+"';"; + + st.executeUpdate(query); + + return 0; + } + catch(SQLException e){ + e.printStackTrace(); + return 1; + } + + } } diff --git a/src/de/katho/kBorrow/gui/ArticlePanel.java b/src/de/katho/kBorrow/gui/ArticlePanel.java index 93bee4f..ddcab1f 100644 --- a/src/de/katho/kBorrow/gui/ArticlePanel.java +++ b/src/de/katho/kBorrow/gui/ArticlePanel.java @@ -24,6 +24,7 @@ import javax.swing.UIManager; import javax.swing.border.TitledBorder; import de.katho.kBorrow.controller.ArticleController; +import de.katho.kBorrow.data.KArticle; import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.listener.ArticleDeleteTableButton; import de.katho.kBorrow.listener.ArticleEditTableButton; @@ -49,7 +50,7 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener public ArticlePanel(final DbConnector dbCon, HashMap pModels) throws IOException { super(); this.setLayout(null); - articleTableModel = (ArticleTableModel)pModels.get("articlemodel"); + articleTableModel = (ArticleTableModel)pModels.get("articletablemodel"); articleController = new ArticleController(dbCon, pModels); /* @@ -170,11 +171,13 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener this.textAreaArticleDescription.setText(""); } - public void setModeEditArticle(int articleId, String articleName, String articleDescription) { + public void setModeEditArticle(int pRow) { + KArticle art = articleTableModel.getArticleByRow(pRow); + this.articleModeEdit = true; - this.articleEditId = articleId; - this.textFieldArticleName.setText(articleName); - this.textAreaArticleDescription.setText(articleDescription); + this.articleEditId = art.getId(); + this.textFieldArticleName.setText(art.getName()); + this.textAreaArticleDescription.setText(art.getDescription()); } private void saveButtonPressed(){ diff --git a/src/de/katho/kBorrow/gui/MainWindow.java b/src/de/katho/kBorrow/gui/MainWindow.java index 4a60445..0c29180 100644 --- a/src/de/katho/kBorrow/gui/MainWindow.java +++ b/src/de/katho/kBorrow/gui/MainWindow.java @@ -20,6 +20,7 @@ import de.katho.kBorrow.db.SqliteConnector; import de.katho.kBorrow.models.ArticleTableModel; import de.katho.kBorrow.models.FreeArticleTableModel; import de.katho.kBorrow.models.LenderModel; +import de.katho.kBorrow.models.LendingTableModel; import de.katho.kBorrow.models.UserTableModel; import de.katho.kBorrow.models.UserListModel; @@ -62,11 +63,12 @@ public class MainWindow { } models = new HashMap(); - models.put("usermodel", new UserTableModel(dbCon)); + models.put("usertablemodel", new UserTableModel(dbCon)); models.put("userlistmodel", new UserListModel(dbCon)); - models.put("articlemodel", new ArticleTableModel(dbCon)); - models.put("freearticlemodel", new FreeArticleTableModel(dbCon)); + models.put("articletablemodel", new ArticleTableModel(dbCon)); + models.put("freearticletablemodel", new FreeArticleTableModel(dbCon)); models.put("lendermodel", new LenderModel(dbCon)); + models.put("lendingtablemodel", new LendingTableModel(dbCon, models)); tabbedPane = new JTabbedPane(JTabbedPane.TOP); frame.getContentPane().add(this.tabbedPane, BorderLayout.CENTER); diff --git a/src/de/katho/kBorrow/gui/ManageLendingsPanel.java b/src/de/katho/kBorrow/gui/ManageLendingsPanel.java index 92fdd9a..234735c 100644 --- a/src/de/katho/kBorrow/gui/ManageLendingsPanel.java +++ b/src/de/katho/kBorrow/gui/ManageLendingsPanel.java @@ -1,24 +1,63 @@ package de.katho.kBorrow.gui; - +import java.awt.Color; import java.util.HashMap; import javax.swing.JPanel; +import de.katho.kBorrow.controller.ManageLendingsController; import de.katho.kBorrow.db.DbConnector; + + +import de.katho.kBorrow.listener.LendingReturnTableButton; +import de.katho.kBorrow.models.LendingTableModel; + +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.UIManager; +import javax.swing.border.TitledBorder; + +import java.awt.BorderLayout; +import java.io.IOException; + + public class ManageLendingsPanel extends JPanel { /** * */ - private static final long serialVersionUID = -1559803834099586468L; - - /** - * Create the panel. - * @param dbCon - */ - public ManageLendingsPanel(DbConnector dbCon, HashMap pModels) { + private static final long serialVersionUID = 925691137664223491L; + private LendingTableModel lendingTableModel; + private ManageLendingsController manageLendingsController; + + public ManageLendingsPanel(DbConnector dbCon, HashMap models) throws IOException { + + lendingTableModel = (LendingTableModel)models.get("lendingtablemodel"); + manageLendingsController = new ManageLendingsController(dbCon, models); + + // Lending-Table + JTable lendingTable = new JTable(lendingTableModel); + lendingTable.setFillsViewportHeight(true); + lendingTable.setRowHeight(30); + + LendingReturnTableButton lrtb = new LendingReturnTableButton("Ausleihe beenden", lendingTable, manageLendingsController); + + for(int i = 5; i <= 6; i++){ + lendingTable.getColumnModel().getColumn(i).setCellEditor(i == 5 ? null : lrtb); + lendingTable.getColumnModel().getColumn(i).setCellRenderer(i == 5 ? null : lrtb); + + lendingTable.getColumnModel().getColumn(i).setMinWidth(30); + lendingTable.getColumnModel().getColumn(i).setMaxWidth(30); + lendingTable.getColumnModel().getColumn(i).setPreferredWidth(30); + } + lendingTable.getColumnModel().getColumn(0).setMinWidth(30); + lendingTable.getColumnModel().getColumn(0).setMaxWidth(30); + lendingTable.getColumnModel().getColumn(0).setPreferredWidth(30); + + setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Aktive Ausleihen", TitledBorder.LEADING, TitledBorder.TOP, null, new Color(0, 0, 0))); + setLayout(new BorderLayout(0, 0)); + add(new JScrollPane(lendingTable)); } } diff --git a/src/de/katho/kBorrow/gui/NewLendingPanel.java b/src/de/katho/kBorrow/gui/NewLendingPanel.java index c2d8802..b29ee6a 100644 --- a/src/de/katho/kBorrow/gui/NewLendingPanel.java +++ b/src/de/katho/kBorrow/gui/NewLendingPanel.java @@ -33,6 +33,7 @@ import de.katho.kBorrow.controller.NewLendingController; import de.katho.kBorrow.converter.LenderNameConverter; import de.katho.kBorrow.converter.LenderStudentnumberConverter; import de.katho.kBorrow.converter.LenderSurnameConverter; +import de.katho.kBorrow.data.KArticle; import de.katho.kBorrow.data.KLender; import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.listener.NewLendingTableButton; @@ -74,7 +75,7 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList articleId = -1; // FreeArticleTable - freeArticleTableModel = (FreeArticleTableModel)pModel.get("freearticlemodel"); + freeArticleTableModel = (FreeArticleTableModel)pModel.get("freearticletablemodel"); userListModel = (UserListModel)pModel.get("userlistmodel"); lenderModel = (LenderModel)pModel.get("lendermodel"); newLendingController = new NewLendingController(dbCon, pModel); @@ -244,14 +245,18 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList lblStatus.setText("Die gegebene Kombination aus Lender-Name, -Surname und -Studentnumber" + "existiert mehrmals in der Datenbank. Das darf nicht sein und wirft daher einen Fehler!"); break; + case 5: + lblStatus.setText("Matrikelnummer muss eine Zahl sein!"); + break; } } - public void setModeNewLending(int pArticleId, String articleName) { + public void setModeNewLending(int pRow) { + KArticle art = freeArticleTableModel.getArticleByRow(pRow); lblStartDate.setText(Util.getCurrentDate()); - lblArticleName.setText(articleName); - articleId = pArticleId; + lblArticleName.setText(art.getName()); + articleId = art.getId(); } diff --git a/src/de/katho/kBorrow/gui/UserPanel.java b/src/de/katho/kBorrow/gui/UserPanel.java index 5846785..338f232 100644 --- a/src/de/katho/kBorrow/gui/UserPanel.java +++ b/src/de/katho/kBorrow/gui/UserPanel.java @@ -20,6 +20,7 @@ import javax.swing.UIManager; import javax.swing.border.TitledBorder; import de.katho.kBorrow.controller.UserController; +import de.katho.kBorrow.data.KUser; import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.listener.UserDeleteTableButton; import de.katho.kBorrow.listener.UserEditTableButton; @@ -41,7 +42,7 @@ public class UserPanel extends JPanel implements ActionListener, KeyListener { public UserPanel(final DbConnector dbCon, HashMap pModels) throws IOException{ super(); setLayout(null); - userTableModel = (UserTableModel)pModels.get("usermodel"); + userTableModel = (UserTableModel)pModels.get("usertablemodel"); userController = new UserController(dbCon, pModels); //Tabelle und drumherum @@ -146,11 +147,13 @@ public class UserPanel extends JPanel implements ActionListener, KeyListener { this.textFieldUserSurname.setText(""); } - public void setModeEditUser(int pId, String pName, String pSurname){ + public void setModeEditUser(int pRow){ + KUser user = userTableModel.getUserByRow(pRow); + this.userModeEdit = true; - this.userEditId = pId; - this.textFieldUserName.setText(pName); - this.textFieldUserSurname.setText(pSurname); + this.userEditId = user.getId(); + this.textFieldUserName.setText(user.getName()); + this.textFieldUserSurname.setText(user.getSurname()); } private void saveButtonPressed(){ diff --git a/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java b/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java index bf48ea3..a4c95b3 100644 --- a/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java +++ b/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java @@ -11,7 +11,6 @@ import javax.swing.JTable; import de.katho.kBorrow.controller.ArticleController; import de.katho.kBorrow.gui.ArticlePanel; -import de.katho.kBorrow.models.ArticleTableModel; public class ArticleDeleteTableButton extends TableButton { @@ -31,12 +30,9 @@ public class ArticleDeleteTableButton extends TableButton { public void actionPerformed(ActionEvent e){ fireEditingStopped(); - ArticleTableModel model = (ArticleTableModel) pTable.getModel(); - int row = pTable.getSelectedRow(); - int id = model.getArticleId(row); - pController.deleteArticle(id); + pController.deleteArticle(row); pPanel.resetModeEditArticle(); } }); diff --git a/src/de/katho/kBorrow/listener/ArticleEditTableButton.java b/src/de/katho/kBorrow/listener/ArticleEditTableButton.java index 0ecb2d8..80d8ec4 100644 --- a/src/de/katho/kBorrow/listener/ArticleEditTableButton.java +++ b/src/de/katho/kBorrow/listener/ArticleEditTableButton.java @@ -10,7 +10,6 @@ import javax.swing.ImageIcon; import javax.swing.JTable; import de.katho.kBorrow.gui.ArticlePanel; -import de.katho.kBorrow.models.ArticleTableModel; public class ArticleEditTableButton extends TableButton { @@ -30,10 +29,9 @@ public class ArticleEditTableButton extends TableButton { public void actionPerformed(ActionEvent e){ fireEditingStopped(); - ArticleTableModel model = (ArticleTableModel) pTable.getModel(); int row = pTable.getSelectedRow(); - articleTab.setModeEditArticle(model.getArticleId(row), model.getArticleName(row), model.getArticleDescription(row)); + articleTab.setModeEditArticle(row); } }); } diff --git a/src/de/katho/kBorrow/listener/LendingReturnTableButton.java b/src/de/katho/kBorrow/listener/LendingReturnTableButton.java new file mode 100644 index 0000000..424a7cf --- /dev/null +++ b/src/de/katho/kBorrow/listener/LendingReturnTableButton.java @@ -0,0 +1,40 @@ +package de.katho.kBorrow.listener; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; +import java.io.IOException; + +import javax.imageio.ImageIO; +import javax.swing.ImageIcon; +import javax.swing.JTable; + +import de.katho.kBorrow.controller.ManageLendingsController; + +public class LendingReturnTableButton extends TableButton { + + /** + * + */ + private static final long serialVersionUID = 4841475504601928160L; + + public LendingReturnTableButton(String pLabel, final JTable pTable, final ManageLendingsController pController) throws IOException { + super(pLabel); + + ImageIcon icon = new ImageIcon(ImageIO.read(new File("assets/icons/edit-undo.png"))); + + this.buttonE.setIcon(icon); + this.buttonR.setIcon(icon); + + this.buttonE.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + fireEditingStopped(); + + int row = pTable.getSelectedRow(); + + pController.returnLending(row); + } + }); + } + +} diff --git a/src/de/katho/kBorrow/listener/NewLendingTableButton.java b/src/de/katho/kBorrow/listener/NewLendingTableButton.java index b4392a4..52a4299 100644 --- a/src/de/katho/kBorrow/listener/NewLendingTableButton.java +++ b/src/de/katho/kBorrow/listener/NewLendingTableButton.java @@ -10,7 +10,6 @@ import javax.swing.ImageIcon; import javax.swing.JTable; import de.katho.kBorrow.gui.NewLendingPanel; -import de.katho.kBorrow.models.FreeArticleTableModel; public class NewLendingTableButton extends TableButton { @@ -30,10 +29,9 @@ public class NewLendingTableButton extends TableButton { public void actionPerformed(ActionEvent e){ fireEditingStopped(); - FreeArticleTableModel model = (FreeArticleTableModel) pTable.getModel(); int row = pTable.getSelectedRow(); - pPanel.setModeNewLending(model.getArticleId(row), model.getArticleName(row)); + pPanel.setModeNewLending(row); } }); } diff --git a/src/de/katho/kBorrow/listener/UserDeleteTableButton.java b/src/de/katho/kBorrow/listener/UserDeleteTableButton.java index 843e1f2..c74ec81 100644 --- a/src/de/katho/kBorrow/listener/UserDeleteTableButton.java +++ b/src/de/katho/kBorrow/listener/UserDeleteTableButton.java @@ -11,7 +11,6 @@ import javax.swing.JTable; import de.katho.kBorrow.controller.UserController; import de.katho.kBorrow.gui.UserPanel; -import de.katho.kBorrow.models.UserTableModel; public class UserDeleteTableButton extends TableButton { @@ -28,12 +27,9 @@ public class UserDeleteTableButton extends TableButton { public void actionPerformed(ActionEvent e){ fireEditingStopped(); - UserTableModel model = (UserTableModel) pTable.getModel(); - int row = pTable.getSelectedRow(); - int id = model.getUserId(row); - pController.deleteUser(id); + pController.deleteUser(row); pPanel.resetModeEditUser(); } }); diff --git a/src/de/katho/kBorrow/listener/UserEditTableButton.java b/src/de/katho/kBorrow/listener/UserEditTableButton.java index 2f38c7f..b0f57a7 100644 --- a/src/de/katho/kBorrow/listener/UserEditTableButton.java +++ b/src/de/katho/kBorrow/listener/UserEditTableButton.java @@ -10,7 +10,6 @@ import javax.swing.ImageIcon; import javax.swing.JTable; import de.katho.kBorrow.gui.UserPanel; -import de.katho.kBorrow.models.UserTableModel; public class UserEditTableButton extends TableButton { @@ -30,10 +29,9 @@ public class UserEditTableButton extends TableButton { public void actionPerformed(ActionEvent e){ fireEditingStopped(); - UserTableModel model = (UserTableModel) pTable.getModel(); int row = pTable.getSelectedRow(); - pPanel.setModeEditUser(model.getUserId(row), model.getUserName(row), model.getUserSurname(row)); + pPanel.setModeEditUser(row); } }); diff --git a/src/de/katho/kBorrow/models/ArticleTableModel.java b/src/de/katho/kBorrow/models/ArticleTableModel.java index bb1c563..8ca6b76 100644 --- a/src/de/katho/kBorrow/models/ArticleTableModel.java +++ b/src/de/katho/kBorrow/models/ArticleTableModel.java @@ -62,37 +62,6 @@ public class ArticleTableModel extends AbstractTableModel { if (pCol > 2) return true; return false; } - - /** - * Gibt die ID der gegebenen Tabellenzeile aus. - * - * @param row Tabellenzeile, zu der die ID ausgegeben werden soll. - * @return Artikel-ID als int. - */ - public int getArticleId(int row) { - return this.data.get(row).getId(); - } - - /** - * Gibt den Artikelnamen der gegebenen Tabellenzeile aus. - * - * @param pRow Tabellenzeile, zu der der Name ausgegeben werden soll. - * @return Artikelname als String - */ - public String getArticleName(int pRow){ - return this.data.get(pRow).getName(); - } - - /** - * Gibt die Artikelbeschreibung der gegebenen Tabellenzeile aus. - * - * @param pRow Tabellenzeile, zu der die Beschreibung ausgegeben werden soll - * @return Artikelbeschreibung als String. - */ - public String getArticleDescription(int pRow){ - return this.data.get(pRow).getDescription(); - } - /** * Gibt die entsprechende Zeile in der Tabelle für ein Objekt mit der gegebenen ID zurück. @@ -114,7 +83,7 @@ public class ArticleTableModel extends AbstractTableModel { * @return KArticle-Objekt */ public KArticle getArticleByRow(int pRow){ - return this.data.get(pRow); + return data.get(pRow); } /** diff --git a/src/de/katho/kBorrow/models/LenderModel.java b/src/de/katho/kBorrow/models/LenderModel.java index 70623ed..7297e32 100644 --- a/src/de/katho/kBorrow/models/LenderModel.java +++ b/src/de/katho/kBorrow/models/LenderModel.java @@ -104,4 +104,15 @@ public class LenderModel { return elems; } + + public KLender getLenderById(int pId){ + for(KLender elem : data){ + if(elem.getId() == pId) return elem; + } + return null; + } + + public KLender getLenderByRow(int pRow){ + return data.get(pRow); + } } diff --git a/src/de/katho/kBorrow/models/LendingTableModel.java b/src/de/katho/kBorrow/models/LendingTableModel.java new file mode 100644 index 0000000..9419cd6 --- /dev/null +++ b/src/de/katho/kBorrow/models/LendingTableModel.java @@ -0,0 +1,95 @@ +package de.katho.kBorrow.models; + +import java.util.ArrayList; +import java.util.HashMap; + +import javax.swing.table.AbstractTableModel; + +import de.katho.kBorrow.data.KArticle; +import de.katho.kBorrow.data.KLender; +import de.katho.kBorrow.data.KLending; +import de.katho.kBorrow.db.DbConnector; + +public class LendingTableModel extends AbstractTableModel { + + /** + * + */ + private static final long serialVersionUID = 1375465648631587292L; + private DbConnector dbCon; + private String[] header = {"ID", "Artikel", "Ausleiher", "Ausleihdatum", "Vor. Rückgabe", "", ""}; + private ArrayList data = new ArrayList(); + private ArticleTableModel articleModel; + private LenderModel lenderModel; + + public LendingTableModel(DbConnector pDbCon, HashMap pModels ) { + dbCon = pDbCon; + articleModel = (ArticleTableModel)pModels.get("articletablemodel"); + lenderModel = (LenderModel)pModels.get("lendermodel"); + + updateModel(); + } + + public int getColumnCount() { + return header.length; + } + + public String getColumnName(int index){ + return header[index]; + } + + public int getRowCount() { + return data.size(); + } + + public Object getValueAt(int row, int col) { + switch (col){ + case 0: + return data.get(row).getId(); + + case 1: + int artId = data.get(row).getArticleId(); + KArticle art = articleModel.getArticleById(artId); + + return art.getName(); + + case 2: + int lenderId = data.get(row).getLenderId(); + KLender lender = lenderModel.getLenderById(lenderId); + + return lender.getName()+" "+lender.getSurname()+" ("+lender.getStudentnumber()+")"; + + case 3: + return data.get(row).getStartDate(); + + case 4: + return data.get(row).getExpectedEndDate(); + + default: + return null; + } + } + + // Die Funktion muss differenzierter werden + public boolean isCellEditable(int row, int col){ + if (col > 4) return true; + return false; + } + + public void updateModel(){ + data = dbCon.getActiveLendingList(); + fireTableDataChanged(); + } + + public KLending getLendingByRow(int row) { + return data.get(row); + } + + public KLending getLendingById(int id){ + for(KLending elem : data){ + if(elem.getId() == id) return elem; + } + return null; + } + +} diff --git a/src/de/katho/kBorrow/models/UserTableModel.java b/src/de/katho/kBorrow/models/UserTableModel.java index ce1b153..09022cc 100644 --- a/src/de/katho/kBorrow/models/UserTableModel.java +++ b/src/de/katho/kBorrow/models/UserTableModel.java @@ -22,17 +22,14 @@ public class UserTableModel extends AbstractTableModel { updateModel(); } - @Override public int getColumnCount() { return this.header.length; } - @Override public int getRowCount() { return this.data.size(); } - @Override public String getValueAt(int row, int col) { switch(col){ case 0: @@ -64,18 +61,6 @@ public class UserTableModel extends AbstractTableModel { 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(); - } - /** * * @param pId