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