Rev 1993 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1830 | jmachado | 1 | package pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components; |
2 | |||
1993 | grupo5 | 3 | //import pt.estgp.estgweb.utils.documentBuilder.AutoImageWraperComponent; |
1830 | jmachado | 4 | |
1993 | grupo5 | 5 | import jomm.utils.BytesUtils; |
6 | import jomm.utils.MimeTypeGuesser; |
||
7 | import org.apache.log4j.Category; |
||
8 | import org.jfree.chart.ChartFactory; |
||
9 | import org.jfree.chart.ChartFrame; |
||
10 | import org.jfree.chart.JFreeChart; |
||
11 | import org.jfree.chart.axis.NumberAxis; |
||
12 | import org.jfree.chart.axis.ValueAxis; |
||
13 | import org.jfree.chart.plot.CategoryPlot; |
||
1995 | grupo5 | 14 | import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; |
1993 | grupo5 | 15 | import org.jfree.chart.plot.PiePlot; |
16 | import org.jfree.chart.plot.PlotOrientation; |
||
17 | import org.jfree.chart.plot.RingPlot; |
||
18 | import org.jfree.data.category.DefaultCategoryDataset; |
||
19 | import org.jfree.data.general.DefaultPieDataset; |
||
1995 | grupo5 | 20 | import org.jfree.ui.RectangleInsets; |
1993 | grupo5 | 21 | import pt.estgp.estgweb.services.courses.coursereport.documentmodel.CourseReportDocument; |
22 | import pt.estgp.estgweb.utils.Globals; |
||
23 | import pt.estgp.estgweb.utils.documentBuilder.ImageComponent; |
||
24 | import pt.estgp.estgweb.web.controllers.utils.FileUploaded; |
||
25 | |||
26 | import javax.imageio.ImageIO; |
||
27 | import java.awt.*; |
||
28 | import java.awt.image.BufferedImage; |
||
1995 | grupo5 | 29 | import java.text.DecimalFormat; |
1993 | grupo5 | 30 | import java.io.FileOutputStream; |
31 | import java.io.IOException; |
||
1995 | grupo5 | 32 | import java.util.List; |
1993 | grupo5 | 33 | |
1830 | jmachado | 34 | /** |
35 | * Created by jorgemachado on 31/10/17. |
||
36 | */ |
||
1993 | grupo5 | 37 | public class LearningResultsChartSem extends ImageComponent |
1830 | jmachado | 38 | { |
39 | 1.5.0/docs/api/java/lang/String.html">String semesterCode; |
||
40 | |||
41 | |||
42 | public LearningResultsChartSem() { |
||
43 | } |
||
44 | |||
45 | public LearningResultsChartSem(1.5.0/docs/api/java/lang/String.html">String semesterCode) { |
||
46 | this.semesterCode = semesterCode; |
||
47 | } |
||
48 | |||
49 | public 1.5.0/docs/api/java/lang/String.html">String getSemesterCode() { |
||
50 | return semesterCode; |
||
51 | } |
||
52 | |||
53 | public void setSemesterCode(1.5.0/docs/api/java/lang/String.html">String semesterCode) { |
||
54 | this.semesterCode = semesterCode; |
||
55 | } |
||
1993 | grupo5 | 56 | |
57 | public FileUploaded generateChart2tmp(UnitsLearningResultsTable results,CourseReportDocument courseReportDocument) throws 1.5.0/docs/api/java/io/IOException.html">IOException |
||
58 | { |
||
59 | |||
1995 | grupo5 | 60 | 5+0%2Fdocs%2Fapi+List">List <UnitsLearningResultYear> years = results.getYears(); |
61 | List<UnitsLearningResultSemester> semester = years.get(0).semesters; |
||
62 | List<UnitsLearningResultUc> uc; |
||
63 | |||
1993 | grupo5 | 64 | DefaultCategoryDataset data = new DefaultCategoryDataset(); |
1995 | grupo5 | 65 | |
66 | // Ano que não consta no Plano |
||
67 | uc = semester.get(0).ucs; |
||
68 | for(int k = 0; k < uc.size(); k++) |
||
1993 | grupo5 | 69 | { |
1995 | grupo5 | 70 | data.setValue(new 1.5.0/docs/api/java/lang/Double.html">Double(uc.get(k).getAprovadosPercent()), "Aprovados " , uc.get(k).getName()); |
71 | data.setValue(new 1.5.0/docs/api/java/lang/Double.html">Double(uc.get(k).getSemElementosPercent()), "SemElementos " , uc.get(k).getName()); |
||
72 | data.setValue(new 1.5.0/docs/api/java/lang/Double.html">Double(uc.get(k).getReprovadosPercent()), "Reprovados " , uc.get(k).getName()); |
||
73 | } |
||
74 | uc = semester.get(1).ucs; |
||
75 | for(int k = 0; k < uc.size(); k++) |
||
76 | { |
||
77 | data.setValue(new 1.5.0/docs/api/java/lang/Double.html">Double(uc.get(k).getAprovadosPercent()), "Aprovados " , uc.get(k).getName()); |
||
78 | data.setValue(new 1.5.0/docs/api/java/lang/Double.html">Double(uc.get(k).getSemElementosPercent()), "SemElementos " , uc.get(k).getName()); |
||
79 | data.setValue(new 1.5.0/docs/api/java/lang/Double.html">Double(uc.get(k).getReprovadosPercent()), "Reprovados " , uc.get(k).getName()); |
||
80 | } |
||
1993 | grupo5 | 81 | |
82 | |||
1995 | grupo5 | 83 | for(int i = 1; i < 6; i++) //Years(between 1 and 5) |
84 | { |
||
85 | for(int j = 0; j < years.size(); j++) //Years existent on array (between 0 and X) |
||
86 | { |
||
87 | if(results.years.get(j).getAno() == i) |
||
88 | { |
||
89 | semester = years.get(j).semesters; |
||
90 | |||
91 | for(int h = 0; h < semester.size(); h++) //Semesters (between 1 and 2) |
||
92 | { |
||
93 | uc = semester.get(h).ucs; |
||
94 | |||
95 | for(int k = 0; k < uc.size(); k++) |
||
96 | { |
||
97 | data.setValue(new 1.5.0/docs/api/java/lang/Double.html">Double(uc.get(k).getAprovadosPercent()), "Aprovados " , uc.get(k).getName()); |
||
98 | data.setValue(new 1.5.0/docs/api/java/lang/Double.html">Double(uc.get(k).getSemElementosPercent()), "SemElementos " , uc.get(k).getName()); |
||
99 | data.setValue(new 1.5.0/docs/api/java/lang/Double.html">Double(uc.get(k).getReprovadosPercent()), "Reprovados " , uc.get(k).getName()); |
||
100 | } |
||
101 | } |
||
102 | } |
||
103 | } |
||
1993 | grupo5 | 104 | } |
1995 | grupo5 | 105 | |
1993 | grupo5 | 106 | 1.5.0/docs/api/java/lang/String.html">String tempName = BytesUtils.generateHexKey() + ".png"; |
107 | |||
1995 | grupo5 | 108 | JFreeChart chart = ChartFactory.createStackedBarChart(null, null,null,data, PlotOrientation.HORIZONTAL, true,true,false); |
1993 | grupo5 | 109 | |
1995 | grupo5 | 110 | RectangleInsets rectangleInsets = new RectangleInsets(0,0,30F,0); |
111 | chart.setPadding(rectangleInsets); |
||
112 | |||
1993 | grupo5 | 113 | chart.setBackgroundPaint(new 1.5.0/docs/api/java/awt/Color.html">Color(255, 231, 242)); |
114 | |||
115 | CategoryPlot plot = chart.getCategoryPlot(); |
||
116 | |||
117 | plot.setRangeGridlinePaint(1.5.0/docs/api/java/awt/Color.html">Color.black); |
||
118 | |||
119 | |||
120 | plot.getDomainAxis().setTickLabelFont(new 1.5.0/docs/api/java/awt/Font.html">Font("Helvetica", 1.5.0/docs/api/java/awt/Font.html">Font.PLAIN, 25)); |
||
121 | |||
1995 | grupo5 | 122 | |
123 | plot.getRenderer().setSeriesPaint(0, new 1.5.0/docs/api/java/awt/Color.html">Color(0, 255, 0)); |
||
124 | plot.getRenderer().setSeriesPaint(1, new 1.5.0/docs/api/java/awt/Color.html">Color(200, 200, 200)); |
||
125 | plot.getRenderer().setSeriesPaint(2, new 1.5.0/docs/api/java/awt/Color.html">Color(255, 0, 0)); |
||
1993 | grupo5 | 126 | plot.setBackgroundPaint(new 1.5.0/docs/api/java/awt/Color.html">Color(249, 231, 236)); |
127 | |||
1995 | grupo5 | 128 | plot.getRenderer().setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", new 1.5.0/docs/api/java/text/DecimalFormat.html">DecimalFormat("#.#'%'"))); |
129 | plot.getRenderer().setBaseItemLabelsVisible(true); |
||
130 | plot.getRenderer().setBaseItemLabelFont(new 1.5.0/docs/api/java/awt/Font.html">Font("Helvetica",1.5.0/docs/api/java/awt/Font.html">Font.PLAIN,35)); |
||
131 | chart.getLegend().setItemFont(new 1.5.0/docs/api/java/awt/Font.html">Font("Helvetica",1.5.0/docs/api/java/awt/Font.html">Font.PLAIN,25)); //Letra Legenda |
||
132 | |||
133 | 1.5.0/docs/api/java/awt/image/BufferedImage.html">BufferedImage image = chart.createBufferedImage( 300*4, 200*4); |
||
1993 | grupo5 | 134 | 1.5.0/docs/api/java/lang/String.html">String pathGraficoTiposAlunos = Globals.TMP_DIR + java.io.1.5.0/docs/api/java/io/File.html">File.separator + tempName; |
135 | java.io.1.5.0/docs/api/java/io/File.html">File output = new java.io.1.5.0/docs/api/java/io/File.html">File(pathGraficoTiposAlunos); |
||
136 | 1.5.0/docs/api/javax/imageio/ImageIO.html">ImageIO.write(image, "png", new 1.5.0/docs/api/java/io/FileOutputStream.html">FileOutputStream(output)); |
||
137 | |||
138 | FileUploaded fileUploaded = new FileUploaded(); |
||
139 | fileUploaded.setTmpName(tempName); |
||
140 | fileUploaded.setTitle("Taxa global de aproveitamento"); |
||
141 | fileUploaded.setDescription("Curso: " + courseReportDocument.getCourseName() + " (" + courseReportDocument.getCourseCode()+ ") ano " + courseReportDocument.getYear()); |
||
142 | fileUploaded.setContentType(MimeTypeGuesser.getInstance().guessMimeType(output)); |
||
143 | fileUploaded.setFileSize(output.length()); |
||
144 | fileUploaded.setExtension("png"); |
||
145 | return fileUploaded; |
||
146 | } |
||
1830 | jmachado | 147 | } |