From f107ae13a474db174fd933247892871569d1902f Mon Sep 17 00:00:00 2001 From: Servicepoint Date: Wed, 19 Nov 2014 18:44:25 +0100 Subject: [PATCH] Arbeit an NewLending... Fehler in getFreeArticleList gefunden! --- .../controller/NewLendingController.java | 36 ++++++++++----- src/de/katho/kBorrow/db/DbConnector.java | 2 + src/de/katho/kBorrow/db/SqlConnector.java | 13 ++++++ src/de/katho/kBorrow/db/SqliteConnector.java | 39 ++++++++++++++++ src/de/katho/kBorrow/gui/NewLendingPanel.java | 44 +++++++++++++++---- src/de/katho/kBorrow/models/LenderModel.java | 13 ------ .../katho/kBorrow/models/UserListModel.java | 7 +++ 7 files changed, 123 insertions(+), 31 deletions(-) diff --git a/src/de/katho/kBorrow/controller/NewLendingController.java b/src/de/katho/kBorrow/controller/NewLendingController.java index b838772..4a24c7f 100644 --- a/src/de/katho/kBorrow/controller/NewLendingController.java +++ b/src/de/katho/kBorrow/controller/NewLendingController.java @@ -1,5 +1,7 @@ package de.katho.kBorrow.controller; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -27,24 +29,38 @@ public class NewLendingController { * * @return StatusCode * 0: Erfolgreich gespeichert - * 1: Notwendige Daten sind leer (Art-ID, Start-Date, Est. End-Date) - * 2: Das Rückgabedatum ist früher oder gleich dem Ausleihdatum - * 3: Die gegebene Kombination aus Lender-Name, -Surname und -Studentnumber + * 1: SQL-Fehler + * 2: Notwendige Daten sind leer (Art-ID, Start-Date, Est. End-Date) + * 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! */ 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 1; - if (pEstEndDate.before(new Date())) return 2; + if (pArtId == -1 || pStartDate.isEmpty() || pEstEndDate == null || pLName.isEmpty() || pLSurname.isEmpty() || pUsername.isEmpty()) return 2; + if (pEstEndDate.before(new Date())) return 3; ArrayList lenders = lenderModel.getLenders(pLName, pLSurname, pLSN); if(lenders.size() == 0) { - // Lender existiert noch nicht + int result = dbCon.createNewLender(pLName, pLSurname, pLSN); + + if(result == 0){ + lenderModel.updateModel(); + return newLending(pArtId, pLName, pLSurname, pLSN, pStartDate, pEstEndDate, pUsername); + } + else return result; } else if(lenders.size() == 1){ - // Lender existiert bereits + KLender lender = lenders.get(0); + int uId = userListModel.getIdByFullname(pUsername); + DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy"); + int result = dbCon.createNewLending(pArtId, uId, lender.getId(), pStartDate, dateFormat.format(pEstEndDate)); + + if(result == 0){ + freeArticleModel.updateModel(); + return result; + } + else return result; } - else return 3; - - return 0; + return 4; } } diff --git a/src/de/katho/kBorrow/db/DbConnector.java b/src/de/katho/kBorrow/db/DbConnector.java index 11018db..6ee900e 100644 --- a/src/de/katho/kBorrow/db/DbConnector.java +++ b/src/de/katho/kBorrow/db/DbConnector.java @@ -18,5 +18,7 @@ public interface DbConnector { public int editArticle(int pId, String pName, String pDesc); public ArrayList getFreeArticleList(); 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); } diff --git a/src/de/katho/kBorrow/db/SqlConnector.java b/src/de/katho/kBorrow/db/SqlConnector.java index 7830d85..80f3241 100644 --- a/src/de/katho/kBorrow/db/SqlConnector.java +++ b/src/de/katho/kBorrow/db/SqlConnector.java @@ -72,5 +72,18 @@ public class SqlConnector implements DbConnector{ // TODO Auto-generated method stub return null; } + + @Override + public int createNewLending(int pArtId, int pUId, int pLId, + String pStartDate, String pEstEndDate) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int createNewLender(String pLName, String pLSurname, String pLSN) { + // 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 35094c3..ee7a484 100644 --- a/src/de/katho/kBorrow/db/SqliteConnector.java +++ b/src/de/katho/kBorrow/db/SqliteConnector.java @@ -227,6 +227,7 @@ public class SqliteConnector implements DbConnector { ArrayList artArr = new ArrayList(); try { + //TODO Diese Funktion gibt auch ausgeliehene Artikel zurück, wenn es eine frühere, abgeschlossene Ausleihe gab! 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); @@ -363,5 +364,43 @@ public class SqliteConnector implements DbConnector { return 1; } } + + /** + * + * @return Status-Code: + * 0: Erfolg + * 1: SQL-Fehler + */ + public int createNewLending(int pArtId, int pUId, int pLId, String pStartDate, String pEstEndDate) { + try{ + Statement st = connection.createStatement(); + String query = "INSERT INTO lending (article_id, user_id, lender_id, start_date, expected_end_date ) " + + "VALUES ("+pArtId+", "+pUId+", "+pLId+", '"+pStartDate+"', '"+pEstEndDate+"')"; + + st.executeUpdate(query); + + return 0; + } + catch(SQLException e){ + e.printStackTrace(); + return 1; + } + } + + public int createNewLender(String pLName, String pLSurname, String pLSN) { + try{ + Statement st = connection.createStatement(); + String query = "INSERT into lender (name, surname, student_number) " + + "VALUES ('"+pLName+"', '"+pLSurname+"', '"+pLSN+"')"; + + st.executeUpdate(query); + + return 0; + } + catch(SQLException e){ + e.printStackTrace(); + return 1; + } + } } diff --git a/src/de/katho/kBorrow/gui/NewLendingPanel.java b/src/de/katho/kBorrow/gui/NewLendingPanel.java index 89f6692..d45e12e 100644 --- a/src/de/katho/kBorrow/gui/NewLendingPanel.java +++ b/src/de/katho/kBorrow/gui/NewLendingPanel.java @@ -7,8 +7,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusListener; import java.io.IOException; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -62,6 +60,7 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList private NewLendingController newLendingController; private JComboBox cbUserName; private JXDatePicker dpEstEndDate; + private JLabel lblStatus; /** * Create the panel. @@ -154,7 +153,10 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList JLabel lblLenderName = new JLabel("Name:"); JLabel lblLenderSurname = new JLabel("Nachname:"); JLabel lblLenderStudentnumber = new JLabel("Matrikelnummer:"); + lblStatus = new JLabel(""); + lblLenderName.setBounds(10, 100, 90, 20); + lblStatus.setBounds(210, 100, 400, 20); lblLenderSurname.setBounds(10, 130, 90, 20); lblLenderStudentnumber.setBounds(10, 160, 90, 20); @@ -196,6 +198,7 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList panelNewLending.add(lblLenderStudentnumber); panelNewLending.add(lblLenderSurname); panelNewLending.add(lblLenderName); + panelNewLending.add(lblStatus); panelNewLending.add(separator); panelNewLending.add(btnSave); panelNewLending.add(btnCancel); @@ -216,12 +219,7 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList public void actionPerformed(ActionEvent pEvent) { if(pEvent.getSource() == btnCancel){ - lblStartDate.setText(""); - lblArticleName.setText(""); - articleId = -1; - tfName.setText(""); - tfSurname.setText(""); - tfStudentNumber.setText(""); + resetForm(); } if(pEvent.getSource() == btnSave){ @@ -243,7 +241,28 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList System.out.println("Est. End-Date: "+estEndDate); int r = newLendingController.newLending(articleId, pLName, pLSurname, pLSN, startDate, estEndDate, pUsername); + System.out.println("Status: "+r); + + switch (r) { + case 0: + lblStatus.setText("Art-ID "+articleId+" erfolgreich ausgeliehen."); + resetForm(); + break; + case 1: + lblStatus.setText("Fehler bei Ausleihe, SQL-Fehler."); + break; + case 2: + lblStatus.setText("Notwendige Daten sind leer (Art-ID, Start-Date, Est. End-Date)"); + break; + case 3: + lblStatus.setText("Das Rückgabedatum ist früher oder gleich dem Ausleihdatum"); + break; + case 4: + 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; + } } } @@ -263,4 +282,13 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList tfStudentNumber.setText(String.valueOf(result.get(0).getStudentnumber())); } } + + private void resetForm(){ + lblStartDate.setText(""); + lblArticleName.setText(""); + articleId = -1; + tfName.setText(""); + tfSurname.setText(""); + tfStudentNumber.setText(""); + } } diff --git a/src/de/katho/kBorrow/models/LenderModel.java b/src/de/katho/kBorrow/models/LenderModel.java index 92ee575..70623ed 100644 --- a/src/de/katho/kBorrow/models/LenderModel.java +++ b/src/de/katho/kBorrow/models/LenderModel.java @@ -1,7 +1,6 @@ package de.katho.kBorrow.models; import java.util.ArrayList; -import java.util.List; import de.katho.kBorrow.data.KLender; import de.katho.kBorrow.db.DbConnector; @@ -105,16 +104,4 @@ public class LenderModel { return elems; } - - public boolean exists(String pName, String pSurname, String pSN){ - ArrayList elems = getLenders(pName, pSurname, pSN); - - return elems.size() > 0 ? true : false; - } - - public boolean isUnique(String pName, String pSurname, String pSN){ - ArrayList elems = getLenders(pName, pSurname, pSN); - - return elems.size() == 1 ? true : false; - } } diff --git a/src/de/katho/kBorrow/models/UserListModel.java b/src/de/katho/kBorrow/models/UserListModel.java index eba8256..dcb176a 100644 --- a/src/de/katho/kBorrow/models/UserListModel.java +++ b/src/de/katho/kBorrow/models/UserListModel.java @@ -65,6 +65,13 @@ public class UserListModel extends AbstractListModel implements ComboBox return false; } + public int getIdByFullname(String pName){ + for (KUser elem : data){ + if(pName.equals(elem.getName()+" "+elem.getSurname())) return elem.getId(); + } + return -1; + } + }