Arbeit an der Implementierung der "NewLending"-Funktionen.

This commit is contained in:
Servicepoint
2014-11-18 17:58:54 +01:00
parent 36dc37fc66
commit f03dd23093
5 changed files with 122 additions and 28 deletions

View File

@@ -1,5 +1,50 @@
package de.katho.kBorrow.controller; 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<String, Object> 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<66>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<KLender> 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;
}
} }

View File

@@ -50,7 +50,6 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener
super(); super();
this.setLayout(null); this.setLayout(null);
articleTableModel = (ArticleTableModel)pModels.get("articlemodel"); articleTableModel = (ArticleTableModel)pModels.get("articlemodel");
articleController = new ArticleController(dbCon, pModels); articleController = new ArticleController(dbCon, pModels);
/* /*

View File

@@ -7,6 +7,9 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.FocusListener; import java.awt.event.FocusListener;
import java.io.IOException; import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Vector; import java.util.Vector;
@@ -26,6 +29,7 @@ import org.jdesktop.swingx.JXDatePicker;
import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator; import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator;
import de.katho.kBorrow.Util; import de.katho.kBorrow.Util;
import de.katho.kBorrow.controller.NewLendingController;
import de.katho.kBorrow.converter.LenderNameConverter; import de.katho.kBorrow.converter.LenderNameConverter;
import de.katho.kBorrow.converter.LenderStudentnumberConverter; import de.katho.kBorrow.converter.LenderStudentnumberConverter;
import de.katho.kBorrow.converter.LenderSurnameConverter; import de.katho.kBorrow.converter.LenderSurnameConverter;
@@ -55,7 +59,9 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList
private LenderModel lenderModel; private LenderModel lenderModel;
private JButton btnCancel; private JButton btnCancel;
private JButton btnSave; private JButton btnSave;
private Object lastFocussedComponent; private NewLendingController newLendingController;
private JComboBox<String> cbUserName;
private JXDatePicker dpEstEndDate;
/** /**
* Create the panel. * Create the panel.
@@ -65,12 +71,12 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList
public NewLendingPanel(final DbConnector dbCon, HashMap<String, Object> pModel) throws IOException { public NewLendingPanel(final DbConnector dbCon, HashMap<String, Object> pModel) throws IOException {
setLayout(null); setLayout(null);
articleId = -1; articleId = -1;
lastFocussedComponent = null;
// FreeArticleTable // FreeArticleTable
freeArticleTableModel = (FreeArticleTableModel)pModel.get("freearticlemodel"); freeArticleTableModel = (FreeArticleTableModel)pModel.get("freearticlemodel");
userListModel = (UserListModel)pModel.get("userlistmodel"); userListModel = (UserListModel)pModel.get("userlistmodel");
lenderModel = (LenderModel)pModel.get("lendermodel"); lenderModel = (LenderModel)pModel.get("lendermodel");
newLendingController = new NewLendingController(dbCon, pModel);
JTable freeArticleTable = new JTable(freeArticleTableModel); JTable freeArticleTable = new JTable(freeArticleTableModel);
freeArticleTable.setRowHeight(30); freeArticleTable.setRowHeight(30);
@@ -126,18 +132,18 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList
lblNewLabel.setBounds(10, 60, 90, 20); lblNewLabel.setBounds(10, 60, 90, 20);
panelNewLending.add(lblNewLabel); panelNewLending.add(lblNewLabel);
JXDatePicker xpicker = new JXDatePicker(new Date()); dpEstEndDate = new JXDatePicker(new Date());
xpicker.setBounds(110, 60, 200, 20); dpEstEndDate.setBounds(110, 60, 200, 20);
panelNewLending.add(xpicker); panelNewLending.add(dpEstEndDate);
JLabel lblBenutzer = new JLabel("Benutzer:"); JLabel lblBenutzer = new JLabel("Benutzer:");
lblBenutzer.setBounds(350, 20, 70, 20); lblBenutzer.setBounds(350, 20, 70, 20);
panelNewLending.add(lblBenutzer); panelNewLending.add(lblBenutzer);
JComboBox<String> comboBox = new JComboBox<String>(userListModel); cbUserName = new JComboBox<String>(userListModel);
comboBox.setBounds(430, 20, 130, 20); cbUserName.setBounds(430, 20, 130, 20);
panelNewLending.add(comboBox); panelNewLending.add(cbUserName);
JSeparator separator = new JSeparator(); JSeparator separator = new JSeparator();
separator.setBounds(10, 90, 569, 2); separator.setBounds(10, 90, 569, 2);
@@ -175,6 +181,7 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList
btnCancel.setBounds(471, 130, 89, 23); btnCancel.setBounds(471, 130, 89, 23);
btnSave.setBounds(471, 160, 89, 23); btnSave.setBounds(471, 160, 89, 23);
btnCancel.addActionListener(this); btnCancel.addActionListener(this);
btnSave.addActionListener(this);
// Tab Traversal Policy // Tab Traversal Policy
Vector<Component> order = new Vector<Component>(); Vector<Component> order = new Vector<Component>();
@@ -217,24 +224,43 @@ public class NewLendingPanel extends JPanel implements ActionListener, FocusList
tfStudentNumber.setText(""); 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 @Override
public void focusGained(FocusEvent pEvent) { 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) { public void focusLost(FocusEvent pEvent) {
KLender result = lenderModel.getLender(tfName.getText(), tfSurname.getText(), tfStudentNumber.getText()); ArrayList<KLender> result = lenderModel.getLenders(tfName.getText(), tfSurname.getText(), tfStudentNumber.getText());
if(result != null){ if(result.size() == 1){
tfName.setText(result.getName()); tfName.setText(result.get(0).getName());
tfSurname.setText(result.getSurname()); tfSurname.setText(result.get(0).getSurname());
tfStudentNumber.setText(String.valueOf(result.getStudentnumber())); tfStudentNumber.setText(String.valueOf(result.get(0).getStudentnumber()));
} }
} }
} }

View File

@@ -1,6 +1,7 @@
package de.katho.kBorrow.models; package de.katho.kBorrow.models;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
import de.katho.kBorrow.data.KLender; import de.katho.kBorrow.data.KLender;
import de.katho.kBorrow.db.DbConnector; import de.katho.kBorrow.db.DbConnector;
@@ -22,11 +23,13 @@ public class LenderModel {
return data; return data;
} }
public KLender getLender(String pName, String pSurname, String pSN){ public ArrayList<KLender> getLenders(String pName, String pSurname, String pSN){
boolean nameEmpty = pName.isEmpty(); boolean nameEmpty = pName.isEmpty();
boolean surnameEmpty = pSurname.isEmpty(); boolean surnameEmpty = pSurname.isEmpty();
boolean snEmpty = pSN.isEmpty(); boolean snEmpty = pSN.isEmpty();
ArrayList<KLender> elems = new ArrayList<KLender>();
int sn; int sn;
if(pSN.matches("[0-9]+")){ if(pSN.matches("[0-9]+")){
sn = Integer.parseInt(pSN); sn = Integer.parseInt(pSN);
} }
@@ -40,31 +43,35 @@ public class LenderModel {
// Alles gegeben // Alles gegeben
for(KLender e : data){ for(KLender e : data){
if(e.getName().equals(pName) && e.getSurname().equals(pSurname) && e.getStudentnumber() == sn){ if(e.getName().equals(pName) && e.getSurname().equals(pSurname) && e.getStudentnumber() == sn){
return e; elems.add(e);
} }
} }
return elems;
} }
//Name und Surname gegeben //Name und Surname gegeben
for(KLender e : data){ for(KLender e : data){
if(e.getName().equals(pName) && e.getSurname().equals(pSurname)){ if(e.getName().equals(pName) && e.getSurname().equals(pSurname)){
return e; elems.add(e);
} }
} }
return elems;
} }
if(!snEmpty){ if(!snEmpty){
// Name und SN gegeben // Name und SN gegeben
for (KLender e : data){ for (KLender e : data){
if(e.getName().equals(pName) && e.getStudentnumber() == sn){ if(e.getName().equals(pName) && e.getStudentnumber() == sn){
return e; elems.add(e);
} }
} }
return elems;
} }
// Nur Name gegeben // Nur Name gegeben
for (KLender e : data){ for (KLender e : data){
if(e.getName().equals(pName)){ if(e.getName().equals(pName)){
return e; elems.add(e);
} }
} }
return elems;
} }
if(!surnameEmpty){ if(!surnameEmpty){
@@ -72,27 +79,42 @@ public class LenderModel {
// Surname und SN gegeben // Surname und SN gegeben
for (KLender e : data){ for (KLender e : data){
if(e.getSurname().equals(pSurname) && e.getStudentnumber() == sn){ if(e.getSurname().equals(pSurname) && e.getStudentnumber() == sn){
return e; elems.add(e);
} }
} }
return elems;
} }
// Nur Surname gegeben // Nur Surname gegeben
for (KLender e : data){ for (KLender e : data){
if(e.getSurname().equals(pSurname)){ if(e.getSurname().equals(pSurname)){
return e; elems.add(e);
} }
} }
return elems;
} }
if(!snEmpty){ if(!snEmpty){
// Nur SN gegeben // Nur SN gegeben
for (KLender e : data){ for (KLender e : data){
if(e.getStudentnumber() == sn){ 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<KLender> elems = getLenders(pName, pSurname, pSN);
return elems.size() > 0 ? true : false;
}
public boolean isUnique(String pName, String pSurname, String pSN){
ArrayList<KLender> elems = getLenders(pName, pSurname, pSN);
return elems.size() == 1 ? true : false;
} }
} }

View File

@@ -64,5 +64,7 @@ public class UserListModel extends AbstractListModel<String> implements ComboBox
} }
return false; return false;
} }
} }