diff --git a/src/de/katho/kBorrow/controller/NewLendingController.java b/src/de/katho/kBorrow/controller/NewLendingController.java index ebd1754..b838772 100644 --- a/src/de/katho/kBorrow/controller/NewLendingController.java +++ b/src/de/katho/kBorrow/controller/NewLendingController.java @@ -1,5 +1,50 @@ package de.katho.kBorrow.controller; -public class NewLendingController { +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +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.UserListModel; + +public class NewLendingController { + private DbConnector dbCon; + private UserListModel userListModel; + private LenderModel lenderModel; + private FreeArticleTableModel freeArticleModel; + + public NewLendingController(DbConnector pDbCon, HashMap pModels){ + dbCon = pDbCon; + userListModel = (UserListModel)pModels.get("userlistmodel"); + lenderModel = (LenderModel)pModels.get("lendermodel"); + freeArticleModel = (FreeArticleTableModel)pModels.get("freearticlemodel"); + } + + /** + * + * @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 + * 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; + + ArrayList lenders = lenderModel.getLenders(pLName, pLSurname, pLSN); + if(lenders.size() == 0) { + // Lender existiert noch nicht + } + else if(lenders.size() == 1){ + // Lender existiert bereits + } + else return 3; + + return 0; + } } diff --git a/src/de/katho/kBorrow/gui/ArticlePanel.java b/src/de/katho/kBorrow/gui/ArticlePanel.java index 156551c..93bee4f 100644 --- a/src/de/katho/kBorrow/gui/ArticlePanel.java +++ b/src/de/katho/kBorrow/gui/ArticlePanel.java @@ -50,7 +50,6 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener super(); this.setLayout(null); articleTableModel = (ArticleTableModel)pModels.get("articlemodel"); - articleController = new ArticleController(dbCon, pModels); /* diff --git a/src/de/katho/kBorrow/gui/NewLendingPanel.java b/src/de/katho/kBorrow/gui/NewLendingPanel.java index f1bc27f..89f6692 100644 --- a/src/de/katho/kBorrow/gui/NewLendingPanel.java +++ b/src/de/katho/kBorrow/gui/NewLendingPanel.java @@ -7,6 +7,9 @@ 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; import java.util.Vector; @@ -26,6 +29,7 @@ import org.jdesktop.swingx.JXDatePicker; import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator; import de.katho.kBorrow.Util; +import de.katho.kBorrow.controller.NewLendingController; import de.katho.kBorrow.converter.LenderNameConverter; import de.katho.kBorrow.converter.LenderStudentnumberConverter; import de.katho.kBorrow.converter.LenderSurnameConverter; @@ -55,7 +59,9 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList private LenderModel lenderModel; private JButton btnCancel; private JButton btnSave; - private Object lastFocussedComponent; + private NewLendingController newLendingController; + private JComboBox cbUserName; + private JXDatePicker dpEstEndDate; /** * Create the panel. @@ -65,12 +71,12 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList public NewLendingPanel(final DbConnector dbCon, HashMap pModel) throws IOException { setLayout(null); articleId = -1; - lastFocussedComponent = null; // FreeArticleTable freeArticleTableModel = (FreeArticleTableModel)pModel.get("freearticlemodel"); userListModel = (UserListModel)pModel.get("userlistmodel"); lenderModel = (LenderModel)pModel.get("lendermodel"); + newLendingController = new NewLendingController(dbCon, pModel); JTable freeArticleTable = new JTable(freeArticleTableModel); freeArticleTable.setRowHeight(30); @@ -126,18 +132,18 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList lblNewLabel.setBounds(10, 60, 90, 20); panelNewLending.add(lblNewLabel); - JXDatePicker xpicker = new JXDatePicker(new Date()); - xpicker.setBounds(110, 60, 200, 20); - panelNewLending.add(xpicker); + dpEstEndDate = new JXDatePicker(new Date()); + dpEstEndDate.setBounds(110, 60, 200, 20); + panelNewLending.add(dpEstEndDate); JLabel lblBenutzer = new JLabel("Benutzer:"); lblBenutzer.setBounds(350, 20, 70, 20); panelNewLending.add(lblBenutzer); - JComboBox comboBox = new JComboBox(userListModel); - comboBox.setBounds(430, 20, 130, 20); - panelNewLending.add(comboBox); + cbUserName = new JComboBox(userListModel); + cbUserName.setBounds(430, 20, 130, 20); + panelNewLending.add(cbUserName); JSeparator separator = new JSeparator(); separator.setBounds(10, 90, 569, 2); @@ -175,6 +181,7 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList btnCancel.setBounds(471, 130, 89, 23); btnSave.setBounds(471, 160, 89, 23); btnCancel.addActionListener(this); + btnSave.addActionListener(this); // Tab Traversal Policy Vector order = new Vector(); @@ -217,24 +224,43 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList tfStudentNumber.setText(""); } + if(pEvent.getSource() == btnSave){ + String pLName = tfName.getText(); + String pLSurname = tfSurname.getText(); + String startDate = lblStartDate.getText(); + Date estEndDate = dpEstEndDate.getDate(); + String pLSN = tfStudentNumber.getText(); + String pUsername = userListModel.getSelectedItem(); + + System.out.println("Art-ID: "+articleId); + System.out.println("------------------"); + System.out.println("Lender-Name: "+pLName); + System.out.println("Lender-Surname: "+pLSurname); + System.out.println("Lender-SN: "+pLSN); + System.out.println("------------------"); + System.out.println("User-Name: "+pUsername); + System.out.println("Start-Date: "+startDate); + System.out.println("Est. End-Date: "+estEndDate); + + int r = newLendingController.newLending(articleId, pLName, pLSurname, pLSN, startDate, estEndDate, pUsername); + System.out.println("Status: "+r); + } + } @Override public void focusGained(FocusEvent pEvent) { - if(pEvent.getSource() == tfName) System.out.println("tfName got focus"); - if(pEvent.getSource() == tfSurname) System.out.println("tfSurname got focus"); - if(pEvent.getSource() == tfStudentNumber) System.out.println("tfStudentNumber got focus"); - + } public void focusLost(FocusEvent pEvent) { - KLender result = lenderModel.getLender(tfName.getText(), tfSurname.getText(), tfStudentNumber.getText()); + ArrayList result = lenderModel.getLenders(tfName.getText(), tfSurname.getText(), tfStudentNumber.getText()); - if(result != null){ - tfName.setText(result.getName()); - tfSurname.setText(result.getSurname()); - tfStudentNumber.setText(String.valueOf(result.getStudentnumber())); + if(result.size() == 1){ + tfName.setText(result.get(0).getName()); + tfSurname.setText(result.get(0).getSurname()); + tfStudentNumber.setText(String.valueOf(result.get(0).getStudentnumber())); } } } diff --git a/src/de/katho/kBorrow/models/LenderModel.java b/src/de/katho/kBorrow/models/LenderModel.java index 8b07b8b..92ee575 100644 --- a/src/de/katho/kBorrow/models/LenderModel.java +++ b/src/de/katho/kBorrow/models/LenderModel.java @@ -1,6 +1,7 @@ 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; @@ -22,11 +23,13 @@ public class LenderModel { return data; } - public KLender getLender(String pName, String pSurname, String pSN){ + public ArrayList getLenders(String pName, String pSurname, String pSN){ boolean nameEmpty = pName.isEmpty(); boolean surnameEmpty = pSurname.isEmpty(); boolean snEmpty = pSN.isEmpty(); + ArrayList elems = new ArrayList(); int sn; + if(pSN.matches("[0-9]+")){ sn = Integer.parseInt(pSN); } @@ -40,31 +43,35 @@ public class LenderModel { // Alles gegeben for(KLender e : data){ if(e.getName().equals(pName) && e.getSurname().equals(pSurname) && e.getStudentnumber() == sn){ - return e; + elems.add(e); } } + return elems; } //Name und Surname gegeben for(KLender e : data){ if(e.getName().equals(pName) && e.getSurname().equals(pSurname)){ - return e; + elems.add(e); } } + return elems; } if(!snEmpty){ // Name und SN gegeben for (KLender e : data){ if(e.getName().equals(pName) && e.getStudentnumber() == sn){ - return e; + elems.add(e); } } + return elems; } // Nur Name gegeben for (KLender e : data){ if(e.getName().equals(pName)){ - return e; + elems.add(e); } } + return elems; } if(!surnameEmpty){ @@ -72,27 +79,42 @@ public class LenderModel { // Surname und SN gegeben for (KLender e : data){ if(e.getSurname().equals(pSurname) && e.getStudentnumber() == sn){ - return e; + elems.add(e); } } + return elems; } // Nur Surname gegeben for (KLender e : data){ if(e.getSurname().equals(pSurname)){ - return e; + elems.add(e); } } + return elems; } if(!snEmpty){ // Nur SN gegeben for (KLender e : data){ if(e.getStudentnumber() == sn){ - return e; + elems.add(e); } } + return elems; } - return null; + 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 fb197f6..eba8256 100644 --- a/src/de/katho/kBorrow/models/UserListModel.java +++ b/src/de/katho/kBorrow/models/UserListModel.java @@ -64,5 +64,7 @@ public class UserListModel extends AbstractListModel implements ComboBox } return false; } + + }