Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1982 → Rev 1983

/branches/grupo4/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/GlobalLearningResultsChartYearImg.java
1,30 → 1,109
package pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components;
 
import com.orsoncharts.label.StandardCategoryItemLabelGenerator;
import jomm.utils.BytesUtils;
import jomm.utils.MimeTypeGuesser;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.CategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.StackedBarRenderer;
import org.jfree.data.KeyToGroupMap;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.Dataset;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.TextAnchor;
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.CourseReportDocument;
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.utils.DataTable;
import pt.estgp.estgweb.utils.Globals;
import pt.estgp.estgweb.utils.documentBuilder.AutoImageWraperComponent;
import pt.estgp.estgweb.utils.documentBuilder.ImageComponent;
import pt.estgp.estgweb.web.controllers.utils.FileUploaded;
 
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.List;
 
/**
* Created by jorgemachado on 31/10/17.
*/
public class GlobalLearningResultsChartYearImg extends ImageComponent
{
public FileUploaded generateChart2tmp(UnitsLearningResultsTable results, CourseReportDocument courseReportDocument) {
float aprovados1013 = results.aprovados1013Percent;
float aprovados1416 = results.aprovados1416Percent;
float aprovados1720 = results.aprovados1720Percent;
public FileUploaded generateChart2tmp(UnitsLearningResultsTable results, CourseReportDocument courseReportDocument) throws IOException {
List<UnitsLearningResultYear> years = results.getYears();
float totalAprovados1013 = results.aprovados1013Percent;
float totalAprovados1416 = results.aprovados1416Percent;
float totalAprovados1720 = results.aprovados1720Percent;
 
 
String tempName = BytesUtils.generateHexKey() + ".png";
 
DefaultCategoryDataset data = new DefaultCategoryDataset();
for (UnitsLearningResultYear year : years) {
data.addValue(year.getAprovados1013Percent(), "Aprovados 10-13", year.getAno() + " ano");
data.addValue(year.getAprovados1416Percent(), "Aprovados 14-16", year.getAno() + " ano");
data.addValue(year.getAprovados1720Percent(), "Aprovados 17-20", year.getAno() + " ano");
}
 
data.addValue(totalAprovados1013, "Aprovados 10-13", "Total");
data.addValue(totalAprovados1416, "Aprovados 14-16", "Total");
data.addValue(totalAprovados1720, "Aprovados 17-20", "Total");
 
//JFreeChart chart = ChartFactory.createStackedBarChart("StackedBarChart","","",);
JFreeChart chart = ChartFactory.createStackedBarChart(
null,
null,
null,
data,
PlotOrientation.VERTICAL,
true,
true,
false
);
chart.setBackgroundPaint(new Color(255,255,255));
 
return null;
 
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(Color.white);
plot.setRangeGridlinePaint(Color.gray);
 
plot.getDomainAxis().setTickLabelFont(new Font("Arial", Font.PLAIN, 25));
plot.getRangeAxis().setTickLabelFont(new Font("Arial", Font.PLAIN, 25));
 
 
StackedBarRenderer renderer = (StackedBarRenderer) plot.getRenderer();
renderer.setItemMargin(0.0);
Paint ap1013Color = new Color(255, 150, 1);
Paint ap1416Color = new Color(255, 215, 1);
Paint ap1720Color = new Color(1, 170, 1);
renderer.setSeriesPaint(0, ap1013Color);
renderer.setSeriesPaint(1, ap1416Color);
renderer.setSeriesPaint(2, ap1720Color);
 
plot.setRenderer(renderer);
 
RectangleInsets chartRectangle = new RectangleInsets(0,0,50F,0);
chart.setPadding(chartRectangle);
 
 
BufferedImage image = chart.createBufferedImage( 300*4, 200*4);
String pathGraficoTiposAlunos = Globals.TMP_DIR + java.io.File.separator + tempName;
java.io.File output = new java.io.File(pathGraficoTiposAlunos);
ImageIO.write(image, "png", new FileOutputStream(output));
 
FileUploaded fileUploaded = new FileUploaded();
fileUploaded.setTmpName(tempName);
fileUploaded.setTitle("Percentagem de aprovados entre 10-13, 14-16, 17-20");
fileUploaded.setDescription("Percentagem de aprovados entre 10-13, 14-16, 17-20");
fileUploaded.setContentType(MimeTypeGuesser.getInstance().guessMimeType(output));
fileUploaded.setFileSize(output.length());
fileUploaded.setExtension("png");
return fileUploaded;
}
}