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;
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();
this.setLayout(null);
articleTableModel = (ArticleTableModel)pModels.get("articlemodel");
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.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<String> 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<String, Object> 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<String> comboBox = new JComboBox<String>(userListModel);
comboBox.setBounds(430, 20, 130, 20);
panelNewLending.add(comboBox);
cbUserName = new JComboBox<String>(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<Component> order = new Vector<Component>();
@@ -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<KLender> 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()));
}
}
}

View File

@@ -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<KLender> getLenders(String pName, String pSurname, String pSN){
boolean nameEmpty = pName.isEmpty();
boolean surnameEmpty = pSurname.isEmpty();
boolean snEmpty = pSN.isEmpty();
ArrayList<KLender> elems = new ArrayList<KLender>();
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<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;
}
}