Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1974 → Rev 1992

/branches/grupo5/impl/src/java/pt/estgp/estgweb/services/courses/CourseReportServices.java
24,6 → 24,7
import pt.estgp.estgweb.services.questionarios.QuestionariosReportsService;
import pt.estgp.estgweb.services.questionarios.pedagogico.reportprocessors.utils.DataTable;
import pt.estgp.estgweb.utils.Globals;
import pt.estgp.estgweb.utils.documentBuilder.Document;
import pt.estgp.estgweb.utils.documentBuilder.DocumentSection;
import pt.estgp.estgweb.utils.documentBuilder.QuestionariosDataTableComponent;
import pt.estgp.estgweb.web.controllers.utils.FileUploaded;
448,11 → 449,43
return view.toJson();
}
 
public String generateGlobalLearningResultsChartYearImg(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);
GlobalLearningResultsChartYearImg chartImg = (GlobalLearningResultsChartYearImg) learningGlobalAnalysisSection.findDocComponent(GlobalLearningResultsChartYearImg.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();
}
 
 
 
 
/****************************************************************************/
/*
 
519,10 → 552,14
}
}
 
 
public String saveCourseReportDocument (String reportDocumentJson, UserSession session) throws IOException, JSONException
{
CourseReportDocument courseReportDocument = CourseReportDocument.fromJson(reportDocumentJson);
 
System.out.println(reportDocumentJson);
System.out.println("111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111");
CourseReportDocument courseReportDocument = Document.fromJson(reportDocumentJson);
System.out.println("222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222");
//CourseReportDocument courseReportDocument = CourseReportDocument.fromJson(reportDocumentJson);
Course course = DaoFactory.getCourseDaoImpl().findCourseByCode(courseReportDocument.getCourseCode());
List<CourseYear> courseYear = DaoFactory.getCourseYearDaoImpl().findCourseYear(courseReportDocument.getCourseCode(), courseReportDocument.getYear());
 
540,33 → 577,46
return courseReportDocument.toJson();
}
 
public String loadCourseReportDocument (String courseCode,String year,UserSession session) throws IOException, JSONException
/**
*
* @param courseCode
* @param year
* @param session
* @return
* @throws IOException
* @throws JSONException
*/
public String loadCourseReportDocument(String courseCode,String year,UserSession session) throws IOException, JSONException
{
 
//Vai buscar (conjunto de anos??) à BaseDados (porquê uma lista)
List<CourseYear> courseYear = DaoFactory.getCourseYearDaoImpl().findCourseYear(courseCode, year);
String courseReport = null;
String courseReportJson = null;
 
if(courseYear.isEmpty())
if(courseYear!= null && !courseYear.isEmpty())
{
courseReportJson = courseYear.get(0).getCourseReportDocument();
}
else
{
try {
CourseReportDocument courseReport = createNewCourseReportDocument(courseCode, year);
courseReportJson = courseReport.toJson();
//System.out.println(courseReportJson);
//System.out.println("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU");
saveCourseReportDocument(courseReportJson, session);
 
//System.out.println("OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO");
courseReport = new CourseReportServices().createNewCourseReportDocument(courseCode, year).toJson();
//System.out.println(courseReport);
//courseReportJson = new CourseReportServices().createNewCourseReportDocument(courseCode, year).toJson();
//System.out.println(courseReportJson);
//System.out.println("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU");
courseReport = saveCourseReportDocument(courseReport,session);
 
//courseReport = saveCourseReportDocument(courseReport,session);
//courseReport = loadCourseReportDocument(courseCode, year,session);
} catch (Throwable e) {
System.out.println(e);
e.printStackTrace();
}
}
else
{
courseReport = courseYear.get(0).getCourseReportDocument();
}
 
return courseReport;
return courseReportJson;
}
/**
*
/branches/grupo5/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/GlobalLearningResultsChartImg.java
59,7 → 59,7
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(240, 240, 240));
plot.setBackgroundPaint(new Color(249, 231, 236));
plot.setOutlineVisible(true);
 
 
/branches/grupo5/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/GlobalLearningResultsChartYearImg.java
1,10 → 1,107
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 GlobalLearningResultsChartYearImg extends AutoImageWraperComponent
public class GlobalLearningResultsChartYearImg extends ImageComponent
{
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/filters/filters/IsCoordinatorInCourseImpl.java
New file
0,0 → 1,52
package pt.estgp.estgweb.filters.filters;
 
import pt.estgp.estgweb.domain.CourseImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.filters.chains.LoadControlFilter;
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException;
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException;
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.UserImpl;
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.CourseReportDocument;
import pt.estgp.estgweb.utils.Globals;
import pt.utl.ist.berserk.ServiceRequest;
import pt.utl.ist.berserk.ServiceResponse;
import pt.utl.ist.berserk.logic.filterManager.FilterParameters;
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException;
import org.apache.log4j.Logger;
import pt.utl.ist.berserk.logic.serviceManager.ServiceParameters;
 
public class IsCoordinatorInCourseImpl extends LoadControlFilter
{
private static final Logger logger = Logger.getLogger(IsCoordinatorInCourseImpl.class);
 
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception
{
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY);
 
if (userSession == null)
{
logger.info("try access restricted area:" + request.getRequester());
throw new NeedAuthenticationException();
}
 
if (userSession.getUser().isSuperuser())
return;
 
//request.getServiceParameters().getParameter((String) filterParameters.getParameter(0));//Returns NULL atm
 
 
String courseCode;
courseCode = "44";
 
CourseImpl course = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode);
if(!course.isFromCourseCommission(userSession.getUser()))
{
logger.warn(userSession.getUser().getUsername() + ":try access restricted area");
throw new AccessDeniedOperationException("fail.owner");//Lamentamos o incómodo, mas não tem permissões sobre o objecto ao qual tentou aceder.
}
}
 
}
/branches/grupo5/impl/src/java/pt/estgp/estgweb/web/controllers/courses/CoursesServicesController.java
1,9 → 1,12
package pt.estgp.estgweb.web.controllers.courses;
 
import jomm.dao.impl.AbstractDao;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.json.JSONObject;
import pt.estgp.estgweb.domain.Course;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.web.controllers.utils.AbstractWidgetAjaxController;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
78,23 → 81,20
return new JSONObject(json);
}*/
 
public JSONObject loadCourseReportDocument(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),
"LoadCourseReportDocument",
new Object[]{courseReportDocument});
return new JSONObject(json);
}
public ActionForward startEdit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Throwable, ServletException
{
String courseCode = request.getParameter("courseCode");
String year = request.getParameter("year");
 
public ActionForward startEdit(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
return mapping.findForward("page");
IServiceManager sm = ServiceManager.getInstance();
String json = (String) sm.execute(RequestUtils.getRequester(request, response),
"LoadCourseReportDocument",
new Object[]{courseCode,year});
 
request.setAttribute("courseReportJson", json);
//request.setAttribute("courseCode", courseCode);
 
return mapping.findForward("editCourseReport");
}
}