Advertisement
Guest User

Untitled

a guest
Nov 15th, 2015
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.70 KB | None | 0 0
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package be.thomasmore.scoretracker.controller;
  7.  
  8. import com.itextpdf.text.BaseColor;
  9. import com.itextpdf.text.Document;
  10. import com.itextpdf.text.DocumentException;
  11. import com.itextpdf.text.Element;
  12. import com.itextpdf.text.Font;
  13. import com.itextpdf.text.Paragraph;
  14. import com.itextpdf.text.Phrase;
  15. import com.itextpdf.text.pdf.PdfPCell;
  16. import com.itextpdf.text.pdf.PdfPTable;
  17. import com.itextpdf.text.pdf.PdfWriter;
  18. import be.thomasmore.scoretracker.entity.*;
  19. import java.io.ByteArrayOutputStream;
  20. import java.io.FileNotFoundException;
  21. import java.io.FileOutputStream;
  22. import java.io.FileWriter;
  23. import java.io.IOException;
  24. import java.io.Serializable;
  25. import java.util.ArrayList;
  26. import java.util.List;
  27. import java.util.logging.Level;
  28. import java.util.logging.Logger;
  29. import javax.activation.DataSource;
  30. import javax.annotation.PostConstruct;
  31. import javax.ejb.EJB;
  32. import javax.faces.bean.ManagedBean;
  33. import javax.faces.bean.RequestScoped;
  34. import org.apache.commons.mail.*;
  35. //import sun.jdbc.odbc.ee.DataSource;
  36. //import org.apache.poi.poifs.nio.DataSource;
  37. /**
  38. *
  39. * @author Steffi
  40. */
  41. @ManagedBean(name="pdfController")
  42. public class PdfController implements Serializable{
  43.  
  44. @EJB
  45. private PdfService pdfService;
  46. @EJB
  47. private CourseService courseService;
  48. public PdfService getPdfService() {
  49. return pdfService;
  50. }
  51.  
  52. public void setPdfService(PdfService pdfService) {
  53. this.pdfService = pdfService;
  54. }
  55.  
  56. public void CreatePdf(long studentId){
  57. //Fonts
  58. Font header = new Font(Font.FontFamily.HELVETICA, 18, Font.BOLD);
  59. Font normal = new Font(Font.FontFamily.HELVETICA, 12, Font.NORMAL);
  60.  
  61. //Declaration
  62. Student student = new Student();
  63. List<Course> courses;
  64. List<Exam> exams = null;
  65. Score score;
  66. int totaal = 0; //totaal van een vak berekenen
  67. int maxScore = 0; //max soore van een test
  68. int aantalVakken = 0; //aantal vakken waaraan student heeft deelgenomen
  69. int klasgemiddelde = 0; //hulpvariabele om klasgemiddelde op te vragen
  70. Double totaalGemiddelde = 0.0; //eindpercentage
  71. Double vermenigvuldigfactor = 0.0; //om score op 20 weer te geven
  72. ArrayList<Integer> gemiddeldes = new ArrayList<Integer>(); //gemiddeldes per vak
  73. ArrayList<Integer> gemiddeldesKlas = new ArrayList<Integer>(); //gemiddelde klas per vak
  74.  
  75. PdfPCell cell;
  76.  
  77. //Document
  78. Document document = new Document();
  79.  
  80. //student opvullen
  81. student = pdfService.getStudent(studentId);
  82.  
  83.  
  84. //Tempfix
  85. //student.getClassgroup();
  86.  
  87. //cursussen opvullen
  88. courses = courseService.getWithClassgroup(student.getClassgroup());
  89.  
  90. for(int i = 0; i < courses.size(); i++){
  91. //testen opvullen
  92. exams = pdfService.getExamsByCourse(courses.get(i));
  93. for(int j = 0; j < exams.size(); j++){
  94. score = pdfService.getScoreByExamAndStudent(exams.get(j), student);
  95. //nagaan of de student heeft deelgenomen aan de test
  96. if(score != null){
  97. // score op 20 weergeven
  98. vermenigvuldigfactor = 20 / (double)exams.get(j).getTotal();
  99. totaal += (int)(score.getScore() * vermenigvuldigfactor);
  100. }
  101. //klasgemiddelde voor een vak
  102. klasgemiddelde = pdfService.getAverageScoreByExam(exams.get(j));
  103. gemiddeldesKlas.add(klasgemiddelde);
  104. }
  105. if(exams.size() > 0){
  106. gemiddeldes.add(totaal / exams.size());
  107. totaalGemiddelde += totaal / exams.size();
  108. aantalVakken++;
  109. }
  110. totaal = 0;
  111. exams.clear();
  112. }
  113.  
  114. totaalGemiddelde = totaalGemiddelde / aantalVakken * 5;
  115. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  116. try {
  117. PdfWriter.getInstance(document, outputStream);
  118.  
  119. document.open();
  120. //header
  121. document.add(new Paragraph("Studenten Rapport", header));
  122. document.add(new Paragraph("Student:" + student.getFirstname() + " " + student.getLastname(), normal));
  123. document.add(new Paragraph("Klas:" + student.getClassgroup(), normal));
  124. document.add(new Paragraph("Alle scores worden op 20 weergegeven", normal));
  125.  
  126. //table
  127. PdfPTable table = new PdfPTable(3);
  128.  
  129. //create tableheaders
  130. PdfPCell c1 = new PdfPCell(new Phrase("Vak"));
  131. c1.setHorizontalAlignment(Element.ALIGN_CENTER);
  132. table.addCell(c1);
  133.  
  134. c1 = new PdfPCell(new Phrase("Score"));
  135. c1.setHorizontalAlignment(Element.ALIGN_CENTER);
  136. table.addCell(c1);
  137.  
  138. c1 = new PdfPCell(new Phrase("Gemiddelde"));
  139. c1.setHorizontalAlignment(Element.ALIGN_CENTER);
  140. table.addCell(c1);
  141. table.setHeaderRows(1);
  142.  
  143. for(int i = 0; i < aantalVakken; i++){
  144. cell = new PdfPCell(new Phrase(gemiddeldes.get(i).toString()));
  145. if(gemiddeldes.get(i) < 10){
  146. cell.setBackgroundColor(BaseColor.RED);
  147. }
  148.  
  149. table.addCell(courses.get(i).getName());
  150. table.addCell(cell);
  151. table.addCell(gemiddeldesKlas.get(i).toString());
  152. }
  153.  
  154. document.add(table);
  155.  
  156. //end
  157. document.add(new Paragraph("Totaal behaald percentage:" + totaalGemiddelde, normal));
  158. document.close();
  159.  
  160. } catch (DocumentException e) {
  161. e.printStackTrace();
  162. // } catch (FileNotFoundException e) {
  163. // e.printStackTrace();
  164. }
  165. MultiPartEmail email = new MultiPartEmail();
  166. email.setHostName("smtp.googlemail.com");
  167. email.setSmtpPort(587);
  168. email.setSSLOnConnect(true);
  169. email.setAuthenticator(new DefaultAuthenticator("bitmescoretracker@gmail.com", "bitmeScore"));
  170. try{
  171.  
  172. email.addTo(student.getEmail());
  173. email.setFrom("bitmescoretracker@gmail.com");
  174. email.setSubject("Requested scores , scoretracker");
  175. email.setMsg("Here are the scores you requested!");
  176.  
  177.  
  178. // EmailAttachment attachment = new EmailAttachment();
  179. //attachment.setDescription("PDF met uw punten");
  180. // attachment.setName(student.getFirstname() + " " + student.getLastname() + " scores");
  181. byte[] bytes = outputStream.toByteArray();
  182.  
  183. DataSource source =new javax.mail.util.ByteArrayDataSource(bytes, "application/pdf");
  184. System.out.println("Stuff");
  185.  
  186. /* try{
  187. source = outputStream.write(bytes);
  188. }catch(IOException e){
  189. e.printStackTrace();
  190. }*/
  191. email.attach(source, student.getFirstname() + " " + student.getLastname() + " scores", "stuff");
  192.  
  193.  
  194.  
  195. email.send();
  196. } catch (EmailException ex) {
  197. ex.printStackTrace();
  198. }
  199.  
  200.  
  201. }
  202. public void sendPdf(Student student){
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211. }
  212. public PdfController() {
  213. }
  214.  
  215. @PostConstruct
  216. public void init() {
  217. }
  218. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement