Arbeit an NewLending... Fehler in getFreeArticleList gefunden!

This commit is contained in:
Servicepoint
2014-11-19 18:44:25 +01:00
parent f03dd23093
commit f107ae13a4
7 changed files with 123 additions and 31 deletions

View File

@@ -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<66>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<66>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<KLender> 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;
}
}

View File

@@ -18,5 +18,7 @@ public interface DbConnector {
public int editArticle(int pId, String pName, String pDesc);
public ArrayList<KArticle> getFreeArticleList();
public ArrayList<KLender> getLenderList();
public int createNewLending(int pArtId, int pUId, int pLId, String pStartDate, String pEstEndDate);
public int createNewLender(String pLName, String pLSurname, String pLSN);
}

View File

@@ -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;
}
}

View File

@@ -227,6 +227,7 @@ public class SqliteConnector implements DbConnector {
ArrayList<KArticle> artArr = new ArrayList<KArticle>();
try {
//TODO Diese Funktion gibt auch ausgeliehene Artikel zur<75>ck, wenn es eine fr<66>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;
}
}
}

View File

@@ -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<String> 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<66>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("");
}
}

View File

@@ -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<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

@@ -65,6 +65,13 @@ public class UserListModel extends AbstractListModel<String> 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;
}
}