diff --git a/.classpath b/.classpath
index 814eb33..0f1109b 100644
--- a/.classpath
+++ b/.classpath
@@ -6,5 +6,6 @@
+
diff --git a/README.md b/README.md
index ed68b3f..dc5fe2b 100644
--- a/README.md
+++ b/README.md
@@ -12,4 +12,7 @@ This software uses the Oracle MySQL Java Connector (http://dev.mysql.com/downloa
### Tango Desktop Project
This software also uses icons provided by the Tango Desktop Project (http://tango.freedesktop.org/).
-License will follow!
\ No newline at end of file
+License will follow!
+
+### Apache PDFBox
+This software uses the Apache PDFBox (https://pdfbox.apache.org/) package which is published under Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0);
\ No newline at end of file
diff --git a/lib/pdfbox-app-1.8.7.jar b/lib/pdfbox-app-1.8.7.jar
new file mode 100644
index 0000000..aa4b684
Binary files /dev/null and b/lib/pdfbox-app-1.8.7.jar differ
diff --git a/src/de/katho/kBorrow/controller/NewLendingController.java b/src/de/katho/kBorrow/controller/NewLendingController.java
index 7899dae..4d9113c 100644
--- a/src/de/katho/kBorrow/controller/NewLendingController.java
+++ b/src/de/katho/kBorrow/controller/NewLendingController.java
@@ -1,12 +1,23 @@
package de.katho.kBorrow.controller;
+import org.apache.pdfbox.exceptions.COSVisitorException;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
+import org.apache.pdfbox.pdmodel.font.PDFont;
+import org.apache.pdfbox.pdmodel.font.PDType1Font;
+
+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 de.katho.kBorrow.data.KArticle;
import de.katho.kBorrow.data.KLender;
+import de.katho.kBorrow.data.KLending;
+import de.katho.kBorrow.data.KUser;
import de.katho.kBorrow.db.DbConnector;
import de.katho.kBorrow.models.ArticleTableModel;
import de.katho.kBorrow.models.FreeArticleTableModel;
@@ -62,16 +73,51 @@ public class NewLendingController {
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){
+ int[] result = dbCon.createNewLending(pArtId, uId, lender.getId(), pStartDate, dateFormat.format(pEstEndDate));
+
+ if(result[0] == 0){
freeArticleModel.updateModel();
articleTableModel.updateModel();
lendingTableModel.updateModel();
- return result;
+ createPdfFile(result[1]);
+
+ return result[0];
}
- else return result;
+ else return result[0];
}
return 4;
}
+
+
+ // TODO http://www.coderanch.com/how-to/java/PDFBoxExample
+ private void createPdfFile(int pLendingId){
+ KLending lending = lendingTableModel.getLendingById(pLendingId);
+ KArticle article = articleTableModel.getArticleById(lending.getArticleId());
+ KUser user = userListModel.getUserById(lending.getUserId());
+ KLender lender = lenderModel.getLenderById(lending.getLenderId());
+
+ PDDocument doc = new PDDocument();
+ PDPage page = new PDPage();
+ doc.addPage(page);
+
+ PDFont font = PDType1Font.HELVETICA;
+ try {
+ PDPageContentStream contentStream = new PDPageContentStream(doc, page);
+ contentStream.beginText();
+ contentStream.setFont(font, 12);
+ contentStream.moveTextPositionByAmount(100, 700);
+ contentStream.drawString("hallo");
+ contentStream.drawString("hallo2");
+ contentStream.endText();
+ contentStream.close();
+
+ doc.save("test.pdf");
+ doc.close();
+ } catch (IOException | COSVisitorException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ }
}
diff --git a/src/de/katho/kBorrow/db/DbConnector.java b/src/de/katho/kBorrow/db/DbConnector.java
index 88b621c..02cf7f1 100644
--- a/src/de/katho/kBorrow/db/DbConnector.java
+++ b/src/de/katho/kBorrow/db/DbConnector.java
@@ -19,7 +19,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[] createNewLending(int pArtId, int pUId, int pLId, String pStartDate, String pEstEndDate);
public int createNewLender(String pLName, String pLSurname, String pLSN);
public ArrayList getActiveLendingList();
public int returnLending(int lendingId, int artId, String string);
diff --git a/src/de/katho/kBorrow/db/SqlConnector.java b/src/de/katho/kBorrow/db/SqlConnector.java
index 92265bd..244bd3e 100644
--- a/src/de/katho/kBorrow/db/SqlConnector.java
+++ b/src/de/katho/kBorrow/db/SqlConnector.java
@@ -75,10 +75,10 @@ public class SqlConnector implements DbConnector{
}
@Override
- public int createNewLending(int pArtId, int pUId, int pLId,
+ public int[] createNewLending(int pArtId, int pUId, int pLId,
String pStartDate, String pEstEndDate) {
// TODO Auto-generated method stub
- return 0;
+ return new int[2];
}
@Override
diff --git a/src/de/katho/kBorrow/db/SqliteConnector.java b/src/de/katho/kBorrow/db/SqliteConnector.java
index 6c1ceb3..0aa642e 100644
--- a/src/de/katho/kBorrow/db/SqliteConnector.java
+++ b/src/de/katho/kBorrow/db/SqliteConnector.java
@@ -430,25 +430,40 @@ public class SqliteConnector implements DbConnector {
}
/**
+ * Erstellt eine neue Ausleihe.
*
- * @return Status-Code:
- * 0: Erfolg
- * 1: SQL-Fehler
+ *
+ * @return Rückgabewert ist ein Array mit zwei Werten.
+ *
+ * Index 0: Enthält den Rückgabestatus:
+ * - Status 0: Alles in Ordnung
+ * - Status 1: SQL-Fehler
+ *
+ * Index 1: Enthält die ID der gerade erzeugten Tabellenzeile
*/
- public int createNewLending(int pArtId, int pUId, int pLId, String pStartDate, String pEstEndDate) {
+ public int[] createNewLending(int pArtId, int pUId, int pLId, String pStartDate, String pEstEndDate) {
+ int[] result = new int[2];
+
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+"');"
+ + "VALUES ("+pArtId+", "+pUId+", "+pLId+", '"+pStartDate+"', '"+pEstEndDate+"');"
+ "UPDATE article SET is_free = 0 WHERE id = "+pArtId+";";
st.executeUpdate(query);
- return 0;
+ query = "SELECT id FROM lending ORDER BY id DESC LIMIT 1;";
+
+ ResultSet rs = st.executeQuery(query);
+
+ result[1] = rs.getInt("id");
+ result[0] = 0;
+
+ return result;
}
catch(SQLException e){
e.printStackTrace();
- return 1;
+ return new int[]{1,0};
}
}
diff --git a/src/de/katho/kBorrow/models/UserListModel.java b/src/de/katho/kBorrow/models/UserListModel.java
index 7ada299..0e7a5cf 100644
--- a/src/de/katho/kBorrow/models/UserListModel.java
+++ b/src/de/katho/kBorrow/models/UserListModel.java
@@ -72,6 +72,13 @@ public class UserListModel extends AbstractListModel implements ComboBox
return -1;
}
+ public KUser getUserById(int pId){
+ for (KUser elem : data){
+ if(elem.getId() == pId) return elem;
+ }
+ return null;
+ }
+
}