Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1893 → Rev 1910

/branches/grupo3/impl/conf/WEB-INF/struts/struts-courses.xml
168,7 → 168,18
 
 
 
<!-- -->
<action path="/user/courseReport"
type="pt.estgp.estgweb.web.controllers.courses.CoursesServicesController"
name="WidgetModelForm"
scope="request"
parameter="dispatch"
validate="true"
input="page.widget.json.fail.validations">
</action>
 
 
 
</action-mappings>
 
</struts-config>
/branches/grupo3/impl/conf/berserk/sd.xml
4046,4 → 4046,20
</service>
 
 
<!-- AA 7/12/2017 -->
<service>
<name>CourseReportSave</name>
<implementationClass>pt.estgp.estgweb.services.courses.CourseReportServices</implementationClass>
<description>
@reportCourseDocument documento course report em json
</description>
<isTransactional>true</isTransactional>
<defaultMethod>save</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
 
 
</serviceDefinitions>
/branches/grupo3/impl/src/java/pt/estgp/estgweb/services/courses/CourseReportServices.java
449,10 → 449,22
}
 
 
/* AA 7/12/2017 */
 
public String save(String reportDocumentJson,UserSession session) throws IOException {
 
CourseReportDocument reportDocument = CourseReportDocument.fromJson(reportDocumentJson);
 
DaoFactory.getCourseDaoImpl().findCourseByCode(reportDocument.getCourseCode());
 
 
 
return reportDocument.toJson();
}
 
 
 
 
/****************************************************************************/
/*
 
/branches/grupo3/impl/src/java/pt/estgp/estgweb/web/controllers/courses/CoursesController.java
696,8 → 696,4
return tJson;
}
 
 
 
 
 
}
/branches/grupo3/impl/src/java/pt/estgp/estgweb/web/controllers/courses/CoursesServicesController.java
New file
0,0 → 1,63
package pt.estgp.estgweb.web.controllers.courses;
 
import org.apache.struts.action.ActionForm;
import org.json.JSONObject;
import pt.estgp.estgweb.web.controllers.utils.AbstractWidgetAjaxController;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
* Created by jorgemachado on 06/01/17.
*/
public class CoursesServicesController extends AbstractWidgetAjaxController
{
 
 
/**
* See also CoursesServicesWidgetController for WS-API services
*/
 
/**
*
* @param form
* @param request
* @param response
* @return
* @throws Throwable
*/
 
public JSONObject generateGlobalLearningResultsChartImg(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),
"CourseReportGenerateGlobalLearningResultsChartImg",
new Object[]{courseReportDocument});
return new JSONObject(json);
}
 
 
/* AA 7/12/2017 */
 
public JSONObject saveReport(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),
"CourseReportSave",
new Object[]{courseReportDocument});
return new JSONObject(json);
}
 
 
 
 
}
/branches/grupo3/impl/src/hbm/pt/estgp/estgweb/domain/Course.hbm.xml
79,6 → 79,10
<property name="separatedTurmas" type="boolean">
<column name="separatedTurmas" default="false"/>
</property>
<!--
<property name="report" type="text">
<column name="report" sql-type="LONGTEXT"/>
</property> -->
<many-to-one name="course" class="pt.estgp.estgweb.domain.Course" outer-join="true" lazy="false" column="course_id"/>
<subclass name="pt.estgp.estgweb.domain.CourseYearImpl" discriminator-value="CourseYearImpl"/>
</class>
/branches/grupo3/impl/src/web/user/courses/courseReportEdit.jsp
314,9 → 314,27
}
}
 
/* Guardar courseReport 7/12/2017 */
$scope.save = function()
{
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/json/repository.do",
"saveReport",
{
"report" : BacoJS.stringifyOrdered($scope.report)
},
"#courseReportApp",
function(json)
{
alert(BacoJS.stringifyOrdered(json));
},
function(){}
);
}
 
 
 
 
});
</script>
 
337,6 → 355,7
 
</div><!--App-->
</div> <!--form-->
<button class="md-raised md-button md-ink-ripple" type="button" ng-transclude="" ng-click="save()"><span class="ng-scope">Save</span></button>
 
</div><!--Panel Body-->
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Pagina.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.ArrayList;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitDeliverable.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoCursoAfeto.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioPergunta.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentTaskActorInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/SurveyStatsGraphic.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/GenericUser.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/EventGeneric.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportFileGroupDocentesAno.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentTaskInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentGatewayExclusiveDecisionHolderInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnActorSelector.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitProgram.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/ConfigurationSeparator.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportFileGroupCursosAno.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Announcement.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentEventEndMessageInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnActorPoolThreadInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Survey.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/RecordThesis.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/AssessmentQuestionPossibleAnswer.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/RepositoryDocumentInterface.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/PageSection.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.ArrayList;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/SurveyQuestionCandidateAnswer.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnActorPoolInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/SruSourceCollection.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/OlapStarFactQuestionarioAnswer.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/EventClass.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/RecordJob.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/ConfigurationGradesStatusEpoca.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Teacher.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/PageRepositoryFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import pt.estgp.estgweb.domain.typesgenservices.repositorydocuments.RepositoryFileProxy;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitSummary.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentGatewayInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Record.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnRoleSelector.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnTaskFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportDocenteFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseYear.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableDomainObject.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Blog.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentTaskActor.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import pt.estgp.estgweb.domain.typesgen.Todos;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Assessment.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/RepositoryFileVersion.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/UserRoleConfig.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/SessionObjectId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentTask.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import pt.estgp.estgweb.domain.typesgen.Todos;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/RepositoryDocumentCollection.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoUnidadeCurricularAfeta.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentGatewayExclusiveDecisionHolder.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableBoolean.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/SurveyQuestionItem.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/UrlStatMonth.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Page.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseStudiesPlan.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoAlunoRequisitado.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Process.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/AppUser.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnActorPool.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.ArrayList;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/PageText.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Questionario.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioPerguntaEsforco.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/SurveyQuestion.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioUnidade.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/OlapStarFactQuestionario.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentEventEndMessages.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import pt.estgp.estgweb.domain.typesgen.TargetActorType;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableString.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentGateway.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/UrlStatYearId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableJson.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/AssessmentQuestionItem.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Group.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnit.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/SurveyQuestionAnswer.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/ConfigurationGradesEpocaAvaliacao.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoTipologiaRequisitada.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/SigesUser.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitAnnouncement.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/ManagedIdentifierCollection.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/AssessmentQuestion.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/UrlStatYear.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/DigitalDeliveryCategory.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/RecordOther.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/UrlStatMonthId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/DigitalDelivery.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/UserSession.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitEvaluation.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportCursoFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportFileGroup.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/AssessmentQuestionAnswer.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentEventInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnActorSelectorCondicionado.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitProgramPart2.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/OlapStarFactQuestionarioCurso.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioResposta.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioTipologia.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitBlog.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Reminder.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/RecordEventOrganization.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/RecordPaper.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentGatewayExclusiveInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Configuration.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/PageContent.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/SessionObject.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.io.Serializable;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitBlogPost.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/JobParameter.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableInteger.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnProcessInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/EventFormacoes.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/ComunicationFolder.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Student.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableFloat.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitQuestion.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionario.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/UrlStatDay.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnUserSelector.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/OlapStarFactQuestionarioTipologia.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariable.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import pt.estgp.estgweb.domain.typesgen.VariableType;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/RecordProject.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/PageExternalObject.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponent.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentEvent.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitTurma.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/SurveyResponse.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/RepositoryFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/ProcessEventFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/ProcessEvent.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/OlapStarFactQuestionarioUnidade.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentGatewayExclusive.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableLong.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowConnectorInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentEventEndInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BlogPost.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/SruSource.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnProcess.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.ArrayList;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableJsonArray.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/ManagedIdentifier.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Course.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/PageExternalUrl.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitGrade.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/AssessmentResponse.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/UrlStatDayId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportFileAno.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/JobServiceTask.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/RepositoryDocument.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/RepositoryDocumentFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/User.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/EventUser.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Image.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/OlapHistoryDimension.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Teste.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/OlapStarFactQuestionarioAnswerEsforco.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/DigitalDeliveryTarget.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnActorSelectorWithDomainObjectLoader.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportFileGroupAno.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioUser.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseUserAssociation.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/ConfigurationDirectory.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioHistoryDrive.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitAssignement.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowConnector.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioRespostaRequisitada.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentEventEnd.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowObjectInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioCurso.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseSchool.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Job.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.io.Serializable;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnAbstractActorSelector.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/JobServiceTaskScheduler.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/EventGenericRecord.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/JobServiceTaskSchedulerParameter.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/JobServiceTaskParameter.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/CourseDepartment.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/MetaProcess.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/SurveyStructuralNode.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableDouble.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/ConfigurationGrades.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/Seccao.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo3/impl/gen/java/pt/estgp/estgweb/domain/UrlStat.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated 11/dez/2017 14:53:26 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo5/impl/conf/WEB-INF/struts/struts-json-ws.xml
52,13 → 52,12
<action path="/secure/ws-teacher-list" forward="/user/jsonModel.do?dispatch=executeService&amp;serviceJson=wsListTeachers"/>
<action path="/secure/ws-coordinators-list" forward="/user/jsonModel.do?dispatch=executeService&amp;serviceJson=wsListCoordinators"/>
 
<!--SERVICOS ABERTOS POR ENQUANTO-->
<!--SERVICOS ABERTOS POR ENQUANTO--> <!--Erros porque Struts não aguento mais do que dois hops -->
<action path="/ws-units-report-list" forward="/json/coursesServices.do?dispatch=executeService&amp;serviceJson=getCourseUnitsEvaluations"/>
<action path="/ws-course-pedagogic-results-list" forward="/json/coursesServices.do?dispatch=executeService&amp;serviceJson=findPedagogicReport4Period"/>
<action path="/ws-units-dtp-stats" forward="/json/coursesServices.do?dispatch=executeService&amp;serviceJson=getCourseUnitDtpStats"/>
<action path="/ws-course-unit-plan-year" forward="/json/coursesServices.do?dispatch=executeService&amp;serviceJson=loadPlanYearForCourseUnitCode"/>
 
 
</action-mappings>
 
 
/branches/grupo6/impl/conf/WEB-INF/struts/struts-courses.xml
166,9 → 166,16
<action path="/user/loadCourseReportTools" forward="page.course.report.tools.load"/>
<action path="/user/editCourseReport" forward="page.course.report.edit"/>
 
<action path="/user/courseReport"
type="pt.estgp.estgweb.web.controllers.courses.CoursesServicesController"
name="WidgetModelForm"
scope="request"
parameter="dispatch"
validate="true"
input="page.widget.json.fail.validations">
</action>
 
 
 
</action-mappings>
 
</struts-config>
/branches/grupo6/impl/conf/WEB-INF/struts/struts-json-ws.xml
53,7 → 53,7
<action path="/secure/ws-coordinators-list" forward="/user/jsonModel.do?dispatch=executeService&amp;serviceJson=wsListCoordinators"/>
 
<!--SERVICOS ABERTOS POR ENQUANTO-->
<action path="/ws-units-report-list" forward="/json/coursesServices.do?dispatch=executeService&amp;serviceJson=getCourseUnitsEvaluations"/>-->
<action path="/ws-units-report-list" forward="/json/coursesServices.do?dispatch=executeService&amp;serviceJson=getCourseUnitsEvaluations"/>
<action path="/ws-course-pedagogic-results-list" forward="/json/coursesServices.do?dispatch=executeService&amp;serviceJson=findPedagogicReport4Period"/>
<action path="/ws-units-dtp-stats" forward="/json/coursesServices.do?dispatch=executeService&amp;serviceJson=getCourseUnitDtpStats"/>
<action path="/ws-course-unit-plan-year" forward="/json/coursesServices.do?dispatch=executeService&amp;serviceJson=loadPlanYearForCourseUnitCode"/>
/branches/grupo6/impl/conf/WEB-INF/web.xml
89,7 → 89,8
/layout/themes,
/wsjson/api,
/wsjson/api/app/,
/auth/
/auth/,
/minhaservlet
</param-value>
</init-param>
<init-param>
366,12 → 367,20
<servlet-class>pt.estgp.estgweb.web.controllers.configuration.SchedullerTasksJson</servlet-class>
</servlet>
 
<servlet>
<servlet-name>minhaServlet</servlet-name>
<servlet-class>pt.estgp.estgweb.web.controllers.SubServlet</servlet-class>
</servlet>
 
 
<!--MAPPINGS-->
 
<!--SOAP Tutorial-->
<servlet-mapping>
<servlet-name>minhaServlet</servlet-name>
<url-pattern>/minhaServlet</url-pattern>
</servlet-mapping>
 
<servlet-mapping>
<servlet-name>ws</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
/branches/grupo6/impl/conf/app.properties
8,6 → 8,7
##Em testes colocar true
test.control.var=@test.control.var@
 
 
import.year=201516
tmp.dir=@tmp.dir@
data.dir=@data.dir@
/branches/grupo6/impl/conf/directories/header.xml
1,5 → 1,4
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<directory fixedDirectoryId="true" menuKey="" targetRole="all" layoutRoot="" layout="" style="topMenus.xsl" label_es=""
label_en="" label="Menus de Top" id="header" xmlns="http://www.estgp.pt/baco/directory/">
<groupsDeclaration/>
/branches/grupo6/impl/conf/berserk/sd.xml
36,7 → 36,6
</service>
 
 
 
<!--WS SERVICES ONLY FOR MOBILE APPS NEED API KEY AUTHNETICATION AND CERTIFICATE-->
<service>
<name>WSAPILoginChallenge</name>
388,7 → 387,8
</service>
<service>
<name>LoadTargetMaxAnnouncements</name>
<implementationClass>pt.estgp.estgweb.services.announcements.LoadTargetMaxAnnouncementsService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.announcements.LoadTargetMaxAnnouncementsService
</implementationClass>
<description>Load an Announcement views to show in list</description>
<isTransactional>true</isTransactional>
<filterChains>
398,7 → 398,8
</service>
<service>
<name>LoadRoleTypeMaxAnnouncements</name>
<implementationClass>pt.estgp.estgweb.services.announcements.LoadRoleTypeMaxAnnouncementsService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.announcements.LoadRoleTypeMaxAnnouncementsService
</implementationClass>
<description>Load an Announcement views to show in list</description>
<isTransactional>true</isTransactional>
<filterChains>
408,7 → 409,8
</service>
<service>
<name>LoadTypeMaxAnnouncements</name>
<implementationClass>pt.estgp.estgweb.services.announcements.LoadTypeMaxAnnouncementsService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.announcements.LoadTypeMaxAnnouncementsService
</implementationClass>
<description>Load an Announcement views to show in list</description>
<isTransactional>true</isTransactional>
<filterChains>
418,7 → 420,8
</service>
<service>
<name>LoadTypeAnnouncements</name>
<implementationClass>pt.estgp.estgweb.services.announcements.LoadTypeMaxAnnouncementsService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.announcements.LoadTypeMaxAnnouncementsService
</implementationClass>
<description>Load an Announcement views to show in list</description>
<isTransactional>true</isTransactional>
<defaultMethod>load</defaultMethod>
429,7 → 432,8
</service>
<service>
<name>LoadTopFlashNewsIterate</name>
<implementationClass>pt.estgp.estgweb.services.announcements.LoadTopFlashNewsIterateService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.announcements.LoadTopFlashNewsIterateService
</implementationClass>
<description>Load an Announcement one flash News</description>
<isTransactional>true</isTransactional>
<filterChains>
678,7 → 682,6
</service>
 
 
 
<!--CommonServices-->
<service>
<name>CommonServicesSearch</name>
832,7 → 835,7
<chain name="OwnersEdit"/>
</filterChains>
</service>
 
<service>
<name>LoadUserById</name>
<implementationClass>pt.estgp.estgweb.services.profile.LoadUserByIdService</implementationClass>
903,7 → 906,6
</service>
 
 
 
<!--Reminders Services-->
<service>
<name>CreateReminder</name>
996,18 → 998,18
</filterChains>
</service>
 
<!--<service>
<name>DeleteCourseUnit</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.UpdateCourseUnitService</implementationClass>
<description>Update course unit objectives and program file</description>
<isTransactional>true</isTransactional>
<defaultMethod>delete</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Supers"/>
</filterChains>
</service>-->
<!--<service>
<name>DeleteCourseUnit</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.UpdateCourseUnitService</implementationClass>
<description>Update course unit objectives and program file</description>
<isTransactional>true</isTransactional>
<defaultMethod>delete</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Supers"/>
</filterChains>
</service>-->
<service>
<name>LoadCourseUnit</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitService</implementationClass>
1170,10 → 1172,10
</service>
 
 
 
<service>
<name>LoadCourseUnitsBySigesCodes</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitsBySigesCodesService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitsBySigesCodesService
</implementationClass>
<description>Load course old units</description>
<isTransactional>true</isTransactional>
<filterChains>
1184,7 → 1186,8
 
<service>
<name>LoadCourseUnitInEvaluationBySigesCodes</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitsBySigesCodesService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitsBySigesCodesService
</implementationClass>
<description>Load course old units</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadUnitInEvaluation</defaultMethod>
1196,7 → 1199,8
 
<service>
<name>LoadCourseUnitsBySigesCodesSemestreLastYear</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitsBySigesCodesService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitsBySigesCodesService
</implementationClass>
<description>Load a unique unit by sigescode, semestre and course code</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadLastYear</defaultMethod>
1208,7 → 1212,8
 
<service>
<name>LoadCourseUnitsBySigesCodesSemestreLastYearProgram</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitsBySigesCodesService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitsBySigesCodesService
</implementationClass>
<description>Load a unique unit by sigescode, semestre and course code</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadLastYearProgram</defaultMethod>
1392,7 → 1397,8
</service>
<service>
<name>LoadTeachedUnitsCurrentYear</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadTeachedUnitsCurrentYearService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadTeachedUnitsCurrentYearService
</implementationClass>
<description>Load teacher units in currentYear</description>
<isTransactional>true</isTransactional>
<filterChains>
1417,7 → 1423,8
</service>
<service>
<name>LoadSubscribedUnitsCurrentYear</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadSubscribedUnitsCurrentYearService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadSubscribedUnitsCurrentYearService
</implementationClass>
<description>Load student units in current Year</description>
<isTransactional>true</isTransactional>
<filterChains>
1425,7 → 1432,8
</service>
<service>
<name>LoadSubscribedUnitsGivenYear</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadSubscribedUnitsCurrentYearService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadSubscribedUnitsCurrentYearService
</implementationClass>
<description>Load student units in current Year</description>
<isTransactional>true</isTransactional>
<defaultMethod>givenYear</defaultMethod>
1434,7 → 1442,8
</service>
<service>
<name>LoadSubscribedUnitsOldYears</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadSubscribedUnitsOldYearsService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadSubscribedUnitsOldYearsService
</implementationClass>
<description>Load student units in current Year</description>
<isTransactional>true</isTransactional>
<filterChains>
1442,7 → 1451,8
</service>
<service>
<name>LoadSubscribedUnitsAnnouncements</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadSubscribedUnitsAnnouncementsService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadSubscribedUnitsAnnouncementsService
</implementationClass>
<description>Load student units</description>
<isTransactional>true</isTransactional>
<filterChains>
1451,7 → 1461,8
</service>
<service>
<name>LoadTeachedUnitsAnnouncements</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadTeachedUnitsAnnouncementsService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadTeachedUnitsAnnouncementsService
</implementationClass>
<description>Load student units</description>
<isTransactional>true</isTransactional>
<filterChains>
1509,13 → 1520,12
</filterChains>
</service>
 
 
 
<!--CourseUnitAssignements Backups-->
<service>
<name>CreateCourseUnitDirPackage</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitDirPackageServiceBat</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitDirPackageServiceBat
</implementationClass>
<description>Create a zip file with Intranet folders</description>
<isTransactional>true</isTransactional>
<filterChains>
1526,7 → 1536,8
</service>
<service>
<name>CreateCourseUnitWorksBackup</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService
</implementationClass>
<description>Create a zip file with Intranet folders</description>
<isTransactional>true</isTransactional>
<defaultMethod>createSystemBackup</defaultMethod>
1538,7 → 1549,8
</service>
<service>
<name>CreateImportYearCourseUnitWorksBackup</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService
</implementationClass>
<description>Create a zip file with Intranet folders</description>
<isTransactional>true</isTransactional>
<defaultMethod>createSystemImportYearBackup</defaultMethod>
1550,7 → 1562,8
</service>
<service>
<name>CreateUserActualYearCourseUnitWorksBackup</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService
</implementationClass>
<description>Create a zip file with deliverables</description>
<isTransactional>true</isTransactional>
<defaultMethod>createActualYearBackup</defaultMethod>
1561,7 → 1574,8
</service>
<service>
<name>CreateUserImportYearCourseUnitWorksBackup</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService
</implementationClass>
<description>Create a zip file with deliverables</description>
<isTransactional>true</isTransactional>
<defaultMethod>createImportYearBackup</defaultMethod>
1572,7 → 1586,8
</service>
<service>
<name>CreateUserAllCourseUnitWorksBackup</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService
</implementationClass>
<description>Create a zip file with Intranet folders</description>
<isTransactional>true</isTransactional>
<defaultMethod>createBackup</defaultMethod>
1583,7 → 1598,8
</service>
<service>
<name>CreateUserAllCourseUnitProgramsBackup</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService
</implementationClass>
<description>Create a zip file with Intranet folders with Programs only</description>
<isTransactional>true</isTransactional>
<defaultMethod>createProgramsBackup</defaultMethod>
1592,11 → 1608,8
<chain name="Session"/>
</filterChains>
</service>
 
 
 
 
<!--COURSES-->
<service>
<name>LoadCourseByCode</name>
1763,7 → 1776,6
</service>
 
 
 
<service>
<name>UpdateCourseSchool</name>
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass>
1802,7 → 1814,6
</service>
 
 
 
<service>
<name>SubmitCourse</name>
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass>
1855,7 → 1866,7
<chain name="Logger"/>
</filterChains>
</service>
<service>
<service>
<name>LoadCoursesImportYearByType</name>
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass>
<description>Load All Courses</description>
1921,7 → 1932,6
</service>
 
 
 
<!--Administratives-->
<service>
<name>CreateCourseUnitAdmin</name>
2024,10 → 2034,6
</service>
 
 
 
 
 
 
<!--Managed Identifiers-->
<service>
<name>managedIdentiferLoadCollections</name>
2191,8 → 2197,6
<!---->
 
 
 
 
<!--SRU Services-->
<service>
<name>LoadSruSourceById</name>
2367,7 → 2371,7
</filterChains>
</service>
<service>
<name>GenerateSurveyStatsCsv</name>
<name>GenerateSurveyStatsCsv</name>
<implementationClass>pt.estgp.estgweb.services.surveys.GenerateSurveyStatsCsvService</implementationClass>
<description>Generate all survey stats on a csv file</description>
<isTransactional>true</isTransactional>
2402,8 → 2406,7
<!-- Duarte Santos -->
 
 
 
<!--Filipe Matos-->
<!--Filipe Matos-->
<!--Assessments-->
<service>
<name>CreateEditAssessment</name>
2605,10 → 2608,10
</service>
 
 
 
<service>
<name>LoadUnitOtherYearsWithProgram</name>
<implementationClass>pt.estgp.estgweb.services.sigesimports.SincronizeLastYearCourseUnitProgramsService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.sigesimports.SincronizeLastYearCourseUnitProgramsService
</implementationClass>
<description>Loads units with program from diferent year parameters (Long unitId)</description>
<isTransactional>true</isTransactional>
<defaultMethod>findOtherUnitsWithProgram</defaultMethod>
2621,8 → 2624,10
 
<service>
<name>CloneCourseUnitProgram</name>
<implementationClass>pt.estgp.estgweb.services.sigesimports.SincronizeLastYearCourseUnitProgramsService</implementationClass>
<description>Clone unit program from a unit into another unit parameters (long fromUnitId, long intoUnitId) </description>
<implementationClass>pt.estgp.estgweb.services.sigesimports.SincronizeLastYearCourseUnitProgramsService
</implementationClass>
<description>Clone unit program from a unit into another unit parameters (long fromUnitId, long intoUnitId)
</description>
<isTransactional>true</isTransactional>
<defaultMethod>cloneProgram</defaultMethod>
<filterChains>
2633,12 → 2638,11
</service>
 
 
 
<!--PROCESSOS-->
<service>
<name>CreateNewProcess</name>
<implementationClass>pt.estgp.estgweb.services.processes.ProcessesService</implementationClass>
<description>Create a new instance of Process and transitates it </description>
<description>Create a new instance of Process and transitates it</description>
<isTransactional>true</isTransactional>
<defaultMethod>submitNew</defaultMethod>
<filterChains>
2828,7 → 2832,6
</service>
 
 
 
<service>
<name>TryDeleteCourseUnitService</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.DeleteCourseUnitService</implementationClass>
2947,7 → 2950,6
</service>
 
 
 
<service>
<name>CreateRoleCourseComission</name>
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass>
3084,7 → 3086,8
 
<service>
<name>setAnoSemestre</name>
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService
</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>setAnoSemestre</defaultMethod>
3221,10 → 3224,10
</service>
 
 
 
<service>
<name>RunJobSelectCourses</name>
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService
</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>runJobSelectCourses</defaultMethod>
3239,7 → 3242,8
 
<service>
<name>RunJobAssignAnswers</name>
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.AssignAnswersJobService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.AssignAnswersJobService
</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>runJobAssignAnswers</defaultMethod>
3253,7 → 3257,8
 
<service>
<name>QuestionarioRevertAllAssignmentsPedagogico</name>
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService
</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>revertAllAssignments</defaultMethod>
3268,7 → 3273,8
 
<service>
<name>QuestionarioUpdateTipologiasPedagogico</name>
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService
</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>updateTipologiasPedagogico</defaultMethod>
3284,7 → 3290,8
 
<service>
<name>QuestionarioUpdateCheckVarPedagogico</name>
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService
</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>updateCheckVarPedagogico</defaultMethod>
3299,7 → 3306,8
 
<service>
<name>QuestionarioUpdateCheckVarExcludedPedagogico</name>
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.questionarios.pedagogico.UpdateCoursesAndUnitsJobService
</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>updateCheckVarExcludedPedagogico</defaultMethod>
3393,11 → 3401,9
</service>
 
 
 
<!-- REPORTS DE QUESTIONARIOS-->
 
 
 
<service>
<name>SaveReportGroup</name>
<implementationClass>pt.estgp.estgweb.services.questionarios.QuestionariosReportsService</implementationClass>
3465,14 → 3471,13
</service>
 
 
 
 
<!--REPOSITORY DOCUMENTS-->
 
 
<service>
<name>SaveRepositoryDocument</name>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService
</implementationClass>
<description>Salva um repository document no repositorio digital de documentos</description>
<isTransactional>true</isTransactional>
<defaultMethod>saveRepositoryDocument</defaultMethod>
3484,7 → 3489,8
</service>
<service>
<name>OpenRepositoryCollection</name>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService
</implementationClass>
<description>Serviço publico de abertura de Sub Colecções</description>
<isTransactional>true</isTransactional>
<defaultMethod>openRepositoryCollection</defaultMethod>
3495,7 → 3501,8
</service>
<service>
<name>OpenRepositoryCollectionDocuments</name>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService
</implementationClass>
<description>Serviço publico de abertura de documentos de uma Colecção</description>
<isTransactional>true</isTransactional>
<defaultMethod>openRepositoryCollectionDocuments</defaultMethod>
3506,7 → 3513,8
</service>
<service>
<name>AddRepositoryCollection</name>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService
</implementationClass>
<description>Salva um repository document no repositorio digital de documentos</description>
<isTransactional>true</isTransactional>
<defaultMethod>addRepositoryCollection</defaultMethod>
3518,7 → 3526,8
</service>
<service>
<name>ChangeParentRepositoryDocumentCollection</name>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService
</implementationClass>
<description>Move uma colecção na arvore para um novo Pai</description>
<isTransactional>true</isTransactional>
<defaultMethod>changeParentRepositoryDocumentCollection</defaultMethod>
3530,7 → 3539,8
</service>
<service>
<name>DeleteRepositoryDocumentCollection</name>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService
</implementationClass>
<description>Apaga uma colecção do repositório digital, caso esta esteja vazia</description>
<isTransactional>true</isTransactional>
<defaultMethod>deleteCollection</defaultMethod>
3542,7 → 3552,8
</service>
<service>
<name>ChangeDocumentCollection</name>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService
</implementationClass>
<description>Move uma colecção na arvore para um novo Pai</description>
<isTransactional>true</isTransactional>
<defaultMethod>changeDocumentCollection</defaultMethod>
3554,7 → 3565,8
</service>
<service>
<name>UpdateRepositoryCollection</name>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService
</implementationClass>
<description>Salva um repository colection no repositorio digital de documentos</description>
<isTransactional>true</isTransactional>
<defaultMethod>updateRepositoryCollection</defaultMethod>
3568,7 → 3580,8
 
<service>
<name>RepositoryDocumentsAddManagerToCollection</name>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService
</implementationClass>
<description>Adiciona um utilizador como Gestor da Colecção do Repositorio digital</description>
<isTransactional>true</isTransactional>
<defaultMethod>addManagerToCollection</defaultMethod>
3580,7 → 3593,8
</service>
<service>
<name>RepositoryDocumentsRemoveManagerInCollection</name>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService
</implementationClass>
<description>Remove um utilizador de Gestor da Colecção do Repositorio digital</description>
<isTransactional>true</isTransactional>
<defaultMethod>removeManagerInCollection</defaultMethod>
3592,10 → 3606,10
</service>
 
 
 
<service>
<name>AddRepositoryInterface</name>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService
</implementationClass>
<description>Salva um repository interface no repositorio digital de documentos</description>
<isTransactional>true</isTransactional>
<defaultMethod>addRepositoryInterface</defaultMethod>
3607,7 → 3621,8
</service>
<service>
<name>RemoveRepositoryInterface</name>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService
</implementationClass>
<description>Salva um repository interface no repositorio digital de documentos</description>
<isTransactional>true</isTransactional>
<defaultMethod>removeRepositoryInterface</defaultMethod>
3619,7 → 3634,8
</service>
<service>
<name>CheckRepositoryDocumentExistence</name>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService
</implementationClass>
<description>Salva um repository interface no repositorio digital de documentos</description>
<isTransactional>true</isTransactional>
<defaultMethod>checkRepositoryDocumentExistence</defaultMethod>
3630,7 → 3646,8
</service>
<service>
<name>UpdateRepositoryInterface</name>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService
</implementationClass>
<description>Salva um repository interface no repositorio digital de documentos</description>
<isTransactional>true</isTransactional>
<defaultMethod>updateRepositoryInterface</defaultMethod>
3643,7 → 3660,8
 
<service>
<name>SaveRepositoryInterfaceData</name>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.data.repositorydocuments.RepositoryDocumentService
</implementationClass>
<description>Salva um repository interface no repositorio digital de documentos</description>
<isTransactional>true</isTransactional>
<defaultMethod>saveRepositoryInterfaceData</defaultMethod>
3655,12 → 3673,12
</service>
 
 
 
<!-- Separators-->
 
<service>
<name>NewConfigurationSeparator</name>
<implementationClass>pt.estgp.estgweb.services.configuration.ConfigurationSeparatorsService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.configuration.ConfigurationSeparatorsService
</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>newConfigurationSeparator</defaultMethod>
3672,7 → 3690,8
</service>
<service>
<name>UpdateConfigurationSeparator</name>
<implementationClass>pt.estgp.estgweb.services.configuration.ConfigurationSeparatorsService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.configuration.ConfigurationSeparatorsService
</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>updateConfigurationSeparator</defaultMethod>
3684,7 → 3703,8
</service>
<service>
<name>RemoveConfigurationSeparator</name>
<implementationClass>pt.estgp.estgweb.services.configuration.ConfigurationSeparatorsService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.configuration.ConfigurationSeparatorsService
</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>removeConfigurationSeparator</defaultMethod>
3696,7 → 3716,6
</service>
 
 
 
<!-- FUSCO VIRTUAL FILE SYSTEM -->
 
<service>
3898,14 → 3917,11
</service>
 
 
 
 
<!--/****************************************************************************/
/* COURSE REPORTS
/****************************************************************************/-->
 
 
 
<service>
<name>CreateDtpStatsTable4Course</name>
<implementationClass>pt.estgp.estgweb.services.courses.CourseReportServices</implementationClass>
3961,7 → 3977,8
<description>
@code codigo do curso
@year codigo do ano
Carrega todas as unidades em classes CourseUnitSection onde consta informação do professor, codigo, ano, semestre
Carrega todas as unidades em classes CourseUnitSection onde consta informação do professor, codigo, ano,
semestre
e consta ainda o CourseUnitEvaluation
devolve um json object com um elemento evaluation contendo um JSONArray como string
O conteudo do array são
3996,7 → 4013,8
<description>
@code codigo do curso
@year codigo do ano
Carrega todas as estatisticas unidades em classes CourseUnitDtpStat onde consta informação do codigo, nome, semestre e um booleano por cada propriedade da unidade
Carrega todas as estatisticas unidades em classes CourseUnitDtpStat onde consta informação do codigo, nome,
semestre e um booleano por cada propriedade da unidade
devolve um json object com um elemento evaluation contendo um JSONArray como string
O conteudo do array são
classes CourseUnitDtpStat está pronta a serializar em JSON implementa a JSONView
4027,9 → 4045,10
 
 
<!-- SERVICOS DE GERACAO DE RELATORIO DE CURSO -->
 
 
<service>
<name>CourseReportGenerateGlobalLearningResultsChartImg</name>
 
<implementationClass>pt.estgp.estgweb.services.courses.CourseReportServices</implementationClass>
<description>
@reportCourseDocument documento course report em json
4046,4 → 4065,40
</filterChains>
</service>
 
<!-- SEGUNDO GRÁFICO -->
<service>
<name>CourseReportGenerateGlobalLearningResultsChartYearImg</name>
<implementationClass>pt.estgp.estgweb.services.courses.CourseReportServices</implementationClass>
<description>
@reportCourseDocument documento course report em json
Serviço de suporte para gerar um grafico de aproveitamento por notas e ano curricular
Coloca o grafico no report documento
e salva o documento no curso
Devolve uma classe RepositoryFile4JsonView serializada em JSON
</description>
<isTransactional>true</isTransactional>
<defaultMethod>generateGlobalLearningResultsChartYearImg</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
 
 
<service>
<name>CourseReportSave</name>
<implementationClass>pt.estgp.estgweb.services.courses.CourseReportServices</implementationClass>
<description>
@reportCourseDocument documento course report em json
 
</description>
<isTransactional>true</isTransactional>
<defaultMethod>save</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
 
 
</serviceDefinitions>
/branches/grupo6/impl/src/java/pt/estgp/estgweb/utils/documentBuilder/DocumentSection.java
10,7 → 10,7
{
String title = "";
 
List<DocComponent> components = new ArrayList<DocComponent>();
ArrayList<DocComponent> components = new ArrayList<DocComponent>();
 
public DocumentSection() {
}
32,7 → 32,7
return components;
}
 
public void setComponents(List<DocComponent> components) {
public void setComponents(ArrayList<DocComponent> components) {
this.components = components;
}
 
/branches/grupo6/impl/src/java/pt/estgp/estgweb/utils/documentBuilder/SectionContainer.java
1,20 → 1,19
package pt.estgp.estgweb.utils.documentBuilder;
 
import java.util.ArrayList;
import java.util.List;
 
/**
* Created by jorgemachado on 07/11/17.
*/
public class SectionContainer extends ExtensibleDocObject
{
List<DocumentSection> sections = new ArrayList<DocumentSection>();
ArrayList<DocumentSection> sections = new ArrayList<DocumentSection>();
 
public List<DocumentSection> getSections() {
public ArrayList<DocumentSection> getSections() {
return sections;
}
 
public void setSections(List<DocumentSection> sections) {
public void setSections(ArrayList<DocumentSection> sections) {
this.sections = sections;
}
 
/branches/grupo6/impl/src/java/pt/estgp/estgweb/services/courses/CourseReportServices.java
38,41 → 38,30
/**
* Created by jorgemachado on 14/10/17.
*/
public class CourseReportServices implements IService
{
public class CourseReportServices implements IService {
private static final Logger logger = Logger.getLogger(CourseReportServices.class);
 
 
 
 
 
 
 
/****************************************************************************/
/* SERVICOS CORE DOS REPORTS
/****************************************************************************/
 
 
 
 
/**
*
* @param courseCode
* @param year
* @return
* @throws IOException
* @throws JSONException
*/
public CourseReportDocument createNewCourseReportDocument(String courseCode,String year) throws IOException, JSONException
{
public CourseReportDocument createNewCourseReportDocument(String courseCode, String year) throws IOException, JSONException {
 
Course course = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode);
 
CourseReportDocument reportCourseDocument = new CourseReportDocument();
reportCourseDocument.init(course,year);
reportCourseDocument.init(course, year);
 
 
 
//FIRST SERVICE TO CALL TO OBTAIN UNITS AND EVALUATIONS
//THIS IS THE BASE FOR THE REMAIN SERVICE CALLS
List<DocumentSection> courseUnitSections = updateCleanCourseUnitSections(courseCode, year, reportCourseDocument);
101,8 → 90,8
QuestionariosDataTableComponent dataTableComponentS2 = (QuestionariosDataTableComponent) surveysResultsSection.getComponents().get(1);
 
QuestionariosReportsService questionariosReportsService = new QuestionariosReportsService();
String jsonDataTableS1 = questionariosReportsService.loadReportUnidadesSalasJson(courseCode,year,"S1");
String jsonDataTableS2 = questionariosReportsService.loadReportUnidadesSalasJson(courseCode,year,"S2");
String jsonDataTableS1 = questionariosReportsService.loadReportUnidadesSalasJson(courseCode, year, "S1");
String jsonDataTableS2 = questionariosReportsService.loadReportUnidadesSalasJson(courseCode, year, "S2");
DataTable dataTableS1 = DataTable.fromJson(jsonDataTableS1);
DataTable dataTableS2 = DataTable.fromJson(jsonDataTableS2);
dataTableComponentS1.setDataTable(dataTableS1);
112,36 → 101,33
 
/**
* Este serviço atualiza a tabela de resultados de aprendizagem com base nas courseunitssections
*
* @param reportCourseDocument
* @return UnitsLearningResultsTable
*/
public UnitsLearningResultsTable updateCleanLearningResultsFromCourseUnitsSections(CourseReportDocument reportCourseDocument)
{
public UnitsLearningResultsTable updateCleanLearningResultsFromCourseUnitsSections(CourseReportDocument reportCourseDocument) {
CourseUnitsReportsSection unitReportsSection = (CourseUnitsReportsSection) reportCourseDocument.findDocumentSection(CourseUnitsReportsSection.class);
 
LearningResultsSection learningResultsSection = (LearningResultsSection) reportCourseDocument.findDocumentSection(LearningResultsSection.class);
UnitsLearningResultsTable learningResultsTable = (UnitsLearningResultsTable) learningResultsSection.findDocComponent(UnitsLearningResultsTable.class);
 
Map<Integer,UnitsLearningResultYear> anosPlano = new HashMap<Integer, UnitsLearningResultYear>();
Map<String,UnitsLearningResultSemester> anoSemestre = new HashMap<String, UnitsLearningResultSemester>();
for(DocumentSection subSection : unitReportsSection.getSections())
{
Map<Integer, UnitsLearningResultYear> anosPlano = new HashMap<Integer, UnitsLearningResultYear>();
Map<String, UnitsLearningResultSemester> anoSemestre = new HashMap<String, UnitsLearningResultSemester>();
for (DocumentSection subSection : unitReportsSection.getSections()) {
CourseUnitSection unitSection = (CourseUnitSection) subSection;
int anoPlano = unitSection.getAnoPlano();
UnitsLearningResultYear anoFound = anosPlano.get(anoPlano);
if(anoFound == null)
{
if (anoFound == null) {
anoFound = new UnitsLearningResultYear(anoPlano);
anosPlano.put(anoPlano,anoFound);
anosPlano.put(anoPlano, anoFound);
learningResultsTable.getYears().add(anoFound);
}
 
String semestreCode = ((CourseUnitSection) subSection).getPeriod();
UnitsLearningResultSemester semestreFound = anoSemestre.get(anoPlano + "$" + semestreCode);
if(semestreFound == null)
{
if (semestreFound == null) {
semestreFound = new UnitsLearningResultSemester(semestreCode);
anoSemestre.put(anoPlano + "$" + semestreCode,semestreFound);
anoSemestre.put(anoPlano + "$" + semestreCode, semestreFound);
anoFound.getSemesters().add(semestreFound);
}
 
149,8 → 135,7
uc.setPeriod(semestreCode);
uc.setName(unitSection.getName());
uc.setSigesCode(unitSection.getSigesCode());
if(unitSection.getCourseUnitEvaluation() != null)
{
if (unitSection.getCourseUnitEvaluation() != null) {
 
uc.setCumprimentoProgramaPercent(unitSection.getCourseUnitEvaluation().getCumprimentoProgramaPercent());
uc.setAlunosInscritos(unitSection.getCourseUnitEvaluation().getNumAlunosInscritos());
162,15 → 147,13
uc.setAprovados(unitSection.getCourseUnitEvaluation().getNumAlunosAprovTotal());
uc.setReprovados(unitSection.getCourseUnitEvaluation().getNumAlunosInscritos() - unitSection.getCourseUnitEvaluation().getNumAlunosAprovTotal() - unitSection.getCourseUnitEvaluation().getNumAlunosSemElementosAvaliacao());
 
if(uc.getAlunosInscritos() > 0)
{
if (uc.getAlunosInscritos() > 0) {
uc.setAprovadosPercent((float) (uc.getAprovados() * 100.0 / uc.getAlunosInscritos()));
uc.setReprovadosPercent((float) (uc.getReprovados() * 100.0 / uc.getAlunosInscritos()));
uc.setSemElementosPercent((float) (uc.getSemElementos() * 100.0 / uc.getAlunosInscritos()));
}
 
if(uc.getAprovados() > 0)
{
if (uc.getAprovados() > 0) {
uc.setAprovados1013Percent((float) (uc.getAprovados1013() * 100.0 / uc.getAprovados()));
uc.setAprovados1416Percent((float) (uc.getAprovados1416() * 100.0 / uc.getAprovados()));
uc.setAprovados1720Percent((float) (uc.getAprovados1720() * 100.0 / uc.getAprovados()));
186,9 → 169,8
}
});
 
for(UnitsLearningResultYear learningYearLine: learningResultsTable.getYears())
{
Collections.sort(learningYearLine.getSemesters(),new Comparator<UnitsLearningResultSemester>() {
for (UnitsLearningResultYear learningYearLine : learningResultsTable.getYears()) {
Collections.sort(learningYearLine.getSemesters(), new Comparator<UnitsLearningResultSemester>() {
@Override
public int compare(UnitsLearningResultSemester o1, UnitsLearningResultSemester o2) {
return o1.getSemestre().compareTo(o2.getSemestre());
206,8 → 188,7
float totalAprovados1013PercentGlobal = 0;
float totalAprovados1416PercentGlobal = 0;
float totalAprovados1720PercentGlobal = 0;
for(UnitsLearningResultYear learningYearLine: learningResultsTable.getYears())
{
for (UnitsLearningResultYear learningYearLine : learningResultsTable.getYears()) {
float totalCumProgPercentAno = 0;
float totalInscritosAno = 0;
float totalReprovadosPercentAno = 0;
217,8 → 198,7
float totalAprovados1416PercentAno = 0;
float totalAprovados1720PercentAno = 0;
 
for(UnitsLearningResultSemester semester: learningYearLine.getSemesters())
{
for (UnitsLearningResultSemester semester : learningYearLine.getSemesters()) {
float totalCumProgPercent = 0;
float totalInscritos = 0;
float totalReprovadosPercent = 0;
227,8 → 207,7
float totalAprovados1013Percent = 0;
float totalAprovados1416Percent = 0;
float totalAprovados1720Percent = 0;
for(UnitsLearningResultUc uc: semester.getUcs())
{
for (UnitsLearningResultUc uc : semester.getUcs()) {
totalCumProgPercent += uc.getCumprimentoProgramaPercent();
totalInscritos += uc.getAlunosInscritos();
totalAprovadosPercent += uc.getAprovadosPercent();
239,16 → 218,15
totalAprovados1720Percent += uc.getAprovados1720();
}
//media de inscritos
if(semester.getUcs().size() > 0)
{
semester.setCumprimentoProgramaPercent( totalCumProgPercent / ((float)semester.getUcs().size()));
semester.setAlunosInscritos( totalInscritos / ((float)semester.getUcs().size()));
semester.setAprovadosPercent( totalAprovadosPercent / ((float)semester.getUcs().size()));
semester.setReprovadosPercent( totalReprovadosPercent / ((float)semester.getUcs().size()));
semester.setSemElementosPercent( totalSemElementosPercent / ((float)semester.getUcs().size()));
semester.setAprovados1013Percent( totalAprovados1013Percent / ((float)semester.getUcs().size()));
semester.setAprovados1416Percent( totalAprovados1416Percent / ((float)semester.getUcs().size()));
semester.setAprovados1720Percent( totalAprovados1720Percent / ((float)semester.getUcs().size()));
if (semester.getUcs().size() > 0) {
semester.setCumprimentoProgramaPercent(totalCumProgPercent / ((float) semester.getUcs().size()));
semester.setAlunosInscritos(totalInscritos / ((float) semester.getUcs().size()));
semester.setAprovadosPercent(totalAprovadosPercent / ((float) semester.getUcs().size()));
semester.setReprovadosPercent(totalReprovadosPercent / ((float) semester.getUcs().size()));
semester.setSemElementosPercent(totalSemElementosPercent / ((float) semester.getUcs().size()));
semester.setAprovados1013Percent(totalAprovados1013Percent / ((float) semester.getUcs().size()));
semester.setAprovados1416Percent(totalAprovados1416Percent / ((float) semester.getUcs().size()));
semester.setAprovados1720Percent(totalAprovados1720Percent / ((float) semester.getUcs().size()));
}
totalCumProgPercentAno += semester.getCumprimentoProgramaPercent();
totalInscritosAno += semester.getAlunosInscritos();
260,16 → 238,15
totalAprovados1720PercentAno += semester.getAprovados1720();
}
//media de inscritos
if(learningYearLine.getSemesters().size() > 0)
{
learningYearLine.setCumprimentoProgramaPercent( totalCumProgPercentAno / ((float)learningYearLine.getSemesters().size()));
learningYearLine.setAlunosInscritos( totalInscritosAno / ((float)learningYearLine.getSemesters().size()));
learningYearLine.setAprovadosPercent( totalAprovadosPercentAno / ((float)learningYearLine.getSemesters().size()));
learningYearLine.setReprovadosPercent( totalReprovadosPercentAno / ((float)learningYearLine.getSemesters().size()));
learningYearLine.setSemElementosPercent( totalSemElementosPercentAno / ((float)learningYearLine.getSemesters().size()));
learningYearLine.setAprovados1013Percent( totalAprovados1013PercentAno / ((float)learningYearLine.getSemesters().size()));
learningYearLine.setAprovados1416Percent( totalAprovados1416PercentAno / ((float)learningYearLine.getSemesters().size()));
learningYearLine.setAprovados1720Percent( totalAprovados1720PercentAno / ((float)learningYearLine.getSemesters().size()));
if (learningYearLine.getSemesters().size() > 0) {
learningYearLine.setCumprimentoProgramaPercent(totalCumProgPercentAno / ((float) learningYearLine.getSemesters().size()));
learningYearLine.setAlunosInscritos(totalInscritosAno / ((float) learningYearLine.getSemesters().size()));
learningYearLine.setAprovadosPercent(totalAprovadosPercentAno / ((float) learningYearLine.getSemesters().size()));
learningYearLine.setReprovadosPercent(totalReprovadosPercentAno / ((float) learningYearLine.getSemesters().size()));
learningYearLine.setSemElementosPercent(totalSemElementosPercentAno / ((float) learningYearLine.getSemesters().size()));
learningYearLine.setAprovados1013Percent(totalAprovados1013PercentAno / ((float) learningYearLine.getSemesters().size()));
learningYearLine.setAprovados1416Percent(totalAprovados1416PercentAno / ((float) learningYearLine.getSemesters().size()));
learningYearLine.setAprovados1720Percent(totalAprovados1720PercentAno / ((float) learningYearLine.getSemesters().size()));
}
totalCumProgPercentGlobal += learningYearLine.getCumprimentoProgramaPercent();
totalInscritosGlobal += learningYearLine.getAlunosInscritos();
281,16 → 258,15
totalAprovados1720PercentGlobal += learningYearLine.getAprovados1720();
}
 
if(learningResultsTable.getYears().size() > 0)
{
learningResultsTable.setCumprimentoProgramaPercent( totalCumProgPercentGlobal / ((float)learningResultsTable.getYears().size()));
learningResultsTable.setAlunosInscritos( totalInscritosGlobal / (learningResultsTable.getYears().size()));
learningResultsTable.setAprovadosPercent( totalAprovadosPercentGlobal / ((float)learningResultsTable.getYears().size()));
learningResultsTable.setReprovadosPercent( totalReprovadosPercentGlobal / ((float)learningResultsTable.getYears().size()));
learningResultsTable.setSemElementosPercent( totalSemElementosPercentGlobal / ((float)learningResultsTable.getYears().size()));
learningResultsTable.setAprovados1013Percent( totalAprovados1013PercentGlobal / ((float)learningResultsTable.getYears().size()));
learningResultsTable.setAprovados1416Percent( totalAprovados1416PercentGlobal / ((float)learningResultsTable.getYears().size()));
learningResultsTable.setAprovados1720Percent( totalAprovados1720PercentGlobal / ((float)learningResultsTable.getYears().size()));
if (learningResultsTable.getYears().size() > 0) {
learningResultsTable.setCumprimentoProgramaPercent(totalCumProgPercentGlobal / ((float) learningResultsTable.getYears().size()));
learningResultsTable.setAlunosInscritos(totalInscritosGlobal / (learningResultsTable.getYears().size()));
learningResultsTable.setAprovadosPercent(totalAprovadosPercentGlobal / ((float) learningResultsTable.getYears().size()));
learningResultsTable.setReprovadosPercent(totalReprovadosPercentGlobal / ((float) learningResultsTable.getYears().size()));
learningResultsTable.setSemElementosPercent(totalSemElementosPercentGlobal / ((float) learningResultsTable.getYears().size()));
learningResultsTable.setAprovados1013Percent(totalAprovados1013PercentGlobal / ((float) learningResultsTable.getYears().size()));
learningResultsTable.setAprovados1416Percent(totalAprovados1416PercentGlobal / ((float) learningResultsTable.getYears().size()));
learningResultsTable.setAprovados1720Percent(totalAprovados1720PercentGlobal / ((float) learningResultsTable.getYears().size()));
}
return learningResultsTable;
}
307,8 → 283,7
* @throws IOException
* @throws JSONException
*/
public UnitsDtpTable updateDtpStatsTable4Course(CourseReportDocument reportCourseDocument, String courseCode, String year) throws IOException, JSONException
{
public UnitsDtpTable updateDtpStatsTable4Course(CourseReportDocument reportCourseDocument, String courseCode, String year) throws IOException, JSONException {
 
ReportsUcSummarySection reportsUcSummarySection = (ReportsUcSummarySection) reportCourseDocument.findDocumentSection(ReportsUcSummarySection.class);
UnitsDtpTable unitsDtpTable = (UnitsDtpTable) reportsUcSummarySection.findDocComponent(UnitsDtpTable.class);
320,29 → 295,24
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadByCourseSiges(courseCode, year);
 
CourseUnitDtpStat[] statsLoaded;
try
{
String json = loadCourseUnitDtpStats(courseCode,year);
try {
String json = loadCourseUnitDtpStats(courseCode, year);
JSONObject response = new JSONObject(json);
JSONArray stats = (JSONArray) response.get("dtpstats");
statsLoaded = CourseUnitDtpStat.fromJson(stats);
}
catch(Exception e)
{
logger.error(e,e);
} catch (Exception e) {
logger.error(e, e);
statsLoaded = new CourseUnitDtpStat[0];
}
 
 
for(CourseUnit cu :units)
{
for (CourseUnit cu : units) {
CourseUnitDtpStat statFound = CourseReportUtils.findCourseUnitDtpStat(statsLoaded, (CourseUnitImpl) cu);
if(statFound == null)
{
if (statFound == null) {
statFound = CourseReportUtils.createCourseUnitDtpStat(cu);
}
 
if(((CourseUnitImpl) cu).getSemestreAbsolutoS1S2().equals("S1"))
if (((CourseUnitImpl) cu).getSemestreAbsolutoS1S2().equals("S1"))
semester1.getCourseUnitDtpStats().add(statFound);
else
semester2.getCourseUnitDtpStats().add(statFound);
355,12 → 325,13
/**
* Update course unit sections with reports, this method dows not change learning results table
* values from learning results stays in unit but does not change learning results Table
*
* @param courseCode
* @param year
* @param reportCourseDocument
* @return a list of CourseUnitSection
* @throws JSONException
* @throws IOException
* @return a list of CourseUnitSection
*/
public List<DocumentSection> updateCleanCourseUnitSections(String courseCode, String year, CourseReportDocument reportCourseDocument) throws JSONException, IOException {
 
368,30 → 339,25
 
CourseUnitsReportsSection unitReportsSection = (CourseUnitsReportsSection) reportCourseDocument.findDocumentSection(CourseUnitsReportsSection.class);
CourseUnitSection[] courseUnitSections = null;
try{
String courseUnitSectionsJson = loadCourseEvaluationSections(courseCode,year);
try {
String courseUnitSectionsJson = loadCourseEvaluationSections(courseCode, year);
JSONObject object = new JSONObject(courseUnitSectionsJson);
JSONArray evaluations = object.getJSONArray("evaluations");
courseUnitSections = CourseUnitSection.fromJsonArray(evaluations.toString());
}
catch(Exception e)
{
logger.error(e,e);
} catch (Exception e) {
logger.error(e, e);
courseUnitSections = new CourseUnitSection[0];
}
 
 
ArrayList<DocumentSection> subSections = new ArrayList<DocumentSection>();
unitReportsSection.setSections(subSections);
for(CourseUnit cu :units)
{
for (CourseUnit cu : units) {
CourseUnitSection sectionFound = CourseReportUtils.findCourseUnitSection(courseUnitSections, (CourseUnitImpl) cu);
if(sectionFound == null)
{
if (sectionFound == null) {
sectionFound = CourseReportUtils.createCourseUnitEvaluationSection((CourseUnitImpl) cu);
}
if(sectionFound.getCourseUnitEvaluation() == null)
{
if (sectionFound.getCourseUnitEvaluation() == null) {
CourseUnitEvaluationImpl courseUnitEvaluation = DomainObjectFactory.createCourseUnitEvaluationImpl();
courseUnitEvaluation.setAutoGeneratedCourseReport(true);
DaoFactory.getCourseUnitEvaluationDaoImpl().save(courseUnitEvaluation);
404,19 → 370,20
}
 
 
 
/**
* Este servico gera um grafico com a taxa global de aproveitamento e grava-o no repositorio digital
* devolvendo o respectivo RepositoryFile4JsonView em json para poder ser anexado ao objecto imagem do
* widget do grafico
*
* @param reportDocumentJson
* @param session
* @return
* @throws IOException
*/
public String generateGlobalLearningResultsChartImg(String reportDocumentJson,UserSession session) throws IOException {
public String generateGlobalLearningResultsChartImg(String reportDocumentJson,
UserSession session) throws IOException {
 
CourseReportDocument reportDocument = CourseReportDocument.fromJson(reportDocumentJson);
CourseReportDocument reportDocument = CourseReportDocument.fromJson(reportDocumentJson);
LearningResultsSection learningResultsSection = (LearningResultsSection) reportDocument.findDocumentSection(LearningResultsSection.class);
LearningGlobalAnalysisSection learningGlobalAnalysisSection = (LearningGlobalAnalysisSection) learningResultsSection.findSection(LearningGlobalAnalysisSection.class);
GlobalLearningResultsChartImg chartImg = (GlobalLearningResultsChartImg) learningGlobalAnalysisSection.findDocComponent(GlobalLearningResultsChartImg.class);
425,7 → 392,7
UnitsLearningResultsTable table = (UnitsLearningResultsTable) learningResultsSection.findDocComponent(UnitsLearningResultsTable.class);
 
 
FileUploaded fileUploaded = chartImg.generateChart2tmp(table,reportDocument);
FileUploaded fileUploaded = chartImg.generateChart2tmp(table, reportDocument);
 
RepositoryService repositoryService = new RepositoryService();
 
434,25 → 401,77
chartImg.getImage().getIdentifier() != null;
 
RepositoryFile4JsonView view;
if(imageInitialized)
{
if (imageInitialized) {
String identifier = chartImg.getImage().getIdentifier();
view = repositoryService.replaceRepositoryFileFromFileUpload(identifier, fileUploaded, ResourceAccessControlEnum.privateDomain, session);
} else {
view = repositoryService.storeRepositoryFileFromFileUpload(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();
}
 
 
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();
}
 
public String save(String reportDocumentJson, UserSession session) throws IOException {
 
CourseReportDocument reportDocument = CourseReportDocument.fromJson(reportDocumentJson);
 
Course c = DaoFactory.getCourseDaoImpl().findCourseByCode(reportDocument.getCourseCode());
CourseYear y = null;
for (CourseYear courseYear : c.getCourseYears()) {
if (courseYear.getImportYear().equals(reportDocument.getYear())) {
y = courseYear;
break;
}
}
 
if (y == null) {
y = DomainObjectFactory.createCourseYearImpl();
DaoFactory.getCourseYearDaoImpl().save(y);
y.setImportYear(reportDocument.getYear());
c.getCourseYears().add(y);
y.setCourse(c);
}
 
y.setCourseReport(reportDocumentJson);
 
return reportDocument.toJson();
}
 
 
/****************************************************************************/
/*
 
469,36 → 488,33
/**
* This service loads a list of course units given course code and year
* with dtp stats codes pre-filled
*
* @param courseCode
* @param year
* @return
* @throws JSONException
* @throws IOException
*/
public String loadCourseUnitDtpStats(String courseCode,String year) throws JSONException, IOException {
public String loadCourseUnitDtpStats(String courseCode, String year) throws JSONException, IOException {
 
 
if(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_DTP_STATS.indexOf("localhost")>=0)
{
if (Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_DTP_STATS.indexOf("localhost") >= 0) {
JSONArray array = new JSONArray();
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadByCourseSiges(courseCode, year);
for(CourseUnit cu: units)
{
for (CourseUnit cu : units) {
CourseUnitDtpStat stat = CourseReportUtils.createCourseUnitDtpStat(cu);
//sections.add(courseUnitSection);
array.put(stat.toJsonObject());
}
 
JSONObject obj = new JSONObject();
obj.put("dtpstats",array);
obj.put("dtpstats", array);
 
return obj.toString();
}
else
{
String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_DTP_STATS + "?code=" + courseCode + "&year=" + year;
} else {
String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_DTP_STATS + "?code=" + courseCode + "&year=" + year;
String json = "{ dtpstats : [] }";
try{
try {
URL url = new URL(serviceUrl);
 
URLConnection conn = url.openConnection();
506,13 → 522,12
 
json = StreamsUtils.readString(is);
is.close();
}catch(Throwable e)
{
logger.error("Connecting " + serviceUrl,e);
} catch (Throwable e) {
logger.error("Connecting " + serviceUrl, e);
return json;
}
JSONObject jsonObject = new JSONObject(json);
if(jsonObject.get("service").equals("ok"))
if (jsonObject.get("service").equals("ok"))
return jsonObject.get("response").toString();
else
return json;
520,54 → 535,45
}
 
 
 
 
/**
*
* Para um determinado curso e ano o serviço faz uma listagem de todas as suas unidades curriculares
* e lista a sua informação básica juntamente com o relatório de avaliação disponivel
* O serviço adiciona ainda o Ano de cada unidade por inspeção do Plano de Estudos
* caso a unidade não seja encontrada no Plano de estudos o ano irá ser preenchido com -1
*
* @param courseCode codigo Siges na base de dados
* @param year 201617, 201718
* @param year 201617, 201718
* @return String JSONObject with a JSON ARRAY of List<CourseUnitSection>
*/
public String loadCourseEvaluationSections(String courseCode,String year) throws JSONException, IOException {
public String loadCourseEvaluationSections(String courseCode, String year) throws JSONException, IOException {
 
 
if(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION_REPORT.indexOf("localhost")>=0)
{
if (Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION_REPORT.indexOf("localhost") >= 0) {
JSONArray array = new JSONArray();
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadByCourseSiges(courseCode, year);
for(CourseUnit cu: units)
{
for (CourseUnit cu : units) {
CourseUnitSection courseUnitSection = CourseReportUtils.createCourseUnitEvaluationSection((CourseUnitImpl) cu);
if(courseUnitSection.getAnoPlano() < 0)
{
if (courseUnitSection.getAnoPlano() < 0) {
logger.info("Ano do Plano not available from courseUnitsEvaluation Service, will read from API loadPlanYearForCourseUnitCode");
try{
String json = loadPlanYearForCourseUnitCode(courseCode,cu.getCode(),cu.getSemestre());
try {
String json = loadPlanYearForCourseUnitCode(courseCode, cu.getCode(), cu.getSemestre());
int ano = new JSONObject(json).getInt("year");
courseUnitSection.setAnoPlano(ano);
}catch(Throwable e )
{
logger.error("Nao conseguiu obter o ano do plano da API: " + e.toString(),e);
} catch (Throwable e) {
logger.error("Nao conseguiu obter o ano do plano da API: " + e.toString(), e);
}
}
array.put(courseUnitSection.toJsonObject());
}
 
JSONObject obj = new JSONObject();
obj.put("evaluations",array);
obj.put("evaluations", array);
 
return obj.toString();
}
else
{
} else {
String json = "{ evaluations : [] }";
String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION_REPORT + "?code=" + courseCode + "&year=" + year;
try{
String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNITS_EVALUATION_REPORT + "?code=" + courseCode + "&year=" + year;
try {
URL url = new URL(serviceUrl);
 
URLConnection conn = url.openConnection();
575,14 → 581,13
 
json = StreamsUtils.readString(is);
is.close();
}catch(Throwable e)
{
logger.error("Connecting " + serviceUrl,e);
} catch (Throwable e) {
logger.error("Connecting " + serviceUrl, e);
return json;
}
 
JSONObject jsonObject = new JSONObject(json);
if(jsonObject.get("service").equals("ok"))
if (jsonObject.get("service").equals("ok"))
return jsonObject.get("response").toString();
else
return json;
591,28 → 596,23
 
 
/**
*
*
* @param courseCode codigo Siges na base de dados
* @param unitCode
* @return Json com o ano do plano exemplo: { year : 1 }
* ou -1 se não for encontrado
*/
public String loadPlanYearForCourseUnitCode(String courseCode,String unitCode,String period) throws JSONException, IOException {
public String loadPlanYearForCourseUnitCode(String courseCode, String unitCode, String period) throws JSONException, IOException {
 
 
if(Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNIT_PLAN_YEAR.indexOf("localhost")>=0)
{
if (Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNIT_PLAN_YEAR.indexOf("localhost") >= 0) {
CourseImpl c = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode);
int year = c.getUnidadeAnoPlano(period,unitCode);
int year = c.getUnidadeAnoPlano(period, unitCode);
return "{ year : " + year + " }";
 
}
else
{
} else {
String json = "{ year : -1 }";
String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNIT_PLAN_YEAR + "?courseCode=" + courseCode + "&unitCode=" + unitCode + "&period=" + period;
try{
String serviceUrl = Globals.SYSTEM_WSJSON_SERVICE_COURSE_UNIT_PLAN_YEAR + "?courseCode=" + courseCode + "&unitCode=" + unitCode + "&period=" + period;
try {
URL url = new URL(serviceUrl);
 
URLConnection conn = url.openConnection();
620,14 → 620,13
 
json = StreamsUtils.readString(is);
is.close();
}catch(Throwable e)
{
logger.error("Connecting " + serviceUrl,e);
} catch (Throwable e) {
logger.error("Connecting " + serviceUrl, e);
return json;
}
 
JSONObject jsonObject = new JSONObject(json);
if(jsonObject.get("service").equals("ok"))
if (jsonObject.get("service").equals("ok"))
return jsonObject.get("response").toString();
else
return json;
635,21 → 634,10
}
 
 
 
 
 
 
 
 
 
 
 
 
 
public static void main(String[] args) throws IOException, JSONException {
AbstractDao.getCurrentSession().beginTransaction();
 
CourseReportDocument reportCourseDocument = new CourseReportServices().createNewCourseReportDocument("44","201617");
CourseReportDocument reportCourseDocument = new CourseReportServices().createNewCourseReportDocument("44", "201617");
System.out.println(reportCourseDocument.toJson());
AbstractDao.getCurrentSession().getTransaction().commit();
 
681,5 → 669,4
// e as as tabelas
 
 
 
}
/branches/grupo6/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/UnitsLearningResult.java
134,4 → 134,13
public void setAprovados1720Percent(float aprovados1720Percent) {
this.aprovados1720Percent = aprovados1720Percent;
}
 
public boolean isManual() {
return manual;
}
 
public void setManual(boolean manual) {
this.manual = manual;
}
}
 
/branches/grupo6/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/GlobalLearningResultsChartYearImg.java
1,10 → 1,172
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.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.block.BlockBorder;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
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.chart.renderer.category.StackedBarRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.TextAnchor;
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;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.List;
 
/**
* Created by jorgemachado on 31/10/17.
*/
public class GlobalLearningResultsChartYearImg extends AutoImageWraperComponent
public class GlobalLearningResultsChartYearImg extends ImageComponent
{
/**
*
* @param results
* @return the tmp path for generated chart
* @throws IOException
*/
public FileUploaded generateChart2tmp(UnitsLearningResultsTable results, CourseReportDocument courseReportDocument) throws IOException
{
List<UnitsLearningResultYear> unitsLearningResultYearList = results.getYears();
 
 
String tempName = BytesUtils.generateHexKey() + ".png";
 
DefaultCategoryDataset data = new DefaultCategoryDataset();
 
for(UnitsLearningResultYear temp: unitsLearningResultYearList) {
data.addValue(new Double((int)(temp.getAprovados1013Percent())),"Aprovados 10-13",""+temp.ano + "º Ano");
data.addValue(new Double((int)(temp.getAprovados1416Percent())),"Aprovados 14-16",""+temp.ano + "º Ano");
data.addValue(new Double((int)(temp.getAprovados1720Percent())),"Aprovados 17-20",""+temp.ano + "º Ano");
}
 
for(UnitsLearningResultYear temp: unitsLearningResultYearList) {
data.addValue(new Double((int)(temp.getAprovados1013Percent())),"Aprovados 10-13","2º Ano");
data.addValue(new Double((int)(temp.getAprovados1416Percent())),"Aprovados 14-16","2º Ano");
data.addValue(new Double((int)(temp.getAprovados1720Percent())),"Aprovados 17-20","2º Ano");
}
 
for(UnitsLearningResultYear temp: unitsLearningResultYearList) {
data.addValue(new Double((int)(temp.getAprovados1013Percent())),"Aprovados 10-13","3º Ano");
data.addValue(new Double((int)(temp.getAprovados1416Percent())),"Aprovados 14-16","3º Ano");
data.addValue(new Double(32),"Aprovados 17-20","3º Ano");
}
 
 
 
JFreeChart chart = ChartFactory.createStackedBarChart(null,null,null,data, PlotOrientation.VERTICAL,true,false,false);
 
CategoryPlot plot = chart.getCategoryPlot();
RectangleInsets chartRectangle = new RectangleInsets(0,0,30F,0);
chart.setPadding(chartRectangle);
plot.setBackgroundPaint(Color.WHITE);
CategoryAxis axis = plot.getDomainAxis();
NumberAxis axis2 = (NumberAxis) plot.getRangeAxis();
NumberFormat pctFormat = new DecimalFormat("#'%'");
axis.setTickLabelFont(new Font("Helvetica", Font.PLAIN, 30));
axis2.setTickLabelFont(new Font("Helvetica", Font.PLAIN, 30));
axis2.setNumberFormatOverride(pctFormat);
 
Color brown = new Color(237,125,49);
Color yellow = new Color(255,192,0);
Color green = new Color(112,173,71);
 
StackedBarRenderer renderer = (StackedBarRenderer) plot.getRenderer();
renderer.setGradientPaintTransformer(null);
plot.setRangeGridlinePaint(Color.GRAY);
plot.setRangeGridlinesVisible(true);
plot.setRangeGridlineStroke(new BasicStroke(1.0f));
renderer.setSeriesPaint(0, brown);
renderer.setSeriesPaint(1, yellow);
renderer.setSeriesPaint(2, green);
renderer.setMaximumBarWidth(.20);
 
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}",pctFormat));
renderer.setBaseItemLabelsVisible(true);
ItemLabelPosition position = new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.HALF_ASCENT_CENTER);
renderer.setBasePositiveItemLabelPosition(position);
renderer.setBaseItemLabelFont(new Font("Helvetica",Font.PLAIN,30));
 
chart.getLegend().setItemFont(new Font("Helvetica", Font.PLAIN,30));
chart.getLegend().setFrame(BlockBorder.NONE);
 
 
 
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));
 
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;
}
 
public static void main(String [] args) throws IOException {
float aprovados = 10;
float reprovados = 2;
float semElementos = 4;
double aprovadosPercent = ((int)10/16*100.0)/100.0;
double reprovadosPercent = ((int)2/16*100.0)/100.0;
double semElementosPercent = ((int)4/16*100.0)/100.0;
 
String tempName = BytesUtils.generateHexKey() + ".png";
 
DefaultPieDataset data = new DefaultPieDataset();
if(reprovados > 0)
data.setValue("Reprovados " + reprovadosPercent + "%", new Double(reprovados));
if(aprovados > 0)
data.setValue("Aprovados " + aprovadosPercent + "%", new Double(aprovados));
if(semElementos > 0)
data.setValue("Sem Elementos " + semElementosPercent + "%", new Double(semElementos));
JFreeChart chart = ChartFactory.createRingChart(null, data, false, true, false);
chart.setBackgroundPaint(new Color(255,255,255));
PiePlot plot = (RingPlot) chart.getPlot();
plot.setLabelBackgroundPaint(new Color(255, 249, 235));
plot.setLabelPaint(new Color(88, 88, 90));
//plot.setDrawingSupplier(new ChartBuilderUtil.ChartDrawingSupplier());
 
plot.setSectionPaint(0, new Color(47, 35, 255));
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));
 
 
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));
 
 
}
}
/branches/grupo6/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/LearningResultsChartSem.java
1,11 → 1,11
package pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components;
 
import pt.estgp.estgweb.utils.documentBuilder.AutoImageWraperComponent;
import pt.estgp.estgweb.utils.documentBuilder.ImageComponent;
 
/**
* Created by jorgemachado on 31/10/17.
*/
public class LearningResultsChartSem extends AutoImageWraperComponent
public class LearningResultsChartSem extends ImageComponent
{
String semesterCode;
 
/branches/grupo6/impl/src/java/pt/estgp/estgweb/services/courses/coursereport/documentmodel/learningresults/components/UnitsLearningResultsTable.java
29,14 → 29,6
 
List<UnitsLearningResultYear> years = new ArrayList<UnitsLearningResultYear>();
 
public List<UnitsLearningResultYear> getYears() {
return years;
}
 
public void setYears(List<UnitsLearningResultYear> years) {
this.years = years;
}
 
public float getCumprimentoProgramaPercent() {
return cumprimentoProgramaPercent;
}
44,8 → 36,7
public void setCumprimentoProgramaPercent(float cumprimentoProgramaPercent) {
this.cumprimentoProgramaPercent = cumprimentoProgramaPercent;
}
 
public float getAlunosInscritos() {
return alunosInscritos;
}
149,4 → 140,12
public void setAprovados1720Percent(float aprovados1720Percent) {
this.aprovados1720Percent = aprovados1720Percent;
}
 
public List<UnitsLearningResultYear> getYears() {
return years;
}
 
public void setYears(List<UnitsLearningResultYear> years) {
this.years = years;
}
}
/branches/grupo6/impl/src/java/pt/estgp/estgweb/web/controllers/courses/CoursesServicesController.java
New file
0,0 → 1,72
package pt.estgp.estgweb.web.controllers.courses;
 
import org.apache.struts.action.ActionForm;
import org.json.JSONObject;
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.CourseReportDocument;
import pt.estgp.estgweb.web.controllers.utils.AbstractWidgetAjaxController;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
* Created by jorgemachado on 06/01/17.
*/
public class CoursesServicesController extends AbstractWidgetAjaxController {
 
 
/**
* See also CoursesServicesWidgetController for WS-API services
*/
 
/**
* @param form
* @param request
* @param response
* @return
* @throws Throwable
*/
 
public JSONObject generateGlobalLearningResultsChartImg(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),
"CourseReportGenerateGlobalLearningResultsChartImg",
new Object[]{courseReportDocument});
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});
return new JSONObject(json);
}
 
public JSONObject save(ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Throwable {
 
String courseReportDocument = request.getParameter("courseReportDocument");
 
CourseReportDocument c = CourseReportDocument.fromJson(courseReportDocument);
 
IServiceManager sm = ServiceManager.getInstance();
String json = (String) sm.execute(RequestUtils.getRequester(request, response),
"CourseReportSave",
new Object[]{courseReportDocument});
 
addMessageAsString(request, "Gravado com Sucesso");
return new JSONObject(json);
}
 
 
}
/branches/grupo6/impl/src/java/pt/estgp/estgweb/web/controllers/SubServlet.java
New file
0,0 → 1,54
package pt.estgp.estgweb.web.controllers;
 
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.UserImpl;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
 
public class SubServlet extends TesteEngSoftware {
public void primeiroMetodo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("primeiro metodo");
 
 
String name = request.getParameter("name");
String jsp = request.getParameter("jsp");
 
User u = new UserImpl();
u.setName("Elias " + jsp);
 
request.setAttribute("utilizador",u);
 
if(request.getSession().getAttribute("utilizador") == null) {
request.getSession().setAttribute("utilizador",u);
}
 
//response.getWriter().println("<html><body><h>OLA A TODOS</h></body></html>");
request.getRequestDispatcher("jsp").forward(request,response);
}
 
 
public void segundoMetodo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("segundo metodo");
 
 
String name = request.getParameter("name");
String jsp = request.getParameter("jsp");
 
User u = new UserImpl();
u.setName("Elias " + jsp);
 
request.setAttribute("utilizador",u);
 
if(request.getSession().getAttribute("utilizador") == null) {
request.getSession().setAttribute("utilizador",u);
}
 
//response.getWriter().println("<html><body><h>OLA A TODOS</h></body></html>");
request.getRequestDispatcher("jsp").forward(request,response);
}
}
/branches/grupo6/impl/src/java/pt/estgp/estgweb/web/controllers/TesteEngSoftware.java
New file
0,0 → 1,35
package pt.estgp.estgweb.web.controllers;
 
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.UserImpl;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
 
public class TesteEngSoftware extends HttpServlet {
public static final Logger logger = Logger.getLogger(TesteEngSoftware.class);
 
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
 
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String op = req.getParameter("dispatch");
 
try {
this.getClass()
.getMethod(op,new Class[]{HttpServletRequest.class, HttpServletResponse.class})
.invoke(this,req,resp);
} catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
e.printStackTrace();
}
 
}
}
/branches/grupo6/impl/src/hbm/pt/estgp/estgweb/domain/Course.hbm.xml
76,6 → 76,9
<timestamp source="db" name="updateDate" unsaved-value="null"/>
<property name="saveDate" type="timestamp"/>
<property name="importYear" type="string" index="importYearIndex"/>
<property name="courseReport" type="text">
<column name="courseReport" sql-type="LONGTEXT"/>
</property>
<property name="separatedTurmas" type="boolean">
<column name="separatedTurmas" default="false"/>
</property>
/branches/grupo6/impl/src/hbm/pt/estgp/estgweb/domain/PageContent.hbm.xml
38,8 → 38,8
</property>
<property name="accessPolicyClass" type="string"/>
<property name="slug" type="string"/>
<property name="path" type="string" unique="true">
<column name="path" sql-type="TEXT, add UNIQUE pathIndex(path(512))"/>
<property name="path" type="string">
<column name="path" sql-type="TEXT"/>
</property>
<many-to-one name="owner" class="pt.estgp.estgweb.domain.GenericUser" lazy="proxy" outer-join="false"/>
<many-to-one name="parent" class="pt.estgp.estgweb.domain.PageSection" lazy="proxy" outer-join="false">
/branches/grupo6/impl/src/web/ola.jsp
New file
0,0 → 1,43
<%@ page import="pt.estgp.estgweb.domain.User" %>
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %><%--
Created by IntelliJ IDEA.
User: Us3r
Date: 23/11/2017
Time: 11:19
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<jsp:useBean id="utilizador" type="pt.estgp.estgweb.domain.User" scope="request"/>
<body>
<h1>Ola 2</h1>
 
<%
User u = (User) request.getAttribute("utilizador");
User uSess = (User) request.getSession().getAttribute("utilizador");
 
AbstractDao.getCurrentSession().beginTransaction();
 
User loaded = DaoFactory.getUserDaoImpl().loadByUsername(u.getName());
request.setAttribute("loaded",loaded);
%>
<jsp:useBean id="loaded" type="pt.estgp.estgweb.domain.User" scope="request"/>
 
 
u:
<%=u.getName()%>
<br>
u:
${utilizador.name}
${loaded.superuser}
<br>
uSess:
<%=uSess.getName()%>
 
 
</body>
</html>
/branches/grupo6/impl/src/web/examples/angular/directives/angular-directive.jsp
New file
0,0 → 1,95
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="bacoTags" tagdir="/WEB-INF/tags" %>
<%@ taglib prefix="logic" uri="/WEB-INF/tlds/struts-logic.tld" %>
<html>
<head></head>
<body ng-app="BacoAngularApp">
<jsp:include page="/layout/themes/scripts-default.jsp"/>
<jsp:include page="/layout/headerTools.jsp"/>
 
 
<div id="demoApp" ng-app="demoApp" ng-controller="demoAppController">
 
 
<h1>Uso de Directivas com Templates</h1>
<p>Este exemplo mostra como deve ser usada uma template para podermos incluir uma função
de controlo especifica da template usando directivas</p>
<p>Mostra ainda que dentro da template o scope é uma fusão dos scopes da ngApp e da propria directiva</p>
<p>Mostra também como podemos escolher dinamicamente a template ou as funcionalidades dependendo de atributos que passamos à template</p>
<script>
 
var demoApp = angular.module('demoApp', []);
GLOBAL_BacoAngularAppDependencies.push('demoApp');
 
 
//demoApp..directive('tpl', function() {
//ou
angular.module('demoApp').directive('tpl', function() {
 
return {
restrict: 'E', //A ou E define se é o nome do elemento ou um atributo
link: function(scope, element, attrs) {
// concatenating the directory to the ver attr to select the correct excerpt for the day
 
 
 
scope.teste = "teste";
scope.move = function(){
 
scope.teste = "teste2";
scope.testeSuper = "testeSuper2";
}
},
// passing in contentUrl variable
templateUrl: function(elem,attrs) {
return attrs.templatename;
}
}
});
 
 
demoApp.controller('demoAppController', function ($scope) {
 
 
$scope.testeSuper = "testeSuper";
 
}
);
 
</script>
 
<p>campo testeSuper no mainmodule {{testeSuper}}</p>
 
<p>Se incluirmos o tpl2.html apenas vamos ter acesso às variaveis do scope da aplicação, neste caso o teste, a template pode estar declarada fora da app, não há problema</p>
<p>Por acaso neste exemplo temos acesso ao testeSuper porque a directiva adiciona funcionalidade ao scope da aplicação onde é chamada, mas se não chamarmos nenhuma directiva
a var testeSuper não aparece</p>
<div ng-include="'tpl2.html'"></div>
 
 
<h2>Invocando a tpl de html com directiva</h2>
<tpl templatename="tpl.html"></tpl>
 
<h2>Invocando a tpl de de javascript com directiva</h2>
<tpl templatename="tpl2.html"></tpl>
 
 
 
 
 
 
</div>
 
 
 
<!--TEMPLATE RECURSIVO-->
<script type="text/ng-template" id="tpl2.html">
<div>
<h1>Usando um template de Script</h1>
<p>TESTE</p>
<p>{{teste}}</p>
<p>{{testeSuper}}</p>
<button ng-click="move()">Muda Textos</button>
</div>
</script>
</body>
</html>
/branches/grupo6/impl/src/web/examples/angular/directives/tpl.html
New file
0,0 → 1,5
<h1>Template de HTML</h1>
<p>TESTE</p>
<p>{{teste}}</p>
<p>{{testeSuper}}</p>
<button ng-click="move()">Muda Textos</button>
/branches/grupo6/impl/src/web/examples/angular/directives/angular-directive-module.jsp
New file
0,0 → 1,36
<%--
Created by IntelliJ IDEA.
User: jorgemachado
Date: 11/11/17
Time: 10:20
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body ng-app="BacoAngularApp">
<jsp:include page="/layout/themes/scripts-default.jsp"/>
<jsp:include page="/layout/headerTools.jsp"/>
 
<div class="container">
<h1>Uso de Templates Generalizados e cada um com sua template</h1>
<p>O caso em questão é a existencia de um esqueleto principal para um modulo (mainmodule)</p>
<p>O main module inclui templates para cada componente usando o ng-include</p>
<p>Esse ng-include é referente ao campo @class de cada componente</p>
<p>vamos incluir esse esqueleto e todas as templates especificas dos nossos modulos</p>
<p>incluimos ainda as directivas que estiverem nos nossos modulos</p>
<p>o template do ng-include irá colocar a directiva desejada caso seja necessário</p>
<p>com a directiva podemos ter funcionalidade de scope associada ao subcomponente, que é desconhecido do main module</p>
<p>caso necessite o includemodule também tem acesso ao scope da app principal</p>
<p>o unico requesito é passar ao include module o nome da app onde ele vai inserir as directivas</p>
 
 
 
<jsp:include page="angular-directive-mainmodule.jsp"/>
<jsp:include page="angular-directive-includemodule.jsp"/>
 
</div>
</body>
</html>
/branches/grupo6/impl/src/web/examples/angular/directives/angular-directive-includemodule.jsp
New file
0,0 → 1,60
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
<p>Modulo Incluido contem as directivas e os templates necessários</p>
<p>Este módulo conhece o nome do módulo da App onde vai ser incluido</p>
 
<script>
angular.module("demoApp").directive('tpl', function() {
var contentUrl;
return {
restrict: 'E', //A ou E define se é o nome do elemento ou um atributo
link: function(scope, element, attrs) {
// concatenating the directory to the ver attr to select the correct excerpt for the day
//contentUrl = attrs.templatename + '.html';
 
//console.log(contentUrl);
 
scope.teste = "teste";
scope.move = function(){
 
scope.teste = "teste2modules";
//scope.testeSuper = "testeSuper2modules";
angular.element("#demoApp").scope().testeSuper = "testeSuper2modules";
}
scope.mudaCompName = function(comp){
 
comp.name = "NOVO NOME DO COMP MUDADO NA DIRECTIVA";
}
},
// passing in contentUrl variable
templateUrl: function(elem,attrs) {
return "templateDirectiva";
}
}
});
</script>
 
<script type="text/ng-template" id="directive_class">
<div style="border: 1px solid #000000">
<h1>DIRECTIVE CLASS TEMPLATE</h1>
<p>COMP ELEMENTO DIRECTIVA:{{comp.name}}</p>
<p><input type="text" ng-model="comp.name"></p>
<tpl></tpl>
<p>Teste no scope da directiva<p>
<pre>
{{teste | json}}
</pre>
</div>
</script>
 
<script type="text/ng-template" id="templateDirectiva">
<div style="border: 1px solid green">
<h1>templateDirectiva</h1>
<p>TESTE</p>
<p>{{teste}}</p>
<p>{{testeSuper}}</p>
<p>COMP ELEMENTO DIRECTIVA:{{comp.name}}</p>
<button ng-click="move()">Muda Textos</button>
<button ng-click="mudaCompName(comp)">Muda COMP NAME</button>
</div>
</script>
/branches/grupo6/impl/src/web/examples/angular/directives/angular-directive-mainmodule.jsp
New file
0,0 → 1,50
 
 
<div id="demoApp" ng-app="demoApp" ng-controller="demoAppController">
 
 
 
<script>
 
var demoApp = angular.module('demoApp', []);
GLOBAL_BacoAngularAppDependencies.push('demoApp');
 
 
demoApp.controller('demoAppController', function ($scope) {
 
$scope.testeSuper = "testeSuper";
 
$scope.data =
{
comps : [
{
"@class" : "directive_class",
"name" : "componente de teste"
}
]
}
 
}
);
 
</script>
 
 
<h1>Campo testeSuper no mainmodule "{{testeSuper}}"</h1>
<h1>Campo data.comps[0].name no mainmodule "{{data.comps[0].name}}"</h1>
 
<h2>Template chamado atraves de um template de classe intermedio</h2>
<div ng-repeat="comp in data.comps" ng-include="comp['@class']">
 
</div>
 
 
<pre>
{{testeSuper | json}}
</pre>
<pre>
{{data | json}}
</pre>
 
 
</div>
/branches/grupo6/impl/src/web/user/courses/coursereport/templates.jsp
New file
0,0 → 1,836
<%@ page
import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultYear" %>
<%@ page
import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultSemester" %>
<%@ page
import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultUc" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
<!--
@section objeto com seccoes e componentes
@optional @chapter capitulo do documento para esta seccao para contcatenar às subsections
-->
 
<script type="text/ng-template"
id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_CourseUnitsReportsSection">
<div class="sections">
<a name="indexCus"></a>
<span ng-repeat="cu in section.sections"
ng-init="cu.taxaAprovacao = 100 * cu.courseUnitEvaluation.numAlunosAprovTotal/(cu.courseUnitEvaluation.numAlunosInscritos - cu.courseUnitEvaluation.numAlunosSemElementosAvaliacao)">
<a href="#cu{{$index}}"
ng-class="{ 'alert-danger': (cu.courseUnitEvaluation.cumprimentoProgramaPercent &lt; 100) || cu.taxaAprovacao &lt; 75 || !cu.courseUnitEvaluation.closed || !cu.courseUnitEvaluation.teacherComplete}">
{{cu.title}}
</a> |
</span>
<div ng-repeat="cu in section.sections"
class="section panel-primary">
 
<a name="cu{{$index}}"></a>
<span ng-if="$index != 0" class="glyphicon glyphicon-backward"></span><a ng-if="$index != 0"
href="#indexCus"> Voltar atrás</a>
<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 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
</div>
<div class="alert-danger"
ng-if="!cu.courseUnitEvaluation.closed && !cu.courseUnitEvaluation.teacherComplete">
Não foi entregue pelo docente para validação
</div>
 
</div>
 
 
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Resultados</label></h3></div>
<div>
<table class="tablesorter-blue" width="100%">
<tr>
<th rowspan="2">
Nº Alunos Inscritos
</th>
<th rowspan="2">
Nº de alunos sem elementos de avaliação
</th>
<th colspan="5">
Nº de alunos aprovados em
</th>
<th colspan="2">
Aprovados com a classificação entre 10 e 13 valores
</th>
<th colspan="2">
Aprovados com a classificação entre 14 e 16 valores
</th>
<th colspan="2">
Aprovados com a classificação entre 17 e 20 valores
</th>
</tr>
<tr>
<th>Avaliação de frequência</th>
<th>Exame Época Normal</th>
<th>Exame Época Recurso</th>
<th>Exame Época Especial</th>
<th>Total</th>
<th>Nº</th>
<th>%</th>
<th>Nº</th>
<th>%</th>
<th>Nº</th>
<th>%</th>
</tr>
<tr>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosInscritos}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosSemElementosAvaliacao}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovFrequencia}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovNormal}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovRecurso}}
</td>
<td style="text-align: center">
{{cu.courseUnitEvaluation.numAlunosAprovEspecial}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovTotal}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1013}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1013Percent}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1416}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1416Percent}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1720}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1720Percent}}
</td>
</tr>
</table>
</div>
</div>
 
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Taxa de Aprovação</label></h3></div>
<div ng-class="{ 'alert-danger': cu.taxaAprovacao &lt; 75 }">{{cu.taxaAprovacao}}%</div>
</div>
 
 
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Apreciação dos resultados quantitativos obtidos pelos
estudantes</label></h3></div>
<div>{{cu.courseUnitEvaluation.qualApreciacaoQuantitivos}}</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Apreciação do funcionamento da UC</label></h3></div>
<div>{{cu.courseUnitEvaluation.qualApreciacaoUC}}</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Percentagem de cumprimento do programa da UC</label></h3>
</div>
<div ng-class="{ 'alert-danger': (cu.courseUnitEvaluation.cumprimentoProgramaPercent &lt; 100) }">
{{cu.courseUnitEvaluation.cumprimentoProgramaPercent}}%
</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Apreciação do cumprimento do programa da UC</label></h3>
</div>
<div>{{cu.courseUnitEvaluation.qualApreciacaoCumprimentoPrograma}}</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Conclusões</label></h3></div>
<div>{{cu.courseUnitEvaluation.qualConclusoes}}</div>
</div>
</div>
</div>
</script>
 
 
<style>
.dtpstats td, .dtpstats th {
text-align: center !important;
}
</style>
<script type="text/ng-template"
id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_reportucsummary_UnitsDtpTable">
<div class="sections">
 
<table class="table dtpstats">
<thead>
<tr>
<th rowspan="2">Unidade Curricular</th>
<th colspan="2">Planeamento</th>
<th rowspan="2">Ficha Curricular</th>
<th rowspan="2">Sumários</th>
<th colspan="2">Avaliação</th>
<th rowspan="2">Relatório de Avaliação</th>
<th rowspan="2">Inquerito Pedagógico</th>
</tr>
<tr>
<th>Conteúdos</th>
<th>Calendarização</th>
<th>Enunciados</th>
<th>Pautas</th>
</tr>
</thead>
<tbody>
<tr>
<th colspan="9">Semestre 1</th>
</tr>
<tr ng-repeat="dtpStat in comp.semester1.courseUnitDtpStats">
<td>{{dtpStat.name}}</td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoConteudos }"><input type="checkbox"
ng-model="dtpStat.planeamentoConteudos"/>
</td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoCalendarizacao }"><input type="checkbox"
ng-model="dtpStat.planeamentoCalendarizacao"/>
</td>
<td ng-class="{ 'alert-danger' : !dtpStat.ficha }"><input type="checkbox" ng-model="dtpStat.ficha"/>
</td>
<td ng-class="{ 'alert-danger' : !dtpStat.sumarios }"><input type="checkbox"
ng-model="dtpStat.sumarios"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoEnunciados }"><input type="checkbox"
ng-model="dtpStat.avaliacaoEnunciados"/>
</td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoPautas }"><input type="checkbox"
ng-model="dtpStat.avaliacaoPautas"/>
</td>
<td ng-class="{ 'alert-danger' : !dtpStat.relatorio }"><input type="checkbox"
ng-model="dtpStat.relatorio"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.inquerito }"><input type="checkbox"
ng-model="dtpStat.inquerito"/></td>
</tr>
<tr>
<th colspan="9">Semestre 2</th>
</tr>
<tr ng-repeat="dtpStat in comp.semester2.courseUnitDtpStats">
<td>{{dtpStat.name}}</td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoConteudos }"><input type="checkbox"
ng-model="dtpStat.planeamentoConteudos"/>
</td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoCalendarizacao }"><input type="checkbox"
ng-model="dtpStat.planeamentoCalendarizacao"/>
</td>
<td ng-class="{ 'alert-danger' : !dtpStat.ficha }"><input type="checkbox" ng-model="dtpStat.ficha"/>
</td>
<td ng-class="{ 'alert-danger' : !dtpStat.sumarios }"><input type="checkbox"
ng-model="dtpStat.sumarios"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoEnunciados }"><input type="checkbox"
ng-model="dtpStat.avaliacaoEnunciados"/>
</td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoPautas }"><input type="checkbox"
ng-model="dtpStat.avaliacaoPautas"/>
</td>
<td ng-class="{ 'alert-danger' : !dtpStat.relatorio }"><input type="checkbox"
ng-model="dtpStat.relatorio"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.inquerito }"><input type="checkbox"
ng-model="dtpStat.inquerito"/></td>
</tr>
</tbody>
</table>
</div>
</script>
 
 
<style>
.learning td {
font-size: 0.7em;
}
 
.learning td input {
width: 50px;
}
 
.learning td input:read-only {
width: 50px;
background-color: #cccccc;
}
 
.learning tr.year td {
vertical-align: top;
background-color: #aaaaaa;
 
font-weight: bold;
}
 
.learning tr.period td {
vertical-align: top;
background-color: #dfdfdf;
 
}
</style>
<script type="text/ng-template"
id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_UnitsLearningResultsTable">
<unitslearningresultstable>
</unitslearningresultstable>
</script>
 
 
<script>
angular.module("courseReportApp").directive('boundModel', function () {
return {
require: 'ngModel',
link: function (scope, elem, attrs, ngModel) {
scope.$watch(attrs.boundModel, function (newValue, oldValue) {
if (newValue != oldValue) {
ngModel.$setViewValue(newValue);
ngModel.$render();
}
});
}
}
});
angular.module("courseReportApp").directive('unitslearningresultstable', function () {
 
return {
restrict: 'E',
link: function ($scope, element, attrs) {
 
$scope.checkedDocuments = [];
$scope.checkUnit = function (document, collection) {
if (document.checked) {
var docContainer =
{
"document": document,
"collection": collection
}
$scope.checkedDocuments.push(docContainer);
}
else {
angular.forEach($scope.checkedDocuments, function (documentContainer, key) {
if (documentContainer.document == document) {
var index = $scope.checkedDocuments.indexOf(documentContainer);
$scope.checkedDocuments.splice(index, 1);
}
});
}
}
$scope.changeDocumentCollection = function (collection) {
angular.forEach($scope.checkedDocuments, function (documentContainer, key) {
collection.ucs.push(documentContainer.document);
delete documentContainer.document.checked;
});
angular.forEach($scope.checkedDocuments, function (documentContainer, key) {
var index = documentContainer.collection.ucs.indexOf(documentContainer.document);
documentContainer.collection.ucs.splice(index, 1);
});
$scope.checkedDocuments = [];
}
$scope.avg = function (field, container, childs) {
if (!childs || childs.length == 0)
return 0;
var sum = 0;
var c;
for (c in childs) {
if (childs[c] && childs[c][field])
sum += 1 * childs[c][field];
}
container[field] = sum / childs.length;
return container[field];
}
$scope.percent = function (n, total) {
if (!n || n == 0 || !total || total == 0)
return 0;
return 100 * n / total;
}
$scope.reprovados = function (comp) {
if (comp.alunosInscritos && comp.semElementos && comp.aprovados)
return comp.alunosInscritos - comp.semElementos - comp.aprovados;
return 0;
}
$scope.removeComponent = function (index, list) {
list.splice(index, 1);
}
$scope.hasYearUnits = function (year) {
for (s in year.semesters) {
if (year.semesters[s].ucs && year.semesters[s].ucs.length > 0)
return true;
}
return false;
}
$scope.isInvalidAnfHaveUcs = function (year, years, index) {
if (year.ano > 0)
return false;
 
var s;
for (s in year.semesters) {
if (year.semesters[s].ucs && year.semesters[s].ucs.length > 0)
return true;
}
years.splice(index, 1);
return false;
}
$scope.addUc = function (semestre) {
semestre.ucs.push(
{
"@class": "<%=UnitsLearningResultUc.class.getName()%>",
manual: true,
periodo: semestre.semestre,
alunosInscritos: 0,
aprovados: 0,
aprovados1013: 0,
aprovados1013Percent: 0,
aprovados1416: 0,
aprovados1416Percent: 0,
aprovados1720: 0,
aprovados1720Percent: 0,
aprovadosPercent: 0,
cumprimentoProgramaPercent: 0,
reprovados: 0,
reprovadosPercent: 0,
semElementos: 0,
semElementosPercent: 0,
sigesCode: 0
}
);
}
$scope.addAno = function (comp) {
if (!comp.years)
comp.years = [];
comp.years.push(
{
ano: 1,
"@class": "<%=UnitsLearningResultYear.class.getName()%>",
manual: true,
"alunosInscritos": 0,
"aprovados": 0,
"aprovados1013": 0,
"aprovados1013Percent": 0,
"aprovados1416": 0,
"aprovados1416Percent": 0,
"aprovados1720": 0,
"aprovados1720Percent": 0,
"aprovadosPercent": 0,
"cumprimentoProgramaPercent": 0,
"reprovados": 0,
"reprovadosPercent": 0,
"semElementos": 0,
"semElementosPercent": 0,
semesters: [
{
"@class": "<%=UnitsLearningResultSemester.class.getName()%>",
manual: true,
semestre: "S1",
alunosInscritos: 0,
aprovados: 0,
aprovados1013: 0,
aprovados1013Percent: 0,
aprovados1416: 0,
aprovados1416Percent: 0,
aprovados1720: 0,
aprovados1720Percent: 0,
aprovadosPercent: 0,
cumprimentoProgramaPercent: 0,
reprovados: 0,
reprovadosPercent: 0,
semElementos: 0,
semElementosPercent: 0,
ucs: []
},
{
"@class": "<%=UnitsLearningResultSemester.class.getName()%>",
manual: true,
semestre: "S2",
alunosInscritos: 0,
aprovados: 0,
aprovados1013: 0,
aprovados1013Percent: 0,
aprovados1416: 0,
aprovados1416Percent: 0,
aprovados1720: 0,
aprovados1720Percent: 0,
aprovadosPercent: 0,
cumprimentoProgramaPercent: 0,
reprovados: 0,
reprovadosPercent: 0,
semElementos: 0,
semElementosPercent: 0,
ucs: []
}
]
}
);
}
 
},
templateUrl: function (elem, attrs) {
return "unitslearningresultstable";
}
}
});
</script>
<script type="text/ng-template" id="unitslearningresultstable">
 
 
<div class="sections">
<button class="btn btn-success" ng-click="addAno(comp)"><span class="glyphicon glyphicon-plus"></span> Ano
Manual
</button>
<table class="table learning">
<thead>
<tr>
<th rowspan="2">Mover</th>
<th rowspan="2">Código</th>
<th rowspan="2">Unidade Curricular</th>
<th rowspan="2">Cumprimento do Programa</th>
<th rowspan="2">Alunos Inscritos</th>
<th colspan="2">Sem Elementos</th>
<th colspan="2">Reprovados</th>
<th colspan="2">Aprovados</th>
<th colspan="2">Aprovados 10-13</th>
<th colspan="2">Aprovados 14-16</th>
<th colspan="2">Aprovados 17-20</th>
</tr>
<tr>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
</tr>
</thead>
<tbody>
<tr colspan="17" ng-if="false" ng-repeat-start="year in comp.years"></tr>
<tr class="year">
<td colspan="3" ng-if="year.ano &gt; 0">
 
<button ng-disabled="hasYearUnits(year)" class="btn btn-danger btn-xs"
ng-click="removeComponent($index,comp.years)"><span
class="glyphicon glyphicon-remove"></span></button>
<span ng-if="!year.manual">{{year.ano}}ª ano</span>
<span ng-if="year.manual">
<select ng-model="year.ano"
ng-options="c.v as c.n for c in [{v:1,n:'1º Ano'},{v:2,n:'2º Ano'},{v:3,n:'3º Ano'},{v:4,n:'4º Ano'},{v:5,n:'5º Ano'}]">
</select>
</span>
 
</td>
<td colspan="3" style="font-size: 1.0em !important" ng-if="isInvalidAnfHaveUcs(year,comp.years,$index)">
Unidades que não constam do plano (Verifique a situação com os serviços Académicos antes de
continuar)
poderão constar de um plano antigo ou ter o código siges desatualizado.
</td>
<td><input readonly="true" type="number" ng-model="year.cumprimentoProgramaPercent"
bound-model="avg('cumprimentoProgramaPercent',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.alunosInscritos"
bound-model="avg('alunosInscritos',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.semElementos"
bound-model="avg('semElementos',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.semElementosPercent"
bound-model="percent(year.semElementos,year.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="year.reprovados" bound-model="reprovados(year)"></td>
<td><input readonly="true" type="number" ng-model="year.reprovadosPercent"
bound-model="percent(year.reprovados,year.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados"
bound-model="year.aprovados1013*1 + year.aprovados1416*1 + year.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="year.aprovadosPercent"
bound-model="percent(year.aprovados,year.alunosInscritos)"></td>
 
<td><input readonly="true" type="number" ng-model="year.aprovados1013"
bound-model="avg('aprovados1013',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1013Percent"
bound-model="percent(year.aprovados1013,year.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1416"
bound-model="avg('aprovados1416',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1416Percent"
bound-model="percent(year.aprovados1416,year.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1720"
bound-model="avg('aprovados1720',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1720Percent"
bound-model="percent(year.aprovados1720,year.aprovados)"></td>
</tr>
 
<tr ng-if="false" ng-repeat-start="s in year.semesters"></tr>
<tr class="period" ng-if="year.ano &gt; 0 || s.ucs.length > 0">
<td colspan="3" class="period">Semestre {{s.semestre}}
<button ng-click="changeDocumentCollection(s)" data-toggle="tooltip"
title="Mover unidades para aqui" class="btn btn-xs btn-warning"
ng-show="checkedDocuments.length"><span class="glyphicon glyphicon-arrow-left"></span>
</button>
 
<button class="btn btn-success pull-right" ng-click="addUc(s)"><span
class="glyphicon glyphicon-plus"></span> UC Manual
</button>
</td>
<td><input readonly="true" type="number" ng-model="s.cumprimentoProgramaPercent"
bound-model="avg('cumprimentoProgramaPercent',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.alunosInscritos"
bound-model="avg('alunosInscritos',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.semElementos"
bound-model="avg('semElementos',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.semElementosPercent"
bound-model="percent(s.semElementos,s.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="s.reprovados" bound-model="reprovados(s)"></td>
<td><input readonly="true" type="number" ng-model="s.reprovadosPercent"
bound-model="percent(s.reprovados,s.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados"
bound-model="s.aprovados1013*1 + s.aprovados1416*1 + s.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="s.aprovadosPercent"
bound-model="percent(s.aprovados,s.alunosInscritos)"></td>
 
<td><input readonly="true" type="number" ng-model="s.aprovados1013"
bound-model="avg('aprovados1013',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1013Percent"
bound-model="percent(s.aprovados1013,s.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1416"
bound-model="avg('aprovados1416',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1416Percent"
bound-model="percent(s.aprovados1416,s.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1720"
bound-model="avg('aprovados1720',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1720Percent"
bound-model="percent(s.aprovados1720,s.aprovados)"></td>
</tr>
<tr ng-repeat="u in s.ucs" ng-class="{'alert-danger': u.error}">
<td><input ng-model="u.error" type="hidden"
bound-model="u.alunosInscritos < (u.aprovados*1 + u.semElementos*1)">
<input ng-model="u.checked" ng-click="checkUnit(u,s)" type="checkbox"></td>
<td><input type="text" ng-readonly="!u.manual || u.manual == false" ng-model="u.sigesCode"></td>
<td>
 
<input type="text" style="width: 150px" ng-if="!(!u.manual || u.manual == false)" ng-model="u.name">
<span ng-if="(!u.manual || u.manual == false)">{{u.name}}</span>
<button class="btn btn-danger btn-xs pull-right" ng-if="!(!u.manual || u.manual == false)"
ng-click="removeComponent(index,s.ucs)"><span class="glyphicon glyphicon-remove"></span>
</button>
</td>
<td><input type="number" ng-model="u.cumprimentoProgramaPercent"></td>
<td><input type="number" ng-model="u.alunosInscritos"></td>
<td><input type="number" ng-model="u.semElementos"></td>
<td><input readonly="true" type="number" ng-model="u.semElementosPercent"
bound-model="percent(u.semElementos,u.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="u.reprovados" bound-model="reprovados(u)"></td>
<td><input readonly="true" type="number" ng-model="u.reprovadosPercent"
bound-model="percent(u.reprovados,u.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados"
bound-model="u.aprovados1013*1 + u.aprovados1416*1 + u.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="u.aprovadosPercent"
bound-model="percent(u.aprovados,u.alunosInscritos)"></td>
 
<td><input type="number" ng-model="u.aprovados1013"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados1013Percent"
bound-model="percent(u.aprovados1013,u.aprovados)"></td>
<td><input type="number" ng-model="u.aprovados1416"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados1416Percent"
bound-model="percent(u.aprovados1416,u.aprovados)"></td>
<td><input type="number" ng-model="u.aprovados1720"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados1720Percent"
bound-model="percent(u.aprovados1720,u.aprovados)"></td>
</tr>
<tr ng-if="false" ng-repeat-end></tr>
<tr ng-if="false" ng-repeat-end></tr>
<tr class="year">
<td colspan="3">Resultados Globais</td>
 
 
<td><input readonly="true" type="number" ng-model="comp.cumprimentoProgramaPercent"
bound-model="avg('cumprimentoProgramaPercent',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.alunosInscritos"
bound-model="avg('alunosInscritos',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.semElementos"
bound-model="avg('semElementos',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.semElementosPercent"
bound-model="percent(comp.semElementos,comp.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="comp.reprovados" bound-model="reprovados(comp)"></td>
<td><input readonly="true" type="number" ng-model="comp.reprovadosPercent"
bound-model="percent(comp.reprovados,comp.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados"
bound-model="comp.aprovados1013*1 + comp.aprovados1416*1 + comp.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovadosPercent"
bound-model="percent(comp.aprovados,comp.alunosInscritos)"></td>
 
<td><input readonly="true" type="number" ng-model="comp.aprovados1013"
bound-model="avg('aprovados1013',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1013Percent"
bound-model="percent(comp.aprovados1013,comp.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1416"
bound-model="avg('aprovados1416',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1416Percent"
bound-model="percent(comp.aprovados1416,comp.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1720"
bound-model="avg('aprovados1720',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1720Percent"
bound-model="percent(comp.aprovados1720,comp.aprovados)"></td>
</tr>
</tbody>
</table>
<%--<pre class="code">{{ comp | json }}</pre>--%>
</div>
</script>
 
 
<script type="text/ng-template"
id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_GlobalLearningResultsChartImg">
<globallearningresultschartimg>
</globallearningresultschartimg>
</script>
<script>
angular.module("courseReportApp").directive('globallearningresultschartimg', function () {
 
return {
restrict: 'E',
link: function ($scope, element, attrs) {
$scope.generateChart = function (comp) {
 
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/courseReport.do",
"generateGlobalLearningResultsChartImg",
{
"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 "globallearningresultschartimg";
}
}
});
</script>
<script type="text/ng-template" id="globallearningresultschartimg">
<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 Gráfico</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>
</script>
 
 
<script type="text/ng-template"
id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_GlobalLearningResultsChartYearImg">
<globallearningresultschartyearimg>
</globallearningresultschartyearimg>
</script>
<script>
angular.module("courseReportApp").directive('globallearningresultschartyearimg', function () {
 
return {
restrict: 'E',
link: function ($scope, element, attrs) {
$scope.generateChart = function (comp) {
 
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/courseReport.do",
"generateGlobalLearningResultsChartYearImg",
{
"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 "globallearningresultschartyearimg";
}
}
});
</script>
<script type="text/ng-template" id="globallearningresultschartyearimg">
<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 Gráfico</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>
</script>
 
 
<!-- TESTE -->
 
/branches/grupo6/impl/src/web/user/courses/courseReportEdit.jsp
46,48 → 46,47
// all coords and widths are in jsPDF instance's declared units
// 'inches' in this case
pdf.fromHTML(
source, // HTML string or DOM elem ref.
margins.left, // x coord
margins.top, { // y coord
'width': margins.width, // max width of content on PDF
'elementHandlers': specialElementHandlers
},
source, // HTML string or DOM elem ref.
margins.left, // x coord
margins.top, { // y coord
'width': margins.width, // max width of content on PDF
'elementHandlers': specialElementHandlers
},
 
function (dispose) {
// dispose: object with X, Y of the last line add to the PDF
// this allow the insertion of new lines after html
//var pdfDocument = pdf.save('Test.pdf');
var pdfDocument = pdf.output();
function (dispose) {
// dispose: object with X, Y of the last line add to the PDF
// this allow the insertion of new lines after html
//var pdfDocument = pdf.save('Test.pdf');
var pdfDocument = pdf.output();
 
var boundary = '---------------------------';
boundary += Math.floor(Math.random()*32768);
boundary += Math.floor(Math.random()*32768);
boundary += Math.floor(Math.random()*32768);
var boundary = '---------------------------';
boundary += Math.floor(Math.random() * 32768);
boundary += Math.floor(Math.random() * 32768);
boundary += Math.floor(Math.random() * 32768);
 
var body = '';
body += '--' + boundary + '\r\n' +
'Content-Disposition: form-data; name="filesInputId-UPLOAD[]"; filename="20170530_210340.pdf"' + '\r\n';
body += 'Content-Type: application/pdf';
body += '\r\n\r\n';
body += pdfDocument;
body += '\r\n'
body += '--' + boundary + '--';
var body = '';
body += '--' + boundary + '\r\n' +
'Content-Disposition: form-data; name="filesInputId-UPLOAD[]"; filename="20170530_210340.pdf"' + '\r\n';
body += 'Content-Type: application/pdf';
body += '\r\n\r\n';
body += pdfDocument;
body += '\r\n'
body += '--' + boundary + '--';
 
 
 
$.ajax({
type: "POST",
cache: false,
url: "<%=request.getContextPath()%>/filesUpload",
data: body ,
processData: false,
contentType : 'multipart/form-data; boundary=' + boundary,
success: function (data) {
alert('success');
return false;
}
});
}, margins
$.ajax({
type: "POST",
cache: false,
url: "<%=request.getContextPath()%>/filesUpload",
data: body,
processData: false,
contentType: 'multipart/form-data; boundary=' + boundary,
success: function (data) {
alert('success');
return false;
}
});
}, margins
);
}
</script>
98,7 → 97,7
String year = request.getParameter("year");
AbstractDao.getCurrentSession().beginTransaction();
CourseImpl courseImpl = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode);
request.setAttribute("course",courseImpl);
request.setAttribute("course", courseImpl);
CourseReportDocument courseReport = null;
try {
courseReport = new CourseReportServices().createNewCourseReportDocument(courseCode, year);
107,243 → 106,238
e.printStackTrace();
}
String courseReportJson = courseReport.toJson();
request.setAttribute("courseDocumentJson",courseReportJson);
request.setAttribute("courseDocument",courseReport);
request.setAttribute("courseDocumentJson", courseReportJson);
request.setAttribute("courseDocument", courseReport);
 
%>
<%--<a href="javascript:demoFromHTML()" class="button">Run Code</a>--%>
 
<div class="container-fluid">
 
<style>
.separatorSection
{
border: 1px solid #ddd;
}
</style>
<style>
.separatorSection {
border: 1px solid #ddd;
}
</style>
 
 
<!-- Apresentacao da Unidade -->
<!-- Apresentacao da Unidade -->
 
<div class="panel panel-default">
<div class="panel-heading">
Relatório Anual do curso: ${course.name}
</div>
<div class="panel-body">
<div class="panel panel-default">
<div class="panel-heading">
Relatório Anual do curso: ${course.name}
</div>
<div class="panel-body">
 
<p><b class="label-info">Tipo de Curso:</b> <bean:message key="course.${course.degree}"/></p>
<p><b class="label-info">Ano Lectivo:</b> ${course.importYear}</p>
<p><b class="label-info">Departamento:</b> ${course.department.name}</p>
<p><b class="label-info">Escola:</b> ${course.department.courseSchool.name}</p>
<p><b class="label-info">Tipo de Curso:</b> <bean:message key="course.${course.degree}"/></p>
<p><b class="label-info">Ano Lectivo:</b> ${course.importYear}</p>
<p><b class="label-info">Departamento:</b> ${course.department.name}</p>
<p><b class="label-info">Escola:</b> ${course.department.courseSchool.name}</p>
 
 
<script>
 
//Especifico da aplicacao
var courseReportApp = angular.module('courseReportApp', ['ui.tree']);
GLOBAL_BacoAngularAppDependencies.push('courseReportApp');
 
<script>
 
//Especifico da aplicacao
var courseReportApp = angular.module('courseReportApp', ['ui.tree']);
GLOBAL_BacoAngularAppDependencies.push('courseReportApp');
 
 
courseReportApp.directive('resizable', function () {
return {
restrict: 'A',
scope: {
callback: '&onResize'
},
link: function postLink(scope, elem, attrs) {
elem.resizable();
elem.on('resize', function (evt, ui, comp) {
scope.$apply(function() {
if (scope.callback) {
scope.callback({$evt: evt, $ui: ui, $comp: comp });
courseReportApp.directive('resizable', function () {
return {
restrict: 'A',
scope: {
callback: '&onResize'
},
link: function postLink(scope, elem, attrs) {
elem.resizable();
elem.on('resize', function (evt, ui, comp) {
scope.$apply(function () {
if (scope.callback) {
scope.callback({$evt: evt, $ui: ui, $comp: comp});
}
})
});
}
})
};
});
}
};
});
 
 
courseReportApp.controller('courseReportAppController', function($scope)
{
courseReportApp.controller('courseReportAppController', function ($scope) {
 
$scope.docAppSelector = "#courseReportApp";
$scope.report = <%=courseReportJson%>
$scope.docAppSelector = "#courseReportApp";
$scope.report = <%=courseReportJson%>
 
$scope.resize = function(evt,ui,comp) {
//console.log (evt,ui);
comp.width = ui.size.width;
comp.height = ui.size.height;
}
$scope.resize = function (evt, ui, comp) {
//console.log (evt,ui);
comp.width = ui.size.width;
comp.height = ui.size.height;
}
 
/**
* @classe class to match
* @superClasses array of strings
* */
$scope.contains = function(obj,classe)
{
if(obj['@class'] && obj['@class'] == classe)
return true;
if(obj.allSuperClasses)
{
for(var i in obj.allSuperClasses)
{
if(classe == obj.allSuperClasses[i])
return true;
}
}
return false;
}
/**
* @classe class to match
* @superClasses array of strings
* */
$scope.contains = function (obj, classe) {
if (obj['@class'] && obj['@class'] == classe)
return true;
if (obj.allSuperClasses) {
for (var i in obj.allSuperClasses) {
if (classe == obj.allSuperClasses[i])
return true;
}
}
return false;
}
 
$scope.showSep = function(section,subSection)
{
var s;
for(s in section.sections)
{
section.sections[s].active = false;
}
/*$(".separatorSectionNav").each(function()
{
angular.element($(this)).scope().section.active = false;
});*/
subSection.active = true;
}
$scope.showSep = function (section, subSection) {
var s;
for (s in section.sections) {
section.sections[s].active = false;
}
/*$(".separatorSectionNav").each(function()
{
angular.element($(this)).scope().section.active = false;
});*/
subSection.active = true;
}
 
/**
* Este metodo devolve o template mais profundo na hierarquia de classes
* permitindo emular o override, quanto mais especifica for a classe
* e caso exista template é esse o template devolvido
* procura um script com o id da classe e se nao existir
* vai subindo nas super classes
* @param obj
* @returns {*}
*/
$scope.class2id = function(obj)
{
var objClassId = obj["@class"].replaceAll(".","_");
if($("script#" + objClassId).length > 0)
{
return objClassId;
}
if(obj.allSuperClasses)
{
var s;
for(s in obj.allSuperClasses)
{
var superClass = obj.allSuperClasses[s];
var superClassId = superClass.replaceAll(".","_");
if($("script#" + superClassId).length > 0)
{
return superClassId;
/**
* Este metodo devolve o template mais profundo na hierarquia de classes
* permitindo emular o override, quanto mais especifica for a classe
* e caso exista template é esse o template devolvido
* procura um script com o id da classe e se nao existir
* vai subindo nas super classes
* @param obj
* @returns {*}
*/
$scope.class2id = function (obj) {
var objClassId = obj["@class"].replaceAll(".", "_");
if ($("script#" + objClassId).length > 0) {
return objClassId;
}
if (obj.allSuperClasses) {
var s;
for (s in obj.allSuperClasses) {
var superClass = obj.allSuperClasses[s];
var superClassId = superClass.replaceAll(".", "_");
if ($("script#" + superClassId).length > 0) {
return superClassId;
}
}
}
return obj["@class"].replaceAll(".", "_");
}
}
}
return obj["@class"].replaceAll(".","_");
}
 
$scope.addText = function(parentCustomPane)
{
$scope.addSimpleDocComponent(parentCustomPane,"pt.estgp.estgweb.utils.documentBuilder.TextComponent")
}
$scope.addText = function (parentCustomPane) {
$scope.addSimpleDocComponent(parentCustomPane, "pt.estgp.estgweb.utils.documentBuilder.TextComponent")
}
 
$scope.addImage = function(parentCustomPane)
{
$scope.addSimpleDocComponent(parentCustomPane,"pt.estgp.estgweb.utils.documentBuilder.ImageComponent")
}
$scope.addImage = function (parentCustomPane) {
$scope.addSimpleDocComponent(parentCustomPane, "pt.estgp.estgweb.utils.documentBuilder.ImageComponent")
}
 
$scope.addSimpleDocComponent = function(parentCustomPane,classComponent)
{
if(!parentCustomPane.components)
{
parentCustomPane.components = [];
}
parentCustomPane.components.push(
{
"@class" : classComponent
$scope.addSimpleDocComponent = function (parentCustomPane, classComponent) {
if (!parentCustomPane.components) {
parentCustomPane.components = [];
}
parentCustomPane.components.push(
{
"@class": classComponent
}
);
}
);
}
$scope.removeComponent = function(index,array)
{
array.splice(index,1);
}
$scope.removeComponent = function (index, array) {
array.splice(index, 1);
}
 
$scope.callbackUploadedFiles = function(filesUploadResult,token,targetElement)
{
var modelObject = BacoAngularUtils.getAngularElementModel(targetElement);
$scope.callbackUploadedFiles = function (filesUploadResult, token, targetElement)
{
var modelObject = BacoAngularUtils.getAngularElementModel(targetElement);
 
if(modelObject.image && modelObject.image.identifier)
{
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/json/repository.do",
"replaceRepositoryFileFromTempPrivateDomain",
{
"identifier" : modelObject.image.identifier,
"fileUploaded" : BacoJS.stringifyOrdered(filesUploadResult.uploadedFiles[0])
},
"#courseReportApp",
function(repositoryFile4JsonView)
{
modelObject.image = repositoryFile4JsonView;
//image URL is generated on reimport just to avoid caching
modelObject.imageUrl = "<%=request.getContextPath()%>/repositoryStream/" + modelObject.image.identifier + "?" + new Date().getTime();
angular.element($("#courseReportApp")).scope().$apply();
},
function(){}
);
}
else
{
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/json/repository.do",
"saveRepositoryFileFromTempPrivateDomain",
{
"fileUploaded" : BacoJS.stringifyOrdered(filesUploadResult.uploadedFiles[0])
},
"#courseReportApp",
function(repositoryFile4JsonView)
{
modelObject.image = repositoryFile4JsonView;
modelObject.imageUrl = "<%=request.getContextPath()%>/repositoryStream/" + modelObject.image.identifier + "?" + new Date().getTime();
angular.element($("#courseReportApp")).scope().$apply();
},
function(){}
);
}
}
if (modelObject.image && modelObject.image.identifier) {
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/json/repository.do",
"replaceRepositoryFileFromTempPrivateDomain",
{
"identifier": modelObject.image.identifier,
"fileUploaded": BacoJS.stringifyOrdered(filesUploadResult.uploadedFiles[0])
},
"#courseReportApp",
function (repositoryFile4JsonView) {
modelObject.image = repositoryFile4JsonView;
//image URL is generated on reimport just to avoid caching
modelObject.imageUrl = "<%=request.getContextPath()%>/repositoryStream/" + modelObject.image.identifier + "?" + new Date().getTime();
$scope.$apply();
},
function () {
}
);
}
else {
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/json/repository.do",
"saveRepositoryFileFromTempPrivateDomain",
{
"fileUploaded": BacoJS.stringifyOrdered(filesUploadResult.uploadedFiles[0])
},
"#courseReportApp",
function (repositoryFile4JsonView) {
modelObject.image = repositoryFile4JsonView;
modelObject.imageUrl = "<%=request.getContextPath()%>/repositoryStream/" + modelObject.image.identifier + "?" + new Date().getTime();
angular.element($("#courseReportApp")).scope().$apply();
},
function () {
}
);
}
}
 
$scope.save = function () {
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/courseReport.do",
"save",
{
"courseReportDocument": BacoJS.stringifyOrdered($scope.report)
},
"#courseReportApp",
function (resposta) {
$scope.$apply();
},
function () {
}
);
}
 
 
});
</script>
 
});
</script>
<!--TEMPLATES FOR DOCUMENT BUILDER-->
<jsp:include page="../utils/documentsBuilder.jsp"/>
<jsp:include page="coursereport/templates.jsp"/>
 
<!--TEMPLATES FOR DOCUMENT BUILDER-->
<jsp:include page="../utils/documentsBuilder.jsp"/>
<jsp:include page="coursereport/templates.jsp"/>
<div class="form-vertical">
<div id="courseReportApp" ng-app="courseReportApp" ng-controller="courseReportAppController">
<div class="web-messages"></div>
<button ng-click="save()" class="btn btn-success">Salvar</button>
<div ng-init="section=report;"
ng-include="'pt_estgp_estgweb_utils_documentBuilder_DocumentSection'">
 
<div class="form-vertical">
<div id="courseReportApp" ng-app="courseReportApp" ng-controller="courseReportAppController">
</div>
 
<div ng-init="section=report;" ng-include="'pt_estgp_estgweb_utils_documentBuilder_DocumentSection'">
<pre class="code">{{ report | json }}</pre>
 
</div>
 
<!-- <pre class="code">{{ report | json }}</pre>-->
</div><!--App-->
</div> <!--form-->
 
</div><!--Panel Body-->
 
</div><!--Panel-->
 
</div><!--App-->
</div> <!--form-->
</div>
<!--container-fluid-->
 
</div><!--Panel Body-->
 
</div><!--Panel-->
 
</div><!--container-fluid-->
 
<%
AbstractDao.getCurrentSession().getTransaction().commit();
%>
/branches/grupo6/impl/src/web/user/utils/documentsBuilder.jsp
1,5 → 1,9
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<style>
.sections
{
padding-left: 20px;
}
.buttonTools
{
border: 1px solid gray;
23,7 → 27,12
}
</style>
 
<!--Require templateObj-->
<script type="text/ng-template" id="callDocumentTemplate">
 
<div ng-include="class2id(templateObj)"></div>
</script>
 
<%--
customPane Need component customPane in variable customPane
docAppSelector selector usualy an html ID for ng-app example #docReport
46,37 → 55,38
<div class="clearfix" ng-repeat="subComp in comp.components" ng-init="parent=comp;comp=subComp" ng-include="class2id(subComp)">
 
</div>
<div>
</div>
<div>
</div>
</script>
 
<script type="text/ng-template" id="pt_estgp_estgweb_utils_documentBuilder_ImageComponent">
<div class="imageComponent component">
<div ng-if="parent['@class']=='pt.estgp.estgweb.utils.documentBuilder.CustomPane'" class="buttonTools clearfix">
<button class="btn btn-danger pull-right" type="button" ng-click="removeComponent($index,parent.components)">
<span class="glyphicon glyphicon-remove"></span>
</button>
<label>Componente de Imagem (Use esta funcinalidade para adicionar gráficos ou tabelas que ache necessárias)</label>
<button class="btn btn-danger pull-right" type="button" ng-click="removeComponent($index,parent.components)">
<span class="glyphicon glyphicon-remove"></span>
</button>
<label>Componente de Imagem (Use esta funcinalidade para adicionar gráficos ou tabelas que ache necessárias)</label>
</div>
 
<div class="componentBody" ng-if="comp['@class']=='pt.estgp.estgweb.utils.documentBuilder.ImageComponent'">
<div class="form-group clearfix" ng-if="comp.image.identifier">
<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 class="componentBody">
<div class="form-group clearfix" ng-if="comp.image.identifier">
<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 class="form-group clearfix">
<div class="col-md-2 control-label">
<a class="btn btn-default" href="#" ng-model="comp"
data-title="Escolha Imagem"
data-showmetafields="false"
data-confirmonupload="true"
data-toggle="modal"
data-target="#filesUploadModal"
data-multiple="false"
data-allowed-extensions="jpg,png,gif"
data-callback-target-function="angular.element($('{{docAppSelector}}')).scope().callbackUploadedFiles">
</div>
<div class="form-group clearfix">
<div class="col-md-2 control-label">
<a class="btn btn-default" href="#"
ng-model="comp"
data-title="Escolha Imagem"
data-showmetafields="false"
data-confirmonupload="true"
data-toggle="modal"
data-target="#filesUploadModal"
data-multiple="false"
data-allowed-extensions="jpg,png,gif"
data-callback-target-function="angular.element($('{{docAppSelector}}')).scope().callbackUploadedFiles">
<span ng-if="comp.image.identifier">
Substituir Imagem
</span>
84,26 → 94,26
Carregar Imagem
</span>
 
<span class="glyphicon glyphicon-upload"/>
<span class="glyphicon glyphicon-upload"/>
 
</a>
</a>
</div>
 
<div class="col-md-10">
<div ng-if="!(comp.image.identifier)">
Clique em carregar imagens e escolha uma imagem para adicionar nesta secção.
</div>
 
<div class="col-md-10">
<div ng-if="!(comp.image.identifier)">
Clique em carregar imagens e escolha uma imagem para adicionar nesta secção.
</div>
 
<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 style="width: 100%;height: 100%" ng-src="{{comp.imageUrl}}">
</div>
(Se desejar altere o tamanho da imagem arrastando no canto inferior direito)
</center>
</div>
<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 style="width: 100%;height: 100%" ng-src="{{comp.imageUrl}}">
</div>
(Se desejar altere o tamanho da imagem arrastando no canto inferior direito)
</center>
</div>
</div>
</div>
</div>
</div>
135,4 → 145,33
</div>
</div>
</div>
</script>
</script>
 
<!--
@section objeto com seccoes e componentes
@optional @chapter capitulo do documento para esta seccao para contcatenar às subsections
-->
<script type="text/ng-template" id="pt_estgp_estgweb_utils_documentBuilder_DocumentSection">
<div class="sections">
<ul class="nav nav-tabs">
<li ng-model="section" class="separatorSectionNav"
ng-class="{ active : subSection.active}"
ng-repeat="subSection in section.sections">
<a ng-click="showSep(section,subSection)"> {{$chapter}}{{$index+1}} - {{subSection.title}}</a>
</li>
</ul>
<div ng-model="subSection"
ng-class="{ hidden: !subSection.active }"
ng-repeat="subSection in section.sections"
class="separatorSection clearfix">
<div ng-repeat="comp in subSection.components"
ng-include="class2id(comp)">
 
</div>
<div ng-if="subSection.sections"
ng-init="section=subSection;$chapter=$chapter+($index+1)+'.'"
ng-include="class2id(subSection)">
</div>
</div>
</div>
</script>
/branches/grupo6/impl/build.xml
194,6 → 194,7
<!--
Build distribution files
-->
 
<target name="dist" depends="build">
<jar jarfile="${dist.dir}/estgweb.jar">
<fileset dir="${build.dir.classes}" includes="**/*.class"/>
241,7 → 242,8
</replace>
</target>
 
<target name="build.war" depends="dist" description="Make war distribution">
<target name="build.war" depends="build"
description="Make war distribution">
<mkdir dir="${build.dir.war}"/>
<mkdir dir="${build.dir.war}/WEB-INF"/>
<mkdir dir="${build.dir.war}/WEB-INF/lib"/>
320,14 → 322,14
 
 
</copy>
<copy file="${dist.dir}/estgweb.jar" todir="${build.dir.war}/WEB-INF/lib"/>
<copy todir="${build.dir.war}/WEB-INF" overwrite="true">
 
<copy todir="${build.dir.war}/WEB-INF">
<fileset dir="${conf.dir}/WEB-INF">
<include name="**/*.*"/>
</fileset>
</copy>
<mkdir dir="${build.dir.war}/WEB-INF/classes"/>
<copy todir="${build.dir.war}/WEB-INF/classes" overwrite="true">
<copy todir="${build.dir.war}/WEB-INF/classes">
<fileset dir="${build.dir.classes}">
<include name="**/*.types"/>
<include name="**/*.properties"/>
339,9 → 341,10
<include name="**/*.xsl"/>
<include name="**/*.xsd"/>
<include name="**/*.json"/>
<include name="**/*.class"/>
</fileset>
</copy>
<copy todir="${build.dir.war}" overwrite="true">
<copy todir="${build.dir.war}" >
<fileset dir="src/web">
<include name="**/*"/>
</fileset>
884,7 → 887,7
 
<target name="generateJsonSoaServicesFile" >
<!--
<java fork="true" classname="${soa.services.json.class}" classpath="${build.dir.classes}" classpathref="pathToToolsLib">
<java fork="true" classname="${soasoa.services.json.class}" classpath="${build.dir.classes}" classpathref="pathToToolsLib">
<arg value="${build.dir.classes}"/>
<arg value="${basedir}/${src.dir}/"/>
</java>
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Pagina.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.ArrayList;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitDeliverable.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoCursoAfeto.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioPergunta.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentTaskActorInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/SurveyStatsGraphic.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/GenericUser.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/EventGeneric.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportFileGroupDocentesAno.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentTaskInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentGatewayExclusiveDecisionHolderInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnActorSelector.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitProgram.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/ConfigurationSeparator.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportFileGroupCursosAno.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Announcement.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentEventEndMessageInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnActorPoolThreadInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Survey.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/RecordThesis.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/AssessmentQuestionPossibleAnswer.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/RepositoryDocumentInterface.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/PageSection.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.ArrayList;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/SurveyQuestionCandidateAnswer.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnActorPoolInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/SruSourceCollection.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/OlapStarFactQuestionarioAnswer.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/EventClass.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/RecordJob.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/ConfigurationGradesStatusEpoca.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Teacher.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/PageRepositoryFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import pt.estgp.estgweb.domain.typesgenservices.repositorydocuments.RepositoryFileProxy;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitSummary.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentGatewayInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Record.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnRoleSelector.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnTaskFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportDocenteFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseYear.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
14,6 → 14,7
private Date updateDate;
private Date saveDate;
private String importYear;
private String courseReport;
private boolean separatedTurmas;
private Course course;
 
49,6 → 50,13
public void setImportYear(String importYear) {
this.importYear = importYear;
}
public String getCourseReport() {
return this.courseReport;
}
public void setCourseReport(String courseReport) {
this.courseReport = courseReport;
}
public boolean isSeparatedTurmas() {
return this.separatedTurmas;
}
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableDomainObject.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Blog.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentTaskActor.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import pt.estgp.estgweb.domain.typesgen.Todos;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Assessment.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/RepositoryFileVersion.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/UserRoleConfig.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/SessionObjectId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentTask.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import pt.estgp.estgweb.domain.typesgen.Todos;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/RepositoryDocumentCollection.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoUnidadeCurricularAfeta.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentGatewayExclusiveDecisionHolder.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableBoolean.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/SurveyQuestionItem.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/UrlStatMonth.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Page.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseStudiesPlan.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoAlunoRequisitado.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Process.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/AppUser.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnActorPool.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.ArrayList;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/PageText.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Questionario.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioPerguntaEsforco.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/SurveyQuestion.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioUnidade.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/OlapStarFactQuestionario.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentEventEndMessages.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import pt.estgp.estgweb.domain.typesgen.TargetActorType;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableString.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentGateway.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/UrlStatYearId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableJson.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/AssessmentQuestionItem.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Group.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseUnit.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/SurveyQuestionAnswer.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/ConfigurationGradesEpocaAvaliacao.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoTipologiaRequisitada.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/SigesUser.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitAnnouncement.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/ManagedIdentifierCollection.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/AssessmentQuestion.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/UrlStatYear.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/DigitalDeliveryCategory.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/RecordOther.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/UrlStatMonthId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/DigitalDelivery.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/UserSession.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitEvaluation.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportCursoFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportFileGroup.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/AssessmentQuestionAnswer.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentEventInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnActorSelectorCondicionado.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitProgramPart2.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/OlapStarFactQuestionarioCurso.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioResposta.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioTipologia.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitBlog.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Reminder.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/RecordEventOrganization.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/RecordPaper.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentGatewayExclusiveInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Configuration.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/PageContent.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/SessionObject.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.io.Serializable;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitBlogPost.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/JobParameter.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableInteger.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnProcessInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/EventFormacoes.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/ComunicationFolder.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Student.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableFloat.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitQuestion.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionario.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/UrlStatDay.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnUserSelector.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/OlapStarFactQuestionarioTipologia.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariable.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import pt.estgp.estgweb.domain.typesgen.VariableType;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/RecordProject.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/PageExternalObject.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponent.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentEvent.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitTurma.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/SurveyResponse.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/RepositoryFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/ProcessEventFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/ProcessEvent.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/OlapStarFactQuestionarioUnidade.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentGatewayExclusive.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableLong.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowConnectorInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentEventEndInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BlogPost.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/SruSource.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnProcess.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.ArrayList;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableJsonArray.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/ManagedIdentifier.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Course.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/PageExternalUrl.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitGrade.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/AssessmentResponse.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/UrlStatDayId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportFileAno.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/JobServiceTask.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/RepositoryDocument.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/RepositoryDocumentFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/User.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/EventUser.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Image.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/OlapHistoryDimension.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Teste.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/OlapStarFactQuestionarioAnswerEsforco.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/DigitalDeliveryTarget.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnActorSelectorWithDomainObjectLoader.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioReportFileGroupAno.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioUser.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseUserAssociation.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/ConfigurationDirectory.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioHistoryDrive.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitAssignement.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowConnector.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioRespostaRequisitada.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowComponentEventEnd.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnFlowObjectInstance.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioCurso.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseSchool.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Job.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.io.Serializable;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnAbstractActorSelector.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/JobServiceTaskScheduler.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/EventGenericRecord.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/JobServiceTaskSchedulerParameter.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/JobServiceTaskParameter.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/CourseDepartment.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/MetaProcess.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/SurveyStructuralNode.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/BpmnVariableDouble.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
 
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/ConfigurationGrades.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/Seccao.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6/impl/gen/java/pt/estgp/estgweb/domain/UrlStat.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 4/nov/2017 19:35:42 by Hibernate Tools 3.2.0.b9
// Generated Dec 7, 2017 11:01:13 AM by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/grupo6
Property changes:
Added: svn:ignore
+ .idea
BacoProj.iml
backUp.rar
/branches/grupo7/impl/src/web/user/courses/coursereport/templates.jsp
New file
0,0 → 1,694
<%@ page
import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultYear" %>
<%@ page
import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultSemester" %>
<%@ page
import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultUc" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
<!--
@section objeto com seccoes e componentes
@optional @chapter capitulo do documento para esta seccao para contcatenar às subsections
-->
 
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_CourseUnitsReportsSection">
<div class="sections">
<a name="indexCus"></a>
<span ng-repeat="cu in section.sections" ng-init="cu.taxaAprovacao = 100 * cu.courseUnitEvaluation.numAlunosAprovTotal/(cu.courseUnitEvaluation.numAlunosInscritos - cu.courseUnitEvaluation.numAlunosSemElementosAvaliacao)">
<a href="#cu{{$index}}" ng-class="{ 'alert-danger': (cu.courseUnitEvaluation.cumprimentoProgramaPercent &lt; 100) || cu.taxaAprovacao &lt; 75 || !cu.courseUnitEvaluation.closed || !cu.courseUnitEvaluation.teacherComplete}">
{{cu.title}}
</a> |
</span>
<div ng-repeat="cu in section.sections"
class="section panel-primary">
 
<a name="cu{{$index}}"></a>
<span ng-if="$index != 0" class="glyphicon glyphicon-backward" ></span><a ng-if="$index != 0" href="#indexCus"> Voltar atrás</a>
<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 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
</div>
<div class="alert-danger" ng-if="!cu.courseUnitEvaluation.closed && !cu.courseUnitEvaluation.teacherComplete">
Não foi entregue pelo docente para validação
</div>
 
</div>
 
 
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Resultados</label></h3></div>
<div>
<table class="tablesorter-blue" width="100%">
<tr>
<th rowspan="2">
Nº Alunos Inscritos
</th>
<th rowspan="2">
Nº de alunos sem elementos de avaliação
</th>
<th colspan="5">
Nº de alunos aprovados em
</th>
<th colspan="2">
Aprovados com a classificação entre 10 e 13 valores
</th>
<th colspan="2">
Aprovados com a classificação entre 14 e 16 valores
</th>
<th colspan="2">
Aprovados com a classificação entre 17 e 20 valores
</th>
</tr>
<tr>
<th>Avaliação de frequência</th>
<th>Exame Época Normal</th>
<th>Exame Época Recurso</th>
<th>Exame Época Especial</th>
<th>Total</th>
<th>Nº</th>
<th>%</th>
<th>Nº</th>
<th>%</th>
<th>Nº</th>
<th>%</th>
</tr>
<tr>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosInscritos}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosSemElementosAvaliacao}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovFrequencia}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovNormal}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovRecurso}}
</td>
<td style="text-align: center">
{{cu.courseUnitEvaluation.numAlunosAprovEspecial}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovTotal}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1013}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1013Percent}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1416}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1416Percent}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1720}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1720Percent}}
</td>
</tr>
</table>
</div>
</div>
 
<div style="padding-left:20px" >
<div><h3><label class="label label-primary">Taxa de Aprovação</label></h3></div>
<div ng-class="{ 'alert-danger': cu.taxaAprovacao &lt; 75 }">{{cu.taxaAprovacao}}%</div>
</div>
 
 
 
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Apreciação dos resultados quantitativos obtidos pelos estudantes</label></h3></div>
<div>{{cu.courseUnitEvaluation.qualApreciacaoQuantitivos}}</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Apreciação do funcionamento da UC</label></h3></div>
<div>{{cu.courseUnitEvaluation.qualApreciacaoUC}}</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Percentagem de cumprimento do programa da UC</label></h3></div>
<div ng-class="{ 'alert-danger': (cu.courseUnitEvaluation.cumprimentoProgramaPercent &lt; 100) }">
{{cu.courseUnitEvaluation.cumprimentoProgramaPercent}}%
</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Apreciação do cumprimento do programa da UC</label></h3></div>
<div>{{cu.courseUnitEvaluation.qualApreciacaoCumprimentoPrograma}}</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Conclusões</label></h3></div>
<div>{{cu.courseUnitEvaluation.qualConclusoes}}</div>
</div>
</div>
</div>
</script>
 
 
 
<style>
.dtpstats td, .dtpstats th{
text-align: center !important;
}
</style>
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_reportucsummary_UnitsDtpTable">
<div class="sections">
 
<table class="table dtpstats">
<thead>
<tr>
<th rowspan="2">Unidade Curricular</th>
<th colspan="2">Planeamento</th>
<th rowspan="2">Ficha Curricular</th>
<th rowspan="2">Sumários</th>
<th colspan="2">Avaliação</th>
<th rowspan="2">Relatório de Avaliação</th>
<th rowspan="2">Inquerito Pedagógico</th>
</tr>
<tr>
<th>Conteúdos</th>
<th>Calendarização</th>
<th>Enunciados</th>
<th>Pautas</th>
</tr>
</thead>
<tbody>
<tr>
<th colspan="9">Semestre 1</th>
</tr>
<tr ng-repeat="dtpStat in comp.semester1.courseUnitDtpStats">
<td>{{dtpStat.name}}</td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoConteudos }"><input type="checkbox" ng-model="dtpStat.planeamentoConteudos"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoCalendarizacao }"><input type="checkbox" ng-model="dtpStat.planeamentoCalendarizacao"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.ficha }"><input type="checkbox" ng-model="dtpStat.ficha"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.sumarios }"><input type="checkbox" ng-model="dtpStat.sumarios"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoEnunciados }"><input type="checkbox" ng-model="dtpStat.avaliacaoEnunciados"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoPautas }"><input type="checkbox" ng-model="dtpStat.avaliacaoPautas"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.relatorio }"><input type="checkbox" ng-model="dtpStat.relatorio"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.inquerito }"><input type="checkbox" ng-model="dtpStat.inquerito"/></td>
</tr>
<tr>
<th colspan="9">Semestre 2</th>
</tr>
<tr ng-repeat="dtpStat in comp.semester2.courseUnitDtpStats">
<td>{{dtpStat.name}}</td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoConteudos }"><input type="checkbox" ng-model="dtpStat.planeamentoConteudos"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoCalendarizacao }"><input type="checkbox" ng-model="dtpStat.planeamentoCalendarizacao"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.ficha }"><input type="checkbox" ng-model="dtpStat.ficha"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.sumarios }"><input type="checkbox" ng-model="dtpStat.sumarios"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoEnunciados }"><input type="checkbox" ng-model="dtpStat.avaliacaoEnunciados"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoPautas }"><input type="checkbox" ng-model="dtpStat.avaliacaoPautas"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.relatorio }"><input type="checkbox" ng-model="dtpStat.relatorio"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.inquerito }"><input type="checkbox" ng-model="dtpStat.inquerito"/></td>
</tr>
</tbody>
</table>
</div>
</script>
 
 
 
<style>
.learning td
{
font-size: 0.7em;
}
.learning td input{
width: 50px;
}
 
.learning td input:read-only{
width: 50px;
background-color: #cccccc;
}
.learning tr.year td {
vertical-align: top;
background-color: #aaaaaa;
 
font-weight: bold;
}
.learning tr.period td {
vertical-align: top;
background-color: #dfdfdf;
 
}
</style>
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_UnitsLearningResultsTable">
<unitslearningresultstable>
</unitslearningresultstable>
</script>
 
 
 
<script>
angular.module("courseReportApp").directive('boundModel', function() {
return {
require: 'ngModel',
link: function(scope, elem, attrs, ngModel) {
scope.$watch(attrs.boundModel, function(newValue, oldValue) {
if(newValue != oldValue) {
ngModel.$setViewValue(newValue);
ngModel.$render();
}
});
}
}
});
angular.module("courseReportApp").directive('unitslearningresultstable', function() {
 
return {
restrict: 'E',
link: function($scope, element, attrs)
{
 
$scope.checkedDocuments = [];
$scope.checkUnit = function(document,collection)
{
if(document.checked)
{
var docContainer =
{
"document" : document,
"collection" : collection
}
$scope.checkedDocuments.push(docContainer);
}
else
{
angular.forEach($scope.checkedDocuments, function(documentContainer, key)
{
if(documentContainer.document == document)
{
var index = $scope.checkedDocuments.indexOf(documentContainer);
$scope.checkedDocuments.splice(index, 1);
}
});
}
}
$scope.changeDocumentCollection = function(collection)
{
angular.forEach($scope.checkedDocuments, function(documentContainer, key)
{
collection.ucs.push(documentContainer.document);
delete documentContainer.document.checked;
});
angular.forEach($scope.checkedDocuments, function(documentContainer, key)
{
var index = documentContainer.collection.ucs.indexOf(documentContainer.document);
documentContainer.collection.ucs.splice(index, 1);
});
$scope.checkedDocuments = [];
}
$scope.avg = function(field,container, childs)
{
if(!childs || childs.length == 0)
return 0;
var sum = 0;
var c;
for(c in childs)
{
if(childs[c] && childs[c][field])
sum += 1*childs[c][field];
}
container[field] = sum / childs.length;
return container[field];
}
$scope.percent = function(n,total)
{
if(!n || n == 0 || !total || total == 0)
return 0;
return 100 * n / total;
}
$scope.reprovados = function(comp)
{
if(comp.alunosInscritos && comp.semElementos && comp.aprovados)
return comp.alunosInscritos - comp.semElementos - comp.aprovados;
return 0;
}
$scope.removeComponent = function(index,list)
{
list.splice(index,1);
}
$scope.hasYearUnits = function(year)
{
for(s in year.semesters)
{
if(year.semesters[s].ucs && year.semesters[s].ucs.length > 0)
return true;
}
return false;
}
$scope.isInvalidAnfHaveUcs = function(year,years,index)
{
if(year.ano > 0)
return false;
 
var s;
for(s in year.semesters)
{
if(year.semesters[s].ucs && year.semesters[s].ucs.length > 0)
return true;
}
years.splice(index,1);
return false;
}
$scope.addUc = function(semestre)
{
semestre.ucs.push(
{
"@class" : "<%=UnitsLearningResultUc.class.getName()%>",
manual : true,
periodo : semestre.semestre,
alunosInscritos: 0,
aprovados: 0,
aprovados1013: 0,
aprovados1013Percent: 0,
aprovados1416: 0,
aprovados1416Percent: 0,
aprovados1720: 0,
aprovados1720Percent: 0,
aprovadosPercent: 0,
cumprimentoProgramaPercent: 0,
reprovados: 0,
reprovadosPercent: 0,
semElementos: 0,
semElementosPercent: 0,
sigesCode : 0
}
);
}
$scope.addAno = function(comp)
{
if(!comp.years)
comp.years = [];
comp.years.push(
{
ano : 1,
"@class" : "<%=UnitsLearningResultYear.class.getName()%>",
manual : true,
"alunosInscritos": 0,
"aprovados": 0,
"aprovados1013": 0,
"aprovados1013Percent": 0,
"aprovados1416": 0,
"aprovados1416Percent": 0,
"aprovados1720": 0,
"aprovados1720Percent": 0,
"aprovadosPercent": 0,
"cumprimentoProgramaPercent": 0,
"reprovados": 0,
"reprovadosPercent": 0,
"semElementos": 0,
"semElementosPercent": 0,
semesters : [
{
"@class" : "<%=UnitsLearningResultSemester.class.getName()%>",
manual : true,
semestre : "S1",
alunosInscritos: 0,
aprovados: 0,
aprovados1013: 0,
aprovados1013Percent: 0,
aprovados1416: 0,
aprovados1416Percent: 0,
aprovados1720: 0,
aprovados1720Percent: 0,
aprovadosPercent: 0,
cumprimentoProgramaPercent: 0,
reprovados: 0,
reprovadosPercent: 0,
semElementos: 0,
semElementosPercent: 0,
ucs : []
},
{
"@class" : "<%=UnitsLearningResultSemester.class.getName()%>",
manual : true,
semestre: "S2",
alunosInscritos: 0,
aprovados: 0,
aprovados1013: 0,
aprovados1013Percent: 0,
aprovados1416: 0,
aprovados1416Percent: 0,
aprovados1720: 0,
aprovados1720Percent: 0,
aprovadosPercent: 0,
cumprimentoProgramaPercent: 0,
reprovados: 0,
reprovadosPercent: 0,
semElementos: 0,
semElementosPercent: 0,
ucs : []
}
]
}
);
}
 
},
templateUrl: function(elem,attrs) {
return "unitslearningresultstable";
}
}
});
</script>
<script type="text/ng-template" id="unitslearningresultstable">
 
 
<div class="sections">
<button class="btn btn-success" ng-click="addAno(comp)"><span class="glyphicon glyphicon-plus"></span> Ano Manual</button>
<table class="table learning">
<thead>
<tr>
<th rowspan="2">Mover</th>
<th rowspan="2">Código</th>
<th rowspan="2">Unidade Curricular</th>
<th rowspan="2">Cumprimento do Programa</th>
<th rowspan="2">Alunos Inscritos</th>
<th colspan="2">Sem Elementos</th>
<th colspan="2">Reprovados</th>
<th colspan="2">Aprovados</th>
<th colspan="2">Aprovados 10-13</th>
<th colspan="2">Aprovados 14-16</th>
<th colspan="2">Aprovados 17-20</th>
</tr>
<tr>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
</tr>
</thead>
<tbody>
<tr colspan="17" ng-if="false" ng-repeat-start="year in comp.years"></tr>
<tr class="year">
<td colspan="3" ng-if="year.ano &gt; 0">
 
<button ng-disabled="hasYearUnits(year)" class="btn btn-danger btn-xs" ng-click="removeComponent($index,comp.years)"><span class="glyphicon glyphicon-remove"></span></button>
<span ng-if="!year.manual">{{year.ano}}ª ano</span>
<span ng-if="year.manual">
<select ng-model="year.ano" ng-options="c.v as c.n for c in [{v:1,n:'1º Ano'},{v:2,n:'2º Ano'},{v:3,n:'3º Ano'},{v:4,n:'4º Ano'},{v:5,n:'5º Ano'}]">
</select>
</span>
 
</td>
<td colspan="3" style="font-size: 1.0em !important" ng-if="isInvalidAnfHaveUcs(year,comp.years,$index)">
Unidades que não constam do plano (Verifique a situação com os serviços Académicos antes de continuar)
poderão constar de um plano antigo ou ter o código siges desatualizado.
</td>
<td><input readonly="true" type="number" ng-model="year.cumprimentoProgramaPercent" bound-model="avg('cumprimentoProgramaPercent',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.alunosInscritos" bound-model="avg('alunosInscritos',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.semElementos" bound-model="avg('semElementos',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.semElementosPercent" bound-model="percent(year.semElementos,year.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="year.reprovados" bound-model="reprovados(year)"></td>
<td><input readonly="true" type="number" ng-model="year.reprovadosPercent" bound-model="percent(year.reprovados,year.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados" bound-model="year.aprovados1013*1 + year.aprovados1416*1 + year.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="year.aprovadosPercent" bound-model="percent(year.aprovados,year.alunosInscritos)"></td>
 
<td><input readonly="true" type="number" ng-model="year.aprovados1013" bound-model="avg('aprovados1013',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1013Percent" bound-model="percent(year.aprovados1013,year.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1416" bound-model="avg('aprovados1416',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1416Percent" bound-model="percent(year.aprovados1416,year.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1720" bound-model="avg('aprovados1720',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1720Percent" bound-model="percent(year.aprovados1720,year.aprovados)"></td>
</tr>
 
<tr ng-if="false" ng-repeat-start="s in year.semesters" ></tr>
<tr class="period" ng-if="year.ano &gt; 0 || s.ucs.length > 0">
<td colspan="3" class="period">Semestre {{s.semestre}} <button ng-click="changeDocumentCollection(s)" data-toggle="tooltip" title="Mover unidades para aqui" class="btn btn-xs btn-warning" ng-show="checkedDocuments.length"><span class="glyphicon glyphicon-arrow-left"></span></button>
 
<button class="btn btn-success pull-right" ng-click="addUc(s)"><span class="glyphicon glyphicon-plus"></span> UC Manual</button>
</td>
<td><input readonly="true" type="number" ng-model="s.cumprimentoProgramaPercent" bound-model="avg('cumprimentoProgramaPercent',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.alunosInscritos" bound-model="avg('alunosInscritos',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.semElementos" bound-model="avg('semElementos',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.semElementosPercent" bound-model="percent(s.semElementos,s.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="s.reprovados" bound-model="reprovados(s)"></td>
<td><input readonly="true" type="number" ng-model="s.reprovadosPercent" bound-model="percent(s.reprovados,s.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados" bound-model="s.aprovados1013*1 + s.aprovados1416*1 + s.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="s.aprovadosPercent" bound-model="percent(s.aprovados,s.alunosInscritos)"></td>
 
<td><input readonly="true" type="number" ng-model="s.aprovados1013" bound-model="avg('aprovados1013',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1013Percent" bound-model="percent(s.aprovados1013,s.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1416" bound-model="avg('aprovados1416',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1416Percent" bound-model="percent(s.aprovados1416,s.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1720" bound-model="avg('aprovados1720',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1720Percent" bound-model="percent(s.aprovados1720,s.aprovados)"></td>
</tr>
<tr ng-repeat="u in s.ucs" ng-class="{'alert-danger': u.error}" >
<td><input ng-model="u.error" type="hidden" bound-model="u.alunosInscritos < (u.aprovados*1 + u.semElementos*1)">
<input ng-model="u.checked" ng-click="checkUnit(u,s)" type="checkbox"></td>
<td><input type="text" ng-readonly="!u.manual || u.manual == false" ng-model="u.sigesCode"></td>
<td>
 
<input type="text" style="width: 150px" ng-if="!(!u.manual || u.manual == false)" ng-model="u.name">
<span ng-if="(!u.manual || u.manual == false)">{{u.name}}</span>
<button class="btn btn-danger btn-xs pull-right" ng-if="!(!u.manual || u.manual == false)" ng-click="removeComponent(index,s.ucs)"><span class="glyphicon glyphicon-remove"></span></button>
</td>
<td><input type="number" ng-model="u.cumprimentoProgramaPercent"></td>
<td><input type="number" ng-model="u.alunosInscritos"></td>
<td><input type="number" ng-model="u.semElementos"></td>
<td><input readonly="true" type="number" ng-model="u.semElementosPercent" bound-model="percent(u.semElementos,u.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="u.reprovados" bound-model="reprovados(u)"></td>
<td><input readonly="true" type="number" ng-model="u.reprovadosPercent" bound-model="percent(u.reprovados,u.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados" bound-model="u.aprovados1013*1 + u.aprovados1416*1 + u.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="u.aprovadosPercent" bound-model="percent(u.aprovados,u.alunosInscritos)"></td>
 
<td><input type="number" ng-model="u.aprovados1013"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados1013Percent" bound-model="percent(u.aprovados1013,u.aprovados)"></td>
<td><input type="number" ng-model="u.aprovados1416"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados1416Percent" bound-model="percent(u.aprovados1416,u.aprovados)"></td>
<td><input type="number" ng-model="u.aprovados1720"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados1720Percent" bound-model="percent(u.aprovados1720,u.aprovados)"></td>
</tr>
<tr ng-if="false" ng-repeat-end></tr>
<tr ng-if="false" ng-repeat-end></tr>
<tr class="year">
<td colspan="3">Resultados Globais</td>
 
 
<td><input readonly="true" type="number" ng-model="comp.cumprimentoProgramaPercent" bound-model="avg('cumprimentoProgramaPercent',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.alunosInscritos" bound-model="avg('alunosInscritos',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.semElementos" bound-model="avg('semElementos',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.semElementosPercent" bound-model="percent(comp.semElementos,comp.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="comp.reprovados" bound-model="reprovados(comp)"></td>
<td><input readonly="true" type="number" ng-model="comp.reprovadosPercent" bound-model="percent(comp.reprovados,comp.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados" bound-model="comp.aprovados1013*1 + comp.aprovados1416*1 + comp.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovadosPercent" bound-model="percent(comp.aprovados,comp.alunosInscritos)"></td>
 
<td><input readonly="true" type="number" ng-model="comp.aprovados1013" bound-model="avg('aprovados1013',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1013Percent" bound-model="percent(comp.aprovados1013,comp.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1416" bound-model="avg('aprovados1416',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1416Percent" bound-model="percent(comp.aprovados1416,comp.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1720" bound-model="avg('aprovados1720',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1720Percent" bound-model="percent(comp.aprovados1720,comp.aprovados)"></td>
</tr>
</tbody>
</table>
<%--<pre class="code">{{ comp | json }}</pre>--%>
</div>
</script>
 
 
 
 
 
 
 
 
 
 
 
 
 
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_GlobalLearningResultsChartImg">
<globallearningresultschartimg>
</globallearningresultschartimg>
</script>
<script>
angular.module("courseReportApp").directive('globallearningresultschartimg', function() {
 
return {
restrict: 'E',
link: function($scope, element, attrs)
{
$scope.generateChart = function(comp)
{
 
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/courseReport.do",
"generateGlobalLearningResultsChartImg",
{
"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 "globallearningresultschartimg";
}
}
});
</script>
<script type="text/ng-template" id="globallearningresultschartimg">
<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 Gráfico</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>
</script>
/branches/grupo1/impl/conf/WEB-INF/struts/struts-courses.xml
37,7 → 37,7
 
 
 
 
<action path="/courseController"
type="pt.estgp.estgweb.web.controllers.courses.CoursesController"
name="CourseForm"
166,6 → 166,14
<action path="/user/loadCourseReportTools" forward="page.course.report.tools.load"/>
<action path="/user/editCourseReport" forward="page.course.report.edit"/>
 
<action path="/user/courseReport"
type="pt.estgp.estgweb.web.controllers.courses.CoursesServicesController"
name="WidgetModelForm"
scope="request"
parameter="dispatch"
validate="true"
input="page.widget.json.fail.validations">
</action>
 
 
 
/branches/grupo1/impl/conf/berserk/sd.xml
832,7 → 832,7
<chain name="OwnersEdit"/>
</filterChains>
</service>
 
<service>
<name>LoadUserById</name>
<implementationClass>pt.estgp.estgweb.services.profile.LoadUserByIdService</implementationClass>
996,18 → 996,18
</filterChains>
</service>
 
<!--<service>
<name>DeleteCourseUnit</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.UpdateCourseUnitService</implementationClass>
<description>Update course unit objectives and program file</description>
<isTransactional>true</isTransactional>
<defaultMethod>delete</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Supers"/>
</filterChains>
</service>-->
<!--<service>
<name>DeleteCourseUnit</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.UpdateCourseUnitService</implementationClass>
<description>Update course unit objectives and program file</description>
<isTransactional>true</isTransactional>
<defaultMethod>delete</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Supers"/>
</filterChains>
</service>-->
<service>
<name>LoadCourseUnit</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitService</implementationClass>
1079,9 → 1079,9
<service>
<name>SaveCourseUnitProgram</name>
<!--Args
ourseUnitProgramView programView,
long unitId used in filters
-->
ourseUnitProgramView programView,
long unitId used in filters
-->
<implementationClass>pt.estgp.estgweb.services.courseunits.SaveCourseUnitProgram</implementationClass>
<description>Save course unit program</description>
<isTransactional>true</isTransactional>
1123,9 → 1123,9
<service>
<name>SaveCourseUnitEvaluation</name>
<!--Args
CourseUnitEvaluationView evaluationView,
long unitId used in filters
-->
CourseUnitEvaluationView evaluationView,
long unitId used in filters
-->
<implementationClass>pt.estgp.estgweb.services.courseunits.SaveCourseUnitEvaluation</implementationClass>
<description>Save course unit evaluation</description>
<isTransactional>true</isTransactional>
1157,8 → 1157,8
<service>
<name>InitCourseUnitEvaluationClearances</name>
<!--Parameters
CourseUnitView cuv, Long courseUnitId
-->
CourseUnitView cuv, Long courseUnitId
-->
<implementationClass>pt.estgp.estgweb.services.courseunits.SaveCourseUnitEvaluation</implementationClass>
<description>Open course unit evaluation for edition</description>
<isTransactional>true</isTransactional>
1509,9 → 1509,9
</filterChains>
</service>
 
 
 
 
<!--CourseUnitAssignements Backups-->
<service>
<name>CreateCourseUnitDirPackage</name>
1592,11 → 1592,11
<chain name="Session"/>
</filterChains>
</service>
 
 
 
 
 
<!--COURSES-->
<service>
<name>LoadCourseByCode</name>
1855,7 → 1855,7
<chain name="Logger"/>
</filterChains>
</service>
<service>
<service>
<name>LoadCoursesImportYearByType</name>
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass>
<description>Load All Courses</description>
2367,7 → 2367,7
</filterChains>
</service>
<service>
<name>GenerateSurveyStatsCsv</name>
<name>GenerateSurveyStatsCsv</name>
<implementationClass>pt.estgp.estgweb.services.surveys.GenerateSurveyStatsCsvService</implementationClass>
<description>Generate all survey stats on a csv file</description>
<isTransactional>true</isTransactional>
2403,7 → 2403,7
 
 
 
<!--Filipe Matos-->
<!--Filipe Matos-->
<!--Assessments-->
<service>
<name>CreateEditAssessment</name>
2920,18 → 2920,18
</service>
 
<!--
<service>
<name>AddUpdateDirtyRolesTranslation</name>
<implementationClass>pt.estgp.estgweb.services.users.UserRoleConfigService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>addUpdateDirtRolesTranslation</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="RoleAddRemoveManager"/>
</filterChains>
</service>-->
<service>
<name>AddUpdateDirtyRolesTranslation</name>
<implementationClass>pt.estgp.estgweb.services.users.UserRoleConfigService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>addUpdateDirtRolesTranslation</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="RoleAddRemoveManager"/>
</filterChains>
</service>-->
 
<service>
<name>AddUpdateRoleTranslation</name>
3901,8 → 3901,8
 
 
<!--/****************************************************************************/
/* COURSE REPORTS
/****************************************************************************/-->
/* COURSE REPORTS
/****************************************************************************/-->
 
 
 
3944,16 → 3944,16
</service>
 
<!--
PRECISO DE UM IMPORTAR NOVAMENTE TABELA DE RESULTADOS DE APRENDIZAGEM
Ha de ser um subservico do de cima que tem usar
o servico LoadCourseEvaluationSections novamente
PRECISO DE UM IMPORTAR NOVAMENTE TABELA DE RESULTADOS DE APRENDIZAGEM
Ha de ser um subservico do de cima que tem usar
o servico LoadCourseEvaluationSections novamente
 
PRECISO DE UM SERVICO PARA GERAR OS GRAFICOS DE APRENDIZAGEM
-->
PRECISO DE UM SERVICO PARA GERAR OS GRAFICOS DE APRENDIZAGEM
-->
 
<!--/****************************************************************************/
/* SERVICOS WS-API TODO Seguranca em falta
/****************************************************************************/-->
/* SERVICOS WS-API TODO Seguranca em falta
/****************************************************************************/-->
 
<service>
<name>LoadCourseEvaluationSections</name>
4008,7 → 4008,6
</filterChains>
</service>
 
 
<service>
<name>LoadPlanYearForCourseUnitCode</name>
<implementationClass>pt.estgp.estgweb.services.courses.CourseReportServices</implementationClass>
4025,10 → 4024,8
</filterChains>
</service>
 
 
<!-- SERVICOS DE GERACAO DE RELATORIO DE CURSO -->
 
 
<service>
<name>CourseReportGenerateGlobalLearningResultsChartImg</name>
<implementationClass>pt.estgp.estgweb.services.courses.CourseReportServices</implementationClass>
4047,6 → 4044,22
</filterChains>
</service>
 
<service>
<name>CourseReportGenerateGlobalLearningResultsChartYearImg</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>generateGenerateGlobalLearningResultsChartYearImg</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
 
 
</serviceDefinitions>
/branches/grupo1/impl/src/java/pt/estgp/estgweb/services/courses/CourseReportServices.java
448,11 → 448,41
return view.toJson();
}
 
public String generateGenerateGlobalLearningResultsChartYearImg(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);
GlobalLearningResultsChartImg chartImg = (GlobalLearningResultsChartImg) learningGlobalAnalysisSection.findDocComponent(GlobalLearningResultsChartImg.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/grupo1/impl/src/java/pt/estgp/estgweb/web/controllers/courses/CoursesServicesController.java
New file
0,0 → 1,55
package pt.estgp.estgweb.web.controllers.courses;
 
import org.apache.struts.action.ActionForm;
import org.json.JSONObject;
import pt.estgp.estgweb.web.controllers.utils.AbstractWidgetAjaxController;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
* Created by jorgemachado on 06/01/17.
*/
public class CoursesServicesController extends AbstractWidgetAjaxController
{
 
 
/**
* See also CoursesServicesWidgetController for WS-API services
*/
 
/**
*
* @param form
* @param request
* @param response
* @return
* @throws Throwable
*/
 
public JSONObject generateGlobalLearningResultsChartImg(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),
"CourseReportGenerateGlobalLearningResultsChartImg",
new Object[]{courseReportDocument});
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});
return new JSONObject(json);
}
}
/branches/grupo1/impl/src/web/examples/angular/directives/angular-directive.jsp
New file
0,0 → 1,95
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="bacoTags" tagdir="/WEB-INF/tags" %>
<%@ taglib prefix="logic" uri="/WEB-INF/tlds/struts-logic.tld" %>
<html>
<head></head>
<body ng-app="BacoAngularApp">
<jsp:include page="/layout/themes/scripts-default.jsp"/>
<jsp:include page="/layout/headerTools.jsp"/>
 
 
<div id="demoApp" ng-app="demoApp" ng-controller="demoAppController">
 
 
<h1>Uso de Directivas com Templates</h1>
<p>Este exemplo mostra como deve ser usada uma template para podermos incluir uma função
de controlo especifica da template usando directivas</p>
<p>Mostra ainda que dentro da template o scope é uma fusão dos scopes da ngApp e da propria directiva</p>
<p>Mostra também como podemos escolher dinamicamente a template ou as funcionalidades dependendo de atributos que passamos à template</p>
<script>
 
var demoApp = angular.module('demoApp', []);
GLOBAL_BacoAngularAppDependencies.push('demoApp');
 
 
//demoApp..directive('tpl', function() {
//ou
angular.module('demoApp').directive('tpl', function() {
 
return {
restrict: 'E', //A ou E define se é o nome do elemento ou um atributo
link: function(scope, element, attrs) {
// concatenating the directory to the ver attr to select the correct excerpt for the day
 
 
 
scope.teste = "teste";
scope.move = function(){
 
scope.teste = "teste2";
scope.testeSuper = "testeSuper2";
}
},
// passing in contentUrl variable
templateUrl: function(elem,attrs) {
return attrs.templatename;
}
}
});
 
 
demoApp.controller('demoAppController', function ($scope) {
 
 
$scope.testeSuper = "testeSuper";
 
}
);
 
</script>
 
<p>campo testeSuper no mainmodule {{testeSuper}}</p>
 
<p>Se incluirmos o tpl2.html apenas vamos ter acesso às variaveis do scope da aplicação, neste caso o teste, a template pode estar declarada fora da app, não há problema</p>
<p>Por acaso neste exemplo temos acesso ao testeSuper porque a directiva adiciona funcionalidade ao scope da aplicação onde é chamada, mas se não chamarmos nenhuma directiva
a var testeSuper não aparece</p>
<div ng-include="'tpl2.html'"></div>
 
 
<h2>Invocando a tpl de html com directiva</h2>
<tpl templatename="tpl.html"></tpl>
 
<h2>Invocando a tpl de de javascript com directiva</h2>
<tpl templatename="tpl2.html"></tpl>
 
 
 
 
 
 
</div>
 
 
 
<!--TEMPLATE RECURSIVO-->
<script type="text/ng-template" id="tpl2.html">
<div>
<h1>Usando um template de Script</h1>
<p>TESTE</p>
<p>{{teste}}</p>
<p>{{testeSuper}}</p>
<button ng-click="move()">Muda Textos</button>
</div>
</script>
</body>
</html>
/branches/grupo1/impl/src/web/examples/angular/directives/tpl.html
New file
0,0 → 1,5
<h1>Template de HTML</h1>
<p>TESTE</p>
<p>{{teste}}</p>
<p>{{testeSuper}}</p>
<button ng-click="move()">Muda Textos</button>
/branches/grupo1/impl/src/web/examples/angular/directives/angular-directive-module.jsp
New file
0,0 → 1,36
<%--
Created by IntelliJ IDEA.
User: jorgemachado
Date: 11/11/17
Time: 10:20
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body ng-app="BacoAngularApp">
<jsp:include page="/layout/themes/scripts-default.jsp"/>
<jsp:include page="/layout/headerTools.jsp"/>
 
<div class="container">
<h1>Uso de Templates Generalizados e cada um com sua template</h1>
<p>O caso em questão é a existencia de um esqueleto principal para um modulo (mainmodule)</p>
<p>O main module inclui templates para cada componente usando o ng-include</p>
<p>Esse ng-include é referente ao campo @class de cada componente</p>
<p>vamos incluir esse esqueleto e todas as templates especificas dos nossos modulos</p>
<p>incluimos ainda as directivas que estiverem nos nossos modulos</p>
<p>o template do ng-include irá colocar a directiva desejada caso seja necessário</p>
<p>com a directiva podemos ter funcionalidade de scope associada ao subcomponente, que é desconhecido do main module</p>
<p>caso necessite o includemodule também tem acesso ao scope da app principal</p>
<p>o unico requesito é passar ao include module o nome da app onde ele vai inserir as directivas</p>
 
 
 
<jsp:include page="angular-directive-mainmodule.jsp"/>
<jsp:include page="angular-directive-includemodule.jsp"/>
 
</div>
</body>
</html>
/branches/grupo1/impl/src/web/examples/angular/directives/angular-directive-includemodule.jsp
New file
0,0 → 1,60
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
<p>Modulo Incluido contem as directivas e os templates necessários</p>
<p>Este módulo conhece o nome do módulo da App onde vai ser incluido</p>
 
<script>
angular.module("demoApp").directive('tpl', function() {
var contentUrl;
return {
restrict: 'E', //A ou E define se é o nome do elemento ou um atributo
link: function(scope, element, attrs) {
// concatenating the directory to the ver attr to select the correct excerpt for the day
//contentUrl = attrs.templatename + '.html';
 
//console.log(contentUrl);
 
scope.teste = "teste";
scope.move = function(){
 
scope.teste = "teste2modules";
//scope.testeSuper = "testeSuper2modules";
angular.element("#demoApp").scope().testeSuper = "testeSuper2modules";
}
scope.mudaCompName = function(comp){
 
comp.name = "NOVO NOME DO COMP MUDADO NA DIRECTIVA";
}
},
// passing in contentUrl variable
templateUrl: function(elem,attrs) {
return "templateDirectiva";
}
}
});
</script>
 
<script type="text/ng-template" id="directive_class">
<div style="border: 1px solid #000000">
<h1>DIRECTIVE CLASS TEMPLATE</h1>
<p>COMP ELEMENTO DIRECTIVA:{{comp.name}}</p>
<p><input type="text" ng-model="comp.name"></p>
<tpl></tpl>
<p>Teste no scope da directiva<p>
<pre>
{{teste | json}}
</pre>
</div>
</script>
 
<script type="text/ng-template" id="templateDirectiva">
<div style="border: 1px solid green">
<h1>templateDirectiva</h1>
<p>TESTE</p>
<p>{{teste}}</p>
<p>{{testeSuper}}</p>
<p>COMP ELEMENTO DIRECTIVA:{{comp.name}}</p>
<button ng-click="move()">Muda Textos</button>
<button ng-click="mudaCompName(comp)">Muda COMP NAME</button>
</div>
</script>
/branches/grupo1/impl/src/web/examples/angular/directives/angular-directive-mainmodule.jsp
New file
0,0 → 1,48
<div id="demoApp" ng-app="demoApp" ng-controller="demoAppController">
 
 
 
<script>
 
var demoApp = angular.module('demoApp', []);
GLOBAL_BacoAngularAppDependencies.push('demoApp');
 
 
demoApp.controller('demoAppController', function ($scope) {
 
$scope.testeSuper = "testeSuper";
 
$scope.data =
{
comps : [
{
"@class" : "directive_class",
"name" : "componente de teste"
}
]
}
 
}
);
 
</script>
 
 
<h1>Campo testeSuper no mainmodule "{{testeSuper}}"</h1>
<h1>Campo data.comps[0].name no mainmodule "{{data.comps[0].name}}"</h1>
 
<h2>Template chamado atraves de um template de classe intermedio</h2>
<div ng-repeat="comp in data.comps" ng-include="comp['@class']">
 
</div>
 
 
<pre>
{{testeSuper | json}}
</pre>
<pre>
{{data | json}}
</pre>
 
 
</div>
/branches/grupo1/impl/src/web/user/courses/coursereport/templates.jsp
New file
0,0 → 1,756
<%@ page
import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultYear" %>
<%@ page
import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultSemester" %>
<%@ page
import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultUc" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
<!--
@section objeto com seccoes e componentes
@optional @chapter capitulo do documento para esta seccao para contcatenar às subsections
-->
 
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_CourseUnitsReportsSection">
<div class="sections">
<a name="indexCus"></a>
<span ng-repeat="cu in section.sections" ng-init="cu.taxaAprovacao = 100 * cu.courseUnitEvaluation.numAlunosAprovTotal/(cu.courseUnitEvaluation.numAlunosInscritos - cu.courseUnitEvaluation.numAlunosSemElementosAvaliacao)">
<a href="#cu{{$index}}" ng-class="{ 'alert-danger': (cu.courseUnitEvaluation.cumprimentoProgramaPercent &lt; 100) || cu.taxaAprovacao &lt; 75 || !cu.courseUnitEvaluation.closed || !cu.courseUnitEvaluation.teacherComplete}">
{{cu.title}}
</a> |
</span>
<div ng-repeat="cu in section.sections"
class="section panel-primary">
 
<a name="cu{{$index}}"></a>
<span ng-if="$index != 0" class="glyphicon glyphicon-backward" ></span><a ng-if="$index != 0" href="#indexCus"> Voltar atrás</a>
<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 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
</div>
<div class="alert-danger" ng-if="!cu.courseUnitEvaluation.closed && !cu.courseUnitEvaluation.teacherComplete">
Não foi entregue pelo docente para validação
</div>
 
</div>
 
 
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Resultados</label></h3></div>
<div>
<table class="tablesorter-blue" width="100%">
<tr>
<th rowspan="2">
Nº Alunos Inscritos
</th>
<th rowspan="2">
Nº de alunos sem elementos de avaliação
</th>
<th colspan="5">
Nº de alunos aprovados em
</th>
<th colspan="2">
Aprovados com a classificação entre 10 e 13 valores
</th>
<th colspan="2">
Aprovados com a classificação entre 14 e 16 valores
</th>
<th colspan="2">
Aprovados com a classificação entre 17 e 20 valores
</th>
</tr>
<tr>
<th>Avaliação de frequência</th>
<th>Exame Época Normal</th>
<th>Exame Época Recurso</th>
<th>Exame Época Especial</th>
<th>Total</th>
<th>Nº</th>
<th>%</th>
<th>Nº</th>
<th>%</th>
<th>Nº</th>
<th>%</th>
</tr>
<tr>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosInscritos}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosSemElementosAvaliacao}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovFrequencia}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovNormal}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovRecurso}}
</td>
<td style="text-align: center">
{{cu.courseUnitEvaluation.numAlunosAprovEspecial}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovTotal}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1013}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1013Percent}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1416}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1416Percent}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1720}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1720Percent}}
</td>
</tr>
</table>
</div>
</div>
 
<div style="padding-left:20px" >
<div><h3><label class="label label-primary">Taxa de Aprovação</label></h3></div>
<div ng-class="{ 'alert-danger': cu.taxaAprovacao &lt; 75 }">{{cu.taxaAprovacao}}%</div>
</div>
 
 
 
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Apreciação dos resultados quantitativos obtidos pelos estudantes</label></h3></div>
<div>{{cu.courseUnitEvaluation.qualApreciacaoQuantitivos}}</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Apreciação do funcionamento da UC</label></h3></div>
<div>{{cu.courseUnitEvaluation.qualApreciacaoUC}}</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Percentagem de cumprimento do programa da UC</label></h3></div>
<div ng-class="{ 'alert-danger': (cu.courseUnitEvaluation.cumprimentoProgramaPercent &lt; 100) }">
{{cu.courseUnitEvaluation.cumprimentoProgramaPercent}}%
</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Apreciação do cumprimento do programa da UC</label></h3></div>
<div>{{cu.courseUnitEvaluation.qualApreciacaoCumprimentoPrograma}}</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Conclusões</label></h3></div>
<div>{{cu.courseUnitEvaluation.qualConclusoes}}</div>
</div>
</div>
</div>
</script>
 
 
 
<style>
.dtpstats td, .dtpstats th{
text-align: center !important;
}
</style>
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_reportucsummary_UnitsDtpTable">
<div class="sections">
 
<table class="table dtpstats">
<thead>
<tr>
<th rowspan="2">Unidade Curricular</th>
<th colspan="2">Planeamento</th>
<th rowspan="2">Ficha Curricular</th>
<th rowspan="2">Sumários</th>
<th colspan="2">Avaliação</th>
<th rowspan="2">Relatório de Avaliação</th>
<th rowspan="2">Inquerito Pedagógico</th>
</tr>
<tr>
<th>Conteúdos</th>
<th>Calendarização</th>
<th>Enunciados</th>
<th>Pautas</th>
</tr>
</thead>
<tbody>
<tr>
<th colspan="9">Semestre 1</th>
</tr>
<tr ng-repeat="dtpStat in comp.semester1.courseUnitDtpStats">
<td>{{dtpStat.name}}</td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoConteudos }"><input type="checkbox" ng-model="dtpStat.planeamentoConteudos"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoCalendarizacao }"><input type="checkbox" ng-model="dtpStat.planeamentoCalendarizacao"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.ficha }"><input type="checkbox" ng-model="dtpStat.ficha"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.sumarios }"><input type="checkbox" ng-model="dtpStat.sumarios"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoEnunciados }"><input type="checkbox" ng-model="dtpStat.avaliacaoEnunciados"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoPautas }"><input type="checkbox" ng-model="dtpStat.avaliacaoPautas"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.relatorio }"><input type="checkbox" ng-model="dtpStat.relatorio"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.inquerito }"><input type="checkbox" ng-model="dtpStat.inquerito"/></td>
</tr>
<tr>
<th colspan="9">Semestre 2</th>
</tr>
<tr ng-repeat="dtpStat in comp.semester2.courseUnitDtpStats">
<td>{{dtpStat.name}}</td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoConteudos }"><input type="checkbox" ng-model="dtpStat.planeamentoConteudos"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoCalendarizacao }"><input type="checkbox" ng-model="dtpStat.planeamentoCalendarizacao"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.ficha }"><input type="checkbox" ng-model="dtpStat.ficha"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.sumarios }"><input type="checkbox" ng-model="dtpStat.sumarios"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoEnunciados }"><input type="checkbox" ng-model="dtpStat.avaliacaoEnunciados"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoPautas }"><input type="checkbox" ng-model="dtpStat.avaliacaoPautas"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.relatorio }"><input type="checkbox" ng-model="dtpStat.relatorio"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.inquerito }"><input type="checkbox" ng-model="dtpStat.inquerito"/></td>
</tr>
</tbody>
</table>
</div>
</script>
 
 
 
<style>
.learning td
{
font-size: 0.7em;
}
.learning td input{
width: 50px;
}
 
.learning td input:read-only{
width: 50px;
background-color: #cccccc;
}
.learning tr.year td {
vertical-align: top;
background-color: #aaaaaa;
 
font-weight: bold;
}
.learning tr.period td {
vertical-align: top;
background-color: #dfdfdf;
 
}
</style>
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_UnitsLearningResultsTable">
<unitslearningresultstable>
</unitslearningresultstable>
</script>
 
 
 
<script>
angular.module("courseReportApp").directive('boundModel', function() {
return {
require: 'ngModel',
link: function(scope, elem, attrs, ngModel) {
scope.$watch(attrs.boundModel, function(newValue, oldValue) {
if(newValue != oldValue) {
ngModel.$setViewValue(newValue);
ngModel.$render();
}
});
}
}
});
angular.module("courseReportApp").directive('unitslearningresultstable', function() {
 
return {
restrict: 'E',
link: function($scope, element, attrs)
{
 
$scope.checkedDocuments = [];
$scope.checkUnit = function(document,collection)
{
if(document.checked)
{
var docContainer =
{
"document" : document,
"collection" : collection
}
$scope.checkedDocuments.push(docContainer);
}
else
{
angular.forEach($scope.checkedDocuments, function(documentContainer, key)
{
if(documentContainer.document == document)
{
var index = $scope.checkedDocuments.indexOf(documentContainer);
$scope.checkedDocuments.splice(index, 1);
}
});
}
}
$scope.changeDocumentCollection = function(collection)
{
angular.forEach($scope.checkedDocuments, function(documentContainer, key)
{
collection.ucs.push(documentContainer.document);
delete documentContainer.document.checked;
});
angular.forEach($scope.checkedDocuments, function(documentContainer, key)
{
var index = documentContainer.collection.ucs.indexOf(documentContainer.document);
documentContainer.collection.ucs.splice(index, 1);
});
$scope.checkedDocuments = [];
}
$scope.avg = function(field,container, childs)
{
if(!childs || childs.length == 0)
return 0;
var sum = 0;
var c;
for(c in childs)
{
if(childs[c] && childs[c][field])
sum += 1*childs[c][field];
}
container[field] = sum / childs.length;
return container[field];
}
$scope.percent = function(n,total)
{
if(!n || n == 0 || !total || total == 0)
return 0;
return 100 * n / total;
}
$scope.reprovados = function(comp)
{
if(comp.alunosInscritos && comp.semElementos && comp.aprovados)
return comp.alunosInscritos - comp.semElementos - comp.aprovados;
return 0;
}
$scope.removeComponent = function(index,list)
{
list.splice(index,1);
}
$scope.hasYearUnits = function(year)
{
for(s in year.semesters)
{
if(year.semesters[s].ucs && year.semesters[s].ucs.length > 0)
return true;
}
return false;
}
$scope.isInvalidAnfHaveUcs = function(year,years,index)
{
if(year.ano > 0)
return false;
 
var s;
for(s in year.semesters)
{
if(year.semesters[s].ucs && year.semesters[s].ucs.length > 0)
return true;
}
years.splice(index,1);
return false;
}
$scope.addUc = function(semestre)
{
semestre.ucs.push(
{
"@class" : "<%=UnitsLearningResultUc.class.getName()%>",
manual : true,
periodo : semestre.semestre,
alunosInscritos: 0,
aprovados: 0,
aprovados1013: 0,
aprovados1013Percent: 0,
aprovados1416: 0,
aprovados1416Percent: 0,
aprovados1720: 0,
aprovados1720Percent: 0,
aprovadosPercent: 0,
cumprimentoProgramaPercent: 0,
reprovados: 0,
reprovadosPercent: 0,
semElementos: 0,
semElementosPercent: 0,
sigesCode : 0
}
);
}
$scope.addAno = function(comp)
{
if(!comp.years)
comp.years = [];
comp.years.push(
{
ano : 1,
"@class" : "<%=UnitsLearningResultYear.class.getName()%>",
manual : true,
"alunosInscritos": 0,
"aprovados": 0,
"aprovados1013": 0,
"aprovados1013Percent": 0,
"aprovados1416": 0,
"aprovados1416Percent": 0,
"aprovados1720": 0,
"aprovados1720Percent": 0,
"aprovadosPercent": 0,
"cumprimentoProgramaPercent": 0,
"reprovados": 0,
"reprovadosPercent": 0,
"semElementos": 0,
"semElementosPercent": 0,
semesters : [
{
"@class" : "<%=UnitsLearningResultSemester.class.getName()%>",
manual : true,
semestre : "S1",
alunosInscritos: 0,
aprovados: 0,
aprovados1013: 0,
aprovados1013Percent: 0,
aprovados1416: 0,
aprovados1416Percent: 0,
aprovados1720: 0,
aprovados1720Percent: 0,
aprovadosPercent: 0,
cumprimentoProgramaPercent: 0,
reprovados: 0,
reprovadosPercent: 0,
semElementos: 0,
semElementosPercent: 0,
ucs : []
},
{
"@class" : "<%=UnitsLearningResultSemester.class.getName()%>",
manual : true,
semestre: "S2",
alunosInscritos: 0,
aprovados: 0,
aprovados1013: 0,
aprovados1013Percent: 0,
aprovados1416: 0,
aprovados1416Percent: 0,
aprovados1720: 0,
aprovados1720Percent: 0,
aprovadosPercent: 0,
cumprimentoProgramaPercent: 0,
reprovados: 0,
reprovadosPercent: 0,
semElementos: 0,
semElementosPercent: 0,
ucs : []
}
]
}
);
}
 
},
templateUrl: function(elem,attrs) {
return "unitslearningresultstable";
}
}
});
</script>
<script type="text/ng-template" id="unitslearningresultstable">
 
 
<div class="sections">
<button class="btn btn-success" ng-click="addAno(comp)"><span class="glyphicon glyphicon-plus"></span> Ano Manual</button>
<table class="table learning">
<thead>
<tr>
<th rowspan="2">Mover</th>
<th rowspan="2">Código</th>
<th rowspan="2">Unidade Curricular</th>
<th rowspan="2">Cumprimento do Programa</th>
<th rowspan="2">Alunos Inscritos</th>
<th colspan="2">Sem Elementos</th>
<th colspan="2">Reprovados</th>
<th colspan="2">Aprovados</th>
<th colspan="2">Aprovados 10-13</th>
<th colspan="2">Aprovados 14-16</th>
<th colspan="2">Aprovados 17-20</th>
</tr>
<tr>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
</tr>
</thead>
<tbody>
<tr colspan="17" ng-if="false" ng-repeat-start="year in comp.years"></tr>
<tr class="year">
<td colspan="3" ng-if="year.ano &gt; 0">
 
<button ng-disabled="hasYearUnits(year)" class="btn btn-danger btn-xs" ng-click="removeComponent($index,comp.years)"><span class="glyphicon glyphicon-remove"></span></button>
<span ng-if="!year.manual">{{year.ano}}ª ano</span>
<span ng-if="year.manual">
<select ng-model="year.ano" ng-options="c.v as c.n for c in [{v:1,n:'1º Ano'},{v:2,n:'2º Ano'},{v:3,n:'3º Ano'},{v:4,n:'4º Ano'},{v:5,n:'5º Ano'}]">
</select>
</span>
 
</td>
<td colspan="3" style="font-size: 1.0em !important" ng-if="isInvalidAnfHaveUcs(year,comp.years,$index)">
Unidades que não constam do plano (Verifique a situação com os serviços Académicos antes de continuar)
poderão constar de um plano antigo ou ter o código siges desatualizado.
</td>
<td><input readonly="true" type="number" ng-model="year.cumprimentoProgramaPercent" bound-model="avg('cumprimentoProgramaPercent',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.alunosInscritos" bound-model="avg('alunosInscritos',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.semElementos" bound-model="avg('semElementos',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.semElementosPercent" bound-model="percent(year.semElementos,year.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="year.reprovados" bound-model="reprovados(year)"></td>
<td><input readonly="true" type="number" ng-model="year.reprovadosPercent" bound-model="percent(year.reprovados,year.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados" bound-model="year.aprovados1013*1 + year.aprovados1416*1 + year.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="year.aprovadosPercent" bound-model="percent(year.aprovados,year.alunosInscritos)"></td>
 
<td><input readonly="true" type="number" ng-model="year.aprovados1013" bound-model="avg('aprovados1013',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1013Percent" bound-model="percent(year.aprovados1013,year.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1416" bound-model="avg('aprovados1416',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1416Percent" bound-model="percent(year.aprovados1416,year.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1720" bound-model="avg('aprovados1720',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1720Percent" bound-model="percent(year.aprovados1720,year.aprovados)"></td>
</tr>
 
<tr ng-if="false" ng-repeat-start="s in year.semesters" ></tr>
<tr class="period" ng-if="year.ano &gt; 0 || s.ucs.length > 0">
<td colspan="3" class="period">Semestre {{s.semestre}} <button ng-click="changeDocumentCollection(s)" data-toggle="tooltip" title="Mover unidades para aqui" class="btn btn-xs btn-warning" ng-show="checkedDocuments.length"><span class="glyphicon glyphicon-arrow-left"></span></button>
 
<button class="btn btn-success pull-right" ng-click="addUc(s)"><span class="glyphicon glyphicon-plus"></span> UC Manual</button>
</td>
<td><input readonly="true" type="number" ng-model="s.cumprimentoProgramaPercent" bound-model="avg('cumprimentoProgramaPercent',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.alunosInscritos" bound-model="avg('alunosInscritos',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.semElementos" bound-model="avg('semElementos',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.semElementosPercent" bound-model="percent(s.semElementos,s.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="s.reprovados" bound-model="reprovados(s)"></td>
<td><input readonly="true" type="number" ng-model="s.reprovadosPercent" bound-model="percent(s.reprovados,s.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados" bound-model="s.aprovados1013*1 + s.aprovados1416*1 + s.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="s.aprovadosPercent" bound-model="percent(s.aprovados,s.alunosInscritos)"></td>
 
<td><input readonly="true" type="number" ng-model="s.aprovados1013" bound-model="avg('aprovados1013',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1013Percent" bound-model="percent(s.aprovados1013,s.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1416" bound-model="avg('aprovados1416',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1416Percent" bound-model="percent(s.aprovados1416,s.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1720" bound-model="avg('aprovados1720',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1720Percent" bound-model="percent(s.aprovados1720,s.aprovados)"></td>
</tr>
<tr ng-repeat="u in s.ucs" ng-class="{'alert-danger': u.error}" >
<td><input ng-model="u.error" type="hidden" bound-model="u.alunosInscritos < (u.aprovados*1 + u.semElementos*1)">
<input ng-model="u.checked" ng-click="checkUnit(u,s)" type="checkbox"></td>
<td><input type="text" ng-readonly="!u.manual || u.manual == false" ng-model="u.sigesCode"></td>
<td>
 
<input type="text" style="width: 150px" ng-if="!(!u.manual || u.manual == false)" ng-model="u.name">
<span ng-if="(!u.manual || u.manual == false)">{{u.name}}</span>
<button class="btn btn-danger btn-xs pull-right" ng-if="!(!u.manual || u.manual == false)" ng-click="removeComponent(index,s.ucs)"><span class="glyphicon glyphicon-remove"></span></button>
</td>
<td><input type="number" ng-model="u.cumprimentoProgramaPercent"></td>
<td><input type="number" ng-model="u.alunosInscritos"></td>
<td><input type="number" ng-model="u.semElementos"></td>
<td><input readonly="true" type="number" ng-model="u.semElementosPercent" bound-model="percent(u.semElementos,u.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="u.reprovados" bound-model="reprovados(u)"></td>
<td><input readonly="true" type="number" ng-model="u.reprovadosPercent" bound-model="percent(u.reprovados,u.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados" bound-model="u.aprovados1013*1 + u.aprovados1416*1 + u.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="u.aprovadosPercent" bound-model="percent(u.aprovados,u.alunosInscritos)"></td>
 
<td><input type="number" ng-model="u.aprovados1013"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados1013Percent" bound-model="percent(u.aprovados1013,u.aprovados)"></td>
<td><input type="number" ng-model="u.aprovados1416"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados1416Percent" bound-model="percent(u.aprovados1416,u.aprovados)"></td>
<td><input type="number" ng-model="u.aprovados1720"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados1720Percent" bound-model="percent(u.aprovados1720,u.aprovados)"></td>
</tr>
<tr ng-if="false" ng-repeat-end></tr>
<tr ng-if="false" ng-repeat-end></tr>
<tr class="year">
<td colspan="3">Resultados Globais</td>
 
 
<td><input readonly="true" type="number" ng-model="comp.cumprimentoProgramaPercent" bound-model="avg('cumprimentoProgramaPercent',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.alunosInscritos" bound-model="avg('alunosInscritos',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.semElementos" bound-model="avg('semElementos',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.semElementosPercent" bound-model="percent(comp.semElementos,comp.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="comp.reprovados" bound-model="reprovados(comp)"></td>
<td><input readonly="true" type="number" ng-model="comp.reprovadosPercent" bound-model="percent(comp.reprovados,comp.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados" bound-model="comp.aprovados1013*1 + comp.aprovados1416*1 + comp.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovadosPercent" bound-model="percent(comp.aprovados,comp.alunosInscritos)"></td>
 
<td><input readonly="true" type="number" ng-model="comp.aprovados1013" bound-model="avg('aprovados1013',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1013Percent" bound-model="percent(comp.aprovados1013,comp.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1416" bound-model="avg('aprovados1416',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1416Percent" bound-model="percent(comp.aprovados1416,comp.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1720" bound-model="avg('aprovados1720',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1720Percent" bound-model="percent(comp.aprovados1720,comp.aprovados)"></td>
</tr>
</tbody>
</table>
<%--<pre class="code">{{ comp | json }}</pre>--%>
</div>
</script>
 
 
 
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_GlobalLearningResultsChartImg">
<globallearningresultschartimg>
</globallearningresultschartimg>
</script>
<script>
angular.module("courseReportApp").directive('globallearningresultschartimg', function() {
 
return {
restrict: 'E',
link: function($scope, element, attrs)
{
$scope.generateChart = function(comp)
{
 
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/courseReport.do",
"generateGlobalLearningResultsChartImg",
{
"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 "globallearningresultschartimg";
}
}
});
</script>
<script type="text/ng-template" id="globallearningresultschartimg">
<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 Gráfico</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>
</script>
 
 
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_GlobalLearningResultsChartYearImg">
<globallearninglesultschartyearimg>
</globallearninglesultschartyearimg>
</script>
 
<script>
angular.module("courseReportApp").directive('globallearninglesultschartyearimg', function() {
 
return {
restrict: 'E',
link: function($scope, element, attrs)
{
$scope.generateChart = function(comp)
{
 
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/courseReport.do",
"generateGlobalLearningResultsChartYearImg",
{
"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 "globallearningresultschartimg";
}
}
});
</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 Gráfico</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>
</script>
/branches/grupo1/impl/src/web/user/utils/documentsBuilder.jsp
1,5 → 1,9
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<style>
.sections
{
padding-left: 20px;
}
.buttonTools
{
border: 1px solid gray;
23,7 → 27,12
}
</style>
 
<!--Require templateObj-->
<script type="text/ng-template" id="callDocumentTemplate">
 
<div ng-include="class2id(templateObj)"></div>
</script>
 
<%--
customPane Need component customPane in variable customPane
docAppSelector selector usualy an html ID for ng-app example #docReport
46,64 → 55,63
<div class="clearfix" ng-repeat="subComp in comp.components" ng-init="parent=comp;comp=subComp" ng-include="class2id(subComp)">
 
</div>
<div>
</div>
</div></div>
</script>
 
<script type="text/ng-template" id="pt_estgp_estgweb_utils_documentBuilder_ImageComponent">
<div class="imageComponent component">
<div ng-if="parent['@class']=='pt.estgp.estgweb.utils.documentBuilder.CustomPane'" class="buttonTools clearfix">
<button class="btn btn-danger pull-right" type="button" ng-click="removeComponent($index,parent.components)">
<span class="glyphicon glyphicon-remove"></span>
</button>
<label>Componente de Imagem (Use esta funcinalidade para adicionar gráficos ou tabelas que ache necessárias)</label>
<button class="btn btn-danger pull-right" type="button" ng-click="removeComponent($index,parent.components)">
<span class="glyphicon glyphicon-remove"></span>
</button>
<label>Componente de Imagem (Use esta funcinalidade para adicionar gráficos ou tabelas que ache necessárias)</label>
</div>
 
<div class="componentBody" ng-if="comp['@class']=='pt.estgp.estgweb.utils.documentBuilder.ImageComponent'">
<div class="form-group clearfix" ng-if="comp.image.identifier">
<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 class="componentBody">
<div class="form-group clearfix" ng-if="comp.image.identifier">
<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 class="form-group clearfix">
<div class="col-md-2 control-label">
<a class="btn btn-default" href="#" ng-model="comp"
data-title="Escolha Imagem"
data-showmetafields="false"
data-confirmonupload="true"
data-toggle="modal"
data-target="#filesUploadModal"
data-multiple="false"
data-allowed-extensions="jpg,png,gif"
data-callback-target-function="angular.element($('{{docAppSelector}}')).scope().callbackUploadedFiles">
</div>
<div class="form-group clearfix">
<div class="col-md-2 control-label">
<a class="btn btn-default" href="#" ng-model="comp"
data-title="Escolha Imagem"
data-showmetafields="false"
data-confirmonupload="true"
data-toggle="modal"
data-target="#filesUploadModal"
data-multiple="false"
data-allowed-extensions="jpg,png,gif"
data-callback-target-function="angular.element($('{{docAppSelector}}')).scope().callbackUploadedFiles">
<span ng-if="comp.image.identifier">
Substituir Imagem
</span>
<span ng-if="!(comp.image.identifier)">
<span ng-if="!(comp.image.identifier)">
Carregar Imagem
</span>
 
<span class="glyphicon glyphicon-upload"/>
<span class="glyphicon glyphicon-upload"/>
 
</a>
</a>
</div>
 
<div class="col-md-10">
<div ng-if="!(comp.image.identifier)">
Clique em carregar imagens e escolha uma imagem para adicionar nesta secção.
</div>
 
<div class="col-md-10">
<div ng-if="!(comp.image.identifier)">
Clique em carregar imagens e escolha uma imagem para adicionar nesta secção.
</div>
 
<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 style="width: 100%;height: 100%" ng-src="{{comp.imageUrl}}">
</div>
(Se desejar altere o tamanho da imagem arrastando no canto inferior direito)
</center>
</div>
<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 style="width: 100%;height: 100%" ng-src="{{comp.imageUrl}}">
</div>
(Se desejar altere o tamanho da imagem arrastando no canto inferior direito)
</center>
</div>
</div>
</div>
</div>
</div>
135,4 → 143,33
</div>
</div>
</div>
</script>
 
<!--
@section objeto com seccoes e componentes
@optional @chapter capitulo do documento para esta seccao para contcatenar às subsections
-->
<script type="text/ng-template" id="pt_estgp_estgweb_utils_documentBuilder_DocumentSection">
<div class="sections">
<ul class="nav nav-tabs">
<li ng-model="section" class="separatorSectionNav"
ng-class="{ active : subSection.active}"
ng-repeat="subSection in section.sections">
<a ng-click="showSep(section,subSection)"> {{$chapter}}{{$index+1}} - {{subSection.title}}</a>
</li>
</ul>
<div ng-model="subSection"
ng-class="{ hidden: !subSection.active }"
ng-repeat="subSection in section.sections"
class="separatorSection clearfix">
<div ng-repeat="comp in subSection.components"
ng-include="class2id(comp)">
 
</div>
<div ng-if="subSection.sections"
ng-init="section=subSection;$chapter=$chapter+($index+1)+'.'"
ng-include="class2id(subSection)">
</div>
</div>
</div>
</script>
/branches/grupo2/impl/conf/berserk/sd.xml
4044,4 → 4044,22
</filterChains>
</service>
 
<service>
<name>CourseReportGenerateGlobalLearningResultsChartYearImg</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>generateGenerateGlobalLearningResultsChartYearImg</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
 
</serviceDefinitions>
/branches/grupo2/impl/src/java/pt/estgp/estgweb/services/courses/CourseReportServices.java
448,11 → 448,41
return view.toJson();
}
 
public String generateGenerateGlobalLearningResultsChartYearImg(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);
GlobalLearningResultsChartImg chartImg = (GlobalLearningResultsChartImg) learningGlobalAnalysisSection.findDocComponent(GlobalLearningResultsChartImg.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/grupo2/impl/src/java/pt/estgp/estgweb/web/controllers/courses/CoursesServicesController.java
42,5 → 42,14
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});
return new JSONObject(json);
}
}
/branches/grupo2/impl/src/web/user/courses/coursereport/templates.jsp
701,7 → 701,7
 
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/courseReport.do",
"generateGlobalLearningResultsChartImg",
"generateGlobalLearningResultsChartYearImg",
{
"courseReportDocument" : BacoJS.stringifyOrdered(angular.element($("#courseReportApp")).scope().report)
},
/branches/grupo2/impl/src/web/user/utils/documentsBuilder.jsp
55,9 → 55,6
<div class="clearfix" ng-repeat="subComp in comp.components" ng-init="parent=comp;comp=subComp" ng-include="class2id(subComp)">
 
</div>
<div>
</div>
</div>
</div>
</script>
 
175,4 → 172,4
</div>
</div>
</div>
</script>
</script>