Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1352 → Rev 1353

/branches/v3/impl/conf/language/MessageResources.properties
399,6 → 399,8
add=Adicionar
put=Colocar
remove=Remover
yeas.no.true=Sim
yeas.no.false=Não
yes=Sim
no=Não
url=URL
1182,6 → 1184,7
courseunit.assignement.todo=Trabalho por entregar
course.unit.work=Ficha de Trabalho
course.unit.works=Trabalhos
course.unit.stats=Estatisticas
courseunit.works=Trabalhos
courseunit.new=Criar Unidade Curricular
courseunit.edit=Editar Unidade Curricular
1255,6 → 1258,9
courseunit.menu.grades=Avaliação
courseunit.menu.dtp=DTP
 
 
list.students.course.commission=Consulta de alunos das comissões
 
replace=Substituir
 
courseunit.assignement.file=Enunciado
/branches/v3/impl/conf/WEB-INF/struts/struts-courses.xml
96,8 → 96,11
<action path="/user/courseComissions" forward="page.courses.comissions"/>
<action path="/user/courseCourseUnits" forward="page.courses.courseunits"/>
 
<action path="/user/listStudentsCourseComission" forward="page.list.students.course.comission"/>
 
 
 
 
</action-mappings>
 
</struts-config>
/branches/v3/impl/conf/WEB-INF/struts/struts-courseunits.xml
92,6 → 92,7
<action path="/user/startLoadCourseUnitWorksFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadWorks&amp;from=Home"/>
<action path="/user/startLoadCourseUnitStudentsFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadStudents&amp;from=Home"/>
<action path="/user/startLoadCourseUnitFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=load&amp;from=Home"/>
<action path="/user/startLoadCourseUnitStatsFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadStats&amp;from=Home"/>
<action path="/user/startLoadTeacherCourseUnitFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadTeacher&amp;from=Home"/>
<action path="/user/startLoadStudentCourseUnitFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadStudent&amp;from=Home"/>
 
108,6 → 109,7
validate="false"
input="page.welcome">
<forward name="load" path="page.load.courseunit.from.home"/>
<forward name="loadStats" path="page.load.courseunit.stats.from.home"/>
<forward name="load.works" path="page.load.courseunit.works.from.home"/>
<forward name="load.assignement" path="page.load.courseunit.assignement.from.home"/>
<forward name="load.blog" path="page.load.blog.from.courseUnit"/>
/branches/v3/impl/conf/WEB-INF/struts/tiles-courseunits.xml
64,6 → 64,12
<put name="left" value="/user/courseunits/menu.jsp"/>
<put name="body" value="/user/courseunits/courseunitworks.jsp"/>
</definition>
<definition name="page.load.courseunit.stats.from.home" extends="base.separators">
<put name="title" value="Trabalhos da Unidade Curricular"/>
<put name="topnav" value="/user/home/topnavCourseUnitStats.jsp"/>
<put name="left" value="/user/courseunits/menu.jsp"/>
<put name="body" value="/user/courseunits/courseunitsStatistics.jsp"/>
</definition>
<definition name="page.load.courseunit.assignement.from.home" extends="base.separators">
<put name="title" value="Trabalho da Unidade Curricular"/>
<put name="topnav" value="/user/home/topnavCourseUnitAssignement.jsp"/>
/branches/v3/impl/conf/WEB-INF/struts/tiles-courses.xml
107,6 → 107,10
 
 
 
<definition name="page.list.students.course.comission" extends="page.separators.home">
<put name="title" value="Consultar alunos das comissões"/>
<put name="topnav" value="/user/home/topnavListStudentsCourseComission.jsp"/>
<put name="body" value="/user/contacts/listCourseComissionStudents.jsp"/>
</definition>
 
 
</tiles-definitions>
/branches/v3/impl/conf/WEB-INF/struts/struts-announcements.xml
23,7 → 23,20
<action-mappings>
 
 
startSubmitMessageCourseComission
 
<action path="/user/startSubmitMessageCourseComission" forward="/user/submitMessageCourseComission.do?dispatch=loadCourses"/>
<action path="/user/submitMessageCourseComission"
type="pt.estgp.estgweb.web.controllers.announcements.MessagesController"
name="MessagesForm"
scope="request"
parameter="dispatch"
input="page.separators.home"
validate="true">
<forward name="success" path="page.separators.home"/>
<forward name="load" path="page.submit.message.course.comission"/>
</action>
 
<action path="/user/startSubmitMessage" forward="/user/submitMessage.do?dispatch=loadCourses"/>
<action path="/user/submitMessage"
type="pt.estgp.estgweb.web.controllers.announcements.MessagesController"
/branches/v3/impl/conf/WEB-INF/struts/tiles-announcements.xml
85,5 → 85,11
<put name="topnav" value="/user/serviceZone/topnavSubmitMessage.jsp"/>
<put name="body" value="/admin/announcements/submitMessage.jsp"/>
</definition>
 
<definition name="page.submit.message.course.comission" extends="page.separators.home">
<put name="title" value="Enviar uma mensagem de correio electronico aos alunos"/>
<put name="topnav" value="/user/home/topnavSubmitMessageCourseComission.jsp"/>
<put name="body" value="/user/courseunits/submitCourseComissionMessage.jsp"/>
</definition>
 
</tiles-definitions>
/branches/v3/impl/conf/app.properties
68,6 → 68,7
 
email.courseunit.work.subject.pt={0}: {1} (ESTG)
email.courseunit.work.subject.en={0}: {1} (ESTG)
email.courseunit.work.relative.url=/user/startLoadCourseUnitWorksFromHome.do?courseUnitView.id={0}
 
email.courseunit.blogpost.subject.pt={0}: {1} (ESTG)
email.courseunit.blogpost.subject.en={0}: {1} (ESTG)
131,10 → 132,9
## Job Deamon seconds
job.deamon.sleep.seconds=10
 
#seconds
ftp.timeout.seconds=20
 
//seconds
ftp.timeout.seconds=10
 
ftp.data.store.timeout.seconds=60
##################################################
##Proxy Servers
204,11 → 204,11
user.identifiersManagers=identifiersManager
user.servicesPrograms=servicesPrograms
 
user.courseValidateProgram.prefix=courseValidateProgram
 
 
 
 
 
#########################################################################
#
# Modules
827,5 → 827,11
 
 
 
siges.summaries.lancado.code=1
siges.summaries.faltou.code=2
siges.summaries.cancelado.code=3
siges.summaries.prelancado.code=4
 
 
 
 
/branches/v3/impl/conf/template/email/courseUnitWork_pt.txt
1,19 → 1,23
# 0 : Course Unit Name

# 0 : Course Unit Name
# 1 : Title
# 2 : Text
# 3 : Teacher
#
# 4 : Delivery Date
 
# Course Unit Assignement
#
Caro estudante
 
Um novo trabalho foi adicionado na unidade:
Um novo trabalho foi adicionado na unidade com data de entrega {4}:
{0}
 
{1}
 
{2}
 
 
 
Cumprimentos
{3}
 
/branches/v3/impl/conf/template/email/courseUnitWork_en.txt
3,7 → 3,8
# 1 : Title
# 2 : Text
# 3 : Teacher
#
# 4 : Delivery Date
 
# Course Unit Assignement
#
Dear Student
15,6 → 16,8
 
{2}
 
Enter: {4}
 
Best Regards {3}
 
---------------------------------------------
/branches/v3/impl/src/java/jomm/utils/MimeTypeGuesser.java
17,7 → 17,7
 
private MimeTypeGuesser()
{
typeMap = new MimetypesFileTypeMap(Thread.currentThread().getContextClassLoader().getResourceAsStream("/jomm/utils/mime.types"));
typeMap = new MimetypesFileTypeMap(MimeTypeGuesser.class.getResourceAsStream("/jomm/utils/mime.types"));
}
 
public static synchronized MimeTypeGuesser getInstance()
/branches/v3/impl/src/java/jomm/experiments/JavaAssistDynamicProxy.java
3,7 → 3,7
import javassist.util.proxy.MethodFilter;
import javassist.util.proxy.MethodHandler;
import javassist.util.proxy.ProxyFactory;
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.Course;
 
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
17,7 → 17,7
 
 
ProxyFactory factory = new ProxyFactory();
factory.setSuperclass(User.class);
factory.setSuperclass(Course.class);
factory.setFilter(
new MethodFilter() {
@Override
29,6 → 29,9
);
 
 
 
 
 
MethodHandler handler = new MethodHandler() {
@Override
public Object invoke(Object self, Method thisMethod, Method proceed, Object[] args) throws Throwable {
43,7 → 46,7
String campo = thisMethod.getName().substring(3);
campo = ("" + campo.charAt(0)).toLowerCase() + campo.substring(1);
System.out.println("select " + campo + " from " + thisMethod.getDeclaringClass().getCanonicalName() + " where id = " +
self.getClass().getMethod("getId").invoke(self,new Object[]{}));
self.getClass().getMethod("getId").invoke(self, new Object[]{}));
}
if(thisMethod.getName().startsWith("set"))
{
54,11 → 57,11
}
};
 
User u = (User) factory.create(new Class[0], new Object[0], handler);
Course u = (Course) factory.create(new Class[0], new Object[0], handler);
u.setId(3);
 
u.getUsername();
u.getCourses();
u.getName();
u.getInstitutionalCode();
u.getId();
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/Globals.java
114,7 → 114,7
 
public static final String ALL_ROLE = ConfigProperties.getProperty("user.super");
public static final String SERVICES_PROGRAMS_ROLE = ConfigProperties.getProperty("user.servicesPrograms");
public static final List<String> COURSE_COMMISSION_PROGRAMS_ROLES = ConfigProperties.getListValuesByPrefix("courseValidateProgram");
public static final String COURSE_COMMISSION_PROGRAMS_ROLES_PRPFIX = ConfigProperties.getProperty("user.courseValidateProgram.prefix");
 
public static final String ACTUAL_RELATIVE_PATH = "ACTUAL_RELATIVE_PATH";
public static final String ADMIN_ROLE = ConfigProperties.getProperty("user.admin");
350,6 → 350,8
 
public static final String EMAIL_COURSEUNIT_WORK_SUBJECT_PT = ConfigProperties.getProperty("email.courseunit.work.subject.pt");
public static final String EMAIL_COURSEUNIT_WORK_SUBJECT_EN = ConfigProperties.getProperty("email.courseunit.work.subject.en");
public static final String EMAIL_COURSEUNIT_WORK_RELATIVE_URL = ConfigProperties.getProperty("email.courseunit.work.relative.url");
 
public static final String EMAIL_COURSEUNIT_WORK_TEMPLATE_PT = "courseUnitWork_pt.txt";
public static final String EMAIL_COURSEUNIT_WORK_TEMPLATE_EN = "courseUnitWork_en.txt";
public static final String EMAIL_COURSEUNIT_WORK_CHANGE_TEMPLATE_PT = "courseUnitWorkChange_pt.txt";
437,4 → 439,9
public static final String BACO_TIPOLOGIA_SIMPLES_VIRTUAL_CODE = ConfigProperties.getProperty("baco.tipologia.simples");
public static final String BACO_TIPOLOGIA_SIMPLES_DS = ConfigProperties.getProperty("netpa.tipo.aula." + BACO_TIPOLOGIA_SIMPLES_VIRTUAL_CODE);
 
 
public static final int SIGES_SUMARIO_LANCADO_CODIGO = ConfigProperties.getIntProperty("siges.summaries.lancado.code");
public static final int SIGES_SUMARIO_FALTOU_CODIGO = ConfigProperties.getIntProperty("siges.summaries.faltou.code");
public static final int SIGES_SUMARIO_CANCELADO_CODIGO = ConfigProperties.getIntProperty("siges.summaries.cancelado.code");
public static final int SIGES_SUMARIO_PRELANCADO_CODIGO = ConfigProperties.getIntProperty("siges.summaries.prelancado.code");
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/CourseUnitFilesFacadeFactory.java
New file
0,0 → 1,15
package pt.estgp.estgweb.services.courses;
 
import java.io.IOException;
 
/**
* Created by jorgemachado on 13/04/16.
*/
public class CourseUnitFilesFacadeFactory {
 
public static IFilesServiceFacade createCourseUnitFilesFacade() throws IOException {
 
return new FtpFilesFacade();
}
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/FtpFilesFacade.java
New file
0,0 → 1,199
package pt.estgp.estgweb.services.courses;
 
import org.apache.log4j.Logger;
import org.json.JSONArray;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.services.ftpservices.FtpService;
import pt.estgp.estgweb.web.FtpServer;
 
import java.io.IOException;
import java.util.Date;
 
/**
* Created by jorgemachado on 13/04/16.
*/
public class FtpFilesFacade implements IFilesServiceFacade {
 
private static Logger logger = Logger.getLogger(FtpFilesFacade.class);
FtpServer server;
FtpServer.FtpClientWrapper client;
 
String username = Globals.FTP_IONLINE_USER;
String password = Globals.FTP_IONLINE_PASS;
String url = Globals.FTP_IONLINE_URL;
String startPath = Globals.FTP_IONLINE_START_PATH;
CourseUnit cu = null;
 
long[] contentsInfo = null;
long[] dtpPlan = null;
long[] dtpFicha = null;
long[] dtpAvalEnu = null;
long[] dtpAvalNotas = null;
long[] dtpInquer = null;
long[] dtpRelato = null;
long[] dtpSums = null;
 
public FtpFilesFacade() throws IOException
{
server = FtpServer.getNewServer(url, username, password);
client = new FtpServer.FtpClientWrapper(server,3);
client.setBufferSize(1024 * 1024);
logger.info("BUFFER SIZE" + client.getBufferSize());
client.enterLocalActiveMode();
 
 
 
}
 
@Override
public void reset(CourseUnit cu) throws IOException
{
/*
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}*/
this.cu = cu;
contentsInfo = null;
dtpPlan = null;
dtpFicha = null;
dtpAvalEnu = null;
dtpAvalNotas = null;
dtpInquer = null;
dtpRelato = null;
dtpSums = null;
/*try{
client.quit();
client.disconnect();
}catch(Throwable e)
{ logger.error(e,e);}
client = server.getClient();*/
}
 
@Override
public void close() throws IOException {
client.close();
}
 
 
@Override
public long getContentsNumberOfFiles() throws IOException
{
if(contentsInfo == null)
contentsInfo = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_CONTENTS,"");
return contentsInfo[1];
 
}
 
@Override
public long getContentsNumberOfFolders() throws IOException {
if(contentsInfo == null)
contentsInfo = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_CONTENTS,"");
return contentsInfo[0];
}
 
@Override
public long getContentsSize() throws IOException {
if(contentsInfo == null)
contentsInfo = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_CONTENTS,"");
return contentsInfo[2];
}
 
@Override
public Date getContentsLastUpdate() throws IOException {
if(contentsInfo == null)
contentsInfo = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_CONTENTS,"");
return new Date(contentsInfo[3]);
}
 
@Override
public long getDtpPlaneamentoNumberOfFiles() throws IOException {
if(dtpPlan == null)
dtpPlan = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_Planeamento,"");
return dtpPlan[1];
}
 
@Override
public long getDtpInqueritoPedagogicoNumberOfFiles() throws IOException {
if(dtpInquer == null)
dtpInquer = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_InqueritoPedagogico,"");
return dtpInquer[1];
}
 
@Override
public long getDtpAvaliacaoEnunciadosNumberOfFiles() throws IOException {
if(dtpAvalEnu == null)
dtpAvalEnu = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_Avaliacao + "/" + Globals.INTRANET_DTP_Avaliacao_enunciados ,"");
return dtpAvalEnu[1];
}
 
@Override
public long getDtpAvaliacaoNotasNumberOfFiles() throws IOException {
if(dtpAvalNotas == null)
dtpAvalNotas = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_Avaliacao + "/" + Globals.INTRANET_DTP_Avaliacao_pautas ,"");
return dtpAvalNotas[1];
}
 
@Override
public long getDtpFichaCurricularNumberOfFiles() throws IOException {
if(dtpFicha == null)
dtpFicha = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_FichaCurricular ,"");
return dtpFicha[1];
}
 
@Override
public long getDtpRelatorioAvaliacaoNumberOfFiles() throws IOException {
if(dtpRelato == null)
dtpRelato = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_FichaAvaliacao,"");
return dtpRelato[1];
}
 
@Override
public Date getDtpPlaneamentoLastUpdate() throws IOException {
if(dtpPlan == null)
dtpPlan = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_Planeamento,"");
return new Date(dtpPlan[3]);
}
 
@Override
public Date getDtpInqueritoPedagogicoLastUpdate() throws IOException {
if(dtpInquer == null)
dtpInquer = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_InqueritoPedagogico,"");
return new Date(dtpInquer[3]);
}
 
@Override
public Date getDtpAvaliacaoEnunciadosLastUpdate() throws IOException {
if(dtpAvalEnu == null)
dtpAvalEnu = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_Avaliacao + "/" + Globals.INTRANET_DTP_Avaliacao_enunciados ,"");
return new Date(dtpAvalEnu[3]);
}
 
@Override
public Date getDtpAvaliacaoNotasLastUpdate() throws IOException {
if(dtpAvalNotas == null)
dtpAvalNotas = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_Avaliacao + "/" + Globals.INTRANET_DTP_Avaliacao_pautas ,"");
return new Date(dtpAvalNotas[3]);
}
 
@Override
public Date getDtpFichaCurricularLastUpdate() throws IOException {
if(dtpFicha == null)
dtpFicha = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_FichaCurricular ,"");
return new Date(dtpFicha[3]);
}
 
@Override
public Date getDtpRelatorioAvaliacaoLastUpdate() throws IOException {
if(dtpRelato == null)
dtpRelato = FtpService.calculateDirectoryInfo(client,startPath + cu.getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_FichaAvaliacao,"");
return new Date(dtpRelato[3]);
}
 
@Override
public JSONArray getAllFilesJsonFields() throws IOException {
return FtpService.getDirectoryFilesFields(client,startPath + cu.getPathIntranet(),"");
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/IFilesServiceFacade.java
New file
0,0 → 1,38
package pt.estgp.estgweb.services.courses;
 
import org.json.JSONArray;
import pt.estgp.estgweb.domain.CourseUnit;
 
import java.io.IOException;
import java.util.Date;
 
/**
* Created by jorgemachado on 13/04/16.
*/
public interface IFilesServiceFacade
{
public void reset(CourseUnit cu) throws IOException;
public void close() throws IOException;
 
public long getContentsNumberOfFiles() throws IOException;
public long getContentsNumberOfFolders() throws IOException;
public long getContentsSize() throws IOException;
public Date getContentsLastUpdate() throws IOException;
 
public long getDtpPlaneamentoNumberOfFiles() throws IOException;
public long getDtpInqueritoPedagogicoNumberOfFiles() throws IOException;
public long getDtpAvaliacaoEnunciadosNumberOfFiles() throws IOException;
public long getDtpAvaliacaoNotasNumberOfFiles() throws IOException;
public long getDtpFichaCurricularNumberOfFiles() throws IOException;
public long getDtpRelatorioAvaliacaoNumberOfFiles() throws IOException;
 
public Date getDtpPlaneamentoLastUpdate() throws IOException;
public Date getDtpInqueritoPedagogicoLastUpdate() throws IOException;
public Date getDtpAvaliacaoEnunciadosLastUpdate() throws IOException;
public Date getDtpAvaliacaoNotasLastUpdate() throws IOException;
public Date getDtpFichaCurricularLastUpdate() throws IOException;
public Date getDtpRelatorioAvaliacaoLastUpdate() throws IOException;
 
public JSONArray getAllFilesJsonFields() throws IOException;
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/courses/CourseUnitsStatisticsJobService.java
New file
0,0 → 1,212
package pt.estgp.estgweb.services.courses;
 
import jomm.dao.impl.AbstractDao;
import org.apache.log4j.Logger;
import org.hibernate.Query;
import org.json.JSONArray;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.CourseUnitImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.services.jobs.ServiceJob;
import pt.estgp.estgweb.services.logresults.ILogMessages;
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum;
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage;
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import java.io.IOException;
import java.util.List;
 
 
/**
* Created by jorgemachado on 22/03/16.
*/
public class CourseUnitsStatisticsJobService extends ServiceJob implements IService
{
 
public static final Logger logger = Logger.getLogger(CourseUnitsStatisticsJobService.class);
 
private static final int MAX_COMMIT = 20;
 
public ILogMessages run(String year, int institutionCode) throws ServiceException
{
DefaultLogMessages logMessages = new DefaultLogMessages();
logMessages.addMessage(new DefaultLogMessage("courseunits.statistics", LogMessageTypeEnum.INFO, "instituicao " + institutionCode + " ano : " + year));
logger.info(logMessages.getLastMessage());
serviceLogInfo(logMessages.getLastMessage());
 
int foundTotal = 0;
 
 
Query q = AbstractDao.getCurrentSession().createQuery("select count(c.id) from c in class " + CourseUnit.class.getName() + " where c.institutionCode = " + institutionCode + " and c.importYear = '" + year + "'");
Long count = (Long) q.list().get(0);
 
q = AbstractDao.getCurrentSession().createQuery("select c.id from c in class " + CourseUnit.class.getName() + " where c.institutionCode = " + institutionCode + " and c.importYear = '" + year + "'");
 
IFilesServiceFacade filesServiceFacade = null;
try {
filesServiceFacade = CourseUnitFilesFacadeFactory.createCourseUnitFilesFacade();
} catch (IOException e) {
logger.error(e, e);
//AbstractDao.getCurrentSession().getTransaction().rollback();
logMessages.addMessage(new DefaultLogMessage("courseunits.statistics.error", e.toString(), "see log for details", LogMessageTypeEnum.ERROR));
serviceLogError(logMessages.getLastMessage());
}
List<Long> ids = q.list();
int i = 0;
for(Long id: ids)
{
foundTotal++;
if (i++ > MAX_COMMIT)
{
i = 0;
setProgress((int) (((float)foundTotal)/((float)count)*100.0f));
commitPartially();
}
try
{
CourseUnitImpl cu = (CourseUnitImpl) DaoFactory.getCourseUnitDaoImpl().load(id);
String msg = "Unit: " + cu.getCode() + " " + cu.getName() + " " + cu.getCourseName() + " (" + cu.getCourseCode() + ")";
logger.info(msg);
serviceLogInfo(msg);
 
if(cu.getAnnouncements() != null)
cu.setStatanuncios(cu.getAnnouncements().size());
if(cu.getBlogs()!=null && cu.getBlogs().size() > 0)
cu.setStatblogPosts(cu.getBlogs().iterator().next().getPosts().size());
if(cu.getStudents() != null)
cu.setStatstudentsCount(cu.getStudents().size());
if(cu.getTeachers() != null)
cu.setStatteachersCount(cu.getTeachers().size());
if(cu.getTeachers() != null)
cu.setStatteachersCount(cu.getTeachers().size());
if(cu.getAssignements() != null)
cu.setStatworks(cu.getAssignements().size());
 
CourseUnitView courseUnitView = new CourseUnitView(cu);
if(courseUnitView.getSummariesFromJson() != null)
{
cu.setStatdtpSumaries(courseUnitView.getSummariesFromJson().size());
cu.setStatdtpSumariesMissing(courseUnitView.getLateSummaries());
cu.setStatdtpSumariesPrelancados(courseUnitView.getPrelancadosSummaries());
}
 
cu.setStatdtpFichaCurricularValid(cu.isValidProgram());
if(cu.getCourseUnitEvaluation() == null)
cu.setStatdtpEvaluationReportState("INEXISTENTE");
else if(cu.getCourseUnitEvaluation().isClosed())
cu.setStatdtpEvaluationReportState("VALIDO");
else if(cu.getCourseUnitEvaluation().isTeacherComplete())
cu.setStatdtpEvaluationReportState("ENTREGUE");
else if(cu.getEvaluationStreamId() != null)
cu.setStatdtpEvaluationReportState("INICIADO");
else
cu.setStatdtpEvaluationReportState("INEXISTENTE");
 
 
if(filesServiceFacade != null)
{
filesServiceFacade.reset(cu);
try
{
cu.setStatcontentsFiles((int) filesServiceFacade.getContentsNumberOfFiles());
cu.setStatcontentsFolders((int) filesServiceFacade.getContentsNumberOfFolders());
cu.setStatcontentsLastUpdate(filesServiceFacade.getContentsLastUpdate());
cu.setStatcontentsSize(filesServiceFacade.getContentsSize());
 
cu.setStatdtpPlaneamentoFiles((int) filesServiceFacade.getDtpPlaneamentoNumberOfFiles());
cu.setStatdtpPlaneamentoLastUpdate(filesServiceFacade.getDtpPlaneamentoLastUpdate());
 
 
cu.setStatdtpFichaCurricularLastUpdate(filesServiceFacade.getDtpFichaCurricularLastUpdate());
cu.setStatdtpEvaluationReportLastUpdate(filesServiceFacade.getDtpRelatorioAvaliacaoLastUpdate());
 
 
cu.setStatdtpInqueritoPedagogicoFiles((int) filesServiceFacade.getDtpInqueritoPedagogicoNumberOfFiles());
cu.setStatdtpInqueritoPedagogicoFilesLastUpdate(filesServiceFacade.getDtpInqueritoPedagogicoLastUpdate());
 
cu.setStatdtpAvaliacaoEnunciadosFiles((int) filesServiceFacade.getDtpAvaliacaoEnunciadosNumberOfFiles());
cu.setStatdtpAvaliacaoEnunciadosLastUpdate(filesServiceFacade.getDtpAvaliacaoEnunciadosLastUpdate());
 
cu.setStatdtpAvaliacaoPautasFiles((int) filesServiceFacade.getDtpAvaliacaoNotasNumberOfFiles());
cu.setStatdtpAvaliacaoPautasLastUpdate(filesServiceFacade.getDtpAvaliacaoNotasLastUpdate());
 
JSONArray files = filesServiceFacade.getAllFilesJsonFields();
for(int j = 0; j < files.length();j++ )
{
files.getJSONObject(j).put("id","baco/courseunit/" + cu.getId() + "/" + files.getJSONObject(j).getString("file"));
files.getJSONObject(j).put("obj_sub_type","baco/courseunit:" + cu.getId());
files.getJSONObject(j).put("obj_type","baco/courseunit:file");
}
cu.setFilesJson(files.toString());
}
catch(Exception e)
{ logger.warn(e, e);
//AbstractDao.getCurrentSession().getTransaction().rollback();
logMessages.addMessage(new DefaultLogMessage("courseunits.statistics.warning", e.toString(), "see log for details", LogMessageTypeEnum.ERROR));
serviceLogWarn(logMessages.getLastMessage());
}
}
 
 
 
 
}
catch (Throwable e)
{
logger.error(e, e);
//AbstractDao.getCurrentSession().getTransaction().rollback();
logMessages.addMessage(new DefaultLogMessage("courseunits.statistics.error", e.toString(), "see log for details", LogMessageTypeEnum.ERROR));
serviceLogError(logMessages.getLastMessage());
}
}
 
if(filesServiceFacade != null)
try {
filesServiceFacade.close();
} catch (IOException e) {
logger.error(e, e);
//AbstractDao.getCurrentSession().getTransaction().rollback();
logMessages.addMessage(new DefaultLogMessage("courseunits.statistics.error", e.toString(), "see log for details", LogMessageTypeEnum.ERROR));
serviceLogError(logMessages.getLastMessage());
}
 
setProgress(100);
logger.info("######################################");
serviceLogInfo("######################################");
logger.info("######################################");
serviceLogInfo("######################################");
logger.info("STATS " + year);
serviceLogInfo("STATS " + year);
logger.info("Total Notas: " + foundTotal);
serviceLogInfo("Total Notas: " + foundTotal);
 
 
logMessages.addMessage(new DefaultLogMessage("courseunits.statistics.terminating", LogMessageTypeEnum.INFO));
logger.info(logMessages.getLastMessage());
serviceLogInfo(logMessages.getLastMessage());
return logMessages;
}
 
public static void main(String[] args) throws ServiceException
{
String year = DaoFactory.getConfigurationDaoImpl().getImportsDefaultImportYearCreateTransaction();;
String institutionCode = "1";
if(args != null && args.length > 0)
year = args[0];
if(args != null && args.length > 1)
institutionCode = args[1];
AbstractDao.getCurrentSession().beginTransaction();
new CourseUnitsStatisticsJobService().run(year,Integer.parseInt(institutionCode));
AbstractDao.getCurrentSession().getTransaction().commit();
}
 
@Override
protected ILogMessages runJobServiceTask() throws Throwable {
String importYear = getParametersMap().get(JOB_importYear_KEY).getObject();
String institutionCode = getParametersMap().get(JOB_institution_KEY).getObject();
return run(importYear,Integer.parseInt(institutionCode));
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/email/SendEmailService.java
431,6 → 431,9
 
arguments.add( DatesUtils.getStringFromDate(assignement.getDeliverDate()));
 
//String directUrl = Globals.EMAIL_COURSEUNIT_WORK_RELATIVE_URL;
//directUrl = Globals.SITE_URL + MessageFormat.format(directUrl,assignement.getCourseUnit().getId());
 
String subjectTxt;
String template;
 
/branches/v3/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportSumariesJson.java
15,6 → 15,8
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.enums.LangEnum;
import pt.estgp.estgweb.domain.views.CourseUnitSummaryView;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.services.courseunits.CreateCourseUnitXML;
import pt.estgp.estgweb.services.email.EMAILJob;
import pt.estgp.estgweb.services.email.SendEmailService;
39,16 → 41,21
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
 
/**
* @author Jorge Machado
* @date 11/May/2008
* @time 12:51:32
* @see pt.estgp.estgweb
*
*
* @NOTAS IMPORTANTES DESTE SERVIÇO
*
* @DEPENDS TODO DEPENDENCIAS FORTES
* Este serviço gera toda a informação acerca de sumários e sumários em FALTA
* Existe uma forte depêndencia da CourseUniView que recebe daqui a lógica de decisão daquilo que são ou não sumários
* atrasados
*/
public class ImportSumariesJson extends ServiceJob implements IService
{
419,7 → 426,7
System.out.println("year, semestre, sendIonline, sendEmail");
System.out.println("If no arguments wil user actual year import config in all semestres and true in email and ionline");
 
String year = DaoFactory.getConfigurationDaoImpl().getImportsDefaultImportYearCreateTransaction();
String year = "201516";DaoFactory.getConfigurationDaoImpl().getImportsDefaultImportYearCreateTransaction();
String semestre = null;
boolean sendIonline = false;
boolean sendEmail = false;
465,4 → 472,71
return run(importYear,Integer.parseInt(institutionCode),semestre,sendIonline,sendEmail);
}
 
 
/**
* METODO DE HELP PARA A VISTA DA UNIDADE CURRICULAR
*/
 
public static void setSummariesFromJson(CourseUnitView cuview) {
 
int lateSummaries = 0;
int prelancadosSummaries = 0;
List<CourseUnitSummaryView> summariesFromJson = new ArrayList<CourseUnitSummaryView>();
String summariesJson = cuview.getSummariesJson();
ArrayList<String> lateSummariesDates = new ArrayList<String>();
ArrayList<String> prelancadosSummariesDates = new ArrayList<String>();
 
if(summariesJson != null && summariesJson.length() > 0)
{
try {
JSONObject jsonObject = new JSONObject(summariesJson);
JSONArray summaries = jsonObject.getJSONArray("summary");
for(int i = 0; i < summaries.length();i++)
{
JSONObject summary = summaries.getJSONObject(i);
CourseUnitSummaryImpl sum = DomainObjectFactory.createCourseUnitSummaryImpl();
 
if(sum.updateWithJson(summary)){
CourseUnitSummaryView view = new CourseUnitSummaryView(sum);
summariesFromJson.add(view);
}
else
// so verifica atrasados para unidades do ano corrente a titulo informativo
{
CourseUnitSummaryView view = new CourseUnitSummaryView(sum);
if(view.getNumber() < 0 && view.getOriginalDate().getTime() + 48*60*60*1000 < System.currentTimeMillis())
{
 
//System.out.println(view.getNumber() + " " + view.getDate() + " " + view.getOriginalDate());
lateSummaries++;
lateSummariesDates.add(view.getDate());
}
else if(sum.getcEstado().equals(""+Globals.SIGES_SUMARIO_PRELANCADO_CODIGO))
{
prelancadosSummaries++;
prelancadosSummariesDates.add(view.getDate());
}
}
}
} catch (JSONException e) {
logger.error(e,e);
}
Collections.sort(summariesFromJson, new Comparator<CourseUnitSummaryView>() {
@Override
public int compare(CourseUnitSummaryView courseUnitSummaryView, CourseUnitSummaryView courseUnitSummaryView2) {
 
if (courseUnitSummaryView.getNumber() > courseUnitSummaryView2.getNumber())
return -1;
else if (courseUnitSummaryView.getNumber() < courseUnitSummaryView2.getNumber())
return 1;
return 0;
}
});
cuview.setSummariesFromJson(summariesFromJson);
cuview.setLateSummaries(lateSummaries);
cuview.setLateSummariesDates(lateSummariesDates);
cuview.setPrelancadosSummaries(prelancadosSummaries);
cuview.setPrelancadosSummariesDates(prelancadosSummariesDates);
}
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/ftpservices/FtpService.java
2,16 → 2,23
 
import jomm.utils.DesUtils;
import jomm.utils.DiacriticFilter;
import jomm.utils.FilesUtils;
import jomm.utils.MimeTypeGuesser;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.httpclient.util.URIUtil;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.log4j.Logger;
import org.json.JSONArray;
import org.json.JSONObject;
import pt.estgp.estgweb.domain.CourseUnitImpl;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.web.FtpServer;
import pt.estgp.estgweb.web.utils.DatesUtils;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import java.io.File;
158,4 → 165,143
client.disconnect();
return result;
}
 
private static void printMem()
{
int mb = 1024*1024;
 
//Getting the runtime reference from system
Runtime runtime = Runtime.getRuntime();
 
 
//Print used memory
logger.debug("Used Memory:" + (runtime.totalMemory() - runtime.freeMemory()) / mb);
 
}
public static long[] calculateDirectoryInfo(FtpServer.FtpClientWrapper ftpClient,
String parentDir, String currentDir) throws IOException {
long[] info = new long[4];
//System.gc();
printMem();
int totalDirs = 0;
int totalFiles = 0;
long totalSize = 0;
long lastUpdate = 0;
 
String dirToList = parentDir;
if (!currentDir.equals("")) {
dirToList += "/" + currentDir;
}
 
try {
 
FTPFile[] subFiles = ftpClient.listFiles(dirToList);
 
if (subFiles != null && subFiles.length > 0) {
for (FTPFile aFile : subFiles) {
String currentFileName = aFile.getName();
if (currentFileName.equals(".")
|| currentFileName.equals("..")) {
// skip parent directory and the directory itself
continue;
}
 
//System.out.println("dir:" +currentDir+ aFile.getName());
if (aFile.isDirectory()) {
//System.out.println("dir:" +currentDir+ aFile.getName());
totalDirs++;
long[] subDirInfo =
calculateDirectoryInfo(ftpClient, dirToList, currentFileName);
totalDirs += subDirInfo[0];
totalFiles += subDirInfo[1];
totalSize += subDirInfo[2];
if(subDirInfo[3] > lastUpdate)
lastUpdate = subDirInfo[3];
} else {
totalSize += aFile.getSize();
totalFiles++;
if(aFile.getTimestamp().getTime().getTime() > lastUpdate)
lastUpdate = aFile.getTimestamp().getTime().getTime();
 
}
}
}
 
info[0] = totalDirs;
info[1] = totalFiles;
info[2] = totalSize;
info[3] = lastUpdate;
 
return info;
} catch (Throwable ex) {
logger.error(ex,ex);
return info;
}
}
 
 
public static JSONArray getDirectoryFilesFields(FtpServer.FtpClientWrapper ftpClient,
String parentDir, String currentDir) throws IOException {
return getDirectoryFilesFields(ftpClient, parentDir, currentDir,parentDir);
}
 
private static JSONArray getDirectoryFilesFields(FtpServer.FtpClientWrapper ftpClient,
String parentDir, String currentDir, String startDir) throws IOException {
 
JSONArray subArray = new JSONArray();
 
printMem();
 
String dirToList = parentDir;
if (!currentDir.equals("")) {
dirToList += "/" + currentDir;
}
 
try {
 
FTPFile[] subFiles = ftpClient.listFiles(dirToList);
 
if (subFiles != null && subFiles.length > 0) {
for (FTPFile aFile : subFiles) {
String currentFileName = aFile.getName();
if (currentFileName.equals(".")
|| currentFileName.equals("..")) {
// skip parent directory and the directory itself
continue;
}
 
//System.out.println("dir:" +currentDir+ aFile.getName());
if (aFile.isDirectory()) {
//System.out.println("dir:" +currentDir+ aFile.getName());
JSONArray subDirInfo =
getDirectoryFilesFields(ftpClient, dirToList, currentFileName,startDir);
for(int i = 0; i < subDirInfo.length();i++)
subArray.put(subDirInfo.getJSONObject(i));
 
} else {
JSONObject jsonObject = new JSONObject();
jsonObject.put("fileCompletePath",parentDir + "/" + currentDir + "/" + aFile.getName());
jsonObject.put("fileCompletePathEncoded",URIUtil.encodePath(parentDir + "/" + currentDir + "/" + aFile.getName(), "ISO-8859-1"));
 
jsonObject.put("file",parentDir.substring(startDir.length()) + "/" + currentDir + "/" + aFile.getName());
jsonObject.put("filename",aFile.getName());
jsonObject.put("contenttype", MimeTypeGuesser.getInstance().guessMimeType(aFile.getName()));
jsonObject.put("size",aFile.getSize());
jsonObject.put("lastmodified",aFile.getTimestamp().getTime().getTime());
jsonObject.put("lastmodifieddate", DatesUtils.getStringFromDate(aFile.getTimestamp().getTime()));
jsonObject.put("extension", FilesUtils.getExtension(aFile.getName()));
 
 
subArray.put(jsonObject);
}
}
}
 
 
return subArray;
} catch (Throwable ex) {
logger.error(ex,ex);
return subArray;
}
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/jobs/ServiceJob.java
199,7 → 199,7
 
 
//serviceLogInfo("##### Heap utilization statistics [MB] #####");
logger.info("##### Heap utilization statistics [MB] #####");
logger.debug("##### Heap utilization statistics [MB] #####");
 
//Print used memory
logger.info("Used Memory:" + (runtime.totalMemory() - runtime.freeMemory()) / mb);
209,15 → 209,15
 
//Print free memory
//serviceLogInfo("Free Memory:" + runtime.freeMemory() / mb);
logger.info("Free Memory:" + runtime.freeMemory() / mb);
logger.debug("Free Memory:" + runtime.freeMemory() / mb);
 
//Print total available memory
//serviceLogInfo("Total Memory:" + runtime.totalMemory() / mb);
logger.info("Total Memory:" + runtime.totalMemory() / mb);
logger.debug("Total Memory:" + runtime.totalMemory() / mb);
 
//Print Maximum available memory
//serviceLogInfo("Max Memory:" + runtime.maxMemory() / mb);
logger.info("Max Memory:" + runtime.maxMemory() / mb);
logger.debug("Max Memory:" + runtime.maxMemory() / mb);
}
 
public void serviceLogInfoWithLoggerSource(String message)
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitSummaryView.java
30,8 → 30,8
private String codigoSala;
private Date originalDate;
private String codigoDocente;
private String cEstado;
 
 
public CourseUnitSummaryView() {
}
 
56,6 → 56,7
this.codigoSumario = summary.getCodigoSumario();
this.codigoSala = summary.getCodigoSalaAula();
this.codigoDocente = summary.getCodigoDocente();
this.cEstado = summary.getcEstado();
}
 
// public void persistViewInObject(Announcement announcement)
129,4 → 130,12
}
 
public String getCodigoDocente() { return codigoDocente; }
 
public String getcEstado() {
return cEstado;
}
 
public void setcEstado(String cEstado) {
this.cEstado = cEstado;
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java
2,12 → 2,10
 
import jomm.utils.StringsUtils;
import org.apache.log4j.Logger;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.courseunits.LoadCourseUnitAnnouncements;
import pt.estgp.estgweb.services.sigesimports.ImportSumariesJson;
 
import java.io.Serializable;
import java.util.*;
618,57 → 616,48
*/
 
int lateSummaries = 0;
int prelancadosSummaries = 0;
List<String> lateSummariesDates = new ArrayList<String>();
List<String> prelancadosSummariesDates = new ArrayList<String>();
 
public synchronized List<CourseUnitSummaryView> getSummariesFromJson() {
if(summariesFromJson != null)
return summariesFromJson;
lateSummaries = 0;
summariesFromJson = new ArrayList<CourseUnitSummaryView>();
if(summariesJson != null && summariesJson.length() > 0)
{
try {
JSONObject jsonObject = new JSONObject(summariesJson);
JSONArray summaries = jsonObject.getJSONArray("summary");
for(int i = 0; i < summaries.length();i++)
{
JSONObject summary = summaries.getJSONObject(i);
CourseUnitSummaryImpl sum = DomainObjectFactory.createCourseUnitSummaryImpl();
public List<String> getPrelancadosSummariesDates() {
return prelancadosSummariesDates;
}
 
if(sum.updateWithJson(summary)){
CourseUnitSummaryView view = new CourseUnitSummaryView(sum);
summariesFromJson.add(view);
}
else if(importYear.equals(interfaceImportYear))
//so verifica atrasados para unidades do ano corrente a titulo informativo
{
CourseUnitSummaryView view = new CourseUnitSummaryView(sum);
if(view.getNumber() < 0 && view.getOriginalDate().getTime() + 48*60*60*1000 < System.currentTimeMillis())
{
public void setPrelancadosSummariesDates(List<String> prelancadosSummariesDates) {
this.prelancadosSummariesDates = prelancadosSummariesDates;
}
 
//System.out.println(view.getNumber() + " " + view.getDate() + " " + view.getOriginalDate());
lateSummaries++;
lateSummariesDates.add(view.getDate());
}
}
}
} catch (JSONException e) {
logger.error(e,e);
}
Collections.sort(summariesFromJson,new Comparator<CourseUnitSummaryView>() {
@Override
public int compare(CourseUnitSummaryView courseUnitSummaryView, CourseUnitSummaryView courseUnitSummaryView2) {
public int getPrelancadosSummaries() {
return prelancadosSummaries;
}
 
if(courseUnitSummaryView.getNumber() > courseUnitSummaryView2.getNumber())
return -1;
else if(courseUnitSummaryView.getNumber() < courseUnitSummaryView2.getNumber())
return 1;
return 0;
}
});
public void setPrelancadosSummaries(int prelancadosSummaries) {
this.prelancadosSummaries = prelancadosSummaries;
}
 
public void setSummariesFromJson(List<CourseUnitSummaryView> summariesFromJson) {
this.summariesFromJson = summariesFromJson;
}
 
public void setLateSummaries(int lateSummaries) {
this.lateSummaries = lateSummaries;
}
 
public void setLateSummariesDates(List<String> lateSummariesDates) {
this.lateSummariesDates = lateSummariesDates;
}
 
/**
* Dependecia do Serviço de importação de sumarios
* @return
*/
public synchronized List<CourseUnitSummaryView> getSummariesFromJson() {
if(summariesFromJson != null)
return summariesFromJson;
}
return null;
ImportSumariesJson.setSummariesFromJson(this);
return summariesFromJson;
 
}
 
public List<String> getLateSummariesDates() {
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java
359,6 → 359,7
if(usession.getUser() != null && usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE))
{
s.addClearance(CourseUnitClearancesOperation.STATISTICS_CAN_VIEW.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_ALL.name(),usession);
s.addClearance(CourseUnitClearancesOperation.PROGRAM_CAN_VALIDATE.name(),usession);
s.addClearance(CourseUnitClearancesOperation.PROGRAM_TEACHER_PART.name(),usession);
381,6 → 382,7
}
if(teacher || responsable)
{
s.addClearance(CourseUnitClearancesOperation.STATISTICS_CAN_VIEW.name(),usession);
//s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_USER_TEACHER.name(), usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITION.name(),usession);
if(active && isEdit)
393,6 → 395,7
 
if(isCoordinator)
{
s.addClearance(CourseUnitClearancesOperation.STATISTICS_CAN_VIEW.name(),usession);
s.addClearance(CourseUnitClearancesOperation.PROGRAM_CAN_VALIDATE.name(),usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_INFO_USER_COMMISSION.name(), usession);
s.addClearance(CourseUnitClearancesOperation.EVALUATION_EDITION.name(), usession);
469,8 → 472,11
PROGRAM_COORDINATOR_PART,
PROGRAM_TEACHER_PART,
PROGRAM_CAN_VALIDATE,
PROGRAM_INFO_VALID_NOT_ACTIVE
PROGRAM_INFO_VALID_NOT_ACTIVE,
 
STATISTICS_CAN_VIEW,
 
 
;
 
public static CourseUnitClearancesOperation parse(String clearance)
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/StudentDaoImpl.java
1,12 → 1,15
package pt.estgp.estgweb.domain.dao.impl;
 
import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import pt.estgp.estgweb.domain.Student;
 
import java.util.List;
 
import static org.hibernate.criterion.Restrictions.eq;
import static org.hibernate.criterion.Restrictions.or;
 
/**
* @author Jorge Machado
63,4 → 66,23
.add(eq("su.importYear",year))
.add(eq("su.institutionCode",""+institutionCode)).list();
}
 
public List<Student> loadFromCoursesWithValidationRoles(List<String> validationRoles, String importYear)
{
Criteria c = createCriteria()
.createAlias("subscribedUnits","su")
.createAlias("su.course","course")
.add(eq("su.importYear",importYear));
Criterion co = null;
for(String role: validationRoles)
{
if(co==null)
co = eq("course.validationRole",role);
else
co = or(co,eq("course.validationRole",role));
}
c.addOrder(Order.asc("name"));
return c.list();
 
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/ConfigurationImpl.java
1,5 → 1,7
package pt.estgp.estgweb.domain;
 
import pt.estgp.estgweb.utils.DatesUtils;
 
import java.io.Serializable;
 
/**
22,4 → 24,9
{
return getId();
}
 
public String getPreviousInterfaceImportYear()
{
return DatesUtils.getPreviousImportYear(getInterfaceImportYear());
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/web/FtpServer.java
1,6 → 1,7
package pt.estgp.estgweb.web;
 
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.UserSessionImpl;
9,6 → 10,7
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.SocketException;
import java.net.URL;
import java.util.HashMap;
 
61,21 → 63,35
}
 
private static final int FTP_TIMEOUT_SECONDS = pt.estgp.estgweb.Globals.FTP_TIMEOUT_SECONDS;
 
public static class Connector implements Runnable
{
FTPClient ftp;
String host;
int port;
 
public Connector(FTPClient ftp, String host, int port) {
this.ftp = ftp;
this.host = host;
this.port = port;
}
 
@Override
public void run() {
try {
ftp.connect(host, port);
} catch (IOException e) {
logger.error(e,e);
}
}
}
public FTPClient getClient() throws IOException
{
errorMsg = null;
final FTPClient ftp = new MyFTPClient();
Connector connector = new Connector(new MyFTPClient(),host,port);
 
logger.info("CONNECTING... waiting " + FTP_TIMEOUT_SECONDS + " seconds");
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
ftp.connect(host, port);
} catch (IOException e) {
logger.error(e,e);
}
}
});
Thread t = new Thread(connector);
t.start();
try {
for(int i=0;i<FTP_TIMEOUT_SECONDS;i++)
83,11 → 99,11
Thread.sleep(1000);
if(!t.isAlive())
{
if(ftp.isConnected())
if(connector.ftp.isConnected())
break;
}
}
if(!ftp.isConnected())
if(!connector.ftp.isConnected())
{
errorMsg = "errors.ftp.timeout";
logger.info("Not Connected will interrupt");
101,9 → 117,16
 
if (username != null && password != null)
{
if(ftp.login(username,password))
connector.ftp.setDataTimeout(1000000000);
try {
connector.ftp.setSoTimeout(1000000000);
} catch (SocketException e) {
e.printStackTrace();
}
connector.ftp.setDefaultTimeout(1000000000);
if(connector.ftp.login(username,password))
{
return ftp;
return connector.ftp;
}
else
{
234,6 → 257,183
return null;
}
 
public static class FtpClientWrapper extends FTPClient
{
FtpServer server;
FTPClient client = null;
private int restartTimes = 2;
private int tries = 0;
 
public FtpClientWrapper(FtpServer server,int restartTimesOnFail) throws IOException {
this.server = server;
this.restartTimes = restartTimesOnFail;
client = server.getClient();
client.setDataTimeout(10000);
client.setSoTimeout(10000);
client.setDefaultTimeout(10000);
client.enterLocalActiveMode();
}
 
 
@Override
public boolean changeWorkingDirectory(String pathname) throws IOException
{
try{
tries++;
boolean b = client.changeWorkingDirectory(pathname);
tries = 0;
return b;
}
catch(IOException e)
{
if(tries > restartTimes)
{
tries = 0;
client = server.getClient();
logger.error("Restart exceed maximum restart times of " + restartTimes);
throw e;
}
else
{
logger.warn("FTP Fail will try restart " + tries + "º connection of " + restartTimes + " error: " + e.toString());
client = server.getClient();
return changeWorkingDirectory(pathname);
}
}
}
 
@Override
public void enterLocalPassiveMode() {
client.enterLocalPassiveMode();
}
 
@Override
public void enterLocalActiveMode() {
client.enterLocalActiveMode();
}
 
@Override
public boolean storeFile(String remote, InputStream local) throws IOException {
try{
tries++;
boolean b = client.storeFile(remote, local);
tries = 0;
return b;
}
catch(IOException e)
{
if(tries > restartTimes)
{
tries = 0;
client = server.getClient();
logger.error("Restart exceed maximum restart times of " + restartTimes);
throw e;
}
else
{
client = server.getClient();
logger.warn("FTP Fail will try restart " + tries + "º connection of " + restartTimes + " error: " + e.toString());
return client.storeFile(remote, local);
}
}
}
 
public void close() throws IOException {
client.quit();
client.disconnect();
}
 
@Override
public boolean logout() throws IOException {
return super.logout();
}
 
@Override
public boolean abort() throws IOException {
return client.abort();
}
 
@Override
public String[] listNames() throws IOException {
 
try{
tries++;
String[] b = client.listNames();
tries = 0;
return b;
}
catch(IOException e)
{
if(tries > restartTimes)
{
tries = 0;
client = server.getClient();
logger.error("Restart exceed maximum restart times of " + restartTimes);
throw e;
}
else
{
client = server.getClient();
logger.warn("FTP Fail will try restart " + tries + "º connection of " + restartTimes + " error: " + e.toString());
return client.listNames();
}
}
}
 
@Override
public FTPFile[] listFiles() throws IOException {
try{
tries++;
FTPFile[] b = client.listFiles();
tries = 0;
return b;
}
catch(IOException e)
{
if(tries > restartTimes)
{
tries = 0;
client = server.getClient();
logger.error("Restart exceed maximum restart times of " + restartTimes);
throw e;
}
else
{
client = server.getClient();
logger.warn("FTP Fail will try restart " + tries + "º connection of " + restartTimes + " error: " + e.toString());
return client.listFiles();
}
}
}
 
@Override
public FTPFile[] listFiles(String pathname) throws IOException {
try{
tries++;
FTPFile[] b = client.listFiles(pathname);
tries = 0;
return b;
}
catch(IOException e)
{
if(tries > restartTimes)
{
tries = 0;
client = server.getClient();
logger.error("Restart exceed maximum restart times of " + restartTimes);
throw e;
}
else
{
client = server.getClient();
logger.warn("FTP Fail will try restart " + tries + "º connection of " + restartTimes + " error: " + e.toString());
return client.listFiles(pathname);
}
}
}
}
 
 
public static final int FTP_DATA_STORE_TIMEOUT_SECONDS = pt.estgp.estgweb.Globals.FTP_DATA_STORE_TIMEOUT_SECONDS;
public class MyFTPClient extends FTPClient implements Runnable
{
/branches/v3/impl/src/java/pt/estgp/estgweb/web/form/courses/CourseForm.java
18,6 → 18,7
*/
public class CourseForm extends TeachersForm
{
private String forUser;
private CourseView courseView;
private FormFile studiesPlan;
 
37,6 → 38,14
courseView = new CourseView();
}
 
public String getForUser() {
return forUser;
}
 
public void setForUser(String forUser) {
this.forUser = forUser;
}
 
public CourseView getCourseView()
{
return courseView;
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsController.java
158,6 → 158,42
}
 
 
public ActionForward loadStats(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
{
CourseUnitsForm cUF = (CourseUnitsForm) form;
long id;
if(cUF.getCourseUnitView() != null && cUF.getCourseUnitView().getId() > 0)
id = cUF.getCourseUnitView().getId();
else
id = Long.parseLong(request.getParameter("id"));
 
CourseUnitView cV = loadCourseUnitView(id,false,false, mapping, request, response);
cUF.setCourseUnitView(cV);
request.setAttribute("CourseUnitView", cV);
return mapping.findForward("loadStats");
 
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
}
}
 
public ActionForward load(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/configuration/ConfigurationsController.java
5,6 → 5,7
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.domain.Configuration;
import pt.estgp.estgweb.domain.ConfigurationGradesEpocaAvaliacao;
import pt.estgp.estgweb.domain.ConfigurationGradesStatusEpoca;
import pt.estgp.estgweb.domain.DomainObjectFactory;
12,6 → 13,7
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.form.configuration.ConfigurationGradesForm;
import pt.estgp.estgweb.web.form.configuration.ConfigurationsForm;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
148,4 → 150,32
return mapping.findForward("grades");
}
 
public ActionForward saveConfigsGerais(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
 
ConfigurationsForm f = (ConfigurationsForm) form;
AbstractDao.getCurrentSession().beginTransaction();
 
Configuration configuration = DaoFactory.getConfigurationDaoImpl().load();
 
configuration.setOpenInfoIntranet(f.getConfiguration().getOpenInfoIntranet());
configuration.setInterfaceImportYear(f.getConfiguration().getInterfaceImportYear());
configuration.setCursosFicticios(f.getConfiguration().getCursosFicticios());
 
configuration.setCourseUnitEvaluationActiveYear(f.getConfiguration().getCourseUnitEvaluationActiveYear());
configuration.setCourseUnitEvaluationActiveDegrees(f.getConfiguration().getCourseUnitEvaluationActiveDegrees());
configuration.setCourseUnitEvaluationActiveCourseIds(f.getConfiguration().getCourseUnitEvaluationActiveCourseIds());
AbstractDao.getCurrentSession().getTransaction().commit();
 
return mapping.getInputForward();
}
}
/branches/v3/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml
44,34 → 44,74
<column name="summariesJson" sql-type="MEDIUMTEXT"/>
</property>
 
<property name="filesJson" type="text">
<column name="filesJson" sql-type="LONGTEXT" default="null"/>
</property>
 
<!-- CourseUnit Statistics -->
<!--
<property name="teachersCount" type="int"/>
<property name="studentsCount" type="int"/>
<property name="contentsFiles" type="int"/>
<property name="contentsFolders" type="int"/>
<property name="contentsLastUpdate" type="int"/>
 
<property name="works" type="int"/>
<property name="anuncios" type="int"/>
<property name="blogPosts" type="int"/>
<property name="statteachersCount" type="int">
<column name="statteachersCount" default="0"/>
</property>
<property name="statstudentsCount" type="int">
<column name="statstudentsCount" default="0"/>
</property>
<property name="statcontentsFiles" type="int">
<column name="statcontentsFiles" default="0"/>
</property>
<property name="statcontentsFolders" type="int">
<column name="statcontentsFolders" default="0"/>
</property>
<property name="statcontentsSize" type="long">
<column name="statcontentsSize" default="0"/>
</property>
<property name="statcontentsLastUpdate" type="timestamp"/>
 
<property name="dtpSumaries" type="int"/>
<property name="dtpSumariesMissing" type="int"/>
<property name="dtpPlaneamentoFiles" type="int"/>
<property name="dtpPlaneamentoFilesLastUpdate" type="timestamp"/>
<property name="dtpFichaCurricularValid" type="boolean"/> -refere para o campo ficha válida coloca-se apenas o GET no IMPL--
<property name="dtpFichaCurricularLastUpdate" type="timestamp"/>
<property name="dtpEvaluationReportState" type="string"/> - VALIDO,ENTREGUE,INICIADO,INEXISTENTE refere para o campo relatorio de avaliação válido coloca-se apenas o GET no IMPL--
<property name="dtpEvaluationReportLastUpdate" type="timestamp"/>
<property name="dtpInqueritoPedagogicoFiles" type="int"/>
<property name="dtpInqueritoPedagogicoFilesLastUpdate" type="timestamp"/>
<property name="dtpAvaliacaoEnunciadosFiles" type="int"/>
<property name="dtpAvaliacaoEnunciadosLastUpdate" type="timestamp"/>
<property name="dtpAvaliacaoPautasFiles" type="int"/>
<property name="dtpAvaliacaoPautasLastUpdate" type="timestamp"/>
-->
<property name="statworks" type="int">
<column name="statworks" default="0"/>
</property>
<property name="statanuncios" type="int">
<column name="statanuncios" default="0"/>
</property>
<property name="statblogPosts" type="int">
<column name="statblogPosts" default="0"/>
</property>
 
<property name="statdtpSumaries" type="int">
<column name="statdtpSumaries" default="0"/>
</property>
<property name="statdtpSumariesMissing" type="int">
<column name="statdtpSumariesMissing" default="0"/>
</property>
<property name="statdtpSumariesPrelancados" type="int">
<column name="statdtpSumariesPrelancados" default="0"/>
</property>
<property name="statdtpPlaneamentoFiles" type="int">
<column name="statdtpPlaneamentoFiles" default="0"/>
</property>
<property name="statdtpPlaneamentoLastUpdate" type="timestamp"/>
<property name="statdtpFichaCurricularValid" type="boolean">
<column name="statdtpFichaCurricularValid" default="false"/>
</property> <!--refere para o campo ficha válida coloca-se apenas o GET no IMPL-->
<property name="statdtpFichaCurricularLastUpdate" type="timestamp"/>
<property name="statdtpEvaluationReportState" type="string"/> <!-- VALIDO,ENTREGUE,INICIADO,INEXISTENTE refere para o campo relatorio de avaliação válido coloca-se apenas o GET no IMPL-->
<property name="statdtpEvaluationReportLastUpdate" type="timestamp"/>
<property name="statdtpInqueritoPedagogicoFiles" type="int">
<column name="statdtpInqueritoPedagogicoFiles" default="0"/>
</property>
<property name="statdtpInqueritoPedagogicoFilesLastUpdate" type="timestamp"/>
<property name="statdtpAvaliacaoEnunciadosFiles" type="int">
<column name="statdtpAvaliacaoEnunciadosFiles" default="0"/>
</property>
<property name="statdtpAvaliacaoEnunciadosLastUpdate" type="timestamp"/>
<property name="statdtpAvaliacaoPautasFiles" type="int">
<column name="statdtpAvaliacaoPautasFiles" default="0"/>
</property>
<property name="statdtpAvaliacaoPautasLastUpdate" type="timestamp"/>
 
 
 
 
<!--
Este código de turma apenas é usado nos casos em que o curso é de turmas separadas
Nesse caso uma cadeira só pode ter uma turma e então a turma é aqui colocada
/branches/v3/impl/src/web/admin/profile/menu.jsp
29,7 → 29,7
<div class="listClean">
<ul>
<li>
<html:link action="/user/startProfile"><bean:message key="profile.home"/></html:link>
<html:link action="/user/startProfile?id=${ProfileForm.userView.id}"><bean:message key="profile.home"/></html:link>
</li>
 
<baco:hasRole role="admin,services">
/branches/v3/impl/src/web/admin/configuration/configs.jsp
1,7 → 1,9
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.domain.Configuration" %>
<%@ page import="pt.estgp.estgweb.domain.Course" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.web.form.configuration.ConfigurationsForm" %>
<%@ page import="pt.estgp.estgweb.utils.DatesUtils" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
9,7 → 11,7
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
 
<baco:isAdmin>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<jomm:messages/>
<html:errors/>
22,19 → 24,318
%>
 
<html:form action="/admin/setConfigurations">
<jsp:useBean id="ConfigurationsForm" type="pt.estgp.estgweb.web.form.configuration.ConfigurationsForm" scope="request"/>
<%
ConfigurationsForm.setConfiguration(configuration);
%>
Ano de Interface : <html:text property="configuration.interfaceImportYear"/>
Cursos Ficticios : <html:text property="configuration.cursosFicticios"/>
Ano em Avaliação : <html:text property="configuration.courseUnitEvaluationActiveYear"/>
Tipos de Cursos em Avaliação : <html:text property="configuration.courseUnitEvaluationActiveDegrees"/>
Cursos Ativos para Avaliação : <html:text property="configuration.courseUnitEvaluationActiveCourseIds"/>
Informação de Abertura da Intranet : <html:textarea property="configuration.openInfoIntranet"/>
</html:form>
<div class="panel panel-default">
<div class="panel-heading">Configurações Gerais do Sistema</div>
<div class="panel-body">
<html:form styleClass="form-horizontal" action="/admin/setConfigurations">
<input type="hidden" name="dispatch" value="saveConfigsGerais"/>
<jsp:useBean id="ConfigurationsForm" type="pt.estgp.estgweb.web.form.configuration.ConfigurationsForm" scope="request"/>
<%
ConfigurationsForm.setConfiguration(configuration);
%>
 
<div class="form-group">
<label class="control-label col-sm-2">Ano de Interface</label>
<div class="col-sm-10">
<%
List<String> years = DatesUtils.getImportYears(10);
%>
<html:select styleClass="form-control" property="configuration.interfaceImportYear">
<%
for(String year:years)
{
request.setAttribute("year",year);
%>
<html:option value="${year}">${year}</html:option>
<%
}
%>
</html:select>
</div>
</div>
 
<div class="form-group">
<label class="control-label col-sm-2">Cursos Ficticios (separados por virgulas)</label>
<div class="col-sm-10">
<html:text styleClass="form-control" property="configuration.cursosFicticios"/>
</div>
</div>
 
 
<div class="form-group">
<label class="control-label col-sm-2">Informação de Abertura da Intranet</label>
<div class="col-sm-10">
<html:textarea styleClass="form-control" rows="5" property="configuration.openInfoIntranet"/>
</div>
</div>
 
 
<div class="panel panel-default">
<div class="panel-heading">Relatórios de Avaliação das Unidades Curriculares</div>
<div class="panel-body">
<div class="form-group">
<label class="control-label col-sm-2">Ano aberto para relatórios de avaliação</label>
<div class="col-sm-10">
<html:select styleClass="form-control" property="configuration.courseUnitEvaluationActiveYear">
<%
for(String year:years)
{
request.setAttribute("year",year);
%>
<html:option value="${year}">${year}</html:option>
<%
}
%>
</html:select>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Tipos de Cursos em Avaliação</label>
<div class="col-sm-4">
<html:hidden styleId="degree" property="configuration.courseUnitEvaluationActiveDegrees" />
<div class="list-group" id="degreesListGroup">
 
</div>
<script>
var degrees = '${ConfigurationsForm.configuration.courseUnitEvaluationActiveDegrees}';
jsonObjDegrees = [];
if(degrees.length > 0)
{
var degreesArray = degrees.split(",");
for(i=0;i< degreesArray.length;i++)
{
item = {}
item ["degree"] = degreesArray[i];
jsonObjDegrees.push(item);
}
}
function persistDegrees(){
var finalDegrees = "";
$("#degreesListGroup").html("");
jsonObjDegrees.forEach(
function(obj) {
if(finalDegrees == "")
finalDegrees+= obj.degree;
else
finalDegrees+= "," + obj.degree;
 
 
var elementNew = $("<div class=\"list-group-item\">" +
$('#degreeCombo option[value="' + obj.degree + '"]').html() +
"</div>");
$("#degreesListGroup").append(elementNew);
var removeBtn = $('<button class="btn btn-xs btn-danger pull-right" type="button"><span class="glyphicon glyphicon-remove"/></button>');
elementNew.append(removeBtn);
removeBtn.click(
function(){
var found = false;
for(var degree in jsonObjDegrees)
{
if(jsonObjDegrees[degree].degree == obj.degree)
{
jsonObjDegrees.splice(degree, 1);
break;
}
}
persistDegrees();
}
);
}
);
$("#degree").val(finalDegrees);
 
}
$(document).ready(
function(){
persistDegrees();
$("#addDegreeBtn").click(
function()
{
var found = false;
for(var degree in jsonObjDegrees)
{
if(jsonObjDegrees[degree].degree == $("#degreeCombo").val())
{
found = true;
}
}
if(!found)
{
item = {}
item ["degree"] = $("#degreeCombo").val();
jsonObjDegrees.push(item);
persistDegrees();
}
}
);
$("#removeDegreeBtn").click(
function()
{
var found = false;
for(var degree in jsonObjDegrees)
{
if(jsonObjDegrees[degree].degree == $("#degreeCombo").val())
{
jsonObjDegrees.splice(degree, 1);
break;
}
}
persistDegrees();
}
);
 
}
);
</script>
</div>
<div class="col-sm-3">
<select class="form-control" id="degreeCombo">
<option value="B"><bean:message key="course.B"/> (B)</option>
<option value="L"><bean:message key="course.L"/> (L)</option>
<option value="M"><bean:message key="course.M"/> (M)</option>
<option value="P"><bean:message key="course.P"/> (P)</option>
<option value="E"><bean:message key="course.E"/> (E)</option>
<option value="A"><bean:message key="course.A"/> (A)</option>
<option value="C"><bean:message key="course.C"/> (C)</option>
<option value="O"><bean:message key="course.O"/> (O)</option>
<option value="T"><bean:message key="course.T"/> (T)</option>
</select>
</div>
<div class="col-sm-3">
<button class="btn btn-small btn-success" type="button" id="addDegreeBtn"><span class="glyphicon glyphicon-plus"/></button>
<button class="btn btn-small btn-danger" type="button" id="removeDegreeBtn"><span class="glyphicon glyphicon-remove"/></button>
</div>
</div>
 
 
<div class="form-group">
<label class="control-label col-sm-2">Cursos Ativos para Avaliação</label>
<div class="col-sm-4">
<html:hidden styleId="course" property="configuration.courseUnitEvaluationActiveCourseIds" />
<div class="list-group" id="coursesListGroup">
 
</div>
<script>
var courses = '${ConfigurationsForm.configuration.courseUnitEvaluationActiveCourseIds}';
 
jsonObjCourses = [];
if(courses.length > 0)
{
var coursesArray = courses.split(";");
for(i=0;i< coursesArray.length;i++)
{
item = {}
item ["courseId"] = coursesArray[i];
jsonObjCourses.push(item);
}
}
 
function persistCourses(){
var finalCourses = "";
$("#coursesListGroup").html("");
jsonObjCourses.forEach(
function(obj) {
if(finalCourses == "")
finalCourses+= obj.courseId;
else
finalCourses+= ";" + obj.courseId;
var elementNew = $( "<div class=\"list-group-item\">" +
$('#coursesCombo option[value="' + obj.courseId + '"]').html() +
"</div>");
$("#coursesListGroup").append(elementNew);
var removeBtn = $('<button class="btn btn-xs btn-danger pull-right" type="button"><span class="glyphicon glyphicon-remove"/></button>');
elementNew.append(removeBtn);
removeBtn.click(
function(){
var found = false;
for(var course in jsonObjCourses)
{
if(jsonObjCourses[course].courseId == obj.courseId)
{
jsonObjCourses.splice(course, 1);
break;
}
}
persistCourses();
}
);
 
}
);
$("#course").val(finalCourses);
 
}
$(document).ready(
function(){
persistCourses();
$("#addCourseBtn").click(
function()
{
var found = false;
for(var course in jsonObjCourses)
{
if(jsonObjCourses[course].courseId == $("#coursesCombo").val())
{
found = true;
}
}
if(!found)
{
item = {}
item ["courseId"] = $("#coursesCombo").val();
jsonObjCourses.push(item);
persistCourses();
}
}
);
$("#removeCourseBtn").click(
function()
{
var found = false;
for(var course in jsonObjCourses)
{
if(jsonObjCourses[course].courseId == $("#coursesCombo").val())
{
jsonObjCourses.splice(course, 1);
break;
}
}
persistCourses();
}
);
 
}
);
</script>
</div>
<div class="col-sm-3">
<select class="form-control" id="coursesCombo">
<%
List<Course> courses = DaoFactory.getCourseDaoImpl().findAllOrderByName();
request.setAttribute("Courses",courses);
%>
<logic:iterate id="course" name="Courses" type="pt.estgp.estgweb.domain.Course">
<option value="${course.id}">${course.name} (${course.code})</option>
</logic:iterate>
</select>
</div>
<div class="col-sm-3">
<button class="btn btn-small btn-success" type="button" id="addCourseBtn"><span class="glyphicon glyphicon-plus"/></button>
<button class="btn btn-small btn-danger" type="button" id="removeCourseBtn"><span class="glyphicon glyphicon-remove"/></button>
</div>
</div>
</div>
</div>
 
 
 
<button type="button" class="btn btn-success" onclick="set(form,'saveConfigsGerais');form.submit()"><bean:message key="confirm"/></button>
</html:form>
</div>
</div>
 
 
<%
AbstractDao.getCurrentSession().getTransaction().commit();
%>
%>
</baco:isAdmin>
/branches/v3/impl/src/web/css/style.css
39,6 → 39,8
}
 
 
.tablesorterfiltered
{}
 
 
 
/branches/v3/impl/src/web/layout/themes/scripts-default.jsp
92,6 → 92,7
{
display: none;
}
 
</style>
<!--READY FIRST EVENT-->
 
/branches/v3/impl/src/web/public/profile/profileGrades.jsp
21,20 → 21,7
 
<jomm:messages/>
<%--<jsp:useBean id="ProfileForm" class="pt.estgp.estgweb.web.form.profile.ProfileForm"/>--%>
<%
String fromAction = "";
String from = "";
String user = "";
if (request.getParameter("from") != null)
{
user = "/user";
fromAction = "From" + request.getParameter("from");
from = "?from=" + request.getParameter("from");
}
request.setAttribute("from", from);
request.setAttribute("user", user);
request.setAttribute("fromAction", fromAction);
%>
 
<h1>
<bean:write name="ProfileForm" property="userView.name"/>
</h1>
55,7 → 42,7
%>
</h2>
<%
if(UserSession.getUser() != null && !UserSession.getUser().isAdmin() && !UserSession.getUser().hasRole("services") && UserSession.getUser().getId() != ProfileForm.getUserView().getId())
if(UserSession.getUser() != null && !UserSession.getUser().isTeacher() && !UserSession.getUser().isAdmin() && !UserSession.getUser().hasRole("services") && UserSession.getUser().getId() != ProfileForm.getUserView().getId())
{
%>
<h2 class="warning">Apenas o aluno tem direito a consultar as suas notas</h2>
/branches/v3/impl/src/web/public/profile/profileHome.jsp
17,20 → 17,7
 
<jomm:messages/>
<%--<jsp:useBean id="ProfileForm" class="pt.estgp.estgweb.web.form.profile.ProfileForm"/>--%>
<%
String fromAction = "";
String from = "";
String user = "";
if (request.getParameter("from") != null)
{
user = "/user";
fromAction = "From" + request.getParameter("from");
from = "?from=" + request.getParameter("from");
}
request.setAttribute("from", from);
request.setAttribute("user", user);
request.setAttribute("fromAction", fromAction);
%>
 
<div class="panel panel-default">
<baco:isAdmin>
<div class="panel-heading">
38,244 → 25,9
</div>
</baco:isAdmin>
<div class="panel-body">
<h1>
<bean:write name="ProfileForm" property="userView.name"/>
</h1>
<%
if(ProfileForm.getUserView().getUser() instanceof Teacher )
{
%>
<p class="lead"><strong>Função:</strong> <bean:message key="user.role.teacher"/></p>
<%
}
%>
<%
if(ProfileForm.getUserView().getUser() instanceof Student )
{
%>
<p class="lead"><bean:message key="user.role.student"/></p>
<%
}
%>
<jsp:include page="profileHomeSimple.jsp"/>
</div>
</div>
 
<p><strong><bean:message key="number"/>:</strong> <bean:write name="ProfileForm" property="userView.code"/></p>
<%
if(ProfileForm.getUserView().getUser() instanceof Teacher && ProfileForm.getUserView().getAcademicDegree() != null && ProfileForm.getUserView().getAcademicDegree().trim().length() > 0)
{
%>
<baco:isAdmin>
<p><strong><bean:message key="profile.academic.degree"/>:</strong> <bean:message key="profile.academic.degree.${ProfileForm.userView.academicDegree}"/></p>
</baco:isAdmin>
<%
}
%>
<p><strong><bean:message key="email.institucion"/>:</strong> ${ProfileForm.userView.safeEmail}</p>
 
 
 
<%--
<bean:message key="profile.roles"/>:
<%
List<String> roles = ProfileForm.getUserView().getOwnerRoles();
String separator = "";
for (String role : roles)
{
 
if (!role.equals(Globals.SUPER_USER_ROLE))
{
out.print(separator + MessageResources.getMessage(request, "user.role." + role));
separator = ", ";
}
}
%>
--%>
 
 
 
 
<%
if (ProfileForm.getUserView().getUser() instanceof Teacher || ProfileForm.getUserView().getUser() instanceof Student)
{
%>
 
<%
if (ProfileForm.getUserView().getUser() instanceof Teacher)
{
%>
<p class="lead"><bean:message key="profile.teacher.courses"/></p>
<%
}
else
{
%>
<p class="lead"><bean:message key="profile.student.courses"/></p>
<%
}
%>
 
 
<logic:present name="ProfileForm" property="userView.courses">
<ul>
<logic:iterate id="course" name="ProfileForm" property="userView.courses">
<li>
<bean:write name="course" property="name"/>
<ul>
<logic:iterate id="courseUnit" name="course" property="courseUnits">
<li>
(<bean:write name="courseUnit" property="importYear"/>) <html:link action="${user}/startLoadCourseUnit${fromAction}?courseUnitView.id=${courseUnit.id}"><bean:write name="courseUnit" property="name"/> (<bean:write name="courseUnit" property="code"/>)</html:link>
</li>
</logic:iterate>
</ul>
</li>
</logic:iterate>
</ul>
</logic:present>
<%
}
%>
 
<%
if (ProfileForm.getUserView().getUser() instanceof Teacher)
{
%>
 
 
<logic:present name="ProfileForm" property="userView.responsableCourseUnits">
<p class="lead"><bean:message key="courseunit.responsable"/></p>
<ul>
<logic:iterate id="courseUnit" name="ProfileForm" property="userView.responsableCourseUnits">
<li>
(<bean:write name="courseUnit" property="importYear"/>) <html:link action="${user}/startLoadCourseUnit${fromAction}?courseUnitView.id=${courseUnit.id}"><bean:write name="courseUnit" property="name"/> (<bean:write name="courseUnit" property="code"/>)</html:link>
</li>
</logic:iterate>
</ul>
</logic:present>
<%
}
%>
 
<%
if(ProfileForm.getUserView().getCreatorRecords() != null && ProfileForm.getUserView().getCreatorRecords().size() > 0)
{
%>
<div class="seccao">
<h1><bean:message key="profile.creator.records"/></h1>
<%
List thesisViews = ProfileForm.getUserView().getCreatorRecords(RecordEnum.RECORD_THESIS);
if(thesisViews != null && thesisViews.size() > 0)
{
request.setAttribute("RecordViews",thesisViews);
%>
<div class="seccao">
<h2>
<%=MessageResources.getMessage(request,"profile." + RecordEnum.RECORD_THESIS.getTypeStr())%>
</h2>
<jsp:include page="/public/profile/recordViews.jsp"/>
</div>
<%
}
 
 
 
List jobViews = ProfileForm.getUserView().getCreatorRecords(RecordEnum.RECORD_JOB);
if(jobViews != null && jobViews.size() > 0)
{
request.setAttribute("RecordViews",jobViews);
%>
<div class="seccao">
<h2>
<%=MessageResources.getMessage(request,"profile." + RecordEnum.RECORD_JOB.getTypeStr())%>
</h2>
<jsp:include page="/public/profile/recordViews.jsp"/>
</div>
<%
}
 
 
 
List eventViews = ProfileForm.getUserView().getCreatorRecords(RecordEnum.RECORD_EVENT_ORGANIZATION);
if(eventViews != null && eventViews.size() > 0)
{
request.setAttribute("RecordViews",eventViews);
%>
<div class="seccao">
<h2>
<%=MessageResources.getMessage(request,"profile." + RecordEnum.RECORD_EVENT_ORGANIZATION.getTypeStr())%>
</h2>
<jsp:include page="/public/profile/recordViews.jsp"/>
</div>
<%
}
 
 
List otherViews = ProfileForm.getUserView().getCreatorRecords(RecordEnum.RECORD_OTHER);
if(otherViews != null && otherViews.size() > 0)
{
request.setAttribute("RecordViews",otherViews);
%>
<div class="seccao">
<h2>
<%=MessageResources.getMessage(request,"profile." + RecordEnum.RECORD_OTHER.getTypeStr())%>
</h2>
<jsp:include page="/public/profile/recordViews.jsp"/>
</div>
<%
}
 
 
 
List paperViews = ProfileForm.getUserView().getCreatorRecords(RecordEnum.RECORD_PAPER);
if(paperViews != null && paperViews.size() > 0)
{
request.setAttribute("RecordViews",paperViews);
%>
<div class="seccao">
<h2>
<%=MessageResources.getMessage(request,"profile." + RecordEnum.RECORD_PAPER.getTypeStr())%>
</h2>
<jsp:include page="/public/profile/recordViews.jsp"/>
</div>
<%
}
 
 
 
List projectViews = ProfileForm.getUserView().getCreatorRecords(RecordEnum.RECORD_PROJECT);
if(projectViews != null && projectViews.size() > 0)
{
request.setAttribute("RecordViews",projectViews);
%>
<div class="seccao">
<h2>
<%=MessageResources.getMessage(request,"profile." + RecordEnum.RECORD_PROJECT.getTypeStr())%>
</h2>
<jsp:include page="/public/profile/recordViews.jsp"/>
</div>
<%
}
%>
</div>
<%
}
%>
<%
if(ProfileForm.getUserView().getContributorRecords() != null && ProfileForm.getUserView().getContributorRecords().size() > 0)
{
%>
<div class="seccao">
<h1><bean:message key="profile.contributor.records"/></h1>
<%
List thesisViews = ProfileForm.getUserView().getContributorRecords(RecordEnum.RECORD_THESIS);
if(thesisViews != null && thesisViews.size() > 0)
{
request.setAttribute("RecordViews",thesisViews);
 
}
%>
</div>
<%
}
%>
 
</div>
</div>
/branches/v3/impl/src/web/public/profile/profileGradesAjax.jsp
New file
0,0 → 1,37
<%@ page import="jomm.utils.MessageResources" %>
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page import="pt.estgp.estgweb.domain.views.CourseUnitGradeView" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Map" %>
<%@ page import="pt.estgp.estgweb.domain.UserSession" %>
<%@ page import="pt.estgp.estgweb.domain.Student" %>
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.domain.views.UserView" %>
<%@ page import="pt.estgp.estgweb.web.form.profile.ProfileForm" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<%
Long userId = Long.parseLong(request.getParameter("userId"));
if(UserSession.getUser().isSuperuserOrAdmin() || UserSession.getUser().isTeacher())
{
AbstractDao.getCurrentSession().beginTransaction();
 
Student student = DaoFactory.getStudentDaoImpl().load(userId);
 
UserView userView = new UserView(student);
ProfileForm profileForm = new pt.estgp.estgweb.web.form.profile.ProfileForm(userView);
request.setAttribute("ProfileForm",profileForm);
AbstractDao.getCurrentSession().getTransaction().commit();
%>
<jsp:include page="profileGrades.jsp"/>
<%
}
%>
/branches/v3/impl/src/web/public/profile/profileHomeAjax.jsp
New file
0,0 → 1,36
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="jomm.utils.MessageResources" %>
<%@ page import="pt.estgp.estgweb.domain.Student" %>
<%@ page import="pt.estgp.estgweb.domain.Teacher" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.domain.enums.RecordEnum" %>
<%@ page import="pt.estgp.estgweb.domain.views.UserView" %>
<%@ page import="pt.estgp.estgweb.web.form.profile.ProfileForm" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<%
Long userId = Long.parseLong(request.getParameter("userId"));
if(UserSession.getUser().isSuperuserOrAdmin() || UserSession.getUser().isTeacher())
{
AbstractDao.getCurrentSession().beginTransaction();
 
Student student = DaoFactory.getStudentDaoImpl().load(userId);
 
UserView userView = new UserView(student);
ProfileForm profileForm = new pt.estgp.estgweb.web.form.profile.ProfileForm(userView);
request.setAttribute("ProfileForm",profileForm);
AbstractDao.getCurrentSession().getTransaction().commit();
%>
<div>
<jsp:include page="profileHomeSimple.jsp"/>
</div>
<%
}
%>
/branches/v3/impl/src/web/public/profile/profileHomeSimple.jsp
New file
0,0 → 1,271
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.domain.Teacher" %>
<%@ page import="jomm.utils.MessageResources" %>
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page import="pt.estgp.estgweb.domain.Student" %>
<%@ page import="pt.estgp.estgweb.domain.enums.RecordEnum" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<jsp:useBean id="ProfileForm" type="pt.estgp.estgweb.web.form.profile.ProfileForm" scope="request"/>
 
 
<jomm:messages/>
<%--<jsp:useBean id="ProfileForm" class="pt.estgp.estgweb.web.form.profile.ProfileForm"/>--%>
<%
String fromAction = "";
String from = "";
String user = "";
if (request.getParameter("from") != null)
{
user = "/user";
fromAction = "From" + request.getParameter("from");
from = "?from=" + request.getParameter("from");
}
request.setAttribute("from", from);
request.setAttribute("user", user);
request.setAttribute("fromAction", fromAction);
%>
 
<h1>
<bean:write name="ProfileForm" property="userView.name"/>
</h1>
<%
if(ProfileForm.getUserView().getUser() instanceof Teacher )
{
%>
<p class="lead"><strong>Função:</strong> <bean:message key="user.role.teacher"/></p>
<%
}
%>
<%
if(ProfileForm.getUserView().getUser() instanceof Student )
{
%>
<p class="lead"><bean:message key="user.role.student"/></p>
<%
}
%>
<%--PROBLEMA AQUI--%>
<p><strong><bean:message key="number"/>:</strong> <bean:write name="ProfileForm" property="userView.code"/></p>
<%
if(ProfileForm.getUserView().getUser() instanceof Teacher && ProfileForm.getUserView().getAcademicDegree() != null && ProfileForm.getUserView().getAcademicDegree().trim().length() > 0)
{
%>
<baco:isAdmin>
<p><strong><bean:message key="profile.academic.degree"/>:</strong> <bean:message key="profile.academic.degree.${ProfileForm.userView.academicDegree}"/></p>
</baco:isAdmin>
<%
}
%>
<p><strong><bean:message key="email.institucion"/>:</strong> ${ProfileForm.userView.safeEmail}</p>
 
 
 
<%--
<bean:message key="profile.roles"/>:
<%
List<String> roles = ProfileForm.getUserView().getOwnerRoles();
String separator = "";
for (String role : roles)
{
 
if (!role.equals(Globals.SUPER_USER_ROLE))
{
out.print(separator + MessageResources.getMessage(request, "user.role." + role));
separator = ", ";
}
}
%>
--%>
 
 
 
 
<%
if (ProfileForm.getUserView().getUser() instanceof Teacher || ProfileForm.getUserView().getUser() instanceof Student)
{
%>
 
<%
if (ProfileForm.getUserView().getUser() instanceof Teacher)
{
%>
<p class="lead"><bean:message key="profile.teacher.courses"/></p>
<%
}
else
{
%>
<p class="lead"><bean:message key="profile.student.courses"/></p>
<%
}
%>
 
 
<logic:present name="ProfileForm" property="userView.courses">
<ul>
<logic:iterate id="course" name="ProfileForm" property="userView.courses">
<li>
<bean:write name="course" property="name"/>
<ul>
<logic:iterate id="courseUnit" name="course" property="courseUnits">
<li>
(<bean:write name="courseUnit" property="importYear"/>) <html:link action="${user}/startLoadCourseUnit${fromAction}?courseUnitView.id=${courseUnit.id}"><bean:write name="courseUnit" property="name"/> (<bean:write name="courseUnit" property="code"/>)</html:link>
</li>
</logic:iterate>
</ul>
</li>
</logic:iterate>
</ul>
</logic:present>
<%
}
%>
 
<%
if (ProfileForm.getUserView().getUser() instanceof Teacher)
{
%>
 
 
<logic:present name="ProfileForm" property="userView.responsableCourseUnits">
<p class="lead"><bean:message key="courseunit.responsable"/></p>
<ul>
<logic:iterate id="courseUnit" name="ProfileForm" property="userView.responsableCourseUnits">
<li>
(<bean:write name="courseUnit" property="importYear"/>) <html:link action="${user}/startLoadCourseUnit${fromAction}?courseUnitView.id=${courseUnit.id}"><bean:write name="courseUnit" property="name"/> (<bean:write name="courseUnit" property="code"/>)</html:link>
</li>
</logic:iterate>
</ul>
</logic:present>
<%
}
%>
 
<%
if(ProfileForm.getUserView().getCreatorRecords() != null && ProfileForm.getUserView().getCreatorRecords().size() > 0)
{
%>
<div class="seccao">
<h1><bean:message key="profile.creator.records"/></h1>
<%
List thesisViews = ProfileForm.getUserView().getCreatorRecords(RecordEnum.RECORD_THESIS);
if(thesisViews != null && thesisViews.size() > 0)
{
request.setAttribute("RecordViews",thesisViews);
%>
<div class="seccao">
<h2>
<%=MessageResources.getMessage(request,"profile." + RecordEnum.RECORD_THESIS.getTypeStr())%>
</h2>
<jsp:include page="/public/profile/recordViews.jsp"/>
</div>
<%
}
 
 
 
List jobViews = ProfileForm.getUserView().getCreatorRecords(RecordEnum.RECORD_JOB);
if(jobViews != null && jobViews.size() > 0)
{
request.setAttribute("RecordViews",jobViews);
%>
<div class="seccao">
<h2>
<%=MessageResources.getMessage(request,"profile." + RecordEnum.RECORD_JOB.getTypeStr())%>
</h2>
<jsp:include page="/public/profile/recordViews.jsp"/>
</div>
<%
}
 
 
 
List eventViews = ProfileForm.getUserView().getCreatorRecords(RecordEnum.RECORD_EVENT_ORGANIZATION);
if(eventViews != null && eventViews.size() > 0)
{
request.setAttribute("RecordViews",eventViews);
%>
<div class="seccao">
<h2>
<%=MessageResources.getMessage(request,"profile." + RecordEnum.RECORD_EVENT_ORGANIZATION.getTypeStr())%>
</h2>
<jsp:include page="/public/profile/recordViews.jsp"/>
</div>
<%
}
 
 
List otherViews = ProfileForm.getUserView().getCreatorRecords(RecordEnum.RECORD_OTHER);
if(otherViews != null && otherViews.size() > 0)
{
request.setAttribute("RecordViews",otherViews);
%>
<div class="seccao">
<h2>
<%=MessageResources.getMessage(request,"profile." + RecordEnum.RECORD_OTHER.getTypeStr())%>
</h2>
<jsp:include page="/public/profile/recordViews.jsp"/>
</div>
<%
}
 
 
 
List paperViews = ProfileForm.getUserView().getCreatorRecords(RecordEnum.RECORD_PAPER);
if(paperViews != null && paperViews.size() > 0)
{
request.setAttribute("RecordViews",paperViews);
%>
<div class="seccao">
<h2>
<%=MessageResources.getMessage(request,"profile." + RecordEnum.RECORD_PAPER.getTypeStr())%>
</h2>
<jsp:include page="/public/profile/recordViews.jsp"/>
</div>
<%
}
 
 
 
List projectViews = ProfileForm.getUserView().getCreatorRecords(RecordEnum.RECORD_PROJECT);
if(projectViews != null && projectViews.size() > 0)
{
request.setAttribute("RecordViews",projectViews);
%>
<div class="seccao">
<h2>
<%=MessageResources.getMessage(request,"profile." + RecordEnum.RECORD_PROJECT.getTypeStr())%>
</h2>
<jsp:include page="/public/profile/recordViews.jsp"/>
</div>
<%
}
%>
</div>
<%
}
%>
<%
if(ProfileForm.getUserView().getContributorRecords() != null && ProfileForm.getUserView().getContributorRecords().size() > 0)
{
%>
<div class="seccao">
<h1><bean:message key="profile.contributor.records"/></h1>
<%
List thesisViews = ProfileForm.getUserView().getContributorRecords(RecordEnum.RECORD_THESIS);
if(thesisViews != null && thesisViews.size() > 0)
{
request.setAttribute("RecordViews",thesisViews);
 
}
%>
</div>
<%
}
%>
/branches/v3/impl/src/web/public/announcements/announcementsPortalLeft.jsp
21,7 → 21,7
IServiceManager sm = ServiceManager.getInstance();
String subTarget = null;
String[] names = new String[]{};
Object[] args = new Object[]{request.getParameter("role"), Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS + "," +Globals.ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS, subTarget};
Object[] args = new Object[]{request.getParameter("role"), Globals.ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS, subTarget};
List<AnnouncementView> announcementViews = (List<AnnouncementView>) sm.execute(RequestUtils.getRequester(request, response), "LoadRoleTypeMaxAnnouncements", args, names);
request.setAttribute("Announcements", announcementViews);
 
/branches/v3/impl/src/web/user/courses/directedCoordinatedCourses.jsp
56,72 → 56,94
<html:form styleClass="form-horizontal" action="${user}/courseController${fromAction}${from}" enctype="multipart/form-data">
<input type="hidden" name="dispatch" value="updateDirectedCoordininatedCourses">
<input type="hidden" name="fromDispatch" value="${fromDispatch}"/>
<html:hidden property="forUser"/>
 
<div class="panel panel-default">
<div class="panel-heading"><bean:message key="courseunit.programs"/></div>
<div class="panel-body">
 
<div class="form-group">
<label class="control-label col-sm-4" for="institutionCode"><bean:message key="institution"/></label>
<div class="col-sm-6">
<html:select styleId="institutionCode" styleClass="form-control" property="institutionCode" onchange="set(this.form,'${fromDispatch}');this.form.submit()">
<option value="">Todas</option>
<html:option value="1">Escola Superior de Tecnologia e Gestão (3122)</html:option>
<html:option value="2">Escola Superior Agrária de Elvas (3123)</html:option>
<html:option value="3">Escola Superior de Educação (3121) </html:option>
<html:option value="4">Escola Superior de Saúde (7055)</html:option>
<html:option value="5">Escola Superior de Educação - Post. Graduação</html:option>
<html:option value="6">Instituto Politécnico de Portalegre (3120)</html:option>
</html:select>
<logic:empty name="CourseForm" property="forUser">
<div class="form-group">
<label class="control-label col-sm-4" for="institutionCode"><bean:message key="institution"/></label>
<div class="col-sm-6">
<html:select styleId="institutionCode" styleClass="form-control" property="institutionCode" onchange="set(this.form,'${fromDispatch}');this.form.submit()">
<option value="">Todas</option>
<html:option value="1">Escola Superior de Tecnologia e Gestão (3122)</html:option>
<html:option value="2">Escola Superior Agrária de Elvas (3123)</html:option>
<html:option value="3">Escola Superior de Educação (3121) </html:option>
<html:option value="4">Escola Superior de Saúde (7055)</html:option>
<html:option value="5">Escola Superior de Educação - Post. Graduação</html:option>
<html:option value="6">Instituto Politécnico de Portalegre (3120)</html:option>
</html:select>
</div>
</div>
</div>
</logic:empty>
<logic:notEmpty name="CourseForm" property="forUser">
<html:hidden property="institutionCode"/>
</logic:notEmpty>
<div class="form-horizontal-small">
<div class="form-group">
<label class="control-label col-sm-4" for="year"><bean:message key="course.program.courses.choose.year"/></label>
<div class="col-sm-6">
<html:select styleId="year" styleClass="form-control" property="importYear" onchange="set(this.form,'${fromDispatch}');this.form.submit()">
<logic:iterate id="importYear" name="importYears">
<html:option value="${importYear}"/>
</logic:iterate>
</html:select>
<logic:empty name="CourseForm" property="forUser">
<html:select styleId="year" styleClass="form-control" property="importYear" onchange="set(this.form,'${fromDispatch}');this.form.submit()">
<logic:iterate id="importYear" name="importYears">
<html:option value="${importYear}"/>
</logic:iterate>
</html:select>
</logic:empty>
<logic:notEmpty name="CourseForm" property="forUser">
<html:hidden property="importYear"/>
<label class="control-label">${CourseForm.importYear}</label>
</logic:notEmpty>
</div>
</div>
 
<div class="form-group">
<label class="control-label col-sm-4" for="semestre"><bean:message key="courseunit.semestre"/></label>
<div class="col-sm-6">
<html:select styleId="semestre" styleClass="form-control" property="semestre" onchange="set(this.form,'${fromDispatch}');this.form.submit()">
<option value=""><bean:message key="courseunit.ALL"/></option>
<html:option value="A" key="courseunit.A"/>
<html:option value="S1" key="courseunit.S1"/>
<html:option value="S2" key="courseunit.S2"/>
<html:option value="T1" key="courseunit.T1"/>
<html:option value="T2" key="courseunit.T2"/>
<html:option value="T3" key="courseunit.T3"/>
<html:option value="T4" key="courseunit.T4"/>
</html:select>
<html:select styleId="semestre" styleClass="form-control" property="semestre" onchange="set(this.form,'${fromDispatch}');this.form.submit()">
<option value=""><bean:message key="courseunit.ALL"/></option>
<html:option value="A" key="courseunit.A"/>
<html:option value="S1" key="courseunit.S1"/>
<html:option value="S2" key="courseunit.S2"/>
<html:option value="T1" key="courseunit.T1"/>
<html:option value="T2" key="courseunit.T2"/>
<html:option value="T3" key="courseunit.T3"/>
<html:option value="T4" key="courseunit.T4"/>
</html:select>
 
</div>
</div>
 
<div class="form-group">
<label class="control-label col-sm-4" for="departamento"><bean:message key="departamento"/></label>
<div class="col-sm-6">
<html:select styleId="departamento" styleClass="form-control" property="area" onchange="set(this.form,'${fromDispatch}');this.form.submit()">
<option value=""><bean:message key="departamentos.all"/></option>
<logic:iterate id="area" name="CourseForm" property="areas">
<html:option value="${area}" key="area.${area}"/>
</logic:iterate>
</html:select>
<logic:empty name="CourseForm" property="forUser">
<div class="form-group">
<label class="control-label col-sm-4" for="departamento"><bean:message key="departamento"/></label>
<div class="col-sm-6">
<html:select styleId="departamento" styleClass="form-control" property="area" onchange="set(this.form,'${fromDispatch}');this.form.submit()">
<option value=""><bean:message key="departamentos.all"/></option>
<logic:iterate id="area" name="CourseForm" property="areas">
<html:option value="${area}" key="area.${area}"/>
</logic:iterate>
</html:select>
</div>
</div>
</div>
 
</logic:empty>
<logic:notEmpty name="CourseForm" property="forUser">
<html:hidden property="area"/>
</logic:notEmpty>
<div class="form-group">
<label class="control-label col-sm-4" for="course"><bean:message key="courseunit.course"/></label>
<div class="col-sm-6">
<html:select styleId="course" styleClass="form-control" property="courseId" onchange="set(this.form,'${fromDispatch}');this.form.submit()">
<html:option value="" key="courses.all"/>
<logic:iterate id="courseView" name="courses" type="pt.estgp.estgweb.domain.views.CourseView">
<html:option value="${courseView.id}">(${courseView.code}) ${courseView.name}</html:option>
<logic:empty name="CourseForm" property="forUser">
<html:option value="${courseView.id}">(${courseView.code}) ${courseView.name}</html:option>
</logic:empty>
<logic:notEmpty name="CourseForm" property="forUser">
<baco:hasRole role="${courseView.validationRole}">
<html:option value="${courseView.id}">(${courseView.code}) ${courseView.name}</html:option>
</baco:hasRole>
</logic:notEmpty>
</logic:iterate>
</html:select>
</div>
/branches/v3/impl/src/web/user/courseunits/ftpClient.jsp
6,5 → 6,47
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<script>
var jsonFiles = JSON.parse('${CourseUnitView.courseUnit.filesJson}');
function searchFilesUnit(){
$(".searchResults").html("<div class=\"files\"><table></table></div>");
var text = $("#searchFiles").val().toLowerCase();
jsonFiles.forEach(function(item){
if (item.filename.toLowerCase().search(text) != -1) {
$(".searchResults .files table").append(
"<tr class=\"file\">" +
"<td>" +
"<img src=\"<%=request.getContextPath()%>/imgs/mime/" + item.extension +".gif\"/>" +
" <a href=\"<%=request.getContextPath()%>/ftpProxyStream/ionline" + item.fileCompletePathEncoded + "\">" +
item.file +
"</a>"+
"</td>" +
"<td>" + item.lastmodifieddate + "</td>" +
"<td>" + item.size + "</td>" +
"</tr>"
 
);
}
});
}
$(document).ready(
function(){
$(".ftpClientPanel .panel-heading").append(
"<span class=\"pull-right\"><input type=\"text\" id=\"searchFiles\"><button class=\"btn btn-default\" id=\"searchFilesBtn\" type=\"button\"><span class=\"glyphicon glyphicon-search\"></button></span>"
 
);
$(".ftpClientPanel .panel-heading").after(
"<div class=\"panel-body searchResults\"></div>"
);
 
$("#searchFilesBtn").click(searchFilesUnit);
$('#searchFiles').bind("keypress", function(e) {
if (e.keyCode == 13) {
searchFilesUnit();
}
});
}
);
</script>
<jsp:include page="/user/ftpclient/ftpclient.jsp"/>
/branches/v3/impl/src/web/user/courseunits/courseunitsStatistics.jsp
New file
0,0 → 1,141
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnit" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.web.utils.DatesUtils" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<baco:clearOperation name="CourseUnitView" property="courseUnit" op="STATISTICS_CAN_VIEW">
<%
long courseUnitId = CourseUnitView.getId();
AbstractDao.getCurrentSession().beginTransaction();
 
CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(courseUnitId);
request.setAttribute("cu",cu);
 
%>
 
<div class="panel panel-default">
<div class="panel-heading"><bean:message key="course.unit.stats"/> Visiveis apenas aos Docentes da unidade e à Comissão de Curso</div>
<div class="panel-body">
(dados atualizados a cada 24 horas)
<h3>Gerais</h3>
<table class="tablesorter-blue">
<tbody>
<tr>
<th>Anúncios</th>
<td>${cu.statanuncios}</td>
</tr>
<tr>
<th>Posts no Blog</th>
<td>${cu.statblogPosts}</td>
</tr>
<tr>
<th>Estudantes</th>
<td>${cu.statstudentsCount}</td>
</tr>
<tr>
<th>Docentes</th>
<td>${cu.statteachersCount}</td>
</tr>
<tr>
<th>Trabalhos</th>
<td>${cu.statworks}</td>
</tr>
</tbody>
</table>
<h3>Ficheiros</h3>
<table class="tablesorter-blue">
<tbody>
<tr>
<th>Ficheiros de Conteúdos</th>
<td>${cu.statcontentsFiles}</td>
</tr>
<tr>
<th>Pastas de Conteúdos</th>
<td>${cu.statcontentsFolders}</td>
</tr>
<tr>
<th>Tamanho Total</th>
<td><%=cu.getStatcontentsSize()/1024/1024%> MB</td>
</tr>
<tr>
<th>Última atualização</th>
<td><%=DatesUtils.getStringFromDateWithMinutesAndSeconds(cu.getStatcontentsLastUpdate())%></td>
</tr>
</tbody>
</table>
 
<h3>Dossier Técnico Pedagógico</h3>
<table class="tablesorter-blue">
<tbody>
<tr>
<th>Planeamento</th>
<td>${cu.statdtpPlaneamentoFiles}</td>
<td> (alterado a <%=DatesUtils.getStringFromDate(cu.getStatdtpPlaneamentoLastUpdate())%>)</td>
</tr>
<tr>
<th>Ficha de Avaliação</th>
<td><%=cu.isStatdtpFichaCurricularValid()?"Válido":"Inválido"%></td>
<td> (alterado a <%=DatesUtils.getStringFromDate(cu.getStatdtpFichaCurricularLastUpdate())%>)</td>
</tr>
 
<tr>
<th>Sumários Lançados</th>
<td>${cu.statdtpSumaries}</td>
<td></td>
</tr>
<tr>
<th>Sumários Pre-Lançados</th>
<td>${cu.statdtpSumariesPrelancados}</td>
<td></td>
</tr>
<tr>
<th>Sumários em falta</th>
<td>${cu.statdtpSumariesMissing}</td>
<td></td>
</tr>
 
 
<tr>
<th>Pautas de Avaliação</th>
<td>${cu.statdtpAvaliacaoPautasFiles} </td>
<td>(alterado a <%=DatesUtils.getStringFromDate(cu.getStatdtpAvaliacaoPautasLastUpdate())%>)</td>
</tr>
 
<tr>
<th>Enunciados de Avaliação</th>
<td>${cu.statdtpAvaliacaoEnunciadosFiles} </td>
<td>(alterado a <%=DatesUtils.getStringFromDate(cu.getStatdtpAvaliacaoEnunciadosLastUpdate())%></td>
</tr>
 
<tr>
<th>Relatório de Avaliação</th>
<td>${cu.statdtpEvaluationReportState}</td>
<td> ( alterado a <%=DatesUtils.getStringFromDate(cu.getStatdtpEvaluationReportLastUpdate())%></td>
</tr>
<tr>
<th>Inquerito Pedagógico Ficheiros</th>
<td>${cu.statdtpInqueritoPedagogicoFiles}</td>
<td> ( alterado a <%=DatesUtils.getStringFromDate(cu.getStatdtpInqueritoPedagogicoFilesLastUpdate())%></td>
</tr>
 
</tbody>
</table>
 
 
</div>
</div>
 
<%
 
 
AbstractDao.getCurrentSession().getTransaction().commit();
%>
</baco:clearOperation>
/branches/v3/impl/src/web/user/courseunits/courseunit.jsp
88,6 → 88,8
%>
</baco:isAuthenticated>
 
 
 
<html:form styleClass="form" action="/user/courseUnitControllerFromHome" enctype="multipart/form-data">
<input type="hidden" name="dispatch" value="update"/>
<html:hidden property="courseUnitView.id"/>
421,18 → 423,67
}
%>--%>
<div class="list-group">
<div class="list-group-item">
<label >
Filtrar:
</label>
 
<input id="summariesFilterInput" type="text" style="width: 80%"/>
<script>
$.extend($.expr[':'], {
'containsi': function(elem, i, match, array)
{
return (elem.textContent || elem.innerText || '').toLowerCase()
.indexOf((match[3] || "").toLowerCase()) >= 0;
}
});
$(document).ready(
function(){
 
$("#summariesFilterInput").unbind("click");
$('#summariesFilterInput').bind("keypress", function(e) {
if (e.keyCode == 13) {
e.preventDefault();
return false;
}
});
$("#summariesFilterInput").keyup(
function(){
if($("#summariesFilterInput").val()=="")
{
$(".summary").show();
}
else
{
$(".summary").show();
$(".summary").each(
function()
{
if($(this).find("*:containsi('"+$("#summariesFilterInput").val()+"')").length == 0)
{
$(this).hide();
}
}
);
}
}
);
}
);
</script>
</div>
<logic:iterate id="summary" name="CourseUnitView" property="summariesFromJson" type="pt.estgp.estgweb.domain.views.CourseUnitSummaryView">
 
<div class="list-group-item list-group-item-heading">Aula ${summary.number} - ${summary.title}</div>
<div class="list-group-item">
<span class="label label-info">${summary.tipoAula}</span>
<span class="badge">${summary.codigoDocente}</span>
${summary.description}
<div class="summary" id="summary${summary.number}">
<div class="list-group-item list-group-item-heading">Aula ${summary.number} - ${summary.title}</div>
<div class="list-group-item">
<span class="label label-info">${summary.tipoAula}</span>
<span class="badge">${summary.codigoDocente}</span>
${summary.description}
</div>
<div class="list-group-item list-group-item-footer">
${summary.date} - ${summary.horas} Horas - ${summary.students} <bean:message key="courseunit.summary.present.students"/>
</div>
</div>
<div class="list-group-item list-group-item-footer">
${summary.date} - ${summary.horas} Horas - ${summary.students} <bean:message key="courseunit.summary.present.students"/>
</div>
 
</logic:iterate>
</div>
</logic:notEmpty>
/branches/v3/impl/src/web/user/courseunits/menu.jsp
112,6 → 112,11
</li>
</baco:canEditCourseUnitProgram>
 
<baco:clearOperation name="CourseUnitView" property="courseUnit" op="STATISTICS_CAN_VIEW">
<li>
<html:link action="/user/startLoadCourseUnitStatsFromHome?courseUnitView.id=${CourseUnitView.id}"><bean:message key="course.unit.stats"/></html:link>
</li>
</baco:clearOperation>
<baco:isTeacherOfCourseUnit courseUnitId="${CourseUnitView.id}">
<li>
<html:link action="/user/startSubmitAnnouncementFromCourseUnit?announcementView.courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.put.announcement"/></html:link>
/branches/v3/impl/src/web/user/courseunits/submitCourseComissionMessage.jsp
New file
0,0 → 1,219
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.domain.UserSession" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
 
 
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
 
<%
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{};
List<String> importYears = (List<String>) sm.execute(RequestUtils.getRequester(request, response), "LoadCoursesImportYears", args, names);
request.setAttribute("importYears", importYears);
%>
 
<logic:present name="MessagesForm">
<logic:notEmpty name="MessagesForm" property="text">
<script>
$(document).ready(
function(){
setText();
}
);
 
function setText()
{
$("#editor").html('<bean:write name="MessagesForm" property="text" filter="false"/>');
}
 
</script>
</logic:notEmpty>
</logic:present>
 
<div class="panel panel-default">
<div class="panel-body">
<jomm:messages/>
<html:errors/>
 
 
<html:form styleClass="form-horizontal" action="/user/submitMessageCourseComission" enctype="multipart/form-data" onsubmit="this.form.text.value=$('#editor').html()">
<input type="hidden" name="dispatch" value="sendMessage" >
<html:hidden property="text"/>
<html:hidden styleId="sendAnnouncementLike" property="fromRole" value="courseCoordinator"/>
<div class="form-group row">
<div class="control-label col-sm-2" for="sendAnnouncementEmail"><bean:message key="announcement.sendAnnouncementEmail"/></div>
<div class="col-sm-10">
<html:text styleId="sendAnnouncementEmail" styleClass="form-control" property="fromEmail"/>
</div>
</div>
 
 
<div class="form-group row">
<div class="control-label col-sm-2" for="year"><bean:message key="submit.todo.message.year"/></div>
<div class="col-sm-10">
<html:select styleId="year" styleClass="form-control" property="importYear" onchange="set(this.form,'loadCourses');this.form.submit()">
<option value=""><bean:message key="submit.todo.message.all"/></option>
<logic:iterate id="importYear" name="importYears">
<html:option value="${importYear}"/>
</logic:iterate>
</html:select>
</div>
</div>
 
 
<div class="form-group row">
<div class="control-label col-sm-2" for="course"><bean:message key="courseunit.course"/></div>
<div class="col-sm-10">
<html:select styleId="course" styleClass="form-control" property="courseId" onchange="this.form.text.value=$('#editor').html();set(this.form,'loadCourse');this.form.submit()">
<logic:notEmpty name="MessagesForm" property="courseViews">
<logic:iterate id="courseView" name="MessagesForm" property="courseViews" type="pt.estgp.estgweb.domain.views.CourseView">
<%
if(UserSession.getUser().hasRole(courseView.getValidationRole()))
{
%>
<html:option value="${courseView.id}">(${courseView.code}) ${courseView.name}</html:option>
<%
}
%>
</logic:iterate>
</logic:notEmpty>
</html:select>
</div>
</div>
 
<logic:notEmpty name="MessagesForm" property="courseView">
 
<div class="form-group row">
<div class="control-label col-sm-2" for="semestre"><bean:message key="courseunit.semestre"/></div>
<div class="col-sm-10">
<html:select styleId="semestre" styleClass="form-control" property="semestre" onchange="this.form.text.value=$('#editor').html();set(this.form,'loadCourse');this.form.submit()">
<html:option value="" key="submit.todo.message.all"/>
<html:option value="S1"><bean:message key="courseunit.S1"/></html:option>
<html:option value="S2"><bean:message key="courseunit.S2"/></html:option>
<html:option value="T1"><bean:message key="courseunit.T1"/></html:option>
<html:option value="T2"><bean:message key="courseunit.T2"/></html:option>
<html:option value="T3"><bean:message key="courseunit.T3"/></html:option>
<html:option value="T4"><bean:message key="courseunit.T4"/></html:option>
</html:select>
</div>
</div>
 
 
</logic:notEmpty>
 
<logic:notEmpty name="MessagesForm" property="courseView">
<div class="form-group row">
<div class="control-label col-sm-2" for="unit"><bean:message key="courseunit.menu.unit"/></div>
<div class="col-sm-10">
<html:select styleId="unit" styleClass="form-control" property="courseUnitId">
<html:option value="" key="submit.todo.message.all"/>
<logic:iterate id="courseUnitView" name="MessagesForm" property="courseView.courseUnits" type="pt.estgp.estgweb.domain.views.CourseUnitView">
<html:option value="${courseUnitView.id}">(${courseUnitView.code}) ${courseUnitView.name}</html:option>
</logic:iterate>
</html:select>
</div>
</div>
</logic:notEmpty>
 
 
<div class="form-group row">
<div class="control-label col-sm-2" for="person"><bean:message key="submit.todo.message.target.person"/></div>
<div class="col-sm-10">
<html:select styleId="person" styleClass="form-control" property="target">
<html:option value="students" key="submit.todo.message.students"/>
<html:option value="teachers" key="submit.todo.message.teachers"/>
<html:option value="teachers.students" key="submit.todo.message.teachers.students"/>
</html:select>
</div>
</div>
 
<div class="form-group row">
<div class="control-label col-sm-2" for="sendAnnouncementEmail"><bean:message key="submit.todo.message.subject"/></div>
<div class="col-sm-10">
<html:text styleId="subject" styleClass="form-control" property="subject"/>
</div>
</div>
 
 
<div class="form-group row">
<div class="col-sm-12">
<div class="btn-toolbar" data-role="editor-toolbar" data-target="#editor">
<!-- <div class="btn-group">
<a class="btn dropdown-toggle" data-toggle="dropdown" title="Font"><i class="aweicon-font"></i><b class="caret"></b></a>
<ul class="dropdown-menu">
</ul>
</div>
<div class="btn-group">
<a class="btn dropdown-toggle" data-toggle="dropdown" title="Font Size"><i class="aweicon-text-height"></i>&nbsp;<b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a data-edit="fontSize 5"><font size="5">Huge</font></a></li>
<li><a data-edit="fontSize 3"><font size="3">Normal</font></a></li>
<li><a data-edit="fontSize 1"><font size="1">Small</font></a></li>
</ul>
</div>-->
<div class="btn-group">
<a class="btn btn-default" data-edit="bold" title="Bold (Ctrl/Cmd+B)"><i class="aweicon-bold"></i></a>
<a class="btn btn-default" data-edit="italic" title="Italic (Ctrl/Cmd+I)"><i class="aweicon-italic"></i></a>
<a class="btn btn-default" data-edit="strikethrough" title="Strikethrough"><i class="aweicon-strikethrough"></i></a>
<a class="btn btn-default" data-edit="underline" title="Underline (Ctrl/Cmd+U)"><i class="aweicon-underline"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-default" data-edit="insertunorderedlist" title="Bullet list"><i class="aweicon-list-ul"></i></a>
<a class="btn btn-default" data-edit="insertorderedlist" title="Number list"><i class="aweicon-list-ol"></i></a>
<a class="btn btn-default" data-edit="outdent" title="Reduce indent (Shift+Tab)"><i class="aweicon-indent-left"></i></a>
<a class="btn btn-default" data-edit="indent" title="Indent (Tab)"><i class="aweicon-indent-right"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-default" data-edit="justifyleft" title="Align Left (Ctrl/Cmd+L)"><i class="aweicon-align-left"></i></a>
<a class="btn btn-default" data-edit="justifycenter" title="Center (Ctrl/Cmd+E)"><i class="aweicon-align-center"></i></a>
<a class="btn btn-default" data-edit="justifyright" title="Align Right (Ctrl/Cmd+R)"><i class="aweicon-align-right"></i></a>
<a class="btn btn-default" data-edit="justifyfull" title="Justify (Ctrl/Cmd+J)"><i class="aweicon-align-justify"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-default dropdown-toggle" data-toggle="dropdown" title="Hyperlink"><i class="aweicon-link"></i></a>
<div class="dropdown-menu input-append">
<input class="span2" placeholder="URL" type="text" data-edit="createLink"/>
<button class="btn" type="button">Add</button>
</div>
<a class="btn btn-default" data-edit="unlink" title="Remove Hyperlink"><i class="aweicon-cut"></i></a>
 
</div>
 
<div class="btn-group">
<a class="btn btn-default" title="Insert picture (or just drag & drop)" id="pictureBtn"><i class="aweicon-picture"></i></a>
<input type="file" data-role="magic-overlay" data-target="#pictureBtn" data-edit="insertImage" />
</div>
<div class="btn-group">
<a class="btn btn-default" data-edit="undo" title="Undo (Ctrl/Cmd+Z)"><i class="aweicon-undo"></i></a>
<a class="btn btn-default" data-edit="redo" title="Redo (Ctrl/Cmd+Y)"><i class="aweicon-repeat"></i></a>
</div>
 
</div>
 
<div id="editor">
<bean:message key="submit.todo.email.content"/>&hellip;
</div>
</div>
</div>
 
<button class="btn btn-success" onclick="this.form.text.value=$('#editor').html(); this.form.submit()"><bean:message key="submit.todo.message"/></button>
 
 
 
</html:form>
 
</div>
</div>
 
 
/branches/v3/impl/src/web/user/ftpclient/ftpclient.jsp
108,7 → 108,7
</div>
</div>
 
<div class="panel panel-default">
<div class="panel panel-default ftpClientPanel">
<div class="panel-heading">
<a class="btn btn-sm btn-warning" href="javascript:showOrHideOneWithStartId('FTP_NODE_')"><span class="glyphicon glyphicon-remove"> </span> Ver Comandos de Remoção de Ficheiros</a>
 
/branches/v3/impl/src/web/user/home/teacher.jsp
14,7 → 14,7
<%@ page import="pt.estgp.estgweb.domain.dao.impl.CourseUnitDaoImpl" %>
<%@ page import="pt.estgp.estgweb.utils.DatesUtils" %>
<%@ page import="java.util.List" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSessionImpl" scope="request"/>
 
<!-- PARA BOOTSTRAP NOVO PORTAL-->
<%--<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/offcanvas.css"/>--%>
30,7 → 30,26
 
<div class="row">
<div class="col-md-6 col-sm-12 col-xs-12" style="padding-right: 6px">
 
<baco:isModuleOn module="courseunits">
<div class="panel panel-primary">
<div class="panel-heading"><bean:message key="intranet.home.curricular"/></div>
<div class="panel-body">
<!--<p><bean:message key="intranet.home.curricular"/></p>-->
<!--<ul>
<li>-->
<div class="list-group">
<div class="list-group-item">
<html:link action="/user/startLoadCoursesProgramsFromHome"><bean:message key="courseunit.indexes"/></html:link>
</div>
<div class="list-group-item">
<html:link action="/user/courseComissions"><bean:message key="course.comissions"/></html:link>
</div>
</div>
<!--</li>
</ul>-->
</div>
</div>
 
 
<%
130,26 → 149,50
</div>
<div class="col-md-6 col-sm-12 col-xs-12" style="padding-left: 6px">
 
<%
if(UserSession.getUser().getRoles().indexOf("courseValidateProgram")>=0)
{
%>
<div class="panel panel-primary">
<div class="panel-heading">As minhas Comissões de Curso</div>
<div class="panel-body">
 
<div class="panel panel-primary">
<div class="panel-heading"><bean:message key="intranet.home.curricular"/></div>
<div class="panel-body">
<!--<p><bean:message key="intranet.home.curricular"/></p>-->
<!--<ul>
<li>-->
<div class="list-group">
<div class="list-group-item">
<html:link action="/user/startLoadCoursesProgramsFromHome"><bean:message key="courseunit.indexes"/></html:link>
<div class="list-group">
<div class="list-group-item">
<html:link action="/user/startSubmitMessageCourseComission">
Enviar email aos alunos
</html:link>
</div>
<div class="list-group-item">
<html:link action="/user/courseComissions">Consultar estatisticas das Unidades Curriculares</html:link>
</div>
<div class="list-group-item">
<html:link action="/user/listStudentsCourseComission">
Consultar Alunos
</html:link>
</div>
<div class="list-group-item">
<html:link action="/user/startSubmitMessageCourseComission">
Consultar Docentes
</html:link>
</div>
<div class="list-group-item">
<html:link action="/user/startLoadCoursesProgramsFromHome?importYear=${UserSession.nowConfiguration.interfaceImportYear}&forUser=courseCommission">Atalho para as validações (${UserSession.nowConfiguration.interfaceImportYear})</html:link>
</div>
<div class="list-group-item">
<html:link action="/user/startLoadCoursesProgramsFromHome?importYear=${UserSession.nowConfiguration.previousInterfaceImportYear}&forUser=courseCommission">Atalho para as validações (${UserSession.nowConfiguration.previousInterfaceImportYear})</html:link>
</div>
</div>
<!--</li>
</ul>-->
</div>
<div class="list-group-item">
<html:link action="/user/courseComissions"><bean:message key="course.comissions"/></html:link>
</div>
</div>
<!--</li>
</ul>-->
</div>
</div>
<jsp:include page="courseComission.jsp"/>
<%
}
%>
 
 
<%
try{
HibernateUtils.getCurrentSession().beginTransaction();
240,8 → 283,8
}
%>
 
<jsp:include page="courseComission.jsp"/>
 
 
</div>
</div>
 
/branches/v3/impl/src/web/user/home/user.jsp
11,43 → 11,33
 
<div class="row">
<div class="col-md-6 col-sm-12 col-xs-12">
<div class="panel panel-primary">
<div class="panel-heading"><bean:message key="intranet.home.curricular"/></div>
<div class="panel-body">
<div class="list-group">
 
<div class="list-group-item"><html:link action="/user/startLoadCoursesProgramsFromHome"><bean:message key="courseunit.indexes"/> </html:link></div>
<div class="list-group-item">
<a href="<%=request.getContextPath()%>/dir/utilsIntranet/horarios/intranet/escola/horarios.html">Horários</a>
 
<baco:hasRole role="admin,all,services">
<div class="panel panel-primary">
<div class="panel-heading">Configurações do Sistema Baco V3</div>
<div class="panel-body">
<div class="list-group">
<div class="list-group-item"><html:link action="/admin/configurations.do">Configurações Gerais do Sistema</html:link></div>
<div class="list-group-item"><html:link action="/user/configurationGrades.do"><bean:message key="configuration.grades"/></html:link></div>
<div class="list-group-item"><html:link action="/user/configurationDirectories.do"><bean:message key="configuration.directories"/></html:link></div>
<div class="list-group-item"><html:link action="/user/configurationSchedulleTasks.do"><bean:message key="configuration.tasks"/></html:link></div>
<div class="list-group-item"><a href="<%=request.getContextPath()%>/user/configurationUserRoles.do"><bean:message key="configuration.roles"/></a></div>
</div>
<div class="list-group-item">
<a href="<%=request.getContextPath()%>/dir/utilsIntranet/calEscolar/public/portal/CL20102011.pdf">Calendário Escolar</a>
</div>
<div class="list-group-item">
<a href="<%=request.getContextPath()%>/dir/utilsIntranet/secretaria/intranet/escola/secretaria.html">Secretaria</a>
</div>
<baco:hasRole role="admin,all,services,administrativeCouncil,courseCoordinator,courseDirector,scientificCouncil,pedagogicCouncil">
 
 
</baco:hasRole>
</div>
</div>
</div>
</baco:hasRole>
<baco:hasRole role="admin,all,services">
<div class="panel panel-primary">
<div class="panel-heading">Ferramentas Académicas</div>
<div class="panel-body">
<div class="list-group">
<baco:hasRole role="pedagogicCouncil">
<baco:hasRole role="pedagogicCouncil,all">
<div class="list-group-item"><html:link action="/user/coursePedagogicContents"><bean:message key="course.pedagogic.contents.admin"/> </html:link></div>
</baco:hasRole>
<baco:isAdmin>
<div class="list-group-item"><html:link action="/admin/courseUnitsDeleteAdmin">Administração de Unidades Curriculares (Remoções)</html:link></div>
</baco:isAdmin>
<div class="list-group-item"><html:link action="/user/configurationGrades">Épocas de Avaliação</html:link></div>
<baco:isAdmin>
<div class="list-group-item"><a href="<%=request.getContextPath()%>/user/configurationUserRoles.do"><bean:message key="configuration.roles"/></a></div>
</baco:isAdmin>
<div class="list-group-item">Situação de Propinas de Alunos (Por implementar)</div>
<div class="list-group-item"><html:link action="/user/findProfile"><bean:message key="profile.search.user"/></html:link></div>
<div class="list-group-item"><html:link action="/user/startFindCourseUnitAdminFromServiceZone"><bean:message key="courseunit.search"/></html:link></div>
86,6 → 76,28
</div>
<div class="col-md-6 col-sm-12 col-xs-12">
<div class="panel panel-primary">
<div class="panel-heading"><bean:message key="intranet.home.curricular"/></div>
<div class="panel-body">
<div class="list-group">
 
<div class="list-group-item"><html:link action="/user/startLoadCoursesProgramsFromHome"><bean:message key="courseunit.indexes"/> </html:link></div>
<div class="list-group-item">
<a href="<%=request.getContextPath()%>/dir/utilsIntranet/horarios/intranet/escola/horarios.html">Horários</a>
</div>
<div class="list-group-item">
<a href="<%=request.getContextPath()%>/dir/utilsIntranet/calEscolar/public/portal/CL20102011.pdf">Calendário Escolar</a>
</div>
<div class="list-group-item">
<a href="<%=request.getContextPath()%>/dir/utilsIntranet/secretaria/intranet/escola/secretaria.html">Secretaria</a>
</div>
<baco:hasRole role="admin,all,services,administrativeCouncil,courseCoordinator,courseDirector,scientificCouncil,pedagogicCouncil">
 
 
</baco:hasRole>
</div>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">Comunicar</div>
<div class="panel-body">
<div class="list-group">
/branches/v3/impl/src/web/user/home/courseComission.jsp
28,26 → 28,22
<p>No final de cada relatório existe um botão de validação para os membros das comissões dos cursos respectivos.</p>
 
 
 
 
 
 
<%
if(result1.size()>0)
{
%>
 
<div class="list-group">
<div class="list-group-item active">Fichas curriculares por validar</div>
<%
for(CourseUnitDaoImpl.CourseMissingValidationProgram mis:result1)
{
%>
<div class="list-group-item"><a href="<%=request.getContextPath()%>/user/startLoadCoursesProgramsFromHome.do?courseId=<%=mis.course.getId()%>#<%=mis.course.getId()%>"><%=mis.course.getName()%> (<%=mis.courseUnits.size()%>)</a></div>
<%
}
%>
</div>
<div class="list-group">
<div class="list-group-item active">Fichas curriculares por validar</div>
<%
for(CourseUnitDaoImpl.CourseMissingValidationProgram mis:result1)
{
%>
<div class="list-group-item"><a href="<%=request.getContextPath()%>/user/startLoadCoursesProgramsFromHome.do?courseId=<%=mis.course.getId()%>#<%=mis.course.getId()%>"><%=mis.course.getName()%> (<%=mis.courseUnits.size()%>)</a></div>
<%
}
%>
</div>
 
<%
}
58,17 → 54,17
{
%>
 
<div class="list-group">
<div class="list-group-item active">Fichas curriculares por preencher</div>
<%
for(CourseUnitDaoImpl.CourseMissingValidationProgram mis:result0)
{
%>
<div class="list-group-item"><a href="<%=request.getContextPath()%>/user/startLoadCoursesProgramsFromHome.do?courseId=<%=mis.course.getId()%>#<%=mis.course.getId()%>"><%=mis.course.getName()%> (<%=mis.courseUnits.size()%>)</a></div>
<%
}
%>
</div>
<div class="list-group">
<div class="list-group-item active">Fichas curriculares por preencher</div>
<%
for(CourseUnitDaoImpl.CourseMissingValidationProgram mis:result0)
{
%>
<div class="list-group-item"><a href="<%=request.getContextPath()%>/user/startLoadCoursesProgramsFromHome.do?courseId=<%=mis.course.getId()%>#<%=mis.course.getId()%>"><%=mis.course.getName()%> (<%=mis.courseUnits.size()%>)</a></div>
<%
}
%>
</div>
 
<%
}
80,59 → 76,56
 
%>
 
<div class="list-group">
<div class="list-group-item active">Relatórios de avaliação por validar
<div class="list-group">
<div class="list-group-item active">Relatórios de avaliação por validar
<%
String sep = "";
if(activeDegrees != null)
{
%>
(graus em processo de validação:
<%
for(String activeDegree: activeDegrees)
{
%>
<%=sep + MessageResources.getInstance(request).getMessage("course."+activeDegree)%>
<%
sep = ", ";
}
%>
)
<%
}
%>
</div>
 
<%
String sep = "";
if(activeDegrees != null)
for(CourseUnitDaoImpl.CourseMissingValidationEvaluation mis:result2)
{
%>
(graus em processo de validação:
<div class="list-group-item"><a href="javascript:showOrHide('evaluationValidate<%=mis.course.getId()%>')"><%=mis.course.getName()%> / <%=mis.course.getCode()%></a> (<%=mis.courseUnits.size()%>)
<div id="evaluationValidate<%=mis.course.getId()%>" style="display: none">
<ul>
<%
for(CourseUnit cu: mis.courseUnits)
{
%>
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%> / <%=cu.getCode()%></a></li>
<%
}
%>
</ul>
</div>
</div>
<%
for(String activeDegree: activeDegrees)
{
%>
<%=sep + MessageResources.getInstance(request).getMessage("course."+activeDegree)%>
<%
sep = ", ";
}
%>
)
<%
}
%>
</div>
 
<%
for(CourseUnitDaoImpl.CourseMissingValidationEvaluation mis:result2)
{
%>
 
<div class="list-group-item"><a href="javascript:showOrHide('evaluationValidate<%=mis.course.getId()%>')"><%=mis.course.getName()%> / <%=mis.course.getCode()%></a> (<%=mis.courseUnits.size()%>)
<div id="evaluationValidate<%=mis.course.getId()%>" style="display: none">
<ul>
<%
for(CourseUnit cu: mis.courseUnits)
{
%>
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%> / <%=cu.getCode()%></a></li>
<%
}
%>
</ul>
</div>
</div>
 
 
<%
}
%>
 
<%
 
}
%>
<%
if(result3.size()>0)
{
 
166,20 → 159,20
{
%>
 
<div class="list-group-item"><a href="javascript:showOrHide('evaluationFill<%=mis.course.getId()%>')"><%=mis.course.getName()%> / <%=mis.course.getCode()%></a> (<%=mis.courseUnits.size()%>)
<div id="evaluationFill<%=mis.course.getId()%>" style="display: none">
<ul>
<%
for(CourseUnit cu: mis.courseUnits)
{
%>
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%> / <%=cu.getCode()%></a></li>
<%
}
%>
</ul>
</div>
</div>
<div class="list-group-item"><a href="javascript:showOrHide('evaluationFill<%=mis.course.getId()%>')"><%=mis.course.getName()%> / <%=mis.course.getCode()%></a> (<%=mis.courseUnits.size()%>)
<div id="evaluationFill<%=mis.course.getId()%>" style="display: none">
<ul>
<%
for(CourseUnit cu: mis.courseUnits)
{
%>
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%> / <%=cu.getCode()%></a></li>
<%
}
%>
</ul>
</div>
</div>
<%
}
%>
189,7 → 182,7
}
%>
 
</div>
 
</div>
</div>
<%
/branches/v3/impl/src/web/user/home/topnavListStudentsCourseComission.jsp
New file
0,0 → 1,10
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/home.do", "intranet.separator.home");
topNav.addNavPlace(null, "list.students.course.commission");
%>
<jsp:include page="/layout/topnav.jsp"/>
Property changes:
Added: svn:executable
+ *
/branches/v3/impl/src/web/user/home/userPae.jsp
11,12 → 11,25
 
<div class="row">
<div class="col-md-6 col-sm-12 col-xs-12">
<baco:hasRole role="admin,all,services">
<div class="panel panel-primary">
<div class="panel-heading">Configurações do Sistema Baco V3</div>
<div class="panel-body">
<div class="list-group">
<div class="list-group-item"><html:link action="/admin/configurations.do">Configurações Gerais do Sistema</html:link></div>
<div class="list-group-item"><html:link action="/user/configurationGrades.do"><bean:message key="configuration.grades"/></html:link></div>
<div class="list-group-item"><html:link action="/user/configurationDirectories.do"><bean:message key="configuration.directories"/></html:link></div>
<div class="list-group-item"><html:link action="/user/configurationSchedulleTasks.do"><bean:message key="configuration.tasks"/></html:link></div>
<div class="list-group-item"><a href="<%=request.getContextPath()%>/user/configurationUserRoles.do"><bean:message key="configuration.roles"/></a></div>
</div>
</div>
</div>
</baco:hasRole>
<baco:hasRole role="admin,all,services,questionarios.admin">
<div class="panel panel-primary">
<div class="panel-heading">Ferramentas Académicas (MODO BACO)</div>
<div class="panel-body">
<div class="list-group">
<div class="list-group-item"><html:link action="/user/configurationSchedulleTasks.do"><bean:message key="configuration.tasks"/></html:link></div>
<div class="list-group-item"><html:link action="/admin/courseUnitsDeleteAdmin">Administração de Unidades Curriculares (Remoções)</html:link></div>
<div class="list-group-item"><html:link action="/user/courseComissions">Informação Adicional de Cursos</html:link></div>
<div class="list-group-item"><html:link action="/user/startFindCourseUnitAdminFromServiceZone"><bean:message key="courseunit.search"/></html:link></div>
/branches/v3/impl/src/web/user/home/topnavSubmitMessageCourseComission.jsp
New file
0,0 → 1,10
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/home.do", "intranet.separator.home");
topNav.addNavPlace(null, "submit.todo.message");
%>
<jsp:include page="/layout/topnav.jsp"/>
Property changes:
Added: svn:executable
+ *
/branches/v3/impl/src/web/user/home/topnavCourseUnitStats.jsp
New file
0,0 → 1,13
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back");
topNav.addNavPlace(null, "course",CourseUnitView.getCourseName());
topNav.addNavPlace("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(),CourseUnitView.getName() + " " + CourseUnitView.getImportYear());
topNav.addNavPlace(null, "course.unit.stats");
%>
<jsp:include page="/layout/topnav.jsp"/>
/branches/v3/impl/src/web/user/contacts/listCourseComissionStudents.jsp
New file
0,0 → 1,143
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page import="pt.estgp.estgweb.domain.Student" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="org.hibernate.Criteria" %>
<%@ page import="static org.hibernate.criterion.Restrictions.eq" %>
<%@ page import="org.hibernate.criterion.Criterion" %>
<%@ page import="static org.hibernate.criterion.Restrictions.eq" %>
<%@ page import="static org.hibernate.criterion.Restrictions.or" %>
<%@ page import="static org.hibernate.criterion.Restrictions.*" %>
<%@ page import="org.hibernate.criterion.Order" %>
<%@ page import="org.hibernate.criterion.Projections" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSessionImpl" scope="request"/>
 
<div class="panel panel-default">
<div class="panel-heading">
Listagem de alunos das comissões de curso
</div>
<div class="panel-body">
 
<%
UserSession.getUser().getRolesList();
List<String> comissionsRoles = new ArrayList<String>();
for(String role: UserSession.getUser().getRolesList())
{
if(role.startsWith(Globals.COURSE_COMMISSION_PROGRAMS_ROLES_PRPFIX))
comissionsRoles.add(role);
}
if(comissionsRoles.size() == 0)
{
%>
<div class="alert alert-warning">
Lamentamos mas não têm qualquer comissão de curso associada
</div>
<%
}
else
{
AbstractDao.getCurrentSession().beginTransaction();
 
for(String roleCourse: comissionsRoles)
{
 
request.setAttribute("roleCourse",roleCourse);
 
Criteria c = AbstractDao.getCurrentSession().createCriteria(Student.class)
.setProjection(Projections.projectionList()
.add(Projections.groupProperty("id"))
.add(Projections.countDistinct("su.id"))
.add(Projections.property("course.name"))
.add(Projections.property("course.id"))
.add(Projections.property("course.code")))
.createAlias("subscribedUnits", "su")
.createAlias("su.course", "course")
.add(eq("su.importYear", "201516"))
.add(eq("course.validationRole", roleCourse))
;
c.addOrder(Order.asc("name"));
List<Object[]> students = c.list();
if(students.size() == 0)
{
%>
<h2><bean:message key="user.role.${roleCourse}"/> </h2>
<div class="alert alert-info alert-small">
Não foram encontrados <%=students.size()%> alunos, inscritos no ano ${UserSession.nowConfiguration.interfaceImportYear}
</div>
<%
}
else
{
//
// List<Student> students = DaoFactory.getStudentDaoImpl().loadFromCoursesWithValidationRoles(comissionsRoles,UserSession.getNowConfiguration().getInterfaceImportYear());
%>
<h2><bean:message key="user.role.${roleCourse}"/></h2>
<div class="alert alert-info alert-small">
Foram encontrados <%=students.size()%> alunos, inscritos no ano ${UserSession.nowConfiguration.interfaceImportYear}
</div>
 
<table class="tablesorterfiltered">
<thead>
<tr>
<th>Número</th>
<th>Nome</th>
<th>Email</th>
<th>Telefone</th>
<th class="filter-name filter-select">Situação de Propinas</th>
<th>Cadeiras Inscrito em ${UserSession.nowConfiguration.interfaceImportYear}</th>
<th>Notas</th>
</tr>
</thead>
<tbody>
<%
for(Object[] student: students)
{
Long studentId = (Long) student[0];
Integer cadeirasInscrito = (Integer) student[1];
String courseName = (String) student[2];
Long courseId = (Long) student[3];
String courseCode = (String) student[4];
Student s = DaoFactory.getStudentDaoImpl().load(studentId);
request.setAttribute("student",s);
%>
<tr>
<td>${student.sigesCode}</td>
<td>${student.name}</td>
<td>${student.email}</td>
<td>${student.phonenumber}</td>
<td><bean:message key="yeas.no.${student.propinasEmDia}"/></td>
<td>
<a class="btn btn-default" href="#" data-href="<%=request.getContextPath()%>/public/profile/profileHomeAjax.jsp?userId=${student.id}" data-title="Notas do aluno ${student.name} (${student.sigesCode})" data-toggle="modal" data-target="#modalAjaxRequest">
<%=cadeirasInscrito%>
</a>
<td>
<a class="btn btn-default" href="#" data-href="<%=request.getContextPath()%>/public/profile/profileGradesAjax.jsp?userId=${student.id}" data-title="Notas do aluno ${student.name} (${student.sigesCode})" data-toggle="modal" data-target="#modalAjaxRequest">
Notas
</a>
</td>
 
</tr>
<%
}
%>
</tbody>
</table>
 
<%
}
}
AbstractDao.getCurrentSession().getTransaction().commit();
}
%>
 
</div>
</div>
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoCursoAfeto.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitDeliverable.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitProgramPart2.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioResposta.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioTipologia.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitBlog.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Reminder.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/RecordEventOrganization.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/RecordPaper.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Configuration.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/PageContent.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/OlapStarQuestionarioAnswer.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/SurveyStatsGraphic.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/SessionObject.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.io.Serializable;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitBlogPost.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/JobParameter.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/GenericUser.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/ComunicationFolder.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Student.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitProgram.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitQuestion.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Announcement.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/UrlStatDay.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Survey.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/AssessmentQuestionPossibleAnswer.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/RecordThesis.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/PageSection.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.ArrayList;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/SurveyQuestionCandidateAnswer.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/RecordProject.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/PageExternalObject.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/SruSourceCollection.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioInstituicao.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/RecordJob.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitTurma.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/ConfigurationGradesStatusEpoca.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Teacher.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/SurveyResponse.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/PageRepositoryFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Record.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitSummary.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/RepositoryFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/ProcessEventFile.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/ProcessEvent.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/CourseYear.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Blog.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/RepositoryFileVersion.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Assessment.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/UserRoleConfig.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/SessionObjectId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/OlapStarQuestionario.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/BlogPost.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/SruSource.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoUnidadeCurricularAfeta.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/ManagedIdentifier.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Course.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/PageExternalUrl.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitGrade.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/UrlStatMonth.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/SurveyQuestionItem.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/AssessmentResponse.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioTurma.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioPergunta1_5.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/UrlStatDayId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Page.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoAlunoRequisitado.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/JobServiceTask.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Process.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/User.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Image.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Questionario.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/OlapHistoryDimension.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Teste.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioUnidade.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/SurveyQuestion.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/DigitalDeliveryTarget.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Group.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/ConfigurationDirectory.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/AssessmentQuestionItem.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/CourseUserAssociation.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/UrlStatYearId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioDocente.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitAssignement.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioHistoryDrive.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioRespostaRequisitada.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnit.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
34,6 → 34,31
private String evaluationStreamId;
private boolean evaluationOpenByAdmin;
private String summariesJson;
private String filesJson;
private int statteachersCount;
private int statstudentsCount;
private int statcontentsFiles;
private int statcontentsFolders;
private long statcontentsSize;
private Date statcontentsLastUpdate;
private int statworks;
private int statanuncios;
private int statblogPosts;
private int statdtpSumaries;
private int statdtpSumariesMissing;
private int statdtpSumariesPrelancados;
private int statdtpPlaneamentoFiles;
private Date statdtpPlaneamentoLastUpdate;
private boolean statdtpFichaCurricularValid;
private Date statdtpFichaCurricularLastUpdate;
private String statdtpEvaluationReportState;
private Date statdtpEvaluationReportLastUpdate;
private int statdtpInqueritoPedagogicoFiles;
private Date statdtpInqueritoPedagogicoFilesLastUpdate;
private int statdtpAvaliacaoEnunciadosFiles;
private Date statdtpAvaliacaoEnunciadosLastUpdate;
private int statdtpAvaliacaoPautasFiles;
private Date statdtpAvaliacaoPautasLastUpdate;
private String cdTurma;
private PageSection unitContents;
private User validatorUser;
209,6 → 234,181
public void setSummariesJson(String summariesJson) {
this.summariesJson = summariesJson;
}
public String getFilesJson() {
return this.filesJson;
}
public void setFilesJson(String filesJson) {
this.filesJson = filesJson;
}
public int getStatteachersCount() {
return this.statteachersCount;
}
public void setStatteachersCount(int statteachersCount) {
this.statteachersCount = statteachersCount;
}
public int getStatstudentsCount() {
return this.statstudentsCount;
}
public void setStatstudentsCount(int statstudentsCount) {
this.statstudentsCount = statstudentsCount;
}
public int getStatcontentsFiles() {
return this.statcontentsFiles;
}
public void setStatcontentsFiles(int statcontentsFiles) {
this.statcontentsFiles = statcontentsFiles;
}
public int getStatcontentsFolders() {
return this.statcontentsFolders;
}
public void setStatcontentsFolders(int statcontentsFolders) {
this.statcontentsFolders = statcontentsFolders;
}
public long getStatcontentsSize() {
return this.statcontentsSize;
}
public void setStatcontentsSize(long statcontentsSize) {
this.statcontentsSize = statcontentsSize;
}
public Date getStatcontentsLastUpdate() {
return this.statcontentsLastUpdate;
}
public void setStatcontentsLastUpdate(Date statcontentsLastUpdate) {
this.statcontentsLastUpdate = statcontentsLastUpdate;
}
public int getStatworks() {
return this.statworks;
}
public void setStatworks(int statworks) {
this.statworks = statworks;
}
public int getStatanuncios() {
return this.statanuncios;
}
public void setStatanuncios(int statanuncios) {
this.statanuncios = statanuncios;
}
public int getStatblogPosts() {
return this.statblogPosts;
}
public void setStatblogPosts(int statblogPosts) {
this.statblogPosts = statblogPosts;
}
public int getStatdtpSumaries() {
return this.statdtpSumaries;
}
public void setStatdtpSumaries(int statdtpSumaries) {
this.statdtpSumaries = statdtpSumaries;
}
public int getStatdtpSumariesMissing() {
return this.statdtpSumariesMissing;
}
public void setStatdtpSumariesMissing(int statdtpSumariesMissing) {
this.statdtpSumariesMissing = statdtpSumariesMissing;
}
public int getStatdtpSumariesPrelancados() {
return this.statdtpSumariesPrelancados;
}
public void setStatdtpSumariesPrelancados(int statdtpSumariesPrelancados) {
this.statdtpSumariesPrelancados = statdtpSumariesPrelancados;
}
public int getStatdtpPlaneamentoFiles() {
return this.statdtpPlaneamentoFiles;
}
public void setStatdtpPlaneamentoFiles(int statdtpPlaneamentoFiles) {
this.statdtpPlaneamentoFiles = statdtpPlaneamentoFiles;
}
public Date getStatdtpPlaneamentoLastUpdate() {
return this.statdtpPlaneamentoLastUpdate;
}
public void setStatdtpPlaneamentoLastUpdate(Date statdtpPlaneamentoLastUpdate) {
this.statdtpPlaneamentoLastUpdate = statdtpPlaneamentoLastUpdate;
}
public boolean isStatdtpFichaCurricularValid() {
return this.statdtpFichaCurricularValid;
}
public void setStatdtpFichaCurricularValid(boolean statdtpFichaCurricularValid) {
this.statdtpFichaCurricularValid = statdtpFichaCurricularValid;
}
public Date getStatdtpFichaCurricularLastUpdate() {
return this.statdtpFichaCurricularLastUpdate;
}
public void setStatdtpFichaCurricularLastUpdate(Date statdtpFichaCurricularLastUpdate) {
this.statdtpFichaCurricularLastUpdate = statdtpFichaCurricularLastUpdate;
}
public String getStatdtpEvaluationReportState() {
return this.statdtpEvaluationReportState;
}
public void setStatdtpEvaluationReportState(String statdtpEvaluationReportState) {
this.statdtpEvaluationReportState = statdtpEvaluationReportState;
}
public Date getStatdtpEvaluationReportLastUpdate() {
return this.statdtpEvaluationReportLastUpdate;
}
public void setStatdtpEvaluationReportLastUpdate(Date statdtpEvaluationReportLastUpdate) {
this.statdtpEvaluationReportLastUpdate = statdtpEvaluationReportLastUpdate;
}
public int getStatdtpInqueritoPedagogicoFiles() {
return this.statdtpInqueritoPedagogicoFiles;
}
public void setStatdtpInqueritoPedagogicoFiles(int statdtpInqueritoPedagogicoFiles) {
this.statdtpInqueritoPedagogicoFiles = statdtpInqueritoPedagogicoFiles;
}
public Date getStatdtpInqueritoPedagogicoFilesLastUpdate() {
return this.statdtpInqueritoPedagogicoFilesLastUpdate;
}
public void setStatdtpInqueritoPedagogicoFilesLastUpdate(Date statdtpInqueritoPedagogicoFilesLastUpdate) {
this.statdtpInqueritoPedagogicoFilesLastUpdate = statdtpInqueritoPedagogicoFilesLastUpdate;
}
public int getStatdtpAvaliacaoEnunciadosFiles() {
return this.statdtpAvaliacaoEnunciadosFiles;
}
public void setStatdtpAvaliacaoEnunciadosFiles(int statdtpAvaliacaoEnunciadosFiles) {
this.statdtpAvaliacaoEnunciadosFiles = statdtpAvaliacaoEnunciadosFiles;
}
public Date getStatdtpAvaliacaoEnunciadosLastUpdate() {
return this.statdtpAvaliacaoEnunciadosLastUpdate;
}
public void setStatdtpAvaliacaoEnunciadosLastUpdate(Date statdtpAvaliacaoEnunciadosLastUpdate) {
this.statdtpAvaliacaoEnunciadosLastUpdate = statdtpAvaliacaoEnunciadosLastUpdate;
}
public int getStatdtpAvaliacaoPautasFiles() {
return this.statdtpAvaliacaoPautasFiles;
}
public void setStatdtpAvaliacaoPautasFiles(int statdtpAvaliacaoPautasFiles) {
this.statdtpAvaliacaoPautasFiles = statdtpAvaliacaoPautasFiles;
}
public Date getStatdtpAvaliacaoPautasLastUpdate() {
return this.statdtpAvaliacaoPautasLastUpdate;
}
public void setStatdtpAvaliacaoPautasLastUpdate(Date statdtpAvaliacaoPautasLastUpdate) {
this.statdtpAvaliacaoPautasLastUpdate = statdtpAvaliacaoPautasLastUpdate;
}
public String getCdTurma() {
return this.cdTurma;
}
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/SurveyQuestionAnswer.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/ConfigurationGradesEpocaAvaliacao.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioCurso.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/QuestionarioPedagogicoTipologiaRequisitada.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/SigesUser.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/Job.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.io.Serializable;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/ManagedIdentifierCollection.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitAnnouncement.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioPeriodo.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/JobServiceTaskScheduler.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/AssessmentQuestion.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioPerguntaGrupo.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/JobServiceTaskSchedulerParameter.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/JobServiceTaskParameter.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/DigitalDeliveryCategory.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/UrlStatYear.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/RecordOther.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/DigitalDelivery.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/UrlStatMonthId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/UserSession.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioCursoDegree.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/MetaProcess.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/CourseUnitEvaluation.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/OlapEntityQuestionarioAno.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/SurveyStructuralNode.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.HashSet;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/ConfigurationGrades.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/AssessmentQuestionAnswer.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
 
/branches/v3/impl/gen/java/pt/estgp/estgweb/domain/UrlStat.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 28/Mar/2016 14:15:16 by Hibernate Tools 3.2.0.b9
// Generated 18/Abr/2016 17:37:16 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;