/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"); |
} |
} |