| 1 | package control; | |
| 2 | ||
| 3 | import model.acquisto.AcquistoBean; | |
| 4 | import model.ordine.OrdineBean; | |
| 5 | import model.utente.UtenteBean; | |
| 6 | import org.apache.pdfbox.pdmodel.PDDocument; | |
| 7 | import org.apache.pdfbox.pdmodel.PDPage; | |
| 8 | import org.apache.pdfbox.pdmodel.PDPageContentStream; | |
| 9 | import org.apache.pdfbox.pdmodel.font.PDType1Font; | |
| 10 | ||
| 11 | import javax.servlet.ServletException; | |
| 12 | import javax.servlet.annotation.WebServlet; | |
| 13 | import javax.servlet.http.HttpServlet; | |
| 14 | import javax.servlet.http.HttpServletRequest; | |
| 15 | import javax.servlet.http.HttpServletResponse; | |
| 16 | import java.io.File; | |
| 17 | import java.io.IOException; | |
| 18 | import java.time.LocalDate; | |
| 19 | import java.time.format.DateTimeFormatter; | |
| 20 | import java.time.format.FormatStyle; | |
| 21 | import java.util.Collection; | |
| 22 | import java.util.Map; | |
| 23 | ||
| 24 | @WebServlet("/StampaFattura") | |
| 25 | public class StampaFattura extends HttpServlet { | |
| 26 | ||
| 27 | private static final String FILE_NAME = "fattura.pdf"; | |
| 28 | ||
| 29 | @Override | |
| 30 | protected void doPost(HttpServletRequest req, HttpServletResponse resp) | |
| 31 | throws ServletException, IOException { | |
| 32 | ||
| 33 | final String PATH = req.getServletContext().getRealPath("/pdf/"); | |
| 34 | ||
| 35 | PDDocument document = null; | |
| 36 | PDPageContentStream contentStream = null; | |
| 37 | ||
| 38 | try { | |
| 39 | int idOrdine = Integer.parseInt(req.getParameter("IDOrdine")); | |
| 40 | ||
| 41 | document = PDDocument.load(new File(PATH + FILE_NAME)); | |
| 42 | ||
| 43 | UtenteBean utenteBean = (UtenteBean) req.getSession().getAttribute("utente"); | |
| 44 | Map<OrdineBean, Collection<AcquistoBean>> ordini = | |
| 45 | (Map<OrdineBean, Collection<AcquistoBean>>) req.getSession().getAttribute("ordini"); | |
| 46 | ||
| 47 | Map.Entry<OrdineBean, Collection<AcquistoBean>> result = | |
| 48 | findOrder(ordini, idOrdine); | |
| 49 | ||
| 50 |
1
1. doPost : negated conditional → KILLED |
if (result == null) { |
| 51 | throw new ServletException(); | |
| 52 | } | |
| 53 | ||
| 54 | OrdineBean ordine = result.getKey(); | |
| 55 | Collection<AcquistoBean> acquisti = result.getValue(); | |
| 56 | ||
| 57 | ||
| 58 | PDPage page = document.getPage(0); | |
| 59 | contentStream = new PDPageContentStream( | |
| 60 | document, | |
| 61 | page, | |
| 62 | PDPageContentStream.AppendMode.APPEND, | |
| 63 | true | |
| 64 | ); | |
| 65 | ||
| 66 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::setFont → KILLED |
contentStream.setFont(PDType1Font.HELVETICA, 8); |
| 67 | ||
| 68 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::beginText → KILLED |
contentStream.beginText(); |
| 69 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::newLineAtOffset → KILLED |
contentStream.newLineAtOffset(446.609f, 767.3385f); |
| 70 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::showText → KILLED |
contentStream.showText(utenteBean.getNumCarta()); |
| 71 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::endText → KILLED |
contentStream.endText(); |
| 72 | ||
| 73 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::beginText → KILLED |
contentStream.beginText(); |
| 74 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::newLineAtOffset → KILLED |
contentStream.newLineAtOffset(430.864f, 635.7037f); |
| 75 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::showText → KILLED |
contentStream.showText(LocalDate.now() |
| 76 | .format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT))); | |
| 77 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::endText → KILLED |
contentStream.endText(); |
| 78 | ||
| 79 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::beginText → KILLED |
contentStream.beginText(); |
| 80 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::newLineAtOffset → KILLED |
contentStream.newLineAtOffset(430.864f, 618.963f); |
| 81 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::showText → KILLED |
contentStream.showText(ordine.getDataOrdine() |
| 82 | .format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT))); | |
| 83 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::endText → KILLED |
contentStream.endText(); |
| 84 | ||
| 85 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::beginText → KILLED |
contentStream.beginText(); |
| 86 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::newLineAtOffset → KILLED |
contentStream.newLineAtOffset(46.6203f, 642.2537f); |
| 87 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::showText → KILLED |
contentStream.showText(utenteBean.getNome()); |
| 88 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::endText → KILLED |
contentStream.endText(); |
| 89 | ||
| 90 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::beginText → KILLED |
contentStream.beginText(); |
| 91 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::newLineAtOffset → KILLED |
contentStream.newLineAtOffset(46.6203f, 631.2537f); |
| 92 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::showText → KILLED |
contentStream.showText(utenteBean.getCognome()); |
| 93 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::endText → KILLED |
contentStream.endText(); |
| 94 | ||
| 95 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::beginText → KILLED |
contentStream.beginText(); |
| 96 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::newLineAtOffset → KILLED |
contentStream.newLineAtOffset(46.6203f, 620.2537f); |
| 97 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::showText → KILLED |
contentStream.showText(utenteBean.getVia() + " " + utenteBean.getCap()); |
| 98 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::endText → KILLED |
contentStream.endText(); |
| 99 | ||
| 100 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::beginText → KILLED |
contentStream.beginText(); |
| 101 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::newLineAtOffset → KILLED |
contentStream.newLineAtOffset(46.6203f, 609.2537f); |
| 102 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::showText → KILLED |
contentStream.showText(utenteBean.getCitta()); |
| 103 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::endText → KILLED |
contentStream.endText(); |
| 104 | ||
| 105 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::beginText → KILLED |
contentStream.beginText(); |
| 106 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::newLineAtOffset → KILLED |
contentStream.newLineAtOffset(405.1517f, 591.2341f); |
| 107 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::showText → KILLED |
contentStream.showText(ordine.getPrezzoTotale() + " euro"); |
| 108 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::endText → KILLED |
contentStream.endText(); |
| 109 | ||
| 110 | float coord = 448.0316f; | |
| 111 | ||
| 112 | for (AcquistoBean a : acquisti) { | |
| 113 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::beginText → KILLED |
contentStream.beginText(); |
| 114 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::newLineAtOffset → KILLED |
contentStream.newLineAtOffset(92.7409f, coord); |
| 115 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::showText → KILLED |
contentStream.showText(String.valueOf(a.getIDMaglietta())); |
| 116 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::endText → KILLED |
contentStream.endText(); |
| 117 | ||
| 118 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::beginText → KILLED |
contentStream.beginText(); |
| 119 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::newLineAtOffset → KILLED |
contentStream.newLineAtOffset(288.2813f, coord); |
| 120 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::showText → KILLED |
contentStream.showText(String.valueOf(a.getQuantita())); |
| 121 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::endText → KILLED |
contentStream.endText(); |
| 122 | ||
| 123 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::beginText → KILLED |
contentStream.beginText(); |
| 124 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::newLineAtOffset → KILLED |
contentStream.newLineAtOffset(344.4793f, coord); |
| 125 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::showText → KILLED |
contentStream.showText(a.getPrezzoAq() + " euro"); |
| 126 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::endText → KILLED |
contentStream.endText(); |
| 127 | ||
| 128 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::beginText → KILLED |
contentStream.beginText(); |
| 129 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::newLineAtOffset → KILLED |
contentStream.newLineAtOffset(515.6068f, coord); |
| 130 |
2
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::showText → KILLED 2. doPost : Replaced float multiplication with division → KILLED |
contentStream.showText((a.getPrezzoAq() * a.getQuantita()) + " euro"); |
| 131 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::endText → KILLED |
contentStream.endText(); |
| 132 | ||
| 133 |
1
1. doPost : Replaced float subtraction with addition → KILLED |
coord -= 15; |
| 134 | } | |
| 135 | ||
| 136 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::close → KILLED |
contentStream.close(); |
| 137 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDDocument::save → KILLED |
document.save(new File(PATH + "output.pdf")); |
| 138 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDDocument::close → KILLED |
document.close(); |
| 139 | ||
| 140 |
1
1. doPost : removed call to javax/servlet/http/HttpServletResponse::setContentType → KILLED |
resp.setContentType("application/pdf"); |
| 141 |
1
1. doPost : removed call to javax/servlet/http/HttpServletResponse::setCharacterEncoding → KILLED |
resp.setCharacterEncoding("UTF-8"); |
| 142 |
1
1. doPost : removed call to javax/servlet/http/HttpServletResponse::setHeader → KILLED |
resp.setHeader("Content-Disposition", "attachment; filename=output.pdf"); |
| 143 |
1
1. doPost : removed call to javax/servlet/http/HttpServletResponse::sendRedirect → KILLED |
resp.sendRedirect("pdf/output.pdf"); |
| 144 | ||
| 145 | } catch (NumberFormatException | IOException | ServletException e) { | |
| 146 |
1
1. doPost : negated conditional → KILLED |
if (contentStream != null) { |
| 147 | try { | |
| 148 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDPageContentStream::close → KILLED |
contentStream.close(); |
| 149 | } catch (IOException ignored) { | |
| 150 | // Ignored | |
| 151 | } | |
| 152 | } | |
| 153 |
1
1. doPost : negated conditional → KILLED |
if (document != null) { |
| 154 | try { | |
| 155 |
1
1. doPost : removed call to org/apache/pdfbox/pdmodel/PDDocument::close → KILLED |
document.close(); |
| 156 | } catch (IOException ignored) { | |
| 157 | // Ignored | |
| 158 | } | |
| 159 | } | |
| 160 |
1
1. doPost : removed call to javax/servlet/RequestDispatcher::forward → KILLED |
req.getRequestDispatcher("/pages/errorpage.jsp").forward(req, resp); |
| 161 | } | |
| 162 | } | |
| 163 | ||
| 164 | @Override | |
| 165 | protected void doGet(HttpServletRequest req, HttpServletResponse resp) | |
| 166 | throws ServletException, IOException { | |
| 167 |
1
1. doGet : removed call to control/StampaFattura::doPost → KILLED |
doPost(req, resp); |
| 168 | } | |
| 169 | ||
| 170 | private Map.Entry<OrdineBean, Collection<AcquistoBean>> findOrder( | |
| 171 | Map<OrdineBean, Collection<AcquistoBean>> ordini, | |
| 172 | int idOrdine) { | |
| 173 | ||
| 174 | for (Map.Entry<OrdineBean, Collection<AcquistoBean>> entry : ordini.entrySet()) { | |
| 175 |
1
1. findOrder : negated conditional → KILLED |
if (entry.getKey().getID() == idOrdine) { |
| 176 |
1
1. findOrder : replaced return value with null for control/StampaFattura::findOrder → KILLED |
return entry; |
| 177 | } | |
| 178 | } | |
| 179 | return null; | |
| 180 | } | |
| 181 | ||
| 182 | } | |
Mutations | ||
| 50 |
1.1 |
|
| 66 |
1.1 |
|
| 68 |
1.1 |
|
| 69 |
1.1 |
|
| 70 |
1.1 |
|
| 71 |
1.1 |
|
| 73 |
1.1 |
|
| 74 |
1.1 |
|
| 75 |
1.1 |
|
| 77 |
1.1 |
|
| 79 |
1.1 |
|
| 80 |
1.1 |
|
| 81 |
1.1 |
|
| 83 |
1.1 |
|
| 85 |
1.1 |
|
| 86 |
1.1 |
|
| 87 |
1.1 |
|
| 88 |
1.1 |
|
| 90 |
1.1 |
|
| 91 |
1.1 |
|
| 92 |
1.1 |
|
| 93 |
1.1 |
|
| 95 |
1.1 |
|
| 96 |
1.1 |
|
| 97 |
1.1 |
|
| 98 |
1.1 |
|
| 100 |
1.1 |
|
| 101 |
1.1 |
|
| 102 |
1.1 |
|
| 103 |
1.1 |
|
| 105 |
1.1 |
|
| 106 |
1.1 |
|
| 107 |
1.1 |
|
| 108 |
1.1 |
|
| 113 |
1.1 |
|
| 114 |
1.1 |
|
| 115 |
1.1 |
|
| 116 |
1.1 |
|
| 118 |
1.1 |
|
| 119 |
1.1 |
|
| 120 |
1.1 |
|
| 121 |
1.1 |
|
| 123 |
1.1 |
|
| 124 |
1.1 |
|
| 125 |
1.1 |
|
| 126 |
1.1 |
|
| 128 |
1.1 |
|
| 129 |
1.1 |
|
| 130 |
1.1 2.2 |
|
| 131 |
1.1 |
|
| 133 |
1.1 |
|
| 136 |
1.1 |
|
| 137 |
1.1 |
|
| 138 |
1.1 |
|
| 140 |
1.1 |
|
| 141 |
1.1 |
|
| 142 |
1.1 |
|
| 143 |
1.1 |
|
| 146 |
1.1 |
|
| 148 |
1.1 |
|
| 153 |
1.1 |
|
| 155 |
1.1 |
|
| 160 |
1.1 |
|
| 167 |
1.1 |
|
| 175 |
1.1 |
|
| 176 |
1.1 |