package pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components;
//import pt.estgp.estgweb.utils.documentBuilder.AutoImageWraperComponent;
import jomm.utils.BytesUtils;
import jomm.utils.MimeTypeGuesser;
import org.apache.fop.fonts.base14.Helvetica;
import org.apache.log4j.Category;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.RingPlot;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.ui.RectangleInsets;
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.CourseReportDocument;
import pt.estgp.estgweb.utils.Globals;
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.io.FileOutputStream;
import java.io.IOException;
/**
* Created by jorgemachado on 31/10/17.
*/
public class GlobalLearningResultsChartYearImg
extends ImageComponent
{
public FileUploaded generateChart2tmp
(UnitsLearningResultsTable results,CourseReportDocument courseReportDocument
) throws 1.5.0/docs/api/java/io/IOException.html">IOException
{
float aprovados1013 = results.
getAprovados();
float aprovados1416 = results.
getAprovados();
float aprovados1720 = results.
getAprovados();
double aprovadosPercent1013 = results.
getAprovados();
double aprovadosPercent1416 = results.
getAprovados();
double aprovadosPercent1720 = results.
getAprovados();
DefaultCategoryDataset data =
new DefaultCategoryDataset
();
for (int i =
0; i
< 3; i++
)
{
UnitsLearningResult ola = results.
years.
get(i
);
aprovados1013 = ola.
getAprovados1013();
aprovados1416 = ola.
getAprovados1416();
aprovados1720 = ola.
getAprovados1720();
aprovadosPercent1013 =
((int)(ola.
getAprovados1013Percent()*100.0
))/
100.0;
aprovadosPercent1416 =
((int)(ola.
getAprovados1416Percent()*100.0
))/
100.0;
aprovadosPercent1720 =
((int)(ola.
getAprovados1720Percent()*100.0
))/
100.0;
//if (aprovados1013> 0)
data.
setValue(new 1.5.0/docs/api/java/lang/Double.html">Double(aprovadosPercent1013
),
"Aprovados1013 " ,
(i +
1) +
"º Ano " );
//if (aprovados1416> 0)
data.
setValue(new 1.5.0/docs/api/java/lang/Double.html">Double(aprovadosPercent1416
),
"Aprovados1416 " ,
(i +
1) +
"º Ano " );
//if (aprovados1720> 0)
data.
setValue(new 1.5.0/docs/api/java/lang/Double.html">Double(aprovadosPercent1720
),
"Aprovados1720 " ,
(i +
1) +
"º Ano " );
}
1.5.0/docs/api/java/lang/String.html">String tempName = BytesUtils.
generateHexKey() +
".png";
//Grafico Barras
JFreeChart chart = ChartFactory.
createStackedBarChart(null,
null,
null,data, PlotOrientation.
VERTICAL,
true,
true,
false);
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, 20
));
RectangleInsets rectangleInsets =
new RectangleInsets
(0,0,30F,0
);
chart.
setPadding(rectangleInsets
);
chart.
setBackgroundPaint(new 1.5.0/docs/api/java/awt/Color.html">Color(255, 231, 242
));
CategoryPlot plot = chart.
getCategoryPlot();
plot.
setRangeGridlinePaint(1.5.0/docs/api/java/awt/Color.html">Color.
black);
//plot.setDrawingSupplier(new ChartBuilderUtil.ChartDrawingSupplier());
/*
plot.setSectionPaint(0, new Color(255, 0, 0));
plot.setSectionPaint(1, new Color(15, 218, 10));
plot.setSectionPaint(2, new Color(200, 200, 200));
plot.setBackgroundPaint(new Color(255, 255, 255));
plot.setOutlineVisible(false);
plot.setLabelFont(new Font(
"Helvetica", Font.PLAIN, 30));
*/
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
));
plot.
getRenderer().
setSeriesPaint(0,
new 1.5.0/docs/api/java/awt/Color.html">Color(255, 171, 28
));
plot.
getRenderer().
setSeriesPaint(1,
new 1.5.0/docs/api/java/awt/Color.html">Color(255, 253, 44
));
plot.
getRenderer().
setSeriesPaint(2,
new 1.5.0/docs/api/java/awt/Color.html">Color(0, 255, 0
));
plot.
setBackgroundPaint(new 1.5.0/docs/api/java/awt/Color.html">Color(249, 231, 236
));
1.5.0/docs/api/java/awt/image/BufferedImage.html">BufferedImage image = chart.
createBufferedImage( 300
*3, 200
*3
);
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
;
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
);
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
));
FileUploaded fileUploaded =
new FileUploaded
();
fileUploaded.
setTmpName(tempName
);
fileUploaded.
setTitle("Taxa global de aproveitamento");
fileUploaded.
setDescription("Curso: " + courseReportDocument.
getCourseName() +
" (" + courseReportDocument.
getCourseCode()+
") ano " + courseReportDocument.
getYear());
fileUploaded.
setContentType(MimeTypeGuesser.
getInstance().
guessMimeType(output
));
fileUploaded.
setFileSize(output.
length());
fileUploaded.
setExtension("png");
return fileUploaded
;
}
}