Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1993 → Rev 1995

/branches/grupo5/impl/conf/berserk/fcd.xml
600,4 → 600,5
 
 
 
 
</filterChainsDefinitions>
/branches/grupo5/impl/src/java/pt/estgp/estgweb/services/courses/CourseReportServices.java
13,6 → 13,7
import pt.estgp.estgweb.services.courses.coursereport.CourseReportUtils;
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.*;
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.courseunitreport.CourseUnitSection;
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.LearningAnalysisSection;
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.LearningGlobalAnalysisSection;
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.*;
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.reportucsummary.CourseUnitDtpStat;
487,13 → 488,12
 
CourseReportDocument reportDocument = CourseReportDocument.fromJson(reportDocumentJson);
LearningResultsSection learningResultsSection = (LearningResultsSection) reportDocument.findDocumentSection(LearningResultsSection.class);
LearningGlobalAnalysisSection learningGlobalAnalysisSection = (LearningGlobalAnalysisSection) learningResultsSection.findSection(LearningGlobalAnalysisSection.class);
LearningAnalysisSection learningGlobalAnalysisSection = (LearningAnalysisSection) learningResultsSection.findSection(LearningAnalysisSection.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();
/branches/grupo5/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/GlobalLearningResultsChartImg.java
5,7 → 5,6
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.RingPlot;
import org.jfree.data.general.DefaultPieDataset;
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.CourseReportDocument;
/branches/grupo5/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/GlobalLearningResultsChartYearImg.java
1,22 → 1,12
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;
36,32 → 26,112
{
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();
 
DefaultCategoryDataset data = new DefaultCategoryDataset();
for (int i = 0; i < 3; i++)
 
// Ano que não consta no Plano
UnitsLearningResult unitsLearningResult = results.years.get(0);
 
double aprovadosPercent1013;
double aprovadosPercent1416;
double aprovadosPercent1720;
 
aprovadosPercent1013 = ((int)(unitsLearningResult.getAprovados1013Percent()*100.0))/100.0;
aprovadosPercent1416 = ((int)(unitsLearningResult.getAprovados1416Percent()*100.0))/100.0;
aprovadosPercent1720 = ((int)(unitsLearningResult.getAprovados1720Percent()*100.0))/100.0;
 
data.addValue(new Double(aprovadosPercent1013), "Aprovados 10-13 " ,(results.years.get(0).getAno()) + " Ano " );
data.addValue(new Double(aprovadosPercent1416), "Aprovados 14-16 " ,(results.years.get(0).getAno()) + " Ano " );
data.addValue(new Double(aprovadosPercent1720), "Aprovados 17-20 " ,(results.years.get(0).getAno()) + " Ano " );
 
 
 
float aaprovados1013[] = new float[10];
float aaprovados1416[]= new float[10];
float aaprovados1720[]= new float[10];
double aaprovadosPercent1013[]= new double[10];
double aaprovadosPercent1416[]= new double[10];
double aaprovadosPercent1720[]= new double[10];
 
int yearCounter[] = new int[10]; //Total de anos existentes na tabela
 
float totalAlunos = 0;
float totalAlunos1013 = 0;
float totalAlunos1416 = 0;
float totalAlunos1720 = 0;
double totalAlunosPercent1013;
double totalAlunosPercent1416;
double totalAlunosPercent1720;
 
 
// Inicialização de Valores
for(int i = 1; i < 6; i++)
{
UnitsLearningResult ola = results.years.get(i);
aaprovados1013[i] = 0;
aaprovados1416[i] = 0;
aaprovados1720[i] = 0;
aaprovadosPercent1013[i] = 0;
aaprovadosPercent1416[i] = 0;
aaprovadosPercent1720[i] = 0;
yearCounter[i] = 0;
}
 
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 " );
// Extrair os dados recebidos
for(int i = 1; i < 6; i++) //Years(between 1 and 5)
{
for (int j = 0; j < results.years.size(); j++) //Years existent on array (between 0 and X)
{
UnitsLearningResult ola = results.years.get(j);
 
if (results.years.get(j).getAno() == i)
{
aaprovados1013[i] += ola.getAprovados1013();
aaprovados1416[i] += ola.getAprovados1416();
aaprovados1720[i] += ola.getAprovados1720();
aaprovadosPercent1013[i] += ((int)(ola.getAprovados1013Percent()*100.0))/100.0;
aaprovadosPercent1416[i] += ((int)(ola.getAprovados1416Percent()*100.0))/100.0;
aaprovadosPercent1720[i] += ((int)(ola.getAprovados1720Percent()*100.0))/100.0;
yearCounter[i] += 1;
}
}
}
 
// Adicionar os dados ao gráfico
for (int i = 1; i <6; i++)
{
aaprovadosPercent1013[i] = aaprovadosPercent1013[i] / yearCounter[i];
aaprovadosPercent1416[i] = aaprovadosPercent1416[i] / yearCounter[i];
aaprovadosPercent1720[i] = aaprovadosPercent1720[i] / yearCounter[i];
 
totalAlunos += aaprovados1013[i] * 2;
totalAlunos += aaprovados1416[i] * 2;
totalAlunos += aaprovados1720[i] * 2;
 
totalAlunos1013 += aaprovados1013[i] * 2;
totalAlunos1416 += aaprovados1416[i] * 2;
totalAlunos1720 += aaprovados1720[i] * 2;
 
 
/*Descomentar linhas seguintes para apenas aparecerem os anos com cadeires*/
//if(yearCounter[i] != 0)
//{
data.addValue(new Double(aaprovadosPercent1013[i]), "Aprovados 10-13 " ,i + "º Ano " );
data.addValue(new Double(aaprovadosPercent1416[i]), "Aprovados 14-16 " ,i + "º Ano " );
data.addValue(new Double(aaprovadosPercent1720[i]), "Aprovados 17-20 " ,i + "º Ano " );
//}
}
 
// Coluna Total do Gráfico
totalAlunosPercent1013 = totalAlunos1013/totalAlunos * 100.0;
totalAlunosPercent1416 = totalAlunos1416/totalAlunos * 100.0;
totalAlunosPercent1720 = totalAlunos1720/totalAlunos * 100.0;
 
data.addValue(new Double(totalAlunosPercent1013), "Aprovados 10-13 " ,"Total");
data.addValue(new Double(totalAlunosPercent1416), "Aprovados 14-16 " ,"Total");
data.addValue(new Double(totalAlunosPercent1720), "Aprovados 17-20 " ,"Total");
 
 
String tempName = BytesUtils.generateHexKey() + ".png";
 
//Grafico Barras
78,18 → 148,7
 
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));
/branches/grupo5/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/LearningResultsChartSem.java
11,11 → 11,13
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
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;
24,8 → 26,10
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.text.DecimalFormat;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
 
/**
* Created by jorgemachado on 31/10/17.
52,63 → 56,81
 
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();
 
List <UnitsLearningResultYear> years = results.getYears();
List<UnitsLearningResultSemester> semester = years.get(0).semesters;
List<UnitsLearningResultUc> uc;
 
DefaultCategoryDataset data = new DefaultCategoryDataset();
for (int i = 0; i < 3; i++)
 
// Ano que não consta no Plano
uc = semester.get(0).ucs;
for(int k = 0; k < uc.size(); k++)
{
UnitsLearningResult ola = results.years.get(i);
data.setValue(new Double(uc.get(k).getAprovadosPercent()), "Aprovados " , uc.get(k).getName());
data.setValue(new Double(uc.get(k).getSemElementosPercent()), "SemElementos " , uc.get(k).getName());
data.setValue(new Double(uc.get(k).getReprovadosPercent()), "Reprovados " , uc.get(k).getName());
}
uc = semester.get(1).ucs;
for(int k = 0; k < uc.size(); k++)
{
data.setValue(new Double(uc.get(k).getAprovadosPercent()), "Aprovados " , uc.get(k).getName());
data.setValue(new Double(uc.get(k).getSemElementosPercent()), "SemElementos " , uc.get(k).getName());
data.setValue(new Double(uc.get(k).getReprovadosPercent()), "Reprovados " , uc.get(k).getName());
}
 
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 " );
for(int i = 1; i < 6; i++) //Years(between 1 and 5)
{
for(int j = 0; j < years.size(); j++) //Years existent on array (between 0 and X)
{
if(results.years.get(j).getAno() == i)
{
semester = years.get(j).semesters;
 
for(int h = 0; h < semester.size(); h++) //Semesters (between 1 and 2)
{
uc = semester.get(h).ucs;
 
for(int k = 0; k < uc.size(); k++)
{
data.setValue(new Double(uc.get(k).getAprovadosPercent()), "Aprovados " , uc.get(k).getName());
data.setValue(new Double(uc.get(k).getSemElementosPercent()), "SemElementos " , uc.get(k).getName());
data.setValue(new Double(uc.get(k).getReprovadosPercent()), "Reprovados " , uc.get(k).getName());
}
}
}
}
}
 
String tempName = BytesUtils.generateHexKey() + ".png";
 
//Grafico Barras
JFreeChart chart = ChartFactory.createStackedBarChart(null, null,null,data, PlotOrientation.VERTICAL, true,true,false);
JFreeChart chart = ChartFactory.createStackedBarChart(null, null,null,data, PlotOrientation.HORIZONTAL, true,true,false);
 
RectangleInsets rectangleInsets = new RectangleInsets(0,0,30F,0);
chart.setPadding(rectangleInsets);
 
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.getRenderer().setSeriesPaint(0, new Color(0, 255, 0));
plot.getRenderer().setSeriesPaint(1, new Color(200, 200, 200));
plot.getRenderer().setSeriesPaint(2, new Color(255, 0, 0));
plot.setBackgroundPaint(new Color(249, 231, 236));
 
BufferedImage image = chart.createBufferedImage( 300*3, 200*3);
plot.getRenderer().setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", new DecimalFormat("#.#'%'")));
plot.getRenderer().setBaseItemLabelsVisible(true);
plot.getRenderer().setBaseItemLabelFont(new Font("Helvetica",Font.PLAIN,35));
chart.getLegend().setItemFont(new Font("Helvetica",Font.PLAIN,25)); //Letra Legenda
 
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));
122,6 → 144,4
fileUploaded.setExtension("png");
return fileUploaded;
}
 
 
}
/branches/grupo5/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/LearningResultsSection.java
3,6 → 3,7
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.LearningAnalysisSection;
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.LearningGlobalAnalysisSection;
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultsTable;
 
import pt.estgp.estgweb.utils.documentBuilder.CustomPane;
import pt.estgp.estgweb.utils.documentBuilder.DocumentSection;
import pt.estgp.estgweb.utils.documentBuilder.GenericTextSection;
/branches/grupo5/impl/src/java/pt/estgp/estgweb/filters/filters/IsCoordinatorInCourseImpl.java
38,8 → 38,7
//request.getServiceParameters().getParameter((String) filterParameters.getParameter(0));//Returns NULL atm
 
 
String courseCode;
courseCode = "44";
String courseCode = "44";
 
CourseImpl course = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode);
if(!course.isFromCourseCommission(userSession.getUser()))