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
) throws 1.5.0/docs/api/java/io/IOException.html">IOException {
List
<UnitsLearningResultYear
> years = results.
getYears();
float totalAprovados1013 = results.
getAprovados1013Percent();
float totalAprovados1416 = results.
getAprovados1416Percent();
float totalAprovados1720 = results.
getAprovados1720Percent();
1.5.0/docs/api/java/lang/String.html">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(
null,
null,
null,
data,
PlotOrientation.
VERTICAL,
true,
true,
false
);
chart.
setBackgroundPaint(new 1.5.0/docs/api/java/awt/Color.html">Color(255,255,255
));
CategoryPlot plot =
(CategoryPlot
) chart.
getPlot();
plot.
setBackgroundPaint(1.5.0/docs/api/java/awt/Color.html">Color.
white);
plot.
setRangeGridlinePaint(1.5.0/docs/api/java/awt/Color.html">Color.
gray);
plot.
getDomainAxis().
setTickLabelFont(new 1.5.0/docs/api/java/awt/Font.html">Font("Arial",
1.5.0/docs/api/java/awt/Font.html">Font.
PLAIN, 25
));
plot.
getRangeAxis().
setTickLabelFont(new 1.5.0/docs/api/java/awt/Font.html">Font("Arial",
1.5.0/docs/api/java/awt/Font.html">Font.
PLAIN, 25
));
StackedBarRenderer renderer =
(StackedBarRenderer
) plot.
getRenderer();
renderer.
setItemMargin(0.0
);
1.5.0/docs/api/java/awt/Paint.html">Paint ap1013Color =
new 1.5.0/docs/api/java/awt/Color.html">Color(255, 150, 1
);
1.5.0/docs/api/java/awt/Paint.html">Paint ap1416Color =
new 1.5.0/docs/api/java/awt/Color.html">Color(255, 215, 1
);
1.5.0/docs/api/java/awt/Paint.html">Paint ap1720Color =
new 1.5.0/docs/api/java/awt/Color.html">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
);
1.5.0/docs/api/java/awt/image/BufferedImage.html">BufferedImage image = chart.
createBufferedImage( 300
*4, 200
*4
);
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("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
;
}
}