/branches/grupo5/impl/conf/berserk/sd.xml |
---|
4031,6 → 4031,29 |
<service> |
<name>CourseReportGenerateLearningResultsChartSem</name> |
<implementationClass>pt.estgp.estgweb.services.courses.CourseReportServices</implementationClass> |
<description> |
@reportCourseDocument documento course report em json |
Serviço de suporte para gerar um grafico |
Coloca o grafico no report documento |
e salva o documento no curso |
Devolve uma classe RepositoryFile4JsonView serializada em JSON |
</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>generateLearningResultsChartSem</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
</filterChains> |
</service> |
<!-- SERVICOS DE GERACAO DE RELATORIO DE CURSO --> |
<service> |
<name>CourseReportGenerateGlobalLearningResultsChartYearImg</name> |
<implementationClass>pt.estgp.estgweb.services.courses.CourseReportServices</implementationClass> |
<description> |
/branches/grupo5/impl/src/java/pt/estgp/estgweb/services/courses/CourseReportServices.java |
---|
483,9 → 483,42 |
return view.toJson(); |
} |
public String generateLearningResultsChartSem(String reportDocumentJson,UserSession session) throws IOException { |
CourseReportDocument reportDocument = CourseReportDocument.fromJson(reportDocumentJson); |
LearningResultsSection learningResultsSection = (LearningResultsSection) reportDocument.findDocumentSection(LearningResultsSection.class); |
LearningGlobalAnalysisSection learningGlobalAnalysisSection = (LearningGlobalAnalysisSection) learningResultsSection.findSection(LearningGlobalAnalysisSection.class); |
LearningResultsChartSem chartImg = (LearningResultsChartSem) learningGlobalAnalysisSection.findDocComponent(LearningResultsChartSem.class); |
UnitsLearningResultsTable table = (UnitsLearningResultsTable) learningResultsSection.findDocComponent(UnitsLearningResultsTable.class); |
FileUploaded fileUploaded = chartImg.generateChart2tmp(table,reportDocument); |
RepositoryService repositoryService = new RepositoryService(); |
boolean imageInitialized = chartImg.getImage() != null |
&& |
chartImg.getImage().getIdentifier() != null; |
RepositoryFile4JsonView view; |
if(imageInitialized) |
{ |
String identifier = chartImg.getImage().getIdentifier(); |
view = repositoryService.replaceRepositoryFileFromFileUpload(identifier, fileUploaded, ResourceAccessControlEnum.privateDomain, session); |
} |
else |
{ |
view = repositoryService.storeRepositoryFileFromFileUpload(fileUploaded,ResourceAccessControlEnum.privateDomain,session); |
} |
chartImg.setImage(view); |
//TODO FALTA GUARDAR O JSON NO CURSO |
return view.toJson(); |
} |
/****************************************************************************/ |
/* |
/branches/grupo5/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/GlobalLearningResultsChartYearImg.java |
---|
4,6 → 4,7 |
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; |
16,6 → 17,7 |
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; |
65,6 → 67,11 |
//Grafico Barras |
JFreeChart chart = ChartFactory.createStackedBarChart(null, null,null,data, PlotOrientation.VERTICAL, true,true,false); |
chart.getLegend().setItemFont(new Font("Helvetica", Font.PLAIN, 20)); |
RectangleInsets rectangleInsets = new RectangleInsets(0,0,30F,0); |
chart.setPadding(rectangleInsets); |
chart.setBackgroundPaint(new Color(255, 231, 242)); |
CategoryPlot plot = chart.getCategoryPlot(); |
/branches/grupo5/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/LearningResultsChartSem.java |
---|
1,11 → 1,36 |
package pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components; |
import pt.estgp.estgweb.utils.documentBuilder.AutoImageWraperComponent; |
//import pt.estgp.estgweb.utils.documentBuilder.AutoImageWraperComponent; |
import jomm.utils.BytesUtils; |
import jomm.utils.MimeTypeGuesser; |
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 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 LearningResultsChartSem extends AutoImageWraperComponent |
public class LearningResultsChartSem extends ImageComponent |
{ |
String semesterCode; |
24,4 → 49,79 |
public void setSemesterCode(String semesterCode) { |
this.semesterCode = semesterCode; |
} |
public FileUploaded generateChart2tmp(UnitsLearningResultsTable results,CourseReportDocument courseReportDocument) throws 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 Double(aprovadosPercent1013), "Aprovados1013 " ,(i + 1) + "º Ano " ); |
//if (aprovados1416> 0) |
data.setValue(new Double(aprovadosPercent1416), "Aprovados1416 " ,(i + 1) + "º Ano " ); |
//if (aprovados1720> 0) |
data.setValue(new Double(aprovadosPercent1720), "Aprovados1720 " ,(i + 1) + "º Ano " ); |
} |
String tempName = BytesUtils.generateHexKey() + ".png"; |
//Grafico Barras |
JFreeChart chart = ChartFactory.createStackedBarChart(null, null,null,data, PlotOrientation.VERTICAL, true,true,false); |
chart.setBackgroundPaint(new Color(255, 231, 242)); |
CategoryPlot plot = chart.getCategoryPlot(); |
plot.setRangeGridlinePaint(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 Font("Helvetica", Font.PLAIN, 25)); |
plot.getRenderer().setSeriesPaint(0, new Color(255, 171, 28)); |
plot.getRenderer().setSeriesPaint(1, new Color(255, 253, 44)); |
plot.getRenderer().setSeriesPaint(2, new Color(0, 255, 0)); |
plot.setBackgroundPaint(new Color(249, 231, 236)); |
BufferedImage image = chart.createBufferedImage( 300*3, 200*3); |
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("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; |
} |
} |
/branches/grupo5/impl/src/java/pt/estgp/estgweb/web/controllers/courses/CoursesServicesController.java |
---|
57,6 → 57,16 |
return new JSONObject(json); |
} |
public JSONObject generateLearningResultsChartSem(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Throwable { |
String courseReportDocument = request.getParameter("courseReportDocument"); |
IServiceManager sm = ServiceManager.getInstance(); |
String json = (String) sm.execute(RequestUtils.getRequester(request, response), |
"CourseReportGenerateLearningResultsChartSem", |
new Object[]{courseReportDocument}); |
return new JSONObject(json); |
} |
public JSONObject saveCourseReportDocument(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Throwable { |
String courseReportDocument = request.getParameter("courseReportDocument"); |