Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1995 → Rev 1999

/branches/grupo3/impl/conf/berserk/sd.xml
4065,6 → 4065,24
</filterChains>
</service>
 
<!-- Grafico 3-->
<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>
 
 
 
4096,6 → 4114,7
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="CanEditCourseReportEdit2"/>
</filterChains>
</service>
 
/branches/grupo3/impl/conf/berserk/fd.xml
292,15 → 292,24
 
 
<filter>
<!--Require parameter with questionario id-->
<name>CheckRepositoryCollectionManager</name>
<implementationClass>pt.estgp.estgweb.filters.filters.CheckRepositoryCollectionManager</implementationClass>
<description>verifica se a colecção tem como manager o user logado</description>
<isTransactional>false</isTransactional>
</filter>
<!--Require parameter with questionario id-->
<name>CheckRepositoryCollectionManager</name>
<implementationClass>pt.estgp.estgweb.filters.filters.CheckRepositoryCollectionManager</implementationClass>
<description>verifica se a colecção tem como manager o user logado</description>
<isTransactional>false</isTransactional>
</filter>
 
 
<!-- CanEditCourseReportEdit -->
<filter>
<!--Require parameter with questionario id-->
<name>CanEditCourseReportEdit</name>
<implementationClass>pt.estgp.estgweb.filters.filters.CanEditCourseReportEdit</implementationClass>
<description>verifica se pode ver pode editar o relatorio de curso</description>
<isTransactional>false</isTransactional>
</filter>
 
 
 
</filterDefinitions>
/branches/grupo3/impl/conf/berserk/fcd.xml
556,7 → 556,16
<filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
</filterChain>
 
<!-- Filtro editar relatorio de curso -->
<filterChain>
<name>CanEditCourseReportEdit2</name>
<expression>CanEditCourseReportEdit("courseCode")</expression>
<description>Admins Control Chain</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
 
<filterChain>
<name>RoleAddRemoveManager</name>
<expression>AuthenticatedUsers &amp;&amp; (RoleUsers("admin") || RoleUsers("all") || RoleUsers("servicesRolesManagement") || ( RoleUsers("event_class_manager") &amp;&amp; ParameterValuePrefixCheck("role_2_addRemove","event_manager_") ) )</expression>
<description>Admins Control Chain</description>
/branches/grupo3/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;
483,10 → 484,46
}
 
 
/* Grafico 3 */
public String generateLearningResultsChartSem(String reportDocumentJson, UserSession session) throws IOException {
 
CourseReportDocument reportDocument = CourseReportDocument.fromJson(reportDocumentJson);
LearningResultsSection learningResultsSection = (LearningResultsSection) reportDocument.findDocumentSection(LearningResultsSection.class);
LearningAnalysisSection learningAnalysisSection = (LearningAnalysisSection) learningResultsSection.findSection(LearningAnalysisSection.class);
/* alt */
LearningResultsChartSem chartImg = (LearningResultsChartSem) learningAnalysisSection.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();
}
 
 
 
/* Guardar report */
 
public String saveCourseReportDoc(String reportDocumentJson,UserSession session) throws IOException {
public String saveCourseReportDoc(String reportDocumentJson, UserSession session) throws IOException {
 
CourseReportDocument reportDocument = CourseReportDocument.fromJson(reportDocumentJson);
 
508,18 → 545,20
 
/* Ler o relatorio */
 
public String loadCourseReportDoc(/*UserSession session, */String year, String courseCode) throws IOException {
public String loadCourseReportDoc(String courseCode, String year, UserSession session ) throws IOException {
 
List<CourseYear> courseYr = DaoFactory.getCourseYearDaoImpl().findCourseYear(courseCode, year);
String courseReport = null;
 
String courseReport = null;
if(!courseYr.isEmpty()){
courseReport = courseYr.get(0).getCourseReportDocument();
}
 
if(courseReport == null){
try{
courseReport = new CourseReportServices().createNewCourseReportDocument(courseCode, year).toString();
courseReport = new CourseReportServices().createNewCourseReportDocument(courseCode, year).toJson();
 
//saveCourseReportDoc(courseReport, session);
} catch (JSONException e) {
e.printStackTrace();
}
/branches/grupo3/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/GlobalLearningResultsChartYearImg.java
53,6 → 53,7
chart.setBackgroundPaint(Color.WHITE);
// Legenda
chart.getLegend().setItemFont(new Font("Helvetica", Font.PLAIN,30));
chart.setPadding(new RectangleInsets(0,10F,30F,20F));
 
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(Color.WHITE);
62,10 → 63,6
plot.getDomainAxis().setTickLabelFont(new Font("Helvetica", Font.PLAIN, 30));
plot.getRangeAxis().setTickLabelFont(new Font("Helvetica", Font.PLAIN, 30));
 
 
RectangleInsets chartRectangle = new RectangleInsets(0,0,30F,0);
chart.setPadding(chartRectangle);
 
StackedBarRenderer renderer = (StackedBarRenderer) plot.getRenderer();
renderer.setSeriesPaint(0, new Color(237, 132, 0));
renderer.setSeriesPaint(1, new Color(255, 250, 29));
/branches/grupo3/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/LearningResultsChartSem.java
4,15 → 4,17
import jomm.utils.MimeTypeGuesser;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.block.BlockBorder;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.StackedBarRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.RectangleEdge;
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.AutoImageWraperComponent;
import pt.estgp.estgweb.utils.documentBuilder.ImageComponent;
import pt.estgp.estgweb.web.controllers.utils.FileUploaded;
 
import javax.imageio.ImageIO;
26,7 → 28,7
/**
* Created by jorgemachado on 31/10/17.
*/
public class LearningResultsChartSem extends AutoImageWraperComponent
public class LearningResultsChartSem extends ImageComponent
{
String semesterCode;
 
45,48 → 47,52
public void setSemesterCode(String semesterCode) {
this.semesterCode = semesterCode;
}
/*
 
public FileUploaded generateChart2tmp(UnitsLearningResultsTable results, CourseReportDocument courseReportDocument) throws IOException {
List<UnitsLearningResultYear> years = results.getYears();
List<UnitsLearningResultSemester> semester;
List<UnitsLearningResultUc> uc;
 
String tempName = BytesUtils.generateHexKey() + ".png";
 
DefaultCategoryDataset data = new DefaultCategoryDataset();
 
for (int i =0; i<years.size(); i++){
data.addValue(new Double(years.get(i).getAprovados1013Percent()), "Aprovados 10-13", years.get(i).getAno() + "º ano");
data.addValue(new Double(years.get(i).getAprovados1416Percent()), "Aprovados 14-16", years.get(i).getAno() + "º ano");
data.addValue(new Double(years.get(i).getAprovados1720Percent()), "Aprovados 17-20", years.get(i).getAno() + "º ano");
for (int i=0; i<years.size(); i++){
semester = years.get(i).semesters;
for (int k = 0; k < semester.size(); k++){
uc = semester.get(k).ucs;
for (int j = 0; j < uc.size(); j++) {
data.addValue(new Double(uc.get(j).getSemElementosPercent()), "Sem elementos", uc.get(j).getName());
data.addValue(new Double(uc.get(j).getReprovadosPercent()), "Reprovados ", uc.get(j).getName());
data.addValue(new Double(uc.get(j).getAprovadosPercent()), "Aprovados", uc.get(j).getName());
}
}
}
 
// Total
data.addValue(new Double(results.getAprovados1013Percent()), "Aprovados 10-13", "Total");
data.addValue(new Double(results.getAprovados1416Percent()), "Aprovados 14-16", "Total");
data.addValue(new Double(results.getAprovados1720Percent()), "Aprovados 17-20", "Total");
JFreeChart chart = ChartFactory.createStackedBarChart(null,null,null, data, PlotOrientation.HORIZONTAL,true, false, false);
 
JFreeChart chart = ChartFactory.createStackedBarChart(null,null,null, data, PlotOrientation.VERTICAL,true, false, false);
 
chart.setBackgroundPaint(Color.WHITE);
// Legenda
chart.getLegend().setItemFont(new Font("Helvetica", Font.PLAIN,30));
chart.getLegend().setPosition(RectangleEdge.TOP);
chart.getLegend().setFrame(BlockBorder.NONE);
chart.getLegend().setItemLabelPadding(new RectangleInsets(0,10F,25F,20F));
 
 
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(Color.WHITE);
plot.setRangeGridlinePaint(Color.GRAY);
plot.setRangeGridlinesVisible(true);
plot.setRangeGridlineStroke(new BasicStroke(1.0f));
plot.setDomainGridlinesVisible(false);
plot.setOutlineVisible(false);
//Remover label do eixo
plot.getRangeAxis().setTickLabelsVisible(false);
plot.getDomainAxis().setTickLabelFont(new Font("Helvetica", Font.PLAIN, 30));
plot.getRangeAxis().setTickLabelFont(new Font("Helvetica", Font.PLAIN, 30));
 
 
RectangleInsets chartRectangle = new RectangleInsets(0,0,30F,0);
chart.setPadding(chartRectangle);
 
StackedBarRenderer renderer = (StackedBarRenderer) plot.getRenderer();
renderer.setSeriesPaint(0, new Color(237, 132, 0));
renderer.setSeriesPaint(1, new Color(255, 250, 29));
renderer.setSeriesPaint(2, new Color(93,173, 21));
renderer.setMaximumBarWidth(.2);
renderer.setSeriesPaint(0, new Color(170, 165, 173));
renderer.setSeriesPaint(1, new Color(255, 6, 4));
renderer.setSeriesPaint(2, new Color(8, 237, 0));
renderer.setMaximumBarWidth(0.1);
 
//Percentagem dentro das barras
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}", new DecimalFormat("#.#'%'")));
107,6 → 113,6
fileUploaded.setFileSize(output.length());
fileUploaded.setExtension("png");
return fileUploaded;
}*/
}
 
}
/branches/grupo3/impl/src/java/pt/estgp/estgweb/filters/filters/CanEditCourseReportEdit.java
New file
0,0 → 1,54
package pt.estgp.estgweb.filters.filters;
 
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.CourseImpl;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.UserImpl;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.utils.ReflectionBean;
import pt.estgp.estgweb.filters.chains.LoadControlFilter;
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException;
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException;
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters;
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;
 
 
public class CanEditCourseReportEdit extends LoadControlFilter
{
private static final Logger logger = Logger.getLogger(IsTeacherInCourseUnitUsersClassBean.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.getUser() == null)
{
logger.info("try access restricted area:" + request.getRequester());
throw new NeedAuthenticationException();
}
 
if(userSession.getUser().isSuperuser())
return;
 
System.out.println((String) filterParameters.getParameter(0));
String courseCode = (String) request.getServiceParameters().getParameter((String) filterParameters.getParameter(0));
 
 
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");
 
}
 
}
}
/branches/grupo3/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.CourseImpl;
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;
45,44 → 48,44
return new JSONObject(json);
}
 
 
public JSONObject generateGlobalLearningResultsChartYearImg(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),
"CourseReportGenerateGlobalLearningResultsChartYearImg",
new Object[]{courseReportDocument});
new Object[]{courseReportDocument,});
return new JSONObject(json);
}
 
 
 
 
/* 7/12/2017 */
 
public JSONObject saveCourseReportDoc(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Throwable {
 
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),
"SaveCourseReportDoc",
"CourseReportGenerateLearningResultsChartSem",
new Object[]{courseReportDocument});
return new JSONObject(json);
}
 
/* */
public JSONObject loadCourseReportDoc(ActionForm form,HttpServletRequest request, HttpServletResponse response) throws Throwable {
 
 
/* 7/12/2017 */
 
public JSONObject saveCourseReportDoc(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),
"LoadCourseReportDoc",
"SaveCourseReportDoc",
new Object[]{courseReportDocument});
return new JSONObject(json);
}
 
 
public ActionForward startEdit(
ActionMapping mapping,
ActionForm form,
90,8 → 93,22
HttpServletResponse response)
throws Throwable, ServletException
{
String courseCode = request.getParameter("courseCode");
String year = request.getParameter("year");
 
AbstractDao.getCurrentSession().beginTransaction();
CourseImpl courseImpl = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode);
request.setAttribute("course", courseImpl);
AbstractDao.getCurrentSession().getTransaction().commit();
 
IServiceManager sm = ServiceManager.getInstance();
String courseReport = (String) sm.execute(RequestUtils.getRequester(request, response),
"LoadCourseReportDoc",
new Object[]{courseCode, year},
new String[]{"courseCode", "year"});
request.setAttribute("courseReportJson", courseReport);
 
return mapping.findForward("pagina");
}
 
 
}
/branches/grupo3/impl/src/web/user/courses/coursereport/templates.jsp
27,13 → 27,13
<div class="panel-heading"><h2>{{cu.title}}</h2></div>
 
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Estado do Relatório</label></h3></div>
<div><h3><label class="label label-primary">Estado do Relatório</label></h3></div>
 
<div ng-if="cu.courseUnitEvaluation.closed">
Entregue e Aceite
</div>
<div class="alert-danger" ng-if="cu.courseUnitEvaluation.closed && !cu.courseUnitEvaluation.teacherComplete">
Entregue mas não foi aprovado pela comissão
Entregue mas não foi aprovado pela comissão
</div>
<div class="alert-danger" ng-if="!cu.courseUnitEvaluation.closed && !cu.courseUnitEvaluation.teacherComplete">
Não foi entregue pelo docente para validação
647,12 → 647,14
 
},
templateUrl: function(elem,attrs) {
return "globallearningresultschartimg";
return "chartTemplate";
}
}
});
</script>
<script type="text/ng-template" id="globallearningresultschartimg">
 
 
<script type="text/ng-template" id="chartTemplate">
<div class="imageComponent component">
 
<div class="componentBody">
684,13 → 686,12
</script>
 
 
<!-- Grafico 2 -->
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_GlobalLearningResultsChartYearImg">
<globallearningresultschartyearimg>
</globallearningresultschartyearimg>
</script>
 
 
<!-- Grafico 2 -->
<script>
angular.module("courseReportApp").directive('globallearningresultschartyearimg', function() {
 
702,12 → 703,12
{
 
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/courseReport.do",
"generateGlobalLearningResultsChartYearImg",
{
"courseReportDocument" : BacoJS.stringifyOrdered(angular.element($("#courseReportApp")).scope().report)
},
"#courseReportApp",
"<%=request.getContextPath()%>/user/courseReport.do",
"generateGlobalLearningResultsChartYearImg",
{
"courseReportDocument" : BacoJS.stringifyOrdered(angular.element($("#courseReportApp")).scope().report)
},
"#courseReportApp",
function(repositoryFile4JsonView)
{
comp.image = repositoryFile4JsonView;
721,38 → 722,50
 
},
templateUrl: function(elem,attrs) {
return "globallearningresultschartimg";
return "chartTemplate";
}
}
});
</script>
<script type="text/ng-template" id="globallearninglesultschartyearimg">
<div class="imageComponent component">
 
<div class="componentBody">
<div class="form-group clearfix">
<label class="col-md-2 control-label">Legenda</label>
<div class="col-md-10">
<input type="text" class="form-control" rows="10" ng-model="comp.title">
</div>
</div>
<div class="form-group clearfix">
<div class="col-md-2 control-label">
<button class="btn btn-default" ng-click="generateChart(comp)">Refrescar/Gerar Grafico</button>
</div>
<div class="col-md-10">
<label ng-if="comp.image.identifier"> Limites do PDF </label>
<div ng-if="comp.image.identifier" style="text-align: center; width: 595px; border: 1px solid black; padding: 45px">
<center>
<div style="width: 200px;height: 200px; max-width: 500px; max-height: 750px" resizable on-resize="resize($evt, $ui, comp)">
<img ng-if="comp.imageUrl" style="width: 100%;height: 100%" ng-src="{{comp.imageUrl}}">
<img ng-if="!comp.imageUrl" style="width: 100%;height: 100%" ng-src="{{'<%=request.getContextPath()%>/repositoryStream/' + comp.image.identifier}}">
</div>
(Se desejar altere o tamanho da imagem arrastando no canto inferior direito)
</center>
</div>
</div>
</div>
</div>
</div>
 
<!-- Grafico 3 -->
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_LearningResultsChartSem">
<learningresultschartsem>
</learningresultschartsem>
</script>
 
<script>
angular.module("courseReportApp").directive('learningresultschartsem', function() {
 
return {
restrict: 'E',
link: function($scope, element, attrs)
{
$scope.generateChart = function(comp)
{
 
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/courseReport.do",
"generateLearningResultsChartSem",
{
"courseReportDocument" : BacoJS.stringifyOrdered(angular.element($("#courseReportApp")).scope().report)
},
"#courseReportApp",
function(repositoryFile4JsonView)
{
comp.image = repositoryFile4JsonView;
comp.imageUrl = "<%=request.getContextPath()%>/repositoryStream/" + comp.image.identifier + "?" + new Date().getTime();
angular.element($("#courseReportApp")).scope().$apply();
},
function(){}
);
}
 
},
templateUrl: function(elem,attrs) {
return "chartTemplate";
}
}
});
</script>
/branches/grupo3/impl/src/web/user/utils/reportEdit.jsp
1,14 → 1,4
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.domain.CourseImpl" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.utils.documentBuilder.TextComponent" %>
<%@ page import="pt.estgp.estgweb.utils.documentBuilder.ImageComponent" %>
<%@ page import="pt.estgp.estgweb.services.courses.CourseReportServices" %>
<%@ page import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.CourseReportDocument" %>
<%@ page import="org.json.JSONException" %>
<%@ page import="pt.estgp.estgweb.domain.UserSession" %>
<%@ page import="pt.estgp.estgweb.domain.User" %>
 
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
95,33 → 85,6
}
</script>
 
<%
 
String courseCode = request.getParameter("courseCode");
String year = request.getParameter("year");
String relatas = null;
AbstractDao.getCurrentSession().beginTransaction();
CourseImpl courseImpl = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode);
request.setAttribute("course",courseImpl);
CourseReportDocument courseReport = null;
try {
//eu
//relatas = new CourseReportServices().loadCourseReportDoc(,year,courseCode);
//if (relatas.isEmpty())
courseReport = new CourseReportServices().createNewCourseReportDocument(courseCode, year);
//eu
courseReport = courseReport.fromJson(relatas);
} catch (Throwable e) {
System.out.println(e);
e.printStackTrace();
}
 
 
String courseReportJson = courseReport.toJson();
request.setAttribute("courseDocumentJson",courseReportJson);
request.setAttribute("courseDocument",courseReport);
 
%>
<%--<a href="javascript:demoFromHTML()" class="button">Run Code</a>--%>
 
<div class="container-fluid">
148,8 → 111,6
<p><b class="label-info">Escola:</b> ${course.department.courseSchool.name}</p>
 
 
 
 
<script>
 
//Especifico da aplicacao
181,7 → 142,7
{
 
$scope.docAppSelector = "#courseReportApp";
$scope.report = <%=courseReportJson%>
$scope.report = ${courseReportJson}
 
$scope.resize = function(evt,ui,comp) {
//console.log (evt,ui);
355,7 → 316,7
<div class="form-vertical">
<div id="courseReportApp" ng-app="courseReportApp" ng-controller="courseReportAppController">
<div class="web-mensages"></div>
<button class="btn " ng-click="saveCourseReportDoc()">Save</button>
<button class="btn" ng-click="saveCourseReportDoc()">Save</button>
 
<div ng-init="section=report;" ng-include="'pt_estgp_estgweb_utils_documentBuilder_DocumentSection'">
 
372,8 → 333,4
 
</div><!--Panel-->
 
</div><!--container-fluid-->
 
<%
AbstractDao.getCurrentSession().getTransaction().commit();
%>
</div><!--container-fluid-->
/branches/grupo5/impl/conf/berserk/fd.xml
305,7 → 305,7
<description>
Checks if the requester is teacher in course commission
</description>
<isTransactional>true</isTransactional>
<isTransactional>false</isTransactional>
</filter>
 
 
/branches/grupo5/impl/src/java/pt/estgp/estgweb/services/courses/CourseReportServices.java
588,11 → 588,9
 
public String saveCourseReportDocument (String reportDocumentJson, UserSession session) throws IOException, JSONException
{
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());
 
634,16 → 632,7
try {
CourseReportDocument courseReport = createNewCourseReportDocument(courseCode, year);
courseReportJson = courseReport.toJson();
//System.out.println(courseReportJson);
//System.out.println("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU");
saveCourseReportDocument(courseReportJson, session);
 
//System.out.println("OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO");
//courseReportJson = new CourseReportServices().createNewCourseReportDocument(courseCode, year).toJson();
//System.out.println(courseReportJson);
//System.out.println("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU");
//courseReport = saveCourseReportDocument(courseReport,session);
//courseReport = loadCourseReportDocument(courseCode, year,session);
} catch (Throwable e) {
System.out.println(e);
e.printStackTrace();
/branches/grupo5/impl/src/java/pt/estgp/estgweb/filters/filters/IsCoordinatorInCourseImpl.java
35,12 → 35,11
if (userSession.getUser().isSuperuser())
return;
 
//request.getServiceParameters().getParameter((String) filterParameters.getParameter(0));//Returns NULL atm
 
String courseCode = (String) request.getServiceParameters().getParameter((String) filterParameters.getParameter(0));
 
String courseCode = "44";
 
CourseImpl course = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode);
 
if(!course.isFromCourseCommission(userSession.getUser()))
{
logger.warn(userSession.getUser().getUsername() + ":try access restricted area");
/branches/grupo5/impl/src/java/pt/estgp/estgweb/web/controllers/courses/CoursesServicesController.java
78,20 → 78,6
}
 
 
/* AA 7/12/2017 */
 
/*public JSONObject SaveCourseReportDocument(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),
"SaveCourseReportDocument",
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");
100,7 → 86,8
IServiceManager sm = ServiceManager.getInstance();
String json = (String) sm.execute(RequestUtils.getRequester(request, response),
"LoadCourseReportDocument",
new Object[]{courseCode,year});
new Object[]{courseCode,year},
new String[]{"courseCode", "year"});
 
request.setAttribute("courseReportJson", json);
//request.setAttribute("courseCode", courseCode);