Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1085 → Rev 1148

/impl/importRoutines.xml
28,8 → 28,8
<target name="teachers">
<java classname="pt.estgp.estgweb.services.sigesimports.ImportTeachersService" classpath="${build.dir.classes}" classpathref="pathToToolsLib">
<!--<arg value="201314"/>-->
<!--<arg value="201415"/>-->
<arg value="201516"/>
<arg value="201415"/>
<!--<arg value="201516"/>-->
</java>
</target>
<target name="students">
67,7 → 67,7
</java>
</target>
<target name="grades">
<java classname="pt.estgp.estgweb.services.sigesimports.ImportGradesService" classpath="${build.dir.classes}" classpathref="pathToToolsLib">
<!--<java classname="pt.estgp.estgweb.services.sigesimports.ImportGradesService" classpath="${build.dir.classes}" classpathref="pathToToolsLib">
<arg value="200809"/>
</java>
<java classname="pt.estgp.estgweb.services.sigesimports.ImportGradesService" classpath="${build.dir.classes}" classpathref="pathToToolsLib">
81,10 → 81,11
</java>
<java classname="pt.estgp.estgweb.services.sigesimports.ImportGradesService" classpath="${build.dir.classes}" classpathref="pathToToolsLib">
<arg value="201213"/>
</java>
</java>-->
<java classname="pt.estgp.estgweb.services.sigesimports.ImportGradesService" classpath="${build.dir.classes}" classpathref="pathToToolsLib">
<arg value="201314"/>
</java>
 
</target>
 
<target name="setAreas">
107,9 → 108,13
<java classname="pt.estgp.estgweb.services.courseunits.SaveCourseUnitProgram" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/>
</target>
 
<target name="storeAllEvaluationsFtp">
<java classname="pt.estgp.estgweb.services.courseunits.SaveCourseUnitEvaluation" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/>
</target>
 
 
 
 
<target name="loadSummariesAtsi">
<java classname="pt.estgp.estgweb.services.sigesimports.LoadSumariesToPDF" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/>
</target>
/impl/conf/language/MessageResourcesCourse.properties
3,6 → 3,7
# COURSE UNITS MESSAGE RESOURCES
#
################################################################################
course.label=Curso
module.Courses=Cursos
course.new=Criar Curso
course.submit.edit=Editar Curso {0}
100,3 → 101,5
status=Curso Activo
 
courses.fill.course=Por favor escolha pelo menos um curso nos filtros.
 
course.pedagogic.contents.admin=Administração de Inquéritos Pedagógicos
/impl/conf/language/MessageResources.properties
475,6 → 475,9
user.role.courseValidateProgramTGI=Comissão de Curso de TGI
user.role.courseValidateProgramRU=Comissão de Curso de RU
 
user.role.courseValidateProgramCF=Comissão de Curso de Contabilidade e Finanças
user.role.courseValidateProgramTPB=Comissão de Curso de Tecnologias de Produção de Biocombustíveis
 
configuration.grades=Configuração Pautas
configuration=Configurações
configuration.directories=Configuração de Directórios
518,7 → 521,8
configuration.task.weekday=Dia da semana
configuration.task.monthday=Dia do Mês
configuration.task.now=Agendar para correr agora
 
configuration.tasks.canceled=Calcelado
configuration.tasks.saved=Tarefa agendada com sucesso
configuration.task.records=Registos de Tarefas Agendadas
configuration.task.log=Ficheiro de Registo
configuration.task.progress=Progresso
545,6 → 549,14
weekday.Sat=Sabados
weekday.Sun=Domingos
 
weekday.2=Segundas
weekday.3=Terças
weekday.4=Quartas
weekday.5=Quintas
weekday.6=Sextas
weekday.7=Sabados
weekday.1=Domingos
 
monthday.day=ao dia
weekday.day=às
day.time=às
/impl/conf/language/MessageResourcesCourseUnits.properties
94,7 → 94,7
courseunit.students=Estudantes
courseunit.students.count=Total de estudantes inscritos
courseunit.program=Ficha Curricular
courseunit.edit.program=Editar Programa
courseunit.edit.program=Editar Ficha Curricular
 
courseunit.assignement.deliver.time=Entregue
courseunit.assignement.deliver.time.ok=Entregue a Horas
142,10 → 142,10
 
 
 
courseunits.contentsGrants=Permiss\u00f5es de Consulta dos Ficheiros de Conte\u00fados
courseunits.contentsGrants.PUBLIC=PUBLICAS
courseunits.contentsGrants.PRIVATE=PRIVADOS A ESTUDANTES E DOCENTES DA UNIDADE
courseunits.contentsGrants.INTERNAL=COMUNIDADE ACAD\u00c9MICA
courseunits.contentsGrants=Anuncios e Blog
courseunits.contentsGrants.PUBLIC=PUBLICO
courseunits.contentsGrants.PRIVATE=privado unidade
courseunits.contentsGrants.INTERNAL=interno ESTG
 
 
courseunit.program.objectivos=Objetivos da aprendizagem (conhecimentos, aptid\u00f5es e compet\u00eancias) a desenvolver pelos estudantes, operacionaliza\u00e7\u00e3o dos objetivos e medi\u00e7\u00e3o do seu grau de cumprimento)
185,12 → 185,12
courseunit.evaluation.success=Ficha de Avalia\u00e7\u00e3o alterada com sucesso
 
 
courseunit.turma=Turma
 
 
 
 
 
 
courseunit.consultaroutros=Consultar outros programas
courseunit.confirmaclonagem=Tem a certeza que deseja clonar o programa do ano na caixa de selecção para este programa actualmente aberto para edição? Vai gerar uma nova versão de programa e a anterior será arquivada em PDF.
 
/impl/conf/WEB-INF/struts/struts-courses.xml
86,8 → 86,16
 
 
 
<!--
Administração Conselho Pedagógico
 
Atividade de entrada de inqueritos pedagogicos
-->
 
<action path="/user/coursePedagogicContents" forward="page.courses.pedagogic.contents"/>
 
 
 
</action-mappings>
 
</struts-config>
/impl/conf/WEB-INF/struts/tiles-courses.xml
75,12 → 75,12
</definition>
 
 
<definition name="page.directed.coordinated.courses.from.home" extends="page.separators.home">
<definition name="page.directed.coordinated.courses.from.home" extends="base.separators">
<put name="title" value="Ver Cursos e Unidades"/>
<put name="topnav" value="/user/courses/topnavDirectedCoordinatedCourses.jsp"/>
<put name="body" value="/user/courses/directedCoordinatedCourses.jsp"/>
</definition>
<definition name="page.courses.programs.from.home" extends="page.separators.home">
<definition name="page.courses.programs.from.home" extends="base.separators">
<put name="title" value="Ver Cursos e Unidades"/>
<put name="topnav" value="/user/courses/topnavDirectedCoordinatedCourses.jsp"/>
<put name="body" value="/user/courses/directedCoordinatedCourses.jsp"/>
88,6 → 88,11
 
 
 
<definition name="page.courses.pedagogic.contents" extends="page.separators.serviceZone">
<put name="title" value="Conselho Pedagógico Inquéritos"/>
<put name="topnav" value="/user/serviceZone/topnavCoursePedagogicContents.jsp"/>
<put name="body" value="/admin/courses/coursePedagogicContents.jsp"/>
</definition>
 
 
 
/impl/conf/app.properties
257,6 → 257,8
user.role.78=courseValidateProgramRPS
user.role.79=courseValidateProgramTGI
user.role.80=courseValidateProgramRU
user.role.85=courseValidateProgramCF
user.role.86=courseValidateProgramTPB
 
 
user.role.81=courseValidatePrograms
458,7 → 460,7
#########################################################################
# Common Services
#
search.max.results=8
search.max.results=30
search.best.fragments.max.fragment.size=80
search.best.fragments.max.fragments=3
 
467,6 → 469,9
# Imports SIGoES
#
 
#Disciplinas extracurriculares tem 6 no CdTipoDisci nas inscrições
siges.codigo.tipo.disciplina.extra.curricular=6
 
siges.degree.1=L
siges.degree.2=B
siges.degree.3=D
485,6 → 490,8
siges.degree.16=C
siges.degree.17=O
 
siges.degree.unknown=Z
 
# DONT USE ANY MORE NOW IS IN CONFIGURATION DAO national.institution.code=3122
# DONT USE ANY MORE NOW IS IN CONFIGURATION DAO siges.institution.code=1
# DONT USE ANY MORE NOW IS IN CONFIGURATION DAO ws.siges.wsdl=@ws.siges.wsdl@
534,6 → 541,8
intranet.dtp.course.coordinator.write=true
intranet.dtp.course.director.write=true
intranet.dtp.course.unit.responsible.write=true
intranet.dtp.course.unit.fullcontrol.roles=
intranet.dtp.course.unit.inquerito_pedagogico.role=pedagogicCouncil
 
##COLOCAR AQUI AS DEFINICOES DO DTP
 
/impl/conf/directories/topMenus.xsl
57,4 → 57,86
</xsl:if>
</li>
</xsl:template>
 
 
 
<xsl:template match="/" mode="new" >
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
 
</div>
<ul class="nav navbar-nav">
<xsl:apply-templates select="/d:directory/d:leaf" mode="root"/>
</ul>
 
 
</div>
 
</nav>
</xsl:template>
 
 
<xsl:template match="d:leaf" mode="new">
<xsl:choose>
<xsl:when test="./d:leaf">
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" >
<xsl:attribute name="href">
<xsl:choose>
<xsl:when test="@url and @absolute='true'">
<xsl:value-of select="@url"/>
</xsl:when>
<xsl:when test="@url and @absolute='false'">
<xsl:value-of select="$contextPath"/><xsl:value-of select="@url"/>
</xsl:when>
<xsl:otherwise>#</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:value-of select="@label"/>
<span class="caret"></span>
</a>
<ul class="dropdown-menu">
<xsl:for-each select="./d:leaf">
<li>
<a>
<xsl:attribute name="href">
<xsl:choose>
<xsl:when test="@url and @absolute='true'">
<xsl:value-of select="@url"/>
</xsl:when>
<xsl:when test="@url and @absolute='false'">
<xsl:value-of select="$contextPath"/><xsl:value-of select="@url"/>
</xsl:when>
<xsl:otherwise>#</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:value-of select="@label"/>
</a>
</li>
</xsl:for-each>
</ul>
</li>
</xsl:when>
<xsl:otherwise>
<li>
<a>
<xsl:attribute name="href">
<xsl:choose>
<xsl:when test="@url and @absolute='true'">
<xsl:value-of select="@url"/>
</xsl:when>
<xsl:when test="@url and @absolute='false'">
<xsl:value-of select="$contextPath"/><xsl:value-of select="@url"/>
</xsl:when>
<xsl:otherwise>#</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:value-of select="@label"/>
</a>
</li>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
 
</xsl:stylesheet>
/impl/conf/berserk/sd.xml
2225,10 → 2225,24
</filterChains>
</service>
 
<service>
<name>SaveJobServiceTaskScheduler</name>
<implementationClass>pt.estgp.estgweb.services.jobs.JobScheduleService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>save</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Admins"/>
</filterChains>
</service>
saveJobServiceTaskScheduler
 
 
 
 
 
 
 
</serviceDefinitions>
/impl/src/java/jomm/dao/impl/AbstractDao.java
937,4 → 937,6
}
return deletedObjects;
}
 
 
}
/impl/src/java/pt/estgp/estgweb/utils/StringsUtils.java
48,7 → 48,8
List<String> l = new ArrayList<String>();
for (String role : roles)
{
l.add(role);
if(role != null && role.trim().length() > 0)
l.add(role);
}
return l;
}
/impl/src/java/pt/estgp/estgweb/Globals.java
1,6 → 1,7
package pt.estgp.estgweb;
 
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.StringsUtils;
 
import java.util.List;
 
97,6 → 98,9
public static final boolean INTRANET_DTP_CourseCoordinatorWrite = ConfigProperties.getBooleanProperty("intranet.dtp.course.coordinator.write");
public static final boolean INTRANET_DTP_CourseDirectorWrite = ConfigProperties.getBooleanProperty("intranet.dtp.course.director.write");
public static final boolean INTRANET_DTP_CourseUnitResponsibleWrite = ConfigProperties.getBooleanProperty("intranet.dtp.course.unit.responsible.write");
//use , as separator
public static final List<String> INTRANET_DTP_FULLCONTROL_ROLES = StringsUtils.getStringsFromSerial(ConfigProperties.getProperty("intranet.dtp.course.unit.fullcontrol.roles"),",");
public static final String INTRANET_DTP_INQUERITO_PEDAGOGICO_ROLE = ConfigProperties.getProperty("intranet.dtp.course.unit.inquerito_pedagogico.role");
 
 
 
242,8 → 246,10
public static final String PROFILE_SCHOLAR_DEGREE_SUPERIOR = "superior";
public static final String PROFILE_DEGREE_NOTSET = "notset";
 
public static final String COURSE_DEGREE_UNKNOWN = ConfigProperties.getProperty("siges.degree.unknown");
 
 
 
public static final boolean SMS_COURSEUNIT_ANNOUNCEMENT = ConfigProperties.getBooleanProperty("sms.courseunit.announcement");
public static final boolean SMS_NEW_GRADES = ConfigProperties.getBooleanProperty("sms.new.grades");
public static final boolean EMAIL_NEW_GRADES = ConfigProperties.getBooleanProperty("email.new.grades");
/impl/src/java/pt/estgp/estgweb/services/courseunits/SaveCourseUnitEvaluation.java
1,5 → 1,6
package pt.estgp.estgweb.services.courseunits;
 
import jomm.dao.impl.AbstractDao;
import jomm.utils.PdfUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
9,8 → 10,10
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.dao.impl.CourseUnitDaoImpl;
import pt.estgp.estgweb.domain.views.CourseUnitEvaluationView;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.services.data.IRepositoryFile;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.utils.Dom4jUtil;
19,10 → 22,7
 
import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMSource;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
 
200,13 → 200,13
 
//NOVO
 
/*
 
if(cuv.isClosed())
{
RepositoryFileImpl repoFile = repositoryService.loadView(cu.getEvaluationStreamId());
sendPdfFtpIonline(cu,errors,userSession,path,repoFile.getLastVersion().getSaveDate(),null);
sendPdfFtpIonline(cu,errors,userSession,new FileInputStream(path),repoFile.getLastVersion().getSaveDate(),null);
}
*/
 
}
 
public String generatePdf(CourseUnitEvaluation cuv, CourseUnit c) throws IOException, TransformerException, FOPException {
253,7 → 253,7
}*/
 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd.HH_mm_ss");
private void sendPdfFtpIonline(CourseUnit cu, List<String> errors, UserSession u,String pdfPath,Date versionDate,FTPClient client) throws IOException, TransformerException, FOPException {
private boolean sendPdfFtpIonline(CourseUnit cu, List<String> errors, UserSession u,InputStream input,Date versionDate,FTPClient client) throws IOException, TransformerException, FOPException {
 
FtpServer server = null;
if(client == null)
264,7 → 264,7
{
logger.warn("###################");
logger.warn("################### > CANT CONNECT FTP");
return;
return false;
}
}
client.setFileType(FTP.BINARY_FILE_TYPE);
273,18 → 273,70
if(!client.changeWorkingDirectory(pastaFichaCurricular))
{
logger.error("FTP CANT CHANGE TO PATH: " + pastaFichaCurricular);
return false;
}
else
{
client.storeFile(cu.getCode() + "_" + cu.getNormalizedName() + "_v" + sdf.format(versionDate) + ".pdf",new FileInputStream(pdfPath));
client.storeFile(cu.getCode() + "_" + cu.getNormalizedName() + "_v" + sdf.format(versionDate) + ".pdf",input);
 
if(server != null)
{
client.quit();
client.disconnect();
}
return true;
}
 
//
}
 
public void storeAllClosedEvaluationsInActivePeriod() throws IOException
{
CourseUnitDaoImpl dao = DaoFactory.getCourseUnitDaoImpl();
List<Long> unitsIds = dao.loadClosedCourseUnitsEvaluations();
 
List<String> errors = new ArrayList<String>();
for (Long unitId: unitsIds) {
CourseUnit next = DaoFactory.getCourseUnitDaoImpl().load(unitId);
 
try {
if(next.getEvaluationStreamId() == null)
{
System.out.print("Generating PDF for evaluation report for: " + next.getCourse().getName() + " - " + next.getSemestre() + " - " + next.getNormalizedName());
createPdf(next.getCourseUnitEvaluation(),next,null,errors);
}
 
System.out.print("Sending evaluation report for: " + next.getCourse().getName() + " - " + next.getSemestre() + " - " + next.getNormalizedName());
 
RepositoryFileImpl repoFile = repositoryService.loadView(next.getEvaluationStreamId());
IRepositoryFile iRepoFile = repositoryService.loadByIdentifier(next.getEvaluationStreamId());
 
 
if(sendPdfFtpIonline(next,errors,null,iRepoFile.getInput(),repoFile.getLastVersion().getSaveDate(),null))
System.out.print(" ... OK");
else
System.out.print(" ... FAIL probably no StreamID");
System.out.print("\n");
if(errors.size()>0)
for(String error:errors)
logger.warn(error);
} catch (IOException e) {
logger.error(e,e);
} catch (TransformerException e) {
logger.error(e, e);
} catch (FOPException e) {
e.printStackTrace();
}
 
AbstractDao.getCurrentSession().evict(next);
}
}
 
public static void main(String[] args) throws IOException {
 
AbstractDao.getCurrentSession().beginTransaction();
new SaveCourseUnitEvaluation().storeAllClosedEvaluationsInActivePeriod();
AbstractDao.getCurrentSession().flush();
AbstractDao.getCurrentSession().getTransaction().commit();
}
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadCourseUnitService.java
90,4 → 90,6
}
return cV;
}
 
 
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitDirPackageServiceBat.java
5,10 → 5,7
import jomm.utils.StringsUtils;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.Course;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.Teacher;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.utils.ConfigProperties;
49,6 → 46,18
new File(tmpDir).mkdirs();
//List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(importYear);
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll();
 
List<User> usersFullControlDtp = null;
if(Globals.INTRANET_DTP_FULLCONTROL_ROLES != null && Globals.INTRANET_DTP_FULLCONTROL_ROLES.size() > 0)
{
usersFullControlDtp = DaoFactory.getUserDaoImpl().loadRolesUsers(Globals.INTRANET_DTP_FULLCONTROL_ROLES);
}
 
List<User> usersInqueritoPedagogico = null;
if(Globals.INTRANET_DTP_INQUERITO_PEDAGOGICO_ROLE != null && Globals.INTRANET_DTP_INQUERITO_PEDAGOGICO_ROLE.trim().length() > 0)
{
usersInqueritoPedagogico = DaoFactory.getUserDaoImpl().loadRoleUsers(Globals.INTRANET_DTP_INQUERITO_PEDAGOGICO_ROLE.trim());
}
try
{
FileWriter batRunner = new FileWriter(tmpDir + "/create.bat");
237,7 → 246,9
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + c.getUserGroupStudents() + "\":r\n");
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + ConfigProperties.getProperty("ionline.user") + "\":f\n");
 
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + ConfigProperties.getProperty("ionline.user") + "\":f\n");
 
 
/*
echo CACLS Seminario.Ii /T /E /R [NOME DO GRUPO DE TODOS OS ALUNOS DA ESTG tira os parentisis rectos]
echo CACLS Seminario.Ii /T /E /G [NOME DO GRUPO DE TODOS OS DOCENTES]:R
297,6 → 308,28
batRunner.write("cacls " + Globals.INTRANET_DTP_FichaAvaliacao + " /t /e /r \"" + c.getDirector().getUsername() + "\"\n");
batRunner.write("cd ..\\\n");
}
 
if(usersInqueritoPedagogico != null && usersInqueritoPedagogico.size() > 0)
{
for(User u: usersInqueritoPedagogico)
{
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + u.getUsername() + "\":r\n");
}
batRunner.write("cd " + Globals.INTRANET_DTP + "\n");
for(User u: usersInqueritoPedagogico)
{
batRunner.write("cacls " + Globals.INTRANET_DTP_InqueritoPedagogico + " /t /e /g \"" + u.getUsername() + "\":f\n");
}
batRunner.write("cd ..\\\n");
}
 
if(usersFullControlDtp != null && usersFullControlDtp.size() > 0)
{
for(User u: usersFullControlDtp)
{
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + u.getUsername() + "\":f\n");
}
}
batRunner.write("cd ..\\..\\\n");
}
batRunner.write("cd ..\\..\\\n");
/impl/src/java/pt/estgp/estgweb/services/email/SendEmailService.java
204,8 → 204,15
}
}
 
public Email getMessageEmail(String from, String subject,String text, LangEnum langEnum, String target, List<User> users, User user)
public static class SendTo
{
public String name;
public String email;
public String outEmail;
}
 
public Email getMessageEmail(String from, String subject,String text, LangEnum langEnum, String target, List<String> emails, User user)
{
// # 0 : From
// # 1 : Subject
// # 2 : Text
230,6 → 237,52
}
 
List<String> recipients = new ArrayList<String>();
for(String e: emails)
{
if(Email.validEmail(e))
recipients.add(e);
}
logger.info("subject: " + subject);
logger.info("user: " + user.getEmail());
logger.info("template: " + template);
logger.info("arguments:");
for(String arg: arguments)
logger.info(arg);
logger.info("recipients:");
for(String rec: recipients)
logger.info(rec);
logger.info("arguments end");
Email email = new Email(subject ,recipients,user.getEmail(),template,arguments,Message.RecipientType.BCC);
email.setFromName(from + " (ESTG)");
return email;
}
 
public Email getMessageEmailOld(String from, String subject,String text, LangEnum langEnum, String target, List<User> users, User user)
{
// # 0 : From
// # 1 : Subject
// # 2 : Text
// # 3 : person
// # 4 : target
List<String> arguments = new ArrayList<String>();
arguments.add(from);
arguments.add(subject);
arguments.add(text);
arguments.add(user.getName());
arguments.add(target);
 
String template;
 
if(langEnum == LangEnum.PORTUGUESE)
{
template = Globals.EMAIL_MESSAGE_TEMPLATE_PT;
}
else
{
template = Globals.EMAIL_MESSAGE_TEMPLATE_EN;
}
 
List<String> recipients = new ArrayList<String>();
for(User u: users)
{
if(Email.validEmail(u.getEmail()))
/impl/src/java/pt/estgp/estgweb/services/sigesimports/CleanCourseUnitsZeroStudents.java
New file
0,0 → 1,72
package pt.estgp.estgweb.services.sigesimports;
 
import jomm.dao.impl.AbstractDao;
import org.hibernate.Query;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.dao.DaoFactory;
 
import java.util.Iterator;
 
/**
* Created by jorgemachado on 01/12/15.
*/
public class CleanCourseUnitsZeroStudents
{
public static void main(String[] args)
{
AbstractDao.getCurrentSession().beginTransaction();
 
 
Query q = AbstractDao.getCurrentSession().createQuery("select c.id from c in class " + CourseUnit.class.getName() +
" where size(c.students) = 0 and (c.importYear = '201415' or c.importYear='201516') order by c.importYear, c.semestre, c.code");
Iterator iter = q.iterate();
System.out.println("ANO;SEMESTRE;CODIGO;NOME;CODIGOCURSO;NOMECURSO");
while(iter.hasNext())
{
 
Long id = (Long) iter.next();
CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(id);
System.out.println(cu.getImportYear() + ";" + cu.getSemestre() + ";" + cu.getCode() + ";" + cu.getName() + ";" + cu.getCourseCode() + ";" +cu.getCourseName());
boolean alert = false;
if(cu.getAnnouncements() != null && cu.getAnnouncements().size() > 0)
{
System.out.println("ALERT - Tem Announcements");
}
if(cu.getAssignements() != null && cu.getAssignements().size() > 0)
{
System.out.println("ALERT - Tem Assignements");
}
if(cu.getBlogs() != null && cu.getBlogs().size() > 0)
{
System.out.println("ALERT - Tem BLOGS");
}
if(cu.getCourseUnitEvaluation() != null)
{
System.out.println("ALERT - Tem Evaluation");
alert = true;
}
if(cu.getCourseUnitProgram() != null)
{
System.out.println("ALERT - Tem program");
alert = true;
}
if(cu.getSummaries() != null && cu.getSummaries().size() > 0)
{
System.out.println("ALERT - Tem SUMMARIES");
}
if(alert)
{
System.out.println(">>>>>>>>>>>>>>NAO APAGA");
}
else
{
System.out.println("+++++++++++++++CANDIDATA A APAGAR");
}
 
}
 
 
 
AbstractDao.getCurrentSession().getTransaction().commit();
}
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportGradesService.java
11,6 → 11,7
import pt.estgp.estgweb.services.email.SendEmailService;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.services.jobs.JobScheduleService;
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;
33,7 → 34,7
* @time 12:51:32
* @see pt.estgp.estgweb
*/
public class ImportGradesService implements IService
public class ImportGradesService extends ServiceJob implements IService
{
 
private static final Logger logger = Logger.getLogger(ImportGradesService.class);
46,23 → 47,31
{
DefaultLogMessages logMessages = new DefaultLogMessages();
logMessages.addMessage(new DefaultLogMessage("import.grades", LogMessageTypeEnum.INFO, "instituicao " + DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode() + " ano : " + year));
logger.info("starting grades import " + year);
logger.info(logMessages.getLastMessage());
serviceLogInfo(logMessages.getLastMessage());
Map<Integer,Integer> alunos = new HashMap<Integer,Integer>();
Map<String,String> alunoCadeira = new HashMap<String,String>();
 
int foundTotal = 0;
 
try
{
logger.info("Loading Epocas de avaliacao");
serviceLogInfo("Loading Epocas de avaliacao");
List<ConfigurationGradesEpocaAvaliacao> epocas = DaoFactory.getConfigurationGradesEpocaAvaliacaoDaoImpl().findAll();
if(epocas == null || epocas.size() == 0)
{
logMessages.addMessage(new DefaultLogMessage("import.grades",LogMessageTypeEnum.WARNING,"Sem Epocas de Avaliacao, por favor adicione as epocas ao sistema"));
logger.warn("Sem Epocas de Avaliacao, por favor adicione as epocas ao sistema");
logger.warn(logMessages.getLastMessage());
serviceLogWarn(logMessages.getLastMessage());
return logMessages;
}
List<ConfigurationGradesStatusEpoca> statusEpocas = DaoFactory.getConfigurationGradesStatusEpocaDaoImpl().findAll();
if(statusEpocas == null || statusEpocas.size() == 0)
{
logMessages.addMessage(new DefaultLogMessage("import.grades",LogMessageTypeEnum.WARNING,"Sem Status de epocas de avaliacao, por favor adicione as epocas ao sistema"));
logger.warn("Sem Status de epocas de avaliacao, por favor adicione as epocas ao sistema");
logger.warn(logMessages.getLastMessage());
serviceLogWarn(logMessages.getLastMessage());
return logMessages;
}
HashMap<String,String> mapaEpocasAvaliacao = new HashMap<String, String>();
88,18 → 97,21
{
logMessages.addMessage(new DefaultLogMessage("import.error",e.toString(),"erro na configuracao do WEB Service", LogMessageTypeEnum.INFO));
logger.fatal(e, e);
serviceLogFatal(logMessages.getLastMessage());
return logMessages;
}
ArrayOfNota arrayOfNotas = service.getSiGesWEBSoap().getNotas(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year);
List<Nota> notas = arrayOfNotas.getNota();
 
int i = 0;
for (Nota nota : notas)
{
foundTotal++;
if (i++ > MAX_COMMIT)
{
i = 0;
AbstractDao.getCurrentSession().getTransaction().commit();
AbstractDao.getCurrentSession().beginTransaction();
setProgress((int) (((float)foundTotal)/((float)notas.size())*100.0f));
commitPartially();
}
 
/**
113,7 → 125,9
*/
 
int codAluno = nota.getCodigoAluno().intValue();
alunos.put(codAluno,codAluno);
int codUnidade = nota.getCodigoDisciplina().intValue();
alunoCadeira.put(codAluno + "$" + codUnidade,codAluno + "$" + codUnidade);
int codCurso = nota.getCodigoCurso().intValue();
String cdDuracao = nota.getCdDuracao();
int valor = nota.getNota().intValue();
121,6 → 135,7
Date data = nota.getDataAvaliacao().toGregorianCalendar().getTime();
int momento = nota.getMomentoAvaliacao().intValue();
int epoca = nota.getEpocaAvaliacao().intValue();
 
//boolean eFinal = nota.get
 
String descricaoEpoca = mapaEpocasAvaliacao.get(epoca + "-" + momento);
130,9 → 145,25
 
if(descricaoEpoca!= null && s != null)
{
CourseUnit courseUnit;
CourseUnit courseUnit = null;
try{
courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUniqueSubscribed("" + codUnidade, year, "" + codCurso,s.getId(),cdDuracao);
 
List<CourseUnit> cus = DaoFactory.getCourseUnitDaoImpl().loadBySigesCode("" + codUnidade, "" + codCurso,cdDuracao,year);
//Uma cadeira atribuida a uma nota que pode nao ser de facto a turma dela
//A nota tem de passar a deixar de ter obrigatoriamente a cadeira
//ha que mudar isso na interface e colocar apenas o descritivo nesses casos e manter a cadeira
//a null para nao haver hipoteses de confusao
if(cus != null && cus.size() > 0)
courseUnit = cus.get(0);
if(cus.size() > 1)
{
CourseUnit c1 = cus.get(0);
CourseUnit c2 = cus.get(1);
logMessages.addMessage(new DefaultLogMessage("import.warning","",
"Mais que uma unidade para o código(unidade,curso): " + codUnidade + "," + codCurso + " -> " + courseUnit.getName() + " possiveis duas turmas: " + c1.getCdTurma() + " - " + c2.getCdTurma() , LogMessageTypeEnum.INFO));
logger.info(logMessages.getLastMessage());
serviceLogInfo(logMessages.getLastMessage());
}
if(courseUnit != null)
{
CourseUnitGrade grade = DaoFactory.getCourseUnitGradeDaoImpl().find(courseUnit.getId(),s.getId(),""+momento,""+epoca);
166,12 → 197,16
}
else
{
logMessages.addMessage(new DefaultLogMessage("import.warning","","CourseUnit: " + codUnidade + " course: " + codCurso + " student: " + s.getSigesCode() + " semestre: " + cdDuracao + " year: " + year + " does not exist", LogMessageTypeEnum.WARNING));
logger.warn("CourseUnit: " + codUnidade + " course: " + codCurso + " student: " + s.getSigesCode() + " semestre: " + cdDuracao + " year: " + year + " does not exist");
logMessages.addMessage(new DefaultLogMessage("import.warning","","CourseUnit: " + codUnidade + " course: " + codCurso + " searching for student" + s.getSigesCode() + " semestre: " + cdDuracao + " year: " + year + " does not exist", LogMessageTypeEnum.WARNING));
logger.warn(logMessages.getLastMessage());
serviceLogWarn(logMessages.getLastMessage());
}
}catch(Exception e)
{
logger.warn("Error : unit:" + codUnidade + " course:" + codCurso + " student:" + s.getId(),e);
 
logMessages.addMessage(new DefaultLogMessage("import.warning","","Error : unit:" + codUnidade + " course:" + codCurso + " student:" + s.getId(), LogMessageTypeEnum.WARNING));
logger.warn(logMessages.getLastMessage());
serviceLogWarn(logMessages.getLastMessage());
}
 
}
179,12 → 214,14
{
if(descricaoEpoca == null)
{
logger.info(epoca + "-" + momento + " nao esta catalogada para atribuicao de nota");
logMessages.addMessage(new DefaultLogMessage("import.warning","",epoca + "-" + momento + " nao esta catalogada para atribuicao de nota", LogMessageTypeEnum.WARNING));
logger.info(logMessages.getLastMessage());
serviceLogInfo(logMessages.getLastMessage());
}else
{
logMessages.addMessage(new DefaultLogMessage("import.warning","","Student: " + codAluno + " does not exist", LogMessageTypeEnum.WARNING));
logger.warn("Student: " + codAluno + " does not exist");
logger.warn(logMessages.getLastMessage());
serviceLogWarn(logMessages.getLastMessage());
}
 
}
192,19 → 229,39
}
sendSms(null);
sendEmail(null);
 
 
//AbstractDao.getCurrentSession().getTransaction().commit();
}
catch (Throwable e)
{
logger.error(e, e);
 
 
//AbstractDao.getCurrentSession().getTransaction().rollback();
logMessages.addMessage(new DefaultLogMessage("import.error", e.toString(), "see log for details", LogMessageTypeEnum.ERROR));
serviceLogError(logMessages.getLastMessage());
throw new ServiceException(e.toString(), e);
}
setProgress(100);
logger.info("######################################");
serviceLogInfo("######################################");
logger.info("######################################");
serviceLogInfo("######################################");
logger.info("STATS " + year);
serviceLogInfo("STATS " + year);
logger.info("Total Notas: " + foundTotal);
serviceLogInfo("Total Notas: " + foundTotal);
logger.info("Alunos: " + alunos.size());
serviceLogInfo("Alunos: " + alunos.size());
logger.info("Notas de Alunos em cadeiras: " + alunoCadeira.size());
serviceLogInfo("Notas de Alunos em cadeiras: " + alunoCadeira.size());
 
 
 
logMessages.addMessage(new DefaultLogMessage("import.teachers.terminating", LogMessageTypeEnum.INFO));
logger.info("terminating grades import");
logger.info(logMessages.getLastMessage());
serviceLogInfo(logMessages.getLastMessage());
return logMessages;
}
 
271,6 → 328,7
}
}
 
 
/**
* Testar por aqui poi requer Super Role e assim e' autmatico
*
288,4 → 346,9
}
 
 
@Override
protected ILogMessages runJobServiceTask() throws Throwable {
String importYear = getParametersMap().get(JOB_importYear_KEY).getObject();
return run(importYear);
}
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportStudentsService.java
44,6 → 44,7
int studentsNew = 0;
int studentsZeroUnits = 0;
int unitsNotFound = 0;
int unitsNotFoundTurma = 0;
int unitsRemovedToStudents = 0;
int unitsLocalAddedNotRemoved = 0;
int unitsLocallyRemovedNotAdded = 0;
58,6 → 59,7
studentsNew = 0;
studentsZeroUnits = 0;
unitsNotFound = 0;
unitsNotFoundTurma = 0;
unitsRemovedToStudents = 0;
unitsLocalAddedNotRemoved = 0;
unitsLocallyRemovedNotAdded = 0;
68,6 → 70,8
String activeImportYear = DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear();
 
String msgS = "STARTING STUDENTS IMPORT SERVICE FOR YEAR: " + year;
 
 
serviceLogInfo(msgS);
logger.info(msgS);
 
82,6 → 86,7
{
serviceLogInfo("STARTING WEB SERVICE AT " + WSDL);
service = new SiGesWEB(new URL(WSDL), new QName(Globals.SIGES_WEBSERVICE_TARGET_NAMESPACE, "SiGesWEB"));
 
}
catch (MalformedURLException e)
{
149,7 → 154,7
DaoFactory.getStudentDaoImpl().save(s);
newUser = true;
}
persist(alunoSiges, s, newUser,year,activeImportYear);
persist(alunoSiges, s, newUser,year,activeImportYear,logMessages,service);
//Advising CommonsServicesManager before change password
 
if (newUser)
199,6 → 204,7
serviceLogInfo("#Students Merged: " + studentsMerged);
serviceLogInfo("#Students Zero Units: " + studentsZeroUnits);
serviceLogInfo("#Units not found: " + unitsNotFound);
serviceLogInfo("#Units not found in real course (turma ok): " + unitsNotFoundTurma);
serviceLogInfo("#Units added to Students: " + unitsAddedToStudents);
serviceLogInfo("#Units removed to Students: " + unitsRemovedToStudents);
serviceLogInfo("#Units not Removed because localy added: " + unitsLocalAddedNotRemoved);
211,6 → 217,7
logger.info("#Students Merged: " + studentsMerged);
logger.info("#Students Zero Units: " + studentsZeroUnits);
logger.info("#Units not found: " + unitsNotFound);
logger.info("#Units not found in real course (turma ok): " + unitsNotFoundTurma);
logger.info("#Units added to Students: " + unitsAddedToStudents);
logger.info("#Units removed to Students: " + unitsRemovedToStudents);
logger.info("#Units not Removed because localy added: " + unitsLocalAddedNotRemoved);
257,6 → 264,82
}
}
 
public BigDecimal getRealCourse(String turma,String year, String semestre, SiGesWEB service)
{
HashMap<String,List<BigDecimal>> pairs = getCourseTurmaPairs(year,semestre,service);
List<BigDecimal> cursos = pairs.get(turma);
if(cursos.size() > 1)
{
String msgAdmin = "";
String msg = "####Atenção existe um caso de dúvida nas inscrições : " + year + "-" + semestre + " turma " + turma;
msgAdmin += msg + "\n";
logger.warn(msg);
serviceLogWarn(msg);
msg = "####A turma " + turma + " tem " + cursos.size() + " cursos associados: ";
logger.warn(msg);
serviceLogWarn(msg);
msgAdmin += msg + "\n";
for(BigDecimal curso: cursos)
{
msg = "######->turma:" + turma + " -> curso siges: " + curso.longValue();
msgAdmin += msg + "\n";
logger.warn(msg);
serviceLogWarn(msg);
}
sendNotificationAdmin("Atenção existe um caso de dúvida nas inscrições",msgAdmin);
}
if(cursos.size() > 0)
return cursos.get(0);
else
{
String msg = "####Atenção existe um em que uma turma nao tem curso associado : " + year + "-" + semestre + " turma " + turma;
sendNotificationAdmin("Atenção existe um em que uma turma nao tem curso associado",msg);
logger.error(msg);
serviceLogError(msg);
return null;
}
}
HashMap<String,HashMap<String,List<BigDecimal>>> semestreTurmaCursosPairs = new HashMap<String, HashMap<String, List<BigDecimal>>>();
private HashMap<String,List<BigDecimal>> getCourseTurmaPairs(String year,String semestre, SiGesWEB service)
{
HashMap<String,List<BigDecimal>> turmaCourses = semestreTurmaCursosPairs.get(year + ";" + semestre);
if(turmaCourses == null)
{
String msg = "Starting structure pairs turma curso para : " + year + "-" + semestre;
logger.info(msg);
serviceLogInfo(msg);
ArrayOfTurmaCurso arrayOfTurmaCurso = service.getSiGesWEBSoap().loadParesTurmaCurso(
new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode())
, year,semestre);
turmaCourses = new HashMap<String, List<BigDecimal>>();
for(TurmaCurso turmaCursoPair: arrayOfTurmaCurso.getTurmaCurso())
{
List<BigDecimal> cursos = turmaCourses.get(turmaCursoPair.getCdTurma());
if(cursos == null)
{
cursos = new ArrayList<BigDecimal>();
turmaCourses.put(turmaCursoPair.getCdTurma(),cursos);
}
if(turmaCursoPair.getCodigoCurso().intValue() > 0)
{
cursos.add(turmaCursoPair.getCodigoCurso());
msg = "Adding:" + turmaCursoPair.getCdTurma() + "->" + turmaCursoPair.getCodigoCurso();
logger.info(msg);
serviceLogInfo(msg);
}
else
{
msg = "Excluding:" + turmaCursoPair.getCdTurma() + "->" + turmaCursoPair.getCodigoCurso();
logger.warn(msg);
serviceLogInfo(msg);
}
}
semestreTurmaCursosPairs.put(year + ";" + semestre,turmaCourses);
/***END INICIALIZACAO***/
}
/**Inicialização da Estrutura de Suporte aos Cursos/Turma*/
return turmaCourses;
}
 
 
/**
266,7 → 349,7
* @param alunoSiges Aluno
* @param student Student
*/
private void persist(Aluno alunoSiges, Student student, boolean newUser, String year, String activeImportYear)
private void persist(Aluno alunoSiges, Student student, boolean newUser, String year, String activeImportYear, DefaultLogMessages logMessages, SiGesWEB service)
{
if(newUser)
{
363,11 → 446,29
ArrayOfDisciplina disciplinas = alunoSiges.getDisciplinasInscrito();
for (Disciplina disciplina : disciplinas.getDisciplina())
{
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(),"" + disciplina.getCodigoCurso(),disciplina.getCdDuracao(),disciplina.getCdLectivo());
BigDecimal codigoDoCursoReal = disciplina.getCodigoCurso();
if(disciplina.getCdTipoDisciplina() != null && disciplina.getCdTipoDisciplina().intValue() == ImportCourseService.SIGES_CODIGO_TIPO_DISCIPLINA_EXTRA_CURRICULAR)
{
 
codigoDoCursoReal = getRealCourse(disciplina.getCdTurma(),year,disciplina.getCdDuracao(),service);
String msg = "Codigo de curso (" + disciplina.getCodigoCurso() + ") da disciplina " + disciplina.getCodigo() + " tipo: " + disciplina.getCdTipoDisciplina() + " nome:" + disciplina.getNome() + "turma: " + disciplina.getCdTurma() + " Modificado para o real: " + codigoDoCursoReal;
serviceLogInfo(msg);
logger.info(msg);
}
 
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(),"" + codigoDoCursoReal,disciplina.getCdDuracao(),disciplina.getCdLectivo()
,disciplina.getCdTurma());
//Special procedure for Aluno to check if turma not exist will find without turma code to keep old years compatibility
if(courseUnit == null)
{
unitsNotFoundTurma++;
courseUnit = tryFindCourseUnitWithOutTurma(logMessages,disciplina.getCdDuracao(),""+disciplina.getCodigo().intValue()
,"" + codigoDoCursoReal.intValue(),disciplina.getCdLectivo(),disciplina.getCdTurma());
}
if(courseUnit == null)
{
unitsNotFound++;
String msg = "Unit not found: semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + disciplina.getCodigoCurso() + " year:" + disciplina.getCdLectivo();
String msg = "Unit not found: semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + codigoDoCursoReal + " year:" + disciplina.getCdLectivo() + " turma: " + disciplina.getCdTurma();
serviceLogWarn(msg);
logger.warn(msg);
}
468,6 → 569,41
}
}
 
private CourseUnit tryFindCourseUnitWithOutTurma(DefaultLogMessages logMessages, String cdDuracao, String codigo,String codigoCurso,String cdLectivo,String cdTurma)
{
CourseUnit courseUnit = null;
String msg = "Unit not found with turma code : semestre:" + cdDuracao + " codigo:" + codigo + " course:" + codigoCurso + " year:" + cdLectivo + " turma: " + cdTurma;
logMessages.addMessage(new DefaultLogMessage("", LogMessageTypeEnum.WARNING,msg));
serviceLogWarn(msg);
logger.warn(msg);
msg = "Trying without Turma code...";
serviceLogWarn(msg);
logger.warn(msg);
List<CourseUnit> cus = DaoFactory.getCourseUnitDaoImpl().loadBySigesCode("" + codigo,"" + codigoCurso,cdDuracao,cdLectivo);
if(cus != null && cus.size() == 1)
{
courseUnit = cus.get(0);
msg = "Found ok...";
serviceLogInfo(msg);
logger.info(msg);
}
else if(cus !=null && cus.size() > 1)
{
courseUnit = cus.get(0);
msg = "Found More than one, unexpected situation..." + cus.get(0).getId() + " - " + cus.get(1).getId();
logMessages.addMessage(new DefaultLogMessage("", LogMessageTypeEnum.WARNING,msg));
serviceLogWarn(msg);
logger.warn(msg);
}
else
{
msg = "Not Found ...";
serviceLogInfo(msg);
logger.info(msg);
}
return courseUnit;
 
}
private void cloneFields(Aluno alunoSiges, Student student) {
student.setName(alunoSiges.getNome());
student.setEmail(alunoSiges.getEmail());
481,9 → 617,6
student.setBirthDate(alunoSiges.getDataNascimento().toGregorianCalendar().getTime());
student.setUsername("a" + alunoSiges.getCodigo().intValue());
}
 
public static final String JOB_importYear_KEY = "JOB_importYear_KEY";
 
@Override
protected ILogMessages runJobServiceTask() throws Throwable {
 
/impl/src/java/pt/estgp/estgweb/services/sigesimports/SincronizeLastYearCourseUnitProgramsService.java
386,10 → 386,6
}
 
 
public static final String JOB_importYear_KEY = "JOB_importYear_KEY";
public static final String JOB_cloneOnlyNews_KEY = "JOB_cloneOnlyNews_KEY";
public static final String JOB_generateAllPdfs_KEY = "JOB_generateAllPdfs_KEY";
public static final String JOB_validate_KEY = "JOB_validade_KEY";
 
/**
* Parameters for ServiceJob
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportTeachersService.java
328,7 → 328,10
{
String msgS;
 
 
if(teacherSiges.getCodigoFuncionario().longValue()==20115)
System.out.println("Sergio");
if(teacherSiges.getCodigoFuncionario().longValue()==20219)
System.out.println("Eliseu");
try
{
 
448,8 → 451,12
Set<CourseUnit> units = new HashSet<CourseUnit>();
for (Disciplina disciplina : teacherSiges.getDisciplinas().getDisciplina())
{
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(), "" + disciplina.getCodigoCurso(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo());
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(), "" + disciplina.getCodigoCurso(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo(),disciplina.getCdTurma());
 
//Ja todas as unidades tem todas turma, um dos docentes vai perder uma e o outro docente perde a outra
//por exemplo uma que era dos dois vai continuar nos dois e será removida de um deles
//a outra será adicionada
 
if (courseUnit == null)
{
msgS = "Unit not found: semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + disciplina.getCodigoCurso() + " year:" + disciplina.getCdLectivo();
491,7 → 498,7
}
if (!isIn)
{
String msg = "Adicionando unidade: " + ((CourseUnitImpl)c).getSigesUniqueIdentifiers() + " - ao teacher: " + teacher.getSigesCode() + " - Associacao nova no SIGES";
String msg = "Adicionando unidade: " + ((CourseUnitImpl)c).getSigesUniqueIdentifiers() + " - ao teacher: " + teacher.getSigesCode() + " turma " + c.getCdTurma() + " - Associacao nova no SIGES";
serviceLogInfo(msg);
logger.info(msg);
unitsAddedToTeachers++;
533,12 → 540,14
if(!added)
{
 
if(!tImpl.isLocalRemovedUnit(cUNow))
if(!tImpl.isLocalUnit(cUNow))
{
String msg = "Removendo unidade: " + ((CourseUnitImpl)cUNow).getSigesUniqueIdentifiers() + " - do docente: " + teacher.getSigesCode() + " - Associacao desapareceu do SIGES";
//todo e tirar a linha de baixo no futuro - String msg = "Removendo unidade: " + ((CourseUnitImpl)cUNow).getSigesUniqueIdentifiers() + " - do docente: " + teacher.getSigesCode() + " - Associacao desapareceu do SIGES";
String msg = "Temporariamente não mas sim adicionando localmente, Removendo unidade: " + ((CourseUnitImpl)cUNow).getSigesUniqueIdentifiers() + " - do docente: " + teacher.getSigesCode() + " - Associacao desapareceu do SIGES";
((TeacherImpl)tImpl).addUnitLocaly(cUNow);
serviceLogInfo(msg);
logger.info(msg);
iterNowUnits.remove();
//todo iterNowUnits.remove();
unitsRemovedToTeachers++;
}
else
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportCourseService.java
19,9 → 19,7
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.Email;
import pt.ipportalegre.siges.web.services.ArrayOfDisciplina;
import pt.ipportalegre.siges.web.services.Disciplina;
import pt.ipportalegre.siges.web.services.SiGesWEB;
import pt.ipportalegre.siges.web.services.*;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import javax.xml.namespace.QName;
84,6 → 82,7
return logMessages;
}
 
 
importUnitsSemestre(service, "S1", year, disciplinasMap, disciplinasMapS1, cursosMap, logMessages);
importUnitsSemestre(service, "S2", year, disciplinasMap, disciplinasMapS2, cursosMap, logMessages);
importUnitsSemestre(service, "A", year, disciplinasMap, disciplinasMapA, cursosMap, logMessages);
125,13 → 124,13
/**
* Update Course Units
*/
updateCourseUnits(disciplinasMapS1, "S1",logMessages,year);
updateCourseUnits(disciplinasMapS2, "S2",logMessages,year);
updateCourseUnits(disciplinasMapA, "A",logMessages,year);
updateCourseUnits(disciplinasMapT1, "T1",logMessages,year);
updateCourseUnits(disciplinasMapT2, "T2",logMessages,year);
updateCourseUnits(disciplinasMapT3, "T3",logMessages,year);
updateCourseUnits(disciplinasMapT4, "T4",logMessages,year);
updateCourseUnits(disciplinasMapS1, "S1",logMessages,year,service);
updateCourseUnits(disciplinasMapS2, "S2",logMessages,year,service);
updateCourseUnits(disciplinasMapA, "A",logMessages,year,service);
updateCourseUnits(disciplinasMapT1, "T1",logMessages,year,service);
updateCourseUnits(disciplinasMapT2, "T2",logMessages,year,service);
updateCourseUnits(disciplinasMapT3, "T3",logMessages,year,service);
updateCourseUnits(disciplinasMapT4, "T4",logMessages,year,service);
 
serviceLogInfo("######################################");
serviceLogInfo("######################################");
211,6 → 210,8
HashMap<String, Disciplina> cursosMap,
DefaultLogMessages logMessages)
{
 
 
logMessages.addMessage(new DefaultLogMessage("import.semestre.course.units." + semestre, LogMessageTypeEnum.INFO));
serviceLogInfo("importing " + semestre + " course units");
logger.info("importing " + semestre + " course units");
218,43 → 219,94
List<Disciplina> disciplinas = arrayOfDisciplina.getDisciplina();
for (Disciplina d : disciplinas)
{
if (disciplinasMap.get(d.getCodigo().intValue() + ":" + d.getCodigoCurso() + ":" + semestre) != null)
if (disciplinasMap.get(getDisciplinaUniqueRef(d)) != null)
{
logMessages.addMessage(new DefaultLogMessage("import.semestre.repeated." + semestre, "unit: " + d.getCodigo().intValue(), "", LogMessageTypeEnum.WARNING));
serviceLogWarn("repeated unit in " + semestre + ":" + d.getCodigo().intValue());
logger.warn("repeated unit in " + semestre + ":" + d.getCodigo().intValue());
}
disciplinasMap.put(d.getCodigo().intValue() + ":" + d.getCodigoCurso() + ":" + semestre, d);
disciplinasMapSemestre.put(d.getCodigo().intValue() + ":" + d.getCodigoCurso() + ":" + semestre, d);
disciplinasMap.put(getDisciplinaUniqueRef(d), d);
disciplinasMapSemestre.put(getDisciplinaUniqueRef(d), d);
cursosMap.put(d.getCodigoCurso().intValue()+":"+year, d);
}
}
 
private void updateCourseUnits(HashMap<String, Disciplina> disciplinasMapS, String semestre, DefaultLogMessages logMessages, String year)
private String getDisciplinaUniqueRef(Disciplina d)
{
return d.getCodigo().intValue() + ":" + d.getCodigoCurso() + ":" + d.getCdDuracao() + ":" + d.getCdTurma();
}
 
public static final int SIGES_CODIGO_TIPO_DISCIPLINA_EXTRA_CURRICULAR = ConfigProperties.getIntProperty("siges.codigo.tipo.disciplina.extra.curricular");
private void updateCourseUnits(HashMap<String, Disciplina> disciplinasMapS, String semestre, DefaultLogMessages logMessages, String year,SiGesWEB service)
{
logMessages.addMessage(new DefaultLogMessage("import.semestre.updating.course.units." + semestre, LogMessageTypeEnum.INFO));
 
 
logger.info("updating " + semestre + " course units");
serviceLogInfo("updating " + semestre + " course units");
Set<Map.Entry<String, Disciplina>> set = disciplinasMapS.entrySet();
for (Map.Entry<String, Disciplina> entry : set)
{
Disciplina d = entry.getValue();
//TIPO 6 é uma EXTRA CURRICULAR
if(d.getCdTipoDisciplina().longValue() == SIGES_CODIGO_TIPO_DISCIPLINA_EXTRA_CURRICULAR)
{
logMessages.addMessage(new DefaultLogMessage("import.error","Ignorando disciplina com tipo = " + d.getCdTipoDisciplina(), "see log for details", LogMessageTypeEnum.WARNING));
logger.warn(logMessages.getLastMessage());
serviceLogWarn(logMessages.getLastMessage());
 
continue;
}
CourseUnit c;
try{
c = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + d.getCodigo(), "" + d.getCodigoCurso(), semestre, year);
c = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + d.getCodigo(), "" + d.getCodigoCurso(), semestre, year, d.getCdTurma());
}catch(NonUniqueResultException e)
{
logger.fatal("Unidade Repetida: (" + d.getCodigo() + ") curso: " + d.getCodigoCurso() + " " + semestre + " " + year);
serviceLogFatal("Unidade Repetida: (" + d.getCodigo() + ") curso: " + d.getCodigoCurso() + " " + semestre + " " + year);
logMessages.addMessage(new DefaultLogMessage("import.error","Unidade Repetida: (" + d.getCodigo() + ") curso: " + d.getCodigoCurso() + " " + semestre + " " + year, "see log for details", LogMessageTypeEnum.ERROR));
logger.fatal(logMessages.getLastMessage());
serviceLogWarn(logMessages.getLastMessage());
 
throw e;
}
//NOVO pode ainda nao ter turma
if(c == null)
{
List<CourseUnit> cus = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeTurmaNull("" + d.getCodigo(), "" + d.getCodigoCurso(), semestre, year);
if(cus == null || cus.size() == 0 )
{
// nao faz nada deixa ir null para criar
 
}
else if(cus.size() == 1)
{
//Tem de levar turma
c = cus.get(0);
c.setCdTurma(d.getCdTurma());
//é a primeira leva com o primeiro código de turma mete-se já este mas a seguir pode vir outro
logger.info("Adding turma code: " + d.getCdTurma() + " to unit:" + d.getCodigo() + "/" + d.getNome() + " curso:" + d.getCodigoCurso() + "/" + d.getNomeCurso());
serviceLogInfo("Adding turma code: " + d.getCdTurma() + " to unit:" + d.getCodigo() + "/" + d.getNome() + " curso:" + d.getCodigoCurso() + "/" + d.getNomeCurso());
}
else
{
logMessages.addMessage(new DefaultLogMessage("import.error", "Unidade Repetida: (" + d.getCodigo() + ") curso: " + d.getCodigoCurso() + " " + semestre + " " + year + " " + d.getCdTurma(), "see log for details", LogMessageTypeEnum.ERROR));
logger.fatal(logMessages.getLastMessage());
serviceLogWarn(logMessages.getLastMessage());
}
}
//NOVO
if (c == null)
{
c = DomainObjectFactory.createCourseUnitImpl();
DaoFactory.getCourseUnitDaoImpl().save(c);
serviceLogInfo("New Unit Found: (" + d.getCodigo() + ") " + d.getNome() + " - curso (" + d.getNomeCurso() + ") " + d.getNomeCurso());
logMessages.addMessage(new DefaultLogMessage("import.error", "New Unit Found: (" + d.getCodigo() + ") " + d.getNome() + " - curso (" + d.getNomeCurso() + ") " + d.getNomeCurso() + " turma(" + d.getCdTurma() + ")", "see log for details", LogMessageTypeEnum.ERROR));
logger.info(logMessages.getLastMessage());
serviceLogInfo(logMessages.getLastMessage());
newUnits++;
}
//NOVO
 
c.setCdTurma("" + d.getCdTurma());
//FIM NOVO
c.setName(d.getNome());
c.setInstitutionCode("" + DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode());
c.setCode("" + d.getCodigo().intValue());
264,11 → 316,9
c.setImportYear(year);
Course course = DaoFactory.getCourseDaoImpl().findCourseByCode(c.getCourseCode());
c.setCourse(course);
 
}
}
 
public static final String JOB_importYear_KEY = "JOB_importYear_KEY";
 
@Override
protected ILogMessages runJobServiceTask() throws Throwable {
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportSumariesJson.java
108,7 → 108,7
String nowCode = "";
for(Long cId: cUs)
{
nowCode = "BACO_ONLY_CODE" + cId;
nowCode = "" + cId;
countUnits++;
try
{
143,8 → 143,10
break;
}
 
 
logger.error("WebService Fail, trying " + tries + " times sleeping a while");
serviceLogError("WebService Fail, trying " + tries + " times sleeping a while");
serviceLogError("WebService Fail, trying " + tries + " times sleeping a while " + t.toString());
serviceLogError("WebService Fail, trying " + tries + " times sleeping a while " + t.getCause());
Thread.sleep(5000);
}
}
166,6 → 168,16
for(Aula aula: arrayOfAulas.getAula())
{
 
if(c.getCdTurma() != null && aula.getAulaCodigoTurma()!=null
&& c.getCdTurma().trim().length() > 0
&& aula.getAulaCodigoTurma().trim().length() > 0
&& !aula.getAulaCodigoTurma().equals(c.getCdTurma()))
{
//Código de Turma diferente
System.out.println("Ignoring summary code: " + aula.getAulaCodigoTurma() + " for unit " + c.getName() + "/" + c.getCode() + " T:" + c.getCdTurma());
continue;
}
 
//CourseUnitSummary s = map.get(aula.getSumNumeroAula() + ":" + aula.getCodigoSumario());
//if(s == null)
//{
200,6 → 212,7
}
else if(summariesValid == 0)
{
//NAO METE OK NEM ZERO
countUnitsZeroValidSummaries++;
unitsZeroSummaries.add(c.getCode());
logger.info("ZERO VALID SUMARIES unit:" + c.getCode() + " course: " + c.getCourseCode());
224,6 → 237,7
}
else
{
//NAO METE OK MAS METE ZERO
countUnitsZeroSummaries++;
unitsZeroSummaries.add(c.getCode());
logger.error("Summaries come null in unit:" + c.getCode());
232,6 → 246,7
}
catch(Throwable e)
{
//NAO METE OK
unitsFailed.add(nowCode);
logger.error(e,e);
serviceLogError(e.toString(),e);
254,23 → 269,33
logger.info("terminating summaries import");
serviceLogInfo(logMessages.getLastMessage());
 
StringBuilder failedUnitsExc = new StringBuilder();
for(String cId: unitsFailed)
failedUnitsExc.append(cId).append(";");
 
serviceLogInfo("#######################################");
serviceLogInfo("#######################################");
serviceLogInfo("UNITS PROCESSED: " + countUnits);
serviceLogInfo("UNITS FAILED: " + (countUnits - countUnitsZeroSummaries - countUnitsOk));
serviceLogInfo("UNITS FAILED: " + (countUnits - countUnitsZeroSummaries - countUnitsOk - countUnitsZeroValidSummaries));
serviceLogInfo("UNITS FAILED EXCEPTION PARSING XML WEB SERVICE: " + unitsFailed.size());
serviceLogInfo("UNITS IMPORT OK: " + countUnitsOk);
serviceLogInfo("UNITS ZERO SUMARIES: " + countUnitsZeroSummaries);
serviceLogInfo("UNITS ZERO VALID SUMARIES: " + countUnitsZeroValidSummaries);
serviceLogInfo("#######################################");
serviceLogWarn("####FAILED Exception (Check exceptions in log): Units Baco Id Code : " + failedUnitsExc.toString());
 
logger.info("#######################################");
logger.info("#######################################");
logger.info("UNITS PROCESSED: " + countUnits);
logger.info("UNITS FAILED: " + (countUnits - countUnitsZeroSummaries - countUnitsOk));
logger.info("UNITS FAILED: " + (countUnits - countUnitsZeroSummaries - countUnitsOk - countUnitsZeroValidSummaries));
logger.info("UNITS FAILED EXCEPTION PARSING XML WEB SERVICE: " + unitsFailed.size());
logger.info("UNITS IMPORT OK: " + countUnitsOk);
logger.info("UNITS ZERO SUMARIES: " + countUnitsZeroSummaries);
logger.info("UNITS ZERO VALID SUMARIES: " + countUnitsZeroValidSummaries);
logger.info("#######################################");
logger.warn("####FAILED Exception (Check exceptions in log): Units Baco Id Code : " + failedUnitsExc.toString());
 
 
return logMessages;
}
 
366,8 → 391,8
 
String year = DaoFactory.getConfigurationDaoImpl().getImportsDefaultImportYearCreateTransaction();
String semestre = null;
boolean sendIonline = true;
boolean sendEmail = true;
boolean sendIonline = false;
boolean sendEmail = false;
if(args != null && args.length > 0)
year = args[0];
 
393,11 → 418,6
}
 
 
public static final String JOB_importYear_KEY = "JOB_importYear_KEY";
public static final String JOB_semestre_KEY = "JOB_semestre_KEY";
public static final String JOB_sendIonline_KEY = "JOB_sendIonline_KEY";
public static final String JOB_sendEmail_KEY = "JOB_sendEmail_KEY";
 
@Override
protected ILogMessages runJobServiceTask() throws Throwable {
 
/impl/src/java/pt/estgp/estgweb/services/jobs/JobScheduleService.java
143,6 → 143,125
DaoFactory.getJobServiceTaskSchedulerDaoImpl().delete(persistent);
}
 
public void save(JobServiceTaskSchedulerImpl scheduler
,String jobCloneOnlyNewsKey
,String jobJobGenerateAllPdfsKey
,String jobJobImportYearKey
,String jobJobSemestreKey
,String jobSendEmailKey
,String jobSendIonlineKey
,String jobJobValidateKey
,UserSession sess)
{
JobServiceTaskSchedulerImpl persistent;
if(scheduler.getId() <= 0)
{
persistent = DomainObjectFactory.createJobServiceTaskSchedulerImpl();
persistent.setSaveDate(new Date());
persistent.setActive(false);
persistent.setCreatedBy(sess.getUser());
DaoFactory.getJobServiceTaskSchedulerDaoImpl().save(persistent);
 
logger.info("Will create task scheduller " + persistent.getTargetService() + " id:" + scheduler.getId());
}
else
{
persistent = (JobServiceTaskSchedulerImpl) DaoFactory.getJobServiceTaskSchedulerDaoImpl().load(scheduler.getId());
logger.warn("Will update task scheduller " + persistent.getTargetService() + " id:" + scheduler.getId());
}
 
persistent.setTargetService(scheduler.getTargetService());
persistent.setDaily(scheduler.isDaily());
persistent.setMonthly(scheduler.isMonthly());
persistent.setWeekly(scheduler.isWeekly());
 
persistent.setHour(scheduler.getHour());
persistent.setMinute(scheduler.getMinute());
persistent.setSecond(scheduler.getSecond());
persistent.setDescription(scheduler.getDescription());
 
Set<JobServiceTaskSchedulerParameter> params = persistent.getServiceTaskSchedulerParameters();
if(persistent.getTargetService().equals(ImportCourseService.class.getName()) ||
persistent.getTargetService().equals(ImportGradesService.class.getName()) ||
persistent.getTargetService().equals(ImportStudentsService.class.getName()) ||
persistent.getTargetService().equals(ImportTeachersService.class.getName()))
{
if(params == null || params.size() == 0)
{
createParameter(persistent,ServiceJob.JOB_importYear_KEY);
}
JobServiceTaskSchedulerParameter parameter = params.iterator().next();
parameter.setObject(jobJobImportYearKey);
}
else if(persistent.getTargetService().equals(ImportSumariesJson.class.getName()))
{
if(params == null || params.size() == 0)
{
createParameter(persistent,ServiceJob.JOB_importYear_KEY);
createParameter(persistent,ServiceJob.JOB_semestre_KEY);
createParameter(persistent,ServiceJob.JOB_sendIonline_KEY);
createParameter(persistent,ServiceJob.JOB_sendEmail_KEY);
}
for(JobServiceTaskSchedulerParameter param:persistent.getServiceTaskSchedulerParameters())
{
if(param.getName().equals(ServiceJob.JOB_importYear_KEY))
{
param.setObject(jobJobImportYearKey);
}
else if(param.getName().equals(ServiceJob.JOB_semestre_KEY))
{
param.setObject(jobJobSemestreKey);
}
else if(param.getName().equals(ServiceJob.JOB_sendIonline_KEY))
{
param.setObject(jobSendIonlineKey);
}
else if(param.getName().equals(ServiceJob.JOB_sendEmail_KEY))
{
param.setObject(jobSendEmailKey);
}
}
 
}
else if(persistent.getTargetService().equals(SincronizeLastYearCourseUnitProgramsService.class.getName()))
{
if(params == null || params.size() == 0)
{
createParameter(persistent,ServiceJob.JOB_importYear_KEY);
createParameter(persistent,ServiceJob.JOB_cloneOnlyNews_KEY);
createParameter(persistent,ServiceJob.JOB_generateAllPdfs_KEY);
createParameter(persistent,ServiceJob.JOB_validate_KEY);
}
for(JobServiceTaskSchedulerParameter param:persistent.getServiceTaskSchedulerParameters())
{
if(param.getName().equals(ServiceJob.JOB_importYear_KEY))
{
param.setObject(jobJobImportYearKey);
}
else if(param.getName().equals(ServiceJob.JOB_cloneOnlyNews_KEY))
{
param.setObject(jobCloneOnlyNewsKey);
}
else if(param.getName().equals(ServiceJob.JOB_generateAllPdfs_KEY))
{
param.setObject(jobJobGenerateAllPdfsKey);
}
else if(param.getName().equals(ServiceJob.JOB_validate_KEY))
{
param.setObject(jobJobValidateKey);
}
}
}
}
 
private void createParameter(JobServiceTaskSchedulerImpl persistent,String name) {
JobServiceTaskSchedulerParameterImpl param = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl();
param.setJobServiceTaskScheduler(persistent);
persistent.getServiceTaskSchedulerParameters().add(param);
param.setName(name);
DaoFactory.getJobServiceTaskSchedulerParameterDaoImpl().save(param);
}
 
public static void main(String[] args) throws SQLException
{
AbstractDao.getCurrentSession().beginTransaction();
/impl/src/java/pt/estgp/estgweb/services/jobs/ServiceJob.java
22,7 → 22,15
public abstract class ServiceJob implements JobHandler
{
 
public static final String JOB_importYear_KEY = "JOB_importYear_KEY";
public static final String JOB_semestre_KEY = "JOB_semestre_KEY";
public static final String JOB_sendIonline_KEY = "JOB_sendIonline_KEY";
public static final String JOB_sendEmail_KEY = "JOB_sendEmail_KEY";
public static final String JOB_cloneOnlyNews_KEY = "JOB_cloneOnlyNews_KEY";
public static final String JOB_generateAllPdfs_KEY = "JOB_generateAllPdfs_KEY";
public static final String JOB_validate_KEY = "JOB_validade_KEY";
/*Log for service run*/
 
protected final Logger serviceLog = Logger.getLogger(ServiceJob.class);
 
/*Class regular log*/
136,8 → 144,10
protected abstract ILogMessages runJobServiceTask() throws Throwable;
 
protected void commitPartially() {
 
AbstractDao.getCurrentSession().getTransaction().commit();
AbstractDao.getCurrentSession().beginTransaction();
AbstractDao.getCurrentSession().update(jobServiceTask);
if(jobServiceTask != null)
AbstractDao.getCurrentSession().update(jobServiceTask);
}
}
/impl/src/java/pt/estgp/estgweb/services/data/RepositoryService.java
115,6 → 115,10
return repositoryFile;
}
 
public IRepositoryFile loadByIdentifier(String identifier)
{
return load(identifier,null);
}
/**
* @param identifier .
* @param userSession .
/impl/src/java/pt/estgp/estgweb/services/announcements/CreateAnnouncementService.java
4,6 → 4,7
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.dao.impl.AnnouncementDaoImpl;
import pt.estgp.estgweb.domain.enums.LangEnum;
import pt.estgp.estgweb.domain.views.AnnouncementView;
import pt.estgp.estgweb.domain.views.UserView;
85,7 → 86,7
return all;
}
}
public List<UserView> sendMessage(HttpServletRequest request, String from, String year, String department, long courseId, long courseUnitId, String semestre, MessageTarget target, String text,String subject, UserSession userSession)
public List<UserView> sendMessageOld(HttpServletRequest request, String from, String year, String department, long courseId, long courseUnitId, String semestre, MessageTarget target, String text,String subject, UserSession userSession)
{
List<User> users = DaoFactory.getAnnouncementDaoImpl().findUsers(year,department,courseId,courseUnitId,semestre,target);
List<User> usersToConsume = new ArrayList<User>();
103,6 → 104,41
iter.remove();
contador++;
}
Email e = sendEmailService.getMessageEmailOld(
jomm.utils.MessageResources.getMessage(request, "user.role." + from),
subject,
text,
LangEnum.PORTUGUESE,
jomm.utils.MessageResources.getMessage(request, "submit.todo.message." + target.getTarget()),
usersToJob,
userSession.getUser());
e.setHtml(true);
EMAILJob emailJob = new EMAILJob(e);
JobScheduleService.getInstance().scheduleNow(emailJob,"Message Email from " + userSession.getUsername() + " as " + from + ": year:" + year + " - department:" + department + " - courseId:" + courseId + " - courseUnitId:" + courseUnitId + " - semestre:" + semestre + " - target:" + target + " - subject:" + subject ,userSession);
}
List<UserView> userViews = UserView.getViews(users);
return userViews;
}
 
public Integer sendMessage(HttpServletRequest request, String from, String year, String department, long courseId, long courseUnitId, String semestre, MessageTarget target, String text,String subject, UserSession userSession)
{
//List<User> users = DaoFactory.getAnnouncementDaoImpl().findUsers(year,department,courseId,courseUnitId,semestre,target);
AnnouncementDaoImpl.FindUsersResult result = DaoFactory.getAnnouncementDaoImpl().findUsersEmails(year, department, courseId, courseUnitId, semestre, target);
List<String> usersToConsume = result.emails;
 
 
logger.info("Scheduling mail jobs to " + result.users + " users: " + usersToConsume.size() + " recipients");
while(usersToConsume.size() > 0)
{
Iterator<String> iter = usersToConsume.iterator();
List<String> usersToJob = new ArrayList<String>();
int contador = 0;
while(iter.hasNext() && contador < 20)
{
usersToJob.add(iter.next());
iter.remove();
contador++;
}
Email e = sendEmailService.getMessageEmail(
jomm.utils.MessageResources.getMessage(request,"user.role." + from),
subject,
115,8 → 151,8
EMAILJob emailJob = new EMAILJob(e);
JobScheduleService.getInstance().scheduleNow(emailJob,"Message Email from " + userSession.getUsername() + " as " + from + ": year:" + year + " - department:" + department + " - courseId:" + courseId + " - courseUnitId:" + courseUnitId + " - semestre:" + semestre + " - target:" + target + " - subject:" + subject ,userSession);
}
List<UserView> userViews = UserView.getViews(users);
return userViews;
 
return result.users;
}
 
public AnnouncementView run(AnnouncementView announcementView, Image imageBig, Image imageSmall, UserSession userSession)
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitProgramImpl.java
505,9 → 505,13
 
private static void importCourseUnit(CourseUnitInputLine line, String importYear) throws TransformerException, IOException, FOPException {
 
CourseUnit cu;
CourseUnit cu = null;
try{
cu = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique(line.codigoSIGESUnidade,line.codigoCurso,line.semestre, importYear);
//todo revisao necessaria
System.out.println("######FRAGMENTO DE CODIGO DESATUALIZADO, NESTE MOMENTO UMA CADEIRA AQUI NAO E UNICA (FALTA ID DE TURMA) -> NECESSITA DE REVISAO");
List<CourseUnit> cs = DaoFactory.getCourseUnitDaoImpl().loadBySigesCode(line.codigoSIGESUnidade,line.codigoCurso,line.semestre, importYear);
if(cs!=null && cs.size() > 0)
cu=cs.get(0);
}catch(NonUniqueResultException e)
{
errors.add("unidade nao unica: " + line.codigoSIGESUnidade + ":" + line.codigoCurso + ":" + line.semestre + ":" + importYear );
/impl/src/java/pt/estgp/estgweb/domain/views/CourseView.java
6,10 → 6,12
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.web.utils.DatesUtils;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
 
/**
22,6 → 24,15
{
private static final Logger logger = Logger.getLogger(CourseView.class);
 
static HashMap<String,String> degrees = new HashMap<String, String>();
static
{
List<String> degreesProps = ConfigProperties.getListValues("siges.degree.");
for(String degree: degreesProps)
{
degrees.put(degree,degree);
}
}
 
private long id;
 
250,7 → 261,15
{
return degree;
}
public String getDegreeCleanCode()
{
 
if(degree == null || degree.trim().length() > 0)
if(degrees.get(degree)!=null)
return degree;
return Globals.COURSE_DEGREE_UNKNOWN; //for unknown
}
 
public void setDegree(String degree)
{
this.degree = degree;
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java
62,6 → 62,7
private String extension;
private List<CourseUnitAssignementView> courseUnitAssignements;
private String sumariosPathFileIntranet;
private String cdTurma;
 
private boolean notFound = false;
 
136,6 → 137,7
this.summariesJson = courseUnit.getSummariesJson();
this.sumariosPathFileIntranet = ((CourseUnitImpl)courseUnit).getSummariosPathFileIntranet();
this.evaluationOpenByAdmin = courseUnit.isEvaluationOpenByAdmin(); //nao tem persistencia propria tem de ser feito num serviço
this.cdTurma = courseUnit.getCdTurma();
 
// this.objectives = courseUnit.getObjectives(); DEPRECATED
if(courseUnit.getCourseUnitProgram() !=null && courseUnit.getCourseUnitProgram().getCourseUnitProgramPart2() != null)
229,6 → 231,10
return responsableId;
}
 
public String getCdTurma() {
return cdTurma;
}
 
public void setResponsableId(long responsableId) {
this.responsableId = responsableId;
}
356,6 → 362,7
c.setImportYear(importYear);
c.setName(name);
c.setCode(code);
c.setCdTurma(cdTurma);
c.setSemestre(semestre);
if(courseId > 0)
{
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java
97,7 → 97,8
return anCourseUnit.getCode() != null && getCode() != null && getCode().equals(anCourseUnit.getCode()) &&
anCourseUnit.getCourseCode() != null && getCourseCode() != null && getCourseCode().equals(anCourseUnit.getCourseCode()) &&
anCourseUnit.getSemestre() != null && getSemestre() != null && getSemestre().equals(anCourseUnit.getSemestre()) &&
anCourseUnit.getImportYear() != null && getImportYear() != null && getImportYear().equals(anCourseUnit.getImportYear());
anCourseUnit.getImportYear() != null && getImportYear() != null && getImportYear().equals(anCourseUnit.getImportYear()) &&
anCourseUnit.getCdTurma() != null && getCdTurma() != null && getCdTurma().equals(anCourseUnit.getCdTurma());
}
return false;
 
124,6 → 125,12
return Globals.FTP_IONLINE_START_PATH + "/" + getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_Sumarios;
}
 
public String getInqueritosPedagogicosPathIntranet()
{
return Globals.FTP_IONLINE_START_PATH + getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_InqueritoPedagogico;
}
 
 
public String getSummariosPathFileIntranet()
{
return getSummariosPathIntranet() + "/" + getSummariosFileNameIntranet();
137,7 → 144,7
public String getSigesUniqueIdentifiers()
{
return "SIGES:" + getCode() + ", COURSE: " + getCourseCode() +
", " + getSemestre() + " of " + getImportYear() + " - " + getName();
", " + getSemestre() + " of " + getImportYear() + " - " + getName() + " Turma - " + getCdTurma();
}
 
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/UserDaoImpl.java
12,6 → 12,7
import pt.estgp.estgweb.services.common.SearchTypeEnum;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
133,6 → 134,8
 
public List<User> loadRoleUsers(String role)
{
if(role == null || role.trim().length() == 0)
return new ArrayList<User>();
return createCriteria().add(like("roles", "%" + role + "%")).addOrder(Order.asc("name")).list();
}
 
226,10 → 229,14
// Duarte Santos
public List<User> loadRolesUsers(List<String> roles)
{
if(roles == null || roles.size() == 0)
return new ArrayList<User>();
Criteria criteria = createCriteria();
Criterion co = null;
for (String role : roles)
{
if(role.trim().length() == 0)
continue;
Criterion cor = like("roles", "%" + role + "%");
if (co == null)
co = cor;
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/ConfigurationDaoImpl.java
59,6 → 59,17
return config;
}
 
public Configuration loadSimpleConfigurationForConsult()
{
List<Configuration> configs = createCriteria().list();
if(configs.size() == 0)
{
return null;
}
else
return configs.get(0);
}
 
public void updateInterfaceImportYearCreateTransaction(String importYear)
{
getCurrentSession().beginTransaction();
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/AnnouncementDaoImpl.java
4,6 → 4,8
import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
34,6 → 36,292
}
 
 
public static class FindUsersResult
{
public int users;
public List<String> emails;
}
public FindUsersResult findUsersEmails(String year, String department, long courseId, long courseUnitId, String semestre, CreateAnnouncementService.MessageTarget target)
{
FindUsersResult findUsersResult = new FindUsersResult();
List<String> users = new ArrayList<String>();
findUsersResult.emails = users;
 
ProjectionList projList = Projections.projectionList();
projList.add(Projections.distinct(Projections.property("id")));
projList.add(Projections.property("sigesCode"));
projList.add(Projections.property("email"));
projList.add(Projections.property("outEmail"));
 
if(target.isWorkers())
{
Criteria criteria = createCriteria(User.class);
criteria.add(like("roles", "%worker%"));
List<User > l = criteria.list();
findUsersResult.users = l.size();
for(User u: l)
{
if(u.getEmail() != null)
users.add(u.getEmail());
if(u.getOutEmail() != null)
users.add(u.getOutEmail());
}
}
 
if(courseUnitId > 0)
{
CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(courseUnitId);
if(target.isTeachers())
{
findUsersResult.users = cu.getTeachers().size();
for(Teacher t: cu.getTeachers())
{
 
if(t.getEmail() != null)
users.add(t.getEmail());
if(t.getOutEmail() != null)
users.add(t.getOutEmail());
}
}
if(target.isStudents())
{
findUsersResult.users = cu.getStudents().size();
for(Student t: cu.getStudents())
{
if(t.getEmail() != null)
users.add(t.getEmail());
if(t.getOutEmail() != null)
users.add(t.getOutEmail());
}
}
}
else if(semestre != null && semestre.length() > 0)
{
if(target.isTeachers())
{
Criteria usersC = createCriteria(Teacher.class);
usersC.setProjection(projList);
usersC.createAlias("teachedUnits", "tU");
usersC.createAlias("tU.course","tUC");
usersC.add(eq("tU.semestre",semestre))
.add(eq("tUC.id",courseId));
//NOVO
if(year != null && year.length() > 0)
usersC.add(eq("tU.importYear",year));
//NOVO
List<Object[]> l = usersC.list();
findUsersResult.users = l.size();
for(Object[] t: l)
{
// if(t[1] != null)
// users.add(t[1] + "@" + Globals.EMAIL_LOCAL_SUFFIX);
if(t[2] != null)
users.add((String) t[2]);
if(t[3] != null)
users.add((String) t[3]);
}
}
if(target.isStudents())
{
Criteria usersC = createCriteria(Student.class);
usersC.setProjection(projList);
usersC.createAlias("subscribedUnits", "sU");
usersC.createAlias("sU.course","sUC");
usersC.add(eq("sU.semestre",semestre))
.add(eq("sUC.id",courseId));
if(year != null && year.length() > 0)
usersC.add(eq("sU.importYear",year));
List<Object[]> l = usersC.list();
findUsersResult.users = l.size();
 
for(Object[] t: l)
{
// if(t[1] != null)
// users.add(t[1] + "@" + Globals.EMAIL_LOCAL_SUFFIX);
if(t[2] != null)
users.add((String) t[2]);
if(t[3] != null)
users.add((String) t[3]);
}
}
}
else if(courseId > 0)
{
if(target.isTeachers())
{
Criteria usersC = createCriteria(Teacher.class);
usersC.setProjection(projList);
usersC.createAlias("teachedUnits", "tU");
usersC.createAlias("tU.course","tUC");
usersC.add(eq("tUC.id",courseId));
if(year != null && year.length() > 0)
usersC.add(eq("tU.importYear",year));
List<Object[]> l = usersC.list();
findUsersResult.users = l.size();
for(Object[] t: l)
{
// if(t[1] != null)
// users.add(t[1] + "@" + Globals.EMAIL_LOCAL_SUFFIX);
if(t[2] != null)
users.add((String) t[2]);
if(t[3] != null)
users.add((String) t[3]);
}
}
if(target.isStudents())
{
Criteria usersC = createCriteria(Student.class);
usersC.setProjection(projList);
usersC.createAlias("subscribedUnits", "sU");
usersC.createAlias("sU.course","sUC");
usersC.add(eq("sUC.id",courseId));
if(year != null && year.length() > 0)
usersC.add(eq("sU.importYear",year));
List<Object[]> l = usersC.list();
findUsersResult.users = l.size();
for(Object[] t: l)
{
// if(t[1] != null)
// users.add(t[1] + "@" + Globals.EMAIL_LOCAL_SUFFIX);
if(t[2] != null)
users.add((String) t[2]);
if(t[3] != null)
users.add((String) t[3]);
}
}
}
else if(department != null && department.length() > 0)
{
if(target.isTeachers())
{
Criteria usersC = createCriteria(Teacher.class);
usersC.setProjection(projList);
usersC.createAlias("teachedUnits", "tU");
usersC.createAlias("tU.course","tUC");
usersC.add(eq("tUC.area",department));
if(year != null && year.length() > 0)
usersC.add(eq("tU.importYear",year));
List<Object[]> l = usersC.list();
findUsersResult.users = l.size();
for(Object[] t: l)
{
// if(t[1] != null)
// users.add(t[1] + "@" + Globals.EMAIL_LOCAL_SUFFIX);
if(t[2] != null)
users.add((String) t[2]);
if(t[3] != null)
users.add((String) t[3]);
}
}
if(target.isStudents())
{
Criteria usersC = createCriteria(Student.class);
usersC.setProjection(projList);
usersC.createAlias("subscribedUnits", "sU");
usersC.createAlias("sU.course","sUC");
usersC.add(eq("sUC.area",department));
if(year != null && year.length() > 0)
usersC.add(eq("sU.importYear",year));
List<Object[]> l = usersC.list();
findUsersResult.users = l.size();
for(Object[] t: l)
{
// if(t[1] != null)
// users.add(t[1] + "@" + Globals.EMAIL_LOCAL_SUFFIX);
if(t[2] != null)
users.add((String) t[2]);
if(t[3] != null)
users.add((String) t[3]);
}
}
}
else if(year != null && year.length() > 0)
{
if(target.isTeachers())
{
Criteria usersC = createCriteria(Teacher.class).
setProjection(projList).
createAlias("teachedUnits", "tU")
.add(eq("tU.importYear", year));
List<Object[]> l = usersC.list();
findUsersResult.users = l.size();
for(Object[] t: l)
{
// if(t[1] != null)
// users.add(t[1] + "@" + Globals.EMAIL_LOCAL_SUFFIX);
if(t[2] != null)
users.add((String) t[2]);
if(t[3] != null)
users.add((String) t[3]);
}
}
if(target.isStudents())
{
Criteria usersC = createCriteria(Student.class).
setProjection(projList).
createAlias("subscribedUnits", "sU").
add(eq("sU.importYear", year));
List<Object[]> l = usersC.list();
findUsersResult.users = l.size();
for(Object[] t: l)
{
// if(t[1] != null)
// users.add(t[1] + "@" + Globals.EMAIL_LOCAL_SUFFIX);
if(t[2] != null)
users.add((String) t[2]);
if(t[3] != null)
users.add((String) t[3]);
}
}
}
else
{
if(target.isTeachers())
{
Criteria usersC = createCriteria(Teacher.class).
setProjection(projList);
List<Object[]> l = usersC.list();
findUsersResult.users = l.size();
for(Object[] t: l)
{
//if(t[1] != null)
// users.add(((String) t[1]) + "@" + Globals.EMAIL_LOCAL_SUFFIX);
if(t[2] != null)
users.add((String) t[2]);
if(t[3] != null)
users.add((String) t[3]);
}
}
if(target.isStudents())
{
Criteria usersC = createCriteria(Student.class).
setProjection(projList);
List<Object[]> l = usersC.list();
findUsersResult.users = l.size();
for(Object[] t: l)
{
// if(t[1] != null)
// users.add(((String) t[1]) + "@" + Globals.EMAIL_LOCAL_SUFFIX);
if(t[2] != null)
users.add((String) t[2]);
if(t[3] != null)
users.add((String) t[3]);
}
}
}
 
// System.out.println("Selected People:" + users.size());
// for(User u : users)
// {
// System.out.println(u.getName());
// }
// System.out.println("/Selected Students:" + users.size());
 
return findUsersResult;
 
 
}
 
public List<User> findUsers(String year, String department, long courseId, long courseUnitId, String semestre, CreateAnnouncementService.MessageTarget target)
{
List<User> users = new ArrayList<User>();
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java
5,7 → 5,9
import org.hibernate.Query;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.sql.JoinFragment;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.dao.DaoUtils;
218,28 → 220,75
}
 
 
//TODO Na actualiza��o de uma cadeira para o curso de TESTE mudar o coursecode para o o coursecode desse curso para nao deixar os dados duplicados e mal
//TODO Na actualizacao de uma cadeira para o curso de TESTE mudar o coursecode para o o coursecode desse curso para nao deixar os dados duplicados e mal
//se nao a carregar unidades vai buscar a errada
public CourseUnit loadBySigesCodeUnique(String sigesCode, String courseCode, String semestre, String year)
 
/**
* Turma required to be unique in BACO Model
* @param sigesCode
* @param courseCode
* @param semestre
* @param year
* @return
*/
public List<CourseUnit> loadBySigesCode(String sigesCode, String courseCode, String semestre, String year)
{
return
createCriteria()
.add(eq("code", sigesCode))
.add(eq("courseCode", courseCode))
.add(eq("semestre", semestre))
.add(eq("importYear", year))
.list();
}
 
/**
* Metodo especial para a fase de transicao para terem código de turma
* @param sigesCode
* @param courseCode
* @param semestre
* @param year
* @return
*/
public List<CourseUnit> loadBySigesCodeTurmaNull(String sigesCode, String courseCode, String semestre, String year)
{
return (List<CourseUnit>)
createCriteria()
.add(eq("code", sigesCode))
.add(eq("courseCode", courseCode))
.add(eq("semestre", semestre))
.add(eq("importYear", year))
.add(isNull("cdTurma"))
.list();
}
 
//TODO Na actualizacao de uma cadeira para o curso de TESTE mudar o coursecode para o o coursecode desse curso para nao deixar os dados duplicados e mal
//se nao a carregar unidades vai buscar a errada
public CourseUnit loadBySigesCodeUnique(String sigesCode, String courseCode, String semestre, String year,String turma)
{
return (CourseUnit)
createCriteria()
.add(eq("code", sigesCode))
.add(eq("courseCode", courseCode))
.add(eq("semestre", semestre))
.add(eq("importYear", year))
.add(eq("cdTurma", turma))
.uniqueResult();
}
 
public CourseUnit loadBySigesCodeUniqueMostRecent(String sigesCode, String courseCode, String semestre)
{
return (CourseUnit)
List<CourseUnit> cus =
createCriteria()
.add(eq("code", sigesCode))
.add(eq("courseCode", courseCode))
.add(eq("semestre", semestre))
.addOrder(Order.desc("importYear"))
.setMaxResults(1).list().get(0);
.setMaxResults(1).list();
if(cus.size() > 0)
return cus.get(0);
logger.warn("Accessing unit not existent with siges code " + sigesCode + " course code: " + courseCode + " semestre: " + semestre);
return null;
}
 
 
507,7 → 556,7
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear());
for(Course course: courses)
{
if(userSession.getUser().hasRole(course.getValidationRole()))
if(userSession.getUser().hasRole(course.getValidationRole()) || userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE))
{
List<CourseUnit> courseUnits = loadMissingProgramValidateGivenCourse(course.getId());
if(courseUnits != null && courseUnits.size() > 0)
521,13 → 570,15
}
return result;
}
 
 
public List<CourseMissingValidationProgram> loadMissingPrograms(UserSession userSession)
{
List<CourseMissingValidationProgram> result = new ArrayList<CourseMissingValidationProgram>();
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear());
for(Course course: courses)
{
if(userSession.getUser().hasRole(course.getValidationRole()))
if(userSession.getUser().hasRole(course.getValidationRole()) || userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE))
{
List<CourseUnit> courseUnits = loadMissingProgramGivenCourse(course.getId());
if(courseUnits != null && courseUnits.size() > 0)
553,7 → 604,7
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll();
for(Course course: courses)
{
if(userSession.getUser().hasRole(course.getValidationRole()))
if(userSession.getUser().hasRole(course.getValidationRole()) || userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE))
{
List<CourseUnit> courseUnits = loadMissingEvaluationValidateGivenCourse(course.getId());
if(courseUnits != null && courseUnits.size() > 0)
568,6 → 619,8
return result;
}
 
 
 
/*
* Neste caso apenas se validam as do ano anterior*/
 
591,6 → 644,30
}
 
/**
*
* @return devolve todos os ids de unidades que verifiquem a condição de avaliação
* do periodo actual e tenham o programa fechado pela comissão
*/
 
public List<Long> loadClosedCourseUnitsEvaluations()
{
String activeYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear();
 
Criterion degreesCrit = getCourseUnitActiveDegreeCourseIdsCriterion(activeYear);
if(degreesCrit == null)
return new ArrayList<Long>();
 
return createCriteria()
.setProjection(Projections.property("id"))
.createAlias("course", "c")
.createAlias("courseUnitEvaluation", "ce")
.add(eq("importYear", activeYear))
.add(degreesCrit)
.add((eq("ce.closed", true)))
.list();
}
 
/**
* Devolve um criteio OR para todos os cursos de grau pertencente à lista de graus
* ou pertencete à lista de cursoIds
 
655,7 → 732,7
createCriteria()
.createAlias("course", "c")
.createAlias("courseUnitEvaluation", "ce")
.createAlias("teachers","t")
.createAlias("teachers", "t")
.add(eq("t.id", userSession.getUser().getId()))
.add(eq("importYear", activeYear))
//.add(not(eq("importYear", DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear())))
676,7 → 753,7
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll();
for(Course course: courses)
{
if(userSession.getUser().hasRole(course.getValidationRole()))
if(userSession.getUser().hasRole(course.getValidationRole()) || userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE))
{
List<CourseUnit> courseUnits = loadMissingEvaluation(course.getId());
if(courseUnits != null && courseUnits.size() > 0)
/impl/src/java/pt/estgp/estgweb/domain/JobServiceTaskSchedulerImpl.java
53,4 → 53,55
return "unknown";
}
 
private String calendarization;
 
public String getCalendarization() {
 
if(calendarization == null)
{
if(isDaily())
return CalendarizationEnum.DAILY.name();
else if(isMonthly())
return CalendarizationEnum.MONTLY.name();
else if(isWeekly())
return CalendarizationEnum.WEEKLY.name();
else
return CalendarizationEnum.DAILY.name();
}
return calendarization;
 
}
 
public void setCalendarization(String calendarization) {
 
this.calendarization = calendarization;
CalendarizationEnum calendarizationEnum = CalendarizationEnum.parse(calendarization);
setDaily(false);
setMonthly(false);
setWeekly(false);
if(calendarizationEnum == CalendarizationEnum.DAILY)
setDaily(true);
else if(calendarizationEnum == CalendarizationEnum.MONTLY)
setMonthly(true);
else if(calendarizationEnum == CalendarizationEnum.WEEKLY)
setWeekly(true);
 
}
 
 
 
public enum CalendarizationEnum
{
DAILY,WEEKLY,MONTLY;
 
public static CalendarizationEnum parse(String cal)
{
if(cal == null)
return MONTLY;
for(CalendarizationEnum en: CalendarizationEnum.values())
if(en.name().equals(cal))
return en;
return MONTLY;
}
}
}
/impl/src/java/pt/estgp/estgweb/domain/UserSessionImpl.java
1,7 → 1,9
package pt.estgp.estgweb.domain;
 
import jomm.utils.DesUtils;
import org.apache.commons.io.output.ByteArrayOutputStream;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.ftpservices.FtpService;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
24,6 → 26,7
{
 
private Set<SessionObject> removeList;
private Configuration nowConfiguration;
 
/**
* @return
279,4 → 282,20
}
}
 
public Configuration getNowConfiguration() {
return nowConfiguration;
}
 
public void setNowConfiguration(Configuration nowConfiguration) {
this.nowConfiguration = nowConfiguration;
}
 
public String getUserPasswordInSession()
{
String passCrypt = (String) get(FtpService.FTP_PASSWORD);
if(passCrypt != null)
return DesUtils.getInstance().decrypt(passCrypt);
return null;
}
 
}
/impl/src/java/pt/estgp/estgweb/filters/filters/Session.java
3,10 → 3,7
import org.apache.log4j.Logger;
import org.hibernate.ObjectNotFoundException;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.SessionObject;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.filters.chains.FlowFilter;
import pt.estgp.estgweb.utils.ConfigProperties;
39,16 → 36,23
 
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception {
UserSessionImpl userSession = null;
Configuration config = DaoFactory.getConfigurationDaoImpl().loadSimpleConfigurationForConsult();
 
try
{
userSession = (UserSessionImpl) DaoFactory.getUserSessionDaoImpl().get((Serializable) request.getRequester());
 
if(userSession != null && userSession.getObjects() != null)
{
userSession.setNowConfiguration(config);
for(SessionObject sessionObject: userSession.getObjects())
{
sessionObject.getObject();
}
}
if(userSession != null && new Date().getTime() - userSession.getSaveDate().getTime() < TIMEOUT_SESSION)
{
userSession.setNowConfiguration(config);
putSessionInArgs(userSession,request);
userSession.setSaveDate(new Date()); //todo NOVO refrescar a sessao
return;
79,6 → 83,8
userSession.setUpdateDate(new Date());
DaoFactory.getUserSessionDaoImpl().saveOrUpdate(userSession);
// System.out.println(Thread.currentThread().getId() +"UPDATE: " + request.getRequester());
userSession.setNowConfiguration(config);
 
putSessionInArgs(userSession,request);
}
}
/impl/src/java/pt/estgp/estgweb/web/FtpServer.java
2,7 → 2,10
 
import org.apache.commons.net.ftp.FTPClient;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.UserSessionImpl;
 
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
43,6 → 46,19
this.password = password;
}
 
public static FtpServer getFtpServerForCurrentUser(String urlStr, HttpServletRequest request) throws MalformedURLException
{
URL url = new URL(urlStr);
int port = url.getPort();
if (port <= 0)
port = 21;
String host = url.getHost();
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request);
String username = userSession.getUsername();
String password = ((UserSessionImpl)userSession).getUserPasswordInSession();
return new FtpServer(host,port,username,password);
}
 
private static final int FTP_TIMEOUT_SECONDS = pt.estgp.estgweb.Globals.FTP_TIMEOUT_SECONDS;
public FTPClient getClient() throws IOException
{
/impl/src/java/pt/estgp/estgweb/web/LayoutController.java
1,6 → 1,5
package pt.estgp.estgweb.web;
 
import jomm.utils.DesUtils;
import jomm.web.ftp.IFile;
import jomm.web.ftp.impl.FtpFile;
import jomm.web.utils.NavPlace;
12,8 → 11,6
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.services.ftpservices.FtpService;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
120,7 → 117,7
 
 
 
protected void processRequestFtp(HttpServletRequest request, HttpServletResponse response, String path, String serverStr, String server, String startPath)
protected void processRequestFtp(HttpServletRequest request, HttpServletResponse response, String path, String server, String serverUrl, String startPath)
throws ServletException, IOException
{
try
131,17 → 128,20
FtpManager.checkOperations(this,request,response);
 
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request);
String username = userSession != null ? userSession.getUsername() : "UNKNOWN";
//String username = userSession != null ? userSession.getUsername() : "UNKNOWN";
 
FTPFileProxy.UserCredentialsForFtp u = FTPFileProxy.getUserCredentialsForFtp(server, userSession);
String username = u.username;
String password = u.password;
 
 
if (path != null)
{
 
boolean isStaticAccess = ConfigProperties.getBooleanProperty(serverStr+".use.default.credentials.to.updates.and.deletes");
String user;
String pass;
//boolean isStaticAccess = ConfigProperties.getBooleanProperty(serverStr+".use.default.credentials.to.updates.and.deletes");
//String user;
//String pass;
 
/*
if(isStaticAccess)
{
user = ConfigProperties.getProperty(serverStr + ".user");
155,8 → 155,9
pass= DesUtils.getInstance().decrypt(passwordCode);
//pass= ((UserImpl)userSession.getUser()).getPop3PassDecrypted();
}
FtpServer ftpServer = FtpServer.getNewServer(server, user, pass);
FTPClient client = ftpServer.getClient();
*/
FtpServer ftpServer = FtpServer.getNewServer(serverUrl, username, password);
FTPClient client = FTPFileProxy.getFtpClient(ftpServer,userSession,server,serverUrl);
if(client == null)
{
logger.warn("###################");
175,8 → 176,8
{
IFile iFile;
if (path.endsWith("/"))
iFile = new FtpFile(ftpFile, server + URIUtil.encodePath(path +ftpFile.getName(),"ISO-8859-1"), path);
else iFile = new FtpFile(ftpFile, server + URIUtil.encodePath(path + "/" + ftpFile.getName(),"ISO-8859-1"), path);
iFile = new FtpFile(ftpFile, serverUrl + URIUtil.encodePath(path +ftpFile.getName(),"ISO-8859-1"), path);
else iFile = new FtpFile(ftpFile, serverUrl + URIUtil.encodePath(path + "/" + ftpFile.getName(),"ISO-8859-1"), path);
iFiles.add(iFile);
}
List<NavPlace> navPlaces = FtpFile.getNavPlaces(path,startPath);
187,7 → 188,7
}
else
{
throw new FileNotFoundException("url not found for server:" + server + " and path:" + path);
throw new FileNotFoundException("url not found for server:" + serverUrl + " and path:" + path);
}
}
catch (Throwable e)
/impl/src/java/pt/estgp/estgweb/web/form/courses/CourseForm.java
67,7 → 67,7
 
public List<String> getImportYears()
{
return DatesUtils.getImportYears(5);
return DatesUtils.getImportYears(20);
}
 
 
/impl/src/java/pt/estgp/estgweb/web/form/courseunits/CourseUnitsForm.java
3,28 → 3,16
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.upload.FormFile;
import pt.estgp.estgweb.web.form.AddRolesForm;
import pt.estgp.estgweb.web.form.ApplicationForm;
import pt.estgp.estgweb.web.form.commons.TeachersForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.domain.views.CourseUnitAssignementView;
import pt.estgp.estgweb.domain.views.UserView;
import pt.estgp.estgweb.domain.views.CourseUnitDeliverableView;
import pt.estgp.estgweb.domain.TeacherImpl;
import pt.estgp.estgweb.domain.Teacher;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.estgp.estgweb.web.form.commons.TeachersForm;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
/**
* @author Jorge Machado
97,7 → 85,7
 
public List<String> getImportYears()
{
return DatesUtils.getImportYears(5);
return DatesUtils.getImportYears(15);
}
 
 
/impl/src/java/pt/estgp/estgweb/web/form/configuration/SchedulleTasksForm.java
18,13 → 18,82
private Long id;
 
 
private String jobImportYearKey;
private String jobSemestreKey;
private String jobSendIonlineKey;
private String jobSendEmailKey;
private String jobCloneOnlyNewsKey;
private String jobGenerateAllPdfsKey;
private String jobValidateKey;
 
 
 
 
 
public SchedulleTasksForm()
{
if(jobScheduller == null)
{
jobScheduller = DomainObjectFactory.createJobServiceTaskSchedulerImpl();
}
}
 
public String getJobImportYearKey() {
return jobImportYearKey;
}
 
public void setJobImportYearKey(String jobImportYearKey) {
this.jobImportYearKey = jobImportYearKey;
}
 
public String getJobSemestreKey() {
return jobSemestreKey;
}
 
public void setJobSemestreKey(String jobSemestreKey) {
this.jobSemestreKey = jobSemestreKey;
}
 
public String getJobSendIonlineKey() {
return jobSendIonlineKey;
}
 
public void setJobSendIonlineKey(String jobSendIonlineKey) {
this.jobSendIonlineKey = jobSendIonlineKey;
}
 
public String getJobSendEmailKey() {
return jobSendEmailKey;
}
 
public void setJobSendEmailKey(String jobSendEmailKey) {
this.jobSendEmailKey = jobSendEmailKey;
}
 
public String getJobCloneOnlyNewsKey() {
return jobCloneOnlyNewsKey;
}
 
public void setJobCloneOnlyNewsKey(String jobCloneOnlyNewsKey) {
this.jobCloneOnlyNewsKey = jobCloneOnlyNewsKey;
}
 
public String getJobGenerateAllPdfsKey() {
return jobGenerateAllPdfsKey;
}
 
public void setJobGenerateAllPdfsKey(String jobGenerateAllPdfsKey) {
this.jobGenerateAllPdfsKey = jobGenerateAllPdfsKey;
}
 
public String getJobValidateKey() {
return jobValidateKey;
}
 
public void setJobValidateKey(String jobValidateKey) {
this.jobValidateKey = jobValidateKey;
}
 
public JobServiceTaskSchedulerImpl getDirectory()
{
if(jobScheduller == null)
32,6 → 101,10
return jobScheduller;
}
 
public JobServiceTaskSchedulerImpl getJobScheduller() {
return jobScheduller;
}
 
public void setJobScheduller(JobServiceTaskSchedulerImpl jobScheduller) {
this.jobScheduller = jobScheduller;
}
52,4 → 125,6
public void setJobServiceTask(JobServiceTaskImpl jobServiceTask) {
this.jobServiceTask = jobServiceTask;
}
 
 
}
/impl/src/java/pt/estgp/estgweb/web/UserSessionProxy.java
96,6 → 96,24
}
}
 
public static UserSession createUserSession(HttpServletRequest request, HttpServletResponse response) throws Throwable
{
try
{
 
IServiceManager sm = ServiceManager.getInstance();
Object[] args = new Object[]{RequestUtils.getRequester(request, response)};
UserSession userSession = (UserSession) sm.execute(RequestUtils.getRequester(request, response),"LoadUserSession",args);
 
request.setAttribute(Globals.USER_SESSION_KEY,userSession);
return userSession;
}
catch (Throwable e)
{
throw e;
}
}
 
public static UserSession loadUserSessionFromRequest(HttpServletRequest request)
{
return (UserSession) request.getAttribute(Globals.USER_SESSION_KEY);
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsAdminController.java
5,14 → 5,9
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.CourseUnitProgram;
import pt.estgp.estgweb.domain.CourseUnitProgramImpl;
import pt.estgp.estgweb.domain.CourseUnitProgramPart2Impl;
import pt.estgp.estgweb.domain.views.CourseUnitProgramView;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.filters.exceptions.NotFoundException;
import pt.estgp.estgweb.services.common.ISearchResults;
import pt.estgp.estgweb.web.form.courseunits.CourseUnitProgramForm;
import pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
384,7 → 379,7
// sm.execute(RequestUtils.getRequester(request, response), "DeleteCourseUnit", args, names);
 
// addMessage(request,"courseunit.removed");
logger.info("N�o implementado por razoes de seguran�a");
logger.info("Não implementado por razoes de segurança");
addMessage(request,"courseunit.security.not.implemented");
} catch (Throwable e) {
addMessage(request,"error.500");
/impl/src/java/pt/estgp/estgweb/web/controllers/configuration/SchedulerTasksController.java
4,10 → 4,10
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.domain.JobServiceTaskImpl;
import pt.estgp.estgweb.domain.JobServiceTaskScheduler;
import pt.estgp.estgweb.domain.JobServiceTaskSchedulerImpl;
import pt.estgp.estgweb.services.directories.xsd.*;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.services.directories.xsd.LeafT;
import pt.estgp.estgweb.services.directories.xsd.LeafTImpl;
import pt.estgp.estgweb.services.jobs.ServiceJob;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.form.configuration.DirectoriesForm;
20,7 → 20,6
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Iterator;
 
/**
* @author Jorge Machado
33,7 → 32,19
 
private static final Logger logger = Logger.getLogger(SchedulerTasksController.class);
 
public ActionForward newTask(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable
{
 
 
SchedulleTasksForm sf = (SchedulleTasksForm) form;
sf.setJobScheduller(DomainObjectFactory.createJobServiceTaskSchedulerImpl());
return mapping.findForward("task");
}
 
public ActionForward load(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
50,7 → 61,39
try
{
JobServiceTaskSchedulerImpl d = (JobServiceTaskSchedulerImpl) sm.execute(RequestUtils.getRequester(request, response), "LoadJobServiceTaskScheduler", args, names);
for(JobServiceTaskSchedulerParameter p: d.getServiceTaskSchedulerParameters())
{
if(p.getName().equals(ServiceJob.JOB_importYear_KEY))
{
sf.setJobImportYearKey(p.getObject());
}else if(p.getName().equals(ServiceJob.JOB_semestre_KEY))
{
sf.setJobSemestreKey(p.getObject());
}
else if(p.getName().equals(ServiceJob.JOB_cloneOnlyNews_KEY))
{
sf.setJobCloneOnlyNewsKey(p.getObject());
}
else if(p.getName().equals(ServiceJob.JOB_generateAllPdfs_KEY))
{
sf.setJobGenerateAllPdfsKey(p.getObject());
}
else if(p.getName().equals(ServiceJob.JOB_sendEmail_KEY))
{
sf.setJobSendEmailKey(p.getObject());
}
else if(p.getName().equals(ServiceJob.JOB_sendIonline_KEY))
{
sf.setJobSendIonlineKey(p.getObject());
}
else if(p.getName().equals(ServiceJob.JOB_validate_KEY))
{
sf.setJobValidateKey(p.getObject());
}
}
 
sf.setJobScheduller(d);
 
}
catch (FilterChainFailedException e)
{
64,6 → 107,44
return mapping.findForward("task");
}
 
public ActionForward save(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable
{
 
 
SchedulleTasksForm sf = (SchedulleTasksForm) form;
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{sf.getJobScheduller()
,sf.getJobCloneOnlyNewsKey()
,sf.getJobGenerateAllPdfsKey()
,sf.getJobImportYearKey()
,sf.getJobSemestreKey()
,sf.getJobSendEmailKey()
,sf.getJobSendIonlineKey()
,sf.getJobValidateKey()
};
 
try
{
sm.execute(RequestUtils.getRequester(request, response), "SaveJobServiceTaskScheduler", args, names);
addMessage(request, "configuration.tasks.saved");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
return mapping.findForward("tasks");
}
 
public ActionForward loadLog(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
239,234 → 320,21
return mapping.findForward("directory");
}
 
public ActionForward save(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable {
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
 
DirectoriesForm df = (DirectoriesForm) form;
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{df.getDirectory()};
 
try {
sm.execute(RequestUtils.getRequester(request, response), "SaveDirectoryService", args, names);
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
 
addMessage(request, "directories.saved");
 
return mapping.findForward("directories");
}
 
public ActionForward cancel(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");
}
addMessage(request, "directories.canceled");
return mapping.findForward("directories");
addMessage(request, "configuration.tasks.canceled");
return mapping.findForward("tasks");
}
 
 
public ActionForward removeLeaf(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");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
LeafT leaf = LeafTImpl.removeLeaf(df.getDirectory(), idParent);
if(leaf == null)
{
addError(request,"directories.leaf.not.found",idParent);
return mapping.findForward("directories");
}
addMessage(request, "directories.removed.leaf", idParent);
leaf.getLeaf().add(new LeafTImpl());
return mapping.findForward("directory");
}
 
 
public ActionForward addRight(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");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
LeafT leaf = LeafTImpl.findLeaf(df.getDirectory(), idParent);
if(leaf == null)
{
addError(request,"directories.leaf.not.found",idParent);
return mapping.findForward("directories");
}
 
leaf.getRights().getRight().add(new RightImpl());
addMessage(request, "directories.add.right", idParent);
return mapping.findForward("directory");
}
 
public ActionForward removeRight(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");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
LeafT leaf = LeafTImpl.findLeaf(df.getDirectory(), idParent);
if(leaf == null)
{
addError(request,"directories.leaf.not.found",idParent);
return mapping.findForward("directories");
}
 
 
Iterator<RightsT.Right> iter = leaf.getRights().getRight().iterator();
while(iter.hasNext())
{
RightsT.Right r =iter.next();
if(r.getName().equals(df.getRname()) && r.getTarget().equals(df.getRtarget()) && df.getRtype().equals(r.getType()))
{
iter.remove();
}
}
addMessage(request, "directories.remove.right", df.getRname(),df.getRtarget(),df.getRtype());
return mapping.findForward("directory");
}
 
public ActionForward addDirRight(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");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
df.getDirectory().getRights().getRight().add(new RightImpl());
addMessage(request, "directories.add.right");
return mapping.findForward("directory");
}
 
public ActionForward removeDirRight(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");
}
DirectoriesForm df = (DirectoriesForm) form;
 
Iterator<RightsT.Right> iter = df.getDirectory().getRights().getRight().iterator();
while(iter.hasNext())
{
RightsT.Right r =iter.next();
if(r.getName().equals(df.getRname()) && r.getTarget().equals(df.getRtarget()) && df.getRtype().equals(r.getType()))
{
iter.remove();
}
}
addMessage(request, "directories.remove.right", df.getRname(),df.getRtarget(),df.getRtype());
return mapping.findForward("directory");
}
 
public ActionForward addDirGroup(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");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
df.getDirectory().getGroupsDeclaration().getGroup().add(new GroupImpl());
addMessage(request, "directories.add.group");
return mapping.findForward("directory");
}
 
public ActionForward removeDirGroup(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");
}
DirectoriesForm df = (DirectoriesForm) form;
 
Iterator<GroupDeclarationT.Group> iter = df.getDirectory().getGroupsDeclaration().getGroup().iterator();
while(iter.hasNext())
{
GroupDeclarationT.Group g =iter.next();
if(g.getName().equals(df.getRname()))
{
iter.remove();
}
}
addMessage(request, "directories.remove.group");
return mapping.findForward("directory");
}
 
 
 
}
/impl/src/java/pt/estgp/estgweb/web/controllers/announcements/MessagesController.java
6,7 → 6,6
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.domain.views.CourseView;
import pt.estgp.estgweb.domain.views.UserView;
import pt.estgp.estgweb.filters.exceptions.NotFoundException;
import pt.estgp.estgweb.services.announcements.CreateAnnouncementService;
import pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsController;
141,9 → 140,9
String[] names = new String[]{};
Object[] args = new Object[]{request, mF.getFromRole(),mF.getImportYear(),mF.getDepartamento(),mF.getCourseId(),mF.getCourseUnitId(),mF.getSemestre(), CreateAnnouncementService.MessageTarget.parse(mF.getTarget()),mF.getText(),mF.getSubject()};
// String from, String year, String department, long courseId, long courseUnitId, String semestre, MessageTarget target,
List<UserView> users = (List<UserView>) sm.execute(RequestUtils.getRequester(request, response), "SendMessage", args, names);
Integer size = (Integer) sm.execute(RequestUtils.getRequester(request, response), "SendMessage", args, names);
 
addMessage(request,"submit.todo.message.success","" + users.size());
addMessage(request,"submit.todo.message.success","" + size);
return mapping.findForward("success");
}
catch (FilterChainFailedException e)
/impl/src/java/pt/estgp/estgweb/web/filters/UserSessionFilter.java
3,6 → 3,7
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
12,6 → 13,7
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Locale;
 
96,6 → 98,20
try
{
UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(hrequest,((HttpServletResponse) response));
boolean dummy = false;
if(userSession == null)
{
dummy = true;
System.out.println("Creating dummy UserSession");
userSession = new UserSessionImpl();//creating a dummy there is no cookie
request.setAttribute(Globals.USER_SESSION_KEY,userSession);
userSession.setIpAddress(request.getRemoteAddr() + " : " + request.getRemoteHost() + " : " + request.getRemotePort());
userSession.setSaveDate(new Date());
userSession.setNowConfiguration(DaoFactory.getConfigurationDaoImpl().loadSimpleConfigurationForConsult());
chain.doFilter(request,response);
return;
}
 
request.setAttribute(Globals.USER_SESSION_KEY,userSession);
userSession.setIpAddress(request.getRemoteAddr() + " : " + request.getRemoteHost() + " : " + request.getRemotePort());
String lang = request.getParameter("language");
/impl/src/java/pt/estgp/estgweb/web/FTPFileProxy.java
50,7 → 50,9
{
UserCredentialsForFtp u = new UserCredentialsForFtp();
boolean useDefaultCredentialsRead = ConfigProperties.getBooleanProperty(server + ".use.default.credentials.to.read");
String passwordUserInSessionCript = (String) ((UserSessionImpl)userSession).get(FtpService.FTP_PASSWORD);
String passwordUserInSessionCript = null;
if(userSession != null && ((UserSessionImpl)userSession).get(FtpService.FTP_PASSWORD) != null)
passwordUserInSessionCript = (String) ((UserSessionImpl)userSession).get(FtpService.FTP_PASSWORD);
 
if(!useDefaultCredentialsRead && // DEVE USAR AS DO USER
passwordUserInSessionCript != null && userSession.getUser() != null) // E ESTA AUTENTICADO
195,7 → 197,7
InputStream stream = client.retrieveFileStream(file.getName());
response.setContentLength((int)file.getSize());
response.setContentType(MimeTypeGuesser.getInstance().guessMimeType(file.getName()));
response.setHeader("Content-disposition","inline; filename=" + file.getName());
response.setHeader("Content-disposition","attachment; filename=" + file.getName());
StreamsUtils.inputStream2OutputStream(stream, response.getOutputStream());
stream.close();
 
/impl/src/updates/version/release2015-11.txt
82,4 → 82,63
- Framework de Autorizações para processos
Nomeadamente incluir Workflow de Tarefas e Responsáveis
Incluir serviços de Verficicação de tarefas por realizar que deverá servir para
validar as tentativas de modificação e de visualização de coisas a fazer
validar as tentativas de modificação e de visualização de coisas a fazer
 
- Framework de Roles Configuráveis
 
 
 
 
 
SIGES WEB
 
/**
* DOCUMENTACAO
* Um aluno está inscrito numa disciplina na tabela T_INSCRI
* Se o aluno frequentar uma unidade extracurrilar do plano de outro curso não há forma
* de associar essa cadeira ao curso certo. A associação no SIGES é feita criando um grupo
* especial com a Turma e usando os planos de estudos mas não fica nenhuma associação
* entre turmas e cursos, nem entre grupos e cursos uma vez que os funcionaros criam muitas
* vezes grupos especiais para as extracurriculares
* A Turma pode também ela não ter associação ao curso precisamente para poderem ser colocados
* alunos de cadeiras extracurriculares
*
* Solução:
*
* A tabela T_INSCRI tem as inscrições dos alunos nas disciplinas, no entanto o codigo de curso é
* sempre o curso do aluno e não o curtsdo onde está a cadeira extracurricular
* A inscrição tem o campo CD_TIPDIS que tem o valor 6 no caso das extracurriculares. Quando
* o campo tem 1 significa inscrição regular e nesse caso o PAR turma, Curso está correcto
* A turma é sempre escrita no campo TURMA_T mas existe o campo TURMA_P e TURMA_L
* Vamos manter configuravel o campo TURMA_T mas na chamada do WEB-SERVICE
* Assim saberemos que Turma está em que curso
*
* De seguida quando importamos as inscrições vamos sacar o curso mas também a turma
* e dessa forma o cliente poderá fazer o que quiser com essa informação
*
* Para sacar as cadeiras de um curso excluimos a chamada pelo CD_TIPDIS = 1
* Para sacar alunos escrevemos toda a informação incluindo a TURMA_T e o código do curso
* e o código CD_TIPDIS e o cliente decide o que fazer com isso
*
* Nas cadeiras de um CURSO vamos enviar também o código da TURMA_T, TURMA_P e TURMA_L e TURMA_TP
* para o cliente executar como quiser e poder inclusivamente criar várias cadeiras
* uma por turma se necessário.
*
* Portanto a turma vai ser o PONTO chave de todas as importações
*
* notas:
* Nos alunos o CD_SITUA_PAR significa situação parcial servia para identificar bacharelatos no passado
* CSE.T_INSCRI.CD_STATUS <>5 para evitar anuladas
* CSE.T_INSCRI.CD_TIPDIS = 6 significa extracurricular
* CSE.T_INSCRI.CD_TIPDIS = 1 significa regular
*
* CD_TIPDISC = 1 Inscricoes normais
* CD_TIPDISC = 2 Nao conta para media
* CD_TIPDISC = 3 Qualitativa
* CD_TIPDISC = 4 Equivalencia
* CD_TIPDISC = 5 Equivalencia sem nota
* CD_TIPDISC = 6 Extra Curricular
* CD_TIPDISC = 7 Suplemento Diploma
* CD_TIPDISC = 8 Integracao ou refazimento do plano de estudos
*
* */
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml
35,6 → 35,7
<property name="summariesJson" type="text">
<column name="summariesJson" sql-type="TEXT"/>
</property>
<property name="cdTurma" type="string" index="cdTurmaIndex" />
<!--Not In Use-->
<many-to-one name="validatorUser" class="pt.estgp.estgweb.domain.User" lazy="false" outer-join="true" />
<many-to-one name="course" class="pt.estgp.estgweb.domain.Course" lazy="false" outer-join="true"/>
/impl/src/hbm/pt/estgp/estgweb/domain/Configuration.hbm.xml
32,6 → 32,10
<property name="courseUnitEvaluationActiveDegrees" type="string"/>
<property name="courseUnitEvaluationActiveCourseIds" type="string"/>
 
<property name="openInfoIntranet" type="string">
<column name="openInfoIntranet" sql-type="TEXT"/>
</property>
 
<many-to-one name="configurationGrades" class="pt.estgp.estgweb.domain.ConfigurationGrades" lazy="proxy" outer-join="false"/>
<subclass name="pt.estgp.estgweb.domain.ConfigurationImpl" discriminator-value="ConfigurationImpl"/>
</class>
/impl/src/web/auth/index.jsp
1,21 → 1,40
<%@ 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-bean.tld" prefix="bean" %>
<%@ taglib prefix="logic" uri="http://jakarta.apache.org/struts/tags-logic" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSessionImpl" scope="request"/>
<html:errors/>
 
<html:errors/>
<html:form action="/authenticate">
<input type="hidden" name="dispatch" value="login">
<table class="boxHorizontal">
<tr>
<th><bean:message key="username"/></th>
<td><input type="text" name="username"></td>
</tr>
<tr>
<th><bean:message key="password"/></th>
<td><input type="password" name="password"></td>
</tr>
<tr class="buttons">
<td colspan="2"><html:submit titleKey="submit"/></td>
</tr>
</table>
</html:form>
<%
 
%>
<div class="container">
<logic:notEmpty name="UserSession" property="nowConfiguration.openInfoIntranet">
<div class="row">
<div class="col-sm-8">
<div class="alert alert-warning" role="alert">${UserSession.nowConfiguration.openInfoIntranet}</div>
</div>
</div>
</logic:notEmpty>
 
<div class="row">
<div class="col-sm-4">
<form role="form" action="<%=request.getContextPath()%>/authenticate.do" method="post">
<input type="hidden" name="dispatch" value="login">
<div class="form-group">
<label for="login"><bean:message key="username"/></label>
<input type="text" class="form-control" id="login" name="username"/>
</div>
<div class="form-group">
<label for="pwd"><bean:message key="password"/></label>
<input type="password" class="form-control" id="pwd" name="password"/>
</div>
<button type="submit" class="btn btn-default"><bean:message key="submit"/></button>
</form>
</div>
</div>
 
 
</div>
/impl/src/web/admin/courses/listFilesInqueritoPedagogicoJson.jsp
New file
0,0 → 1,32
<%@ page import="jomm.dao.impl.AbstractDao"%><%@ page import="org.apache.commons.net.ftp.FTPClient"%><%@ page import="org.apache.commons.net.ftp.FTPFile"%><%@ page import="org.json.JSONArray"%><%@ page import="org.json.JSONObject"%><%@ page import="pt.estgp.estgweb.Globals"%><%@ page import="pt.estgp.estgweb.domain.CourseUnitImpl"%><%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory"%><%@ page import="pt.estgp.estgweb.web.FtpServer"%><%@ page import="java.io.PrintWriter"%><%@ page contentType="application/json;charset=UTF-8" language="java" %>
<%
String courseUnitId = request.getParameter("courseUnitId");
AbstractDao.getCurrentSession().beginTransaction();
CourseUnitImpl cu = (CourseUnitImpl) DaoFactory.getCourseUnitDaoImpl().load(new Long(courseUnitId));
 
FtpServer ftpServer = FtpServer.getFtpServerForCurrentUser(Globals.FTP_IONLINE_URL,request);
FTPClient ftpClient = ftpServer.getClient();
ftpClient.changeWorkingDirectory("/");
boolean existDirectory = ftpClient.changeWorkingDirectory(cu.getInqueritosPedagogicosPathIntranet());
 
JSONObject json = new JSONObject();
JSONArray filesJson = new JSONArray();
 
if(existDirectory)
{
FTPFile[] files = existDirectory? ftpClient.listFiles(): null;
if(files != null)
for(FTPFile f : files)
{
JSONObject fileJson = new JSONObject();
fileJson.put("name",f.getName());
fileJson.put("completePath",cu.getInqueritosPedagogicosPathIntranet() + "/" + f.getName());
 
filesJson.put(fileJson);
}
}
json.put("files",filesJson);
ftpClient.logout();
AbstractDao.getCurrentSession().getTransaction().commit();
out.print(json.toString());
%>
/impl/src/web/admin/courses/course.jsp
12,6 → 12,17
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<jsp:useBean id="CourseView" type="pt.estgp.estgweb.domain.views.CourseView" scope="request"/>
<script>
function alertPermissions()
{
alert("Este procedimento afecta as permissões atuais no sistema de ficheiros da intranet. Após salvar estas alterações, por favor gere o BAT de geração de pastas e corra-o novamente na raiz do servidor IONLINE")
}
function alertFolders(place)
{
alert("Caro administrador, lembramos-lhe que alterar o " + place + " de uma unidade curricular implica trocar a pasta de ficheiros da intranet do " + place + " onde esta se encontrava para o " + place + " onde actualmente se encontra. O BACO irá actualizar a nova LOCALIZAÇÃO da pasta de ficheiros na sua base de dados. Mas a pasta terá de ser fisicamente alterada pela administração de sistemas.");
}
 
</script>
<html:errors/>
<jomm:messages/>
<html:form action="/user/courseControllerFromServiceZone" enctype="multipart/form-data">
22,6 → 33,7
<bean:write name="CourseView" property="htmlResult"/>
</pre>
</logic:present>
 
<table class="form">
<tr>
<th>
79,7 → 91,7
<html:option value="O"><bean:message key="course.O"/></html:option>
<html:option value="T"><bean:message key="course.T"/></html:option>
</html:select>
** SIGES: <bean:write name="CourseForm" property="courseView.degree"/> - Confirmar Mestrados e Pos graduacoes e informar equipa de desenvolvimento
** SIGES: <bean:write name="CourseForm" property="courseView.degree"/> - Qualquer erro de atrbuição informar imediatamente a equipa de desenvolvimento
</td>
</tr>
<tr>
108,7 → 120,7
<bean:message key="course.userGroupStudents"/>
</th>
<td>
<html:text property="courseView.userGroupStudents"/>
<html:text onchange="alertPermissions()" property="courseView.userGroupStudents"/>
</td>
</tr>
 
125,7 → 137,7
<bean:message key="course.coordinator"/>
</th>
<td>
<html:select property="courseView.coordinator.id">
<html:select onchange="alertPermissions()" property="courseView.coordinator.id">
<html:option value="0">
<bean:message key="none"/>
</html:option>
144,7 → 156,7
<bean:message key="course.director"/>
</th>
<td>
<html:select property="courseView.director.id">
<html:select onchange="alertPermissions()" property="courseView.director.id">
<html:option value="0">
<bean:message key="none"/>
</html:option>
178,7 → 190,7
request.setAttribute("targetRoles",targetRoles);
%>
<td>
<html:select property="courseView.validationRole">
<html:select onchange="alertPermissions()" property="courseView.validationRole">
<logic:iterate id="role" name="targetRoles">
<html:option value="${role}" key="user.role.${role}"/>
</logic:iterate>
191,10 → 203,9
 
 
<tr>
<td>
 
<th>
<bean:message key="course.externalSite"/>
</td>
</th>
<td>
<html:select property="courseView.externalSiteServer">
<html:option value="estgp">ESTG</html:option>
/impl/src/web/admin/courses/coursePedagogicContents.jsp
New file
0,0 → 1,208
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="org.apache.commons.net.ftp.FTPClient" %>
<%@ page import="org.hibernate.Criteria" %>
<%@ page import="org.hibernate.criterion.Order" %>
<%@ page import="org.hibernate.criterion.Projections" %>
<%@ page import="org.hibernate.criterion.Restrictions" %>
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnit" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnitImpl" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.utils.DatesUtils" %>
<%@ page import="pt.estgp.estgweb.web.FtpServer" %>
<%@ page import="java.util.List" %>
<%@ page import="org.apache.commons.net.ftp.FTPFile" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ 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" %>
<baco:hasRole role="pedagogicCouncil,admin,services">
 
<%
 
String importYear = request.getParameter("importYear");
if(importYear == null)
importYear = DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear();
 
AbstractDao.getCurrentSession().beginTransaction();
Criteria c = AbstractDao.getCurrentSession().createCriteria(CourseUnit.class);
c.setProjection(Projections.property("id"));
c.createAlias("course","co")
.add(Restrictions.eq("co.importYear",importYear))
.add(Restrictions.eq("importYear",importYear))
//.add(Restrictions.eq("status",true))
.addOrder(Order.asc("co.name"))
.addOrder(Order.asc("name"));
List<Long> courseUnitIds = c.list();
 
 
 
%>
<div class="container">
<div class="row">
<div class="col-sm-12 col-md-6">
<div class="alert alert-warning" role="alert">
Atenção, apenas utilizadores com o papel <bean:message key="user.role.pedagogicCouncil"/>, ou utilizadores especialmente designados pela administração das pasts têm permissão para inserir ficheiros nas pastas de inquéritos pedagógicos
</div>
</div>
<div class="col-sm-12 col-md-6">
 
<div class="panel panel-primary">
<div class="panel-heading"><bean:message key="course.pedagogic.contents.admin"/> - <%=importYear%></div>
<div class="panel-body">
<form role="form" action="<%=request.getContextPath()%>/user/coursePedagogicContents.do" method="post">
 
<div class="form-group">
<label for="importYear"><bean:message key="courseunit.importYear"/></label>
<select name="importYear" id="importYear" class="form-control" onchange="this.form.submit()">
<%
List<String> years = DatesUtils.getImportYears(10);
for(String year: years)
{
String activo = year.equals(importYear)?"selected":"";
%>
<option value="<%=year%>" <%=activo%>><%=year%></option>
<%
}
%>
</select>
 
</div>
</form>
</div>
</div>
</div>
</div>
 
 
<div class="row">
<div class="col-sm-12 col-md-12">
<table class="tablesorter tablesorterfiltered">
<thead>
<tr>
<th class="filter-name filter-select"><bean:message key="status"/></th>
<th><bean:message key="course.code"/> <bean:message key="course.label"/> (SIGES)</th>
<th class="filter-name filter-select"><bean:message key="course.label"/></th>
<th><bean:message key="courseunit.code"/> <bean:message key="courseunit"/> (SIGES)</th>
<th><bean:message key="courseunit"/></th>
<th class="filter-name filter-select"><bean:message key="course.importYear"/></th>
<th class="filter-name filter-select"><bean:message key="courseunit.semestre"/></th>
<th data-placeholder="--- p/ vazios">Ficheiros</th>
<th>Editar</th>
</tr>
</thead>
<tbody>
<%
 
//FtpServer ftpServer = FtpServer.getFtpServerForCurrentUser(Globals.FTP_IONLINE_URL,request);
//FTPClient ftpClient = ftpServer.getClient();
//ftpClient.changeWorkingDirectory("/");
//ftpClient.changeWorkingDirectory(Globals.FTP_IONLINE_START_PATH);
 
for(Long courseUnitId: courseUnitIds)
{
 
CourseUnitImpl cu = (CourseUnitImpl) DaoFactory.getCourseUnitDaoImpl().load(courseUnitId);
//ftpClient.changeWorkingDirectory("/");
//boolean existDirectory = ftpClient.changeWorkingDirectory(cu.getInqueritosPedagogicosPathIntranet());
//FTPFile[] files = existDirectory? ftpClient.listFiles(): null;
request.setAttribute("CourseUnit",cu);
%>
<jsp:useBean id="CourseUnit" type="pt.estgp.estgweb.domain.CourseUnit" scope="request"/>
<tr>
<td>
<logic:equal value="true" name="CourseUnit" property="course.status">
<bean:message key="yes"/>
</logic:equal>
<logic:equal value="false" name="CourseUnit" property="course.status">
<bean:message key="no"/>
</logic:equal>
</td>
<td>${CourseUnit.courseCode}</td>
<td>${CourseUnit.courseName}</td>
<td>${CourseUnit.code}</td>
<td>${CourseUnit.name}</td>
<td>${CourseUnit.importYear}</td>
<td><bean:message key="courseunit.${CourseUnit.semestre}"/></td>
<!--<td>
<a class="btn btn-warning" href="<%=request.getContextPath()%>/user/courseControllerFromServiceZone.do?dispatch=edit&courseView.id=${course.id}">
<span class="glyphicon glyphicon-pencil"></span>
</a>
</td>-->
<td>
<div class="list-group" id="filesUnit${CourseUnit.id}">
 
</div>
</td>
<td>
<a class="btn btn-default" target="_blank" href="<%=request.getContextPath()%>/courseunitproxy/courseLayoutIOnlineDtp/ionline/<%=Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_InqueritoPedagogico%>/?courseUnitView.id=${CourseUnit.id}&startPath=${CourseUnit.pathIntranet}&from=Home">
<span class="glyphicon glyphicon-pencil"></span>
</a>
</td>
</tr>
<%
}
%>
</tbody>
</table>
</div>
</div>
<script>
function updateUnit(unitId)
{
$("#filesUnit" + unitId).html("Aguarde por favor");
$.ajax({
dataType: "json",
url: "<%=request.getContextPath()%>/admin/courses/listFilesInqueritoPedagogicoJson.jsp?courseUnitId=" + unitId,
async: true,
success: function(data) {
if(data.files == null || data.files.length == 0)
{
$("#filesUnit" + unitId).html("---");
}
else
{
$("#filesUnit" + unitId).html("");
var i;
for(i=0;i<data.files.length;i++)
{
var name = data.files[i].name;
var path = data.files[i].completePath;
$("#filesUnit" + unitId).append('<div class="list-group-item"><a target="_blank" href="<%=request.getContextPath()%>/ftpProxyStream/ionline/' + path + '">' + name + '</a></div>')
}
}
 
}
});
}
function updateAll()
{
<%
for(Long courseUnitId: courseUnitIds)
{
%>
 
updateUnit('<%=courseUnitId%>');
<%
}
%>
}
 
function updateTable(){
$(".tablesorterfiltered").trigger('update');
setTimeout("updateTable()",5000);
}
$(document).ready(function(){
setTimeout("updateAll()",1000);
setTimeout("updateTable()",5000);
});
</script>
<%
//ftpClient.logout();
AbstractDao.getCurrentSession().getTransaction().commit();
%>
</div>
</baco:hasRole>
/impl/src/web/admin/courseunits/courseunit.jsp
12,6 → 12,17
<%@ 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" %>
<script>
function alertPermissions()
{
alert("Este procedimento afecta as permissões atuais no sistema de ficheiros da intranet. Após salvar estas alterações, por favor gere o BAT de geração de pastas e corra-o novamente na raiz do servidor IONLINE")
}
function alertFolders(place)
{
alert("Caro administrador, lembramos-lhe que alterar o " + place + " de uma unidade curricular implica trocar a pasta de ficheiros da intranet do " + place + " onde esta se encontrava para o " + place + " onde actualmente se encontra. O BACO irá actualizar a nova LOCALIZAÇÃO da pasta de ficheiros na sua base de dados. Mas a pasta terá de ser fisicamente alterada pela administração de sistemas.");
}
 
</script>
<%
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
62,7 → 73,7
<bean:message key="courseunit.course"/>
</th>
<td>
<html:select property="courseUnitView.courseId">
<html:select onchange="alertFolders('curso')" property="courseUnitView.courseId">
<logic:iterate id="course" name="Courses" type="pt.estgp.estgweb.domain.views.CourseView">
<html:option value="${course.id}">(${course.code}) ${course.name}</html:option>
</logic:iterate>
82,14 → 93,14
<bean:message key="courseunit.semestre"/>
</th>
<td>
<html:select property="courseUnitView.semestre">
<html:option value="S1">S1</html:option>
<html:option value="S2">S2</html:option>
<html:option value="A">A</html:option>
<html:option value="T1">T1</html:option>
<html:option value="T2">T2</html:option>
<html:option value="T3">T3</html:option>
<html:option value="T4">T4</html:option>
<html:select onchange="alertFolders('semestre')" property="courseUnitView.semestre">
<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="A"><bean:message key="courseunit.A"/></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>
</td>
</tr>
98,13 → 109,21
<bean:message key="courseunit.importYear"/>
</th>
<td>
<html:select property="courseUnitView.importYear">
<html:select onchange="alertFolders('ano')" property="courseUnitView.importYear">
<logic:iterate id="item" name="CourseUnitsForm" property="importYears">
<html:option value="${item}">${item}</html:option>
</logic:iterate>
</html:select>
</td>
</tr>
<tr>
<th>
<bean:message key="courseunit.turma"/>
</th>
<td>
<html:text styleClass="text" property="courseUnitView.cdTurma"/> (Esta ação vai influênciar as importações SIGES)
</td>
</tr>
<tr>
<th>
<bean:message key="courseunit.pathIntranet"/>
119,7 → 138,7
<bean:message key="courseunit.responsable"/>
</th>
<td>
<html:select property="courseUnitView.responsableId">
<html:select onchange="alertPermissions();" property="courseUnitView.responsableId">
<html:option value="0"></html:option>
<logic:iterate id="teacher" name="CourseUnitsForm" property="teachers" type="pt.estgp.estgweb.domain.views.UserView">
<html:option value="${teacher.id}">(${teacher.code}) ${teacher.name}</html:option>
146,7 → 165,7
</jomm:option>
</logic:iterate>
<input type="button" value="<bean:message key="add"/>"
onclick="set(this.form,'addTeacher');this.form.submit();">
onclick="alertPermissions();set(this.form,'addTeacher');this.form.submit();">
</logic:present>
</html:select>
<logic:greaterThan name="CourseUnitView" property="teachersSize" value="0">
183,7 → 202,7
<logic:greaterThan value="0" name="CourseUnitView" property="id">
<html:text styleClass="text" property="studentCode"/>
<input type="button" value="<bean:message key="add"/>"
onclick="if(this.form.studentCode.value=='0' || this.form.studentCode.value==''){alert('Por favor coloque o numero de aluno antes de adicionar');}else{set(this.form,'addStudent');this.form.submit();}">
onclick="if(this.form.studentCode.value=='0' || this.form.studentCode.value==''){alert('Por favor coloque o numero de aluno antes de adicionar');}else{alertPermissions();set(this.form,'addStudent');this.form.submit();}">
<logic:greaterThan name="CourseUnitView" property="studentsSize" value="0">
<table id="myTable" class="tablesorter dataTable removeButton">
/impl/src/web/admin/courseunits/findCourseunit.jsp
39,28 → 39,33
</table>
</html:form>
<logic:present name="ISearchResults" property="results">
<table class="dataTable">
<table class="tablesorter tablesorterfiltered">
<thead>
<tr>
<th><bean:message key="courseunit.code"/> </th>
<th><bean:message key="courseunit.name"/> </th>
<th><bean:message key="courseunit.semestre"/></th>
<th><bean:message key="courseunit.importYear"/></th>
<th><bean:message key="courseunit.course"/></th>
<th class="filter-name filter-select"><bean:message key="courseunit.semestre"/></th>
<th class="filter-name filter-select"><bean:message key="courseunit.importYear"/></th>
<th class="filter-name filter-select"><bean:message key="courseunit.course"/></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
/user/startLoadCourseUnitFromHome.do?id=421
<logic:iterate id="courseunitresult" name="ISearchResults" property="results" type="pt.estgp.estgweb.services.courseunits.impl.CourseUnitViewResult" >
<tr>
<td>${courseunitresult.object.code}</td>
<td>${courseunitresult.object.name}</td>
<td>${courseunitresult.object.semestre}</td>
<td style="text-align: right">${courseunitresult.object.code}</td>
<td><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitFromHome.do?id=${courseunitresult.object.id}">${courseunitresult.object.name}</a></td>
<td><bean:message key="courseunit.${courseunitresult.object.semestre}"/></td>
<td>${courseunitresult.object.importYear}</td>
<td>${courseunitresult.object.courseName}</td>
<td><html:link action="/user/startEditCourseUnitAdminFromServiceZone?id=${courseunitresult.object.id}"><bean:message key="edit"/></html:link></td>
<td><html:link action="/user/startDeleteCourseUnitAdminFromServiceZone?id=${courseunitresult.object.id}"><bean:message key="delete"/></html:link></td>
<td><a href="<%=request.getContextPath()%>/user/courseControllerFromServiceZone.do?dispatch=edit&courseView.id=${courseunitresult.object.courseId}">${courseunitresult.object.courseName}</a></td>
<td><html:link styleClass="btn btn-warning" action="/user/startEditCourseUnitAdminFromServiceZone?id=${courseunitresult.object.id}"><bean:message key="edit"/><span class="glyphicon glyphicon-pencil"></span></html:link></td>
<td><html:link styleClass="btn btn-danger" action="/user/startDeleteCourseUnitAdminFromServiceZone?id=${courseunitresult.object.id}"><bean:message key="delete"/><span class="glyphicon glyphicon-remove"></span></html:link></td>
<td></td>
</tr>
</logic:iterate>
</tbody>
</table>
<p class="pages">
<bean:message key="search.pages"/>:
/impl/src/web/admin/configuration/tasks.jsp
88,11 → 88,11
 
 
<a href="<%=request.getContextPath()%>/user/configurationJobTasks.do" style="float:right" class="btn btn-default"><span class="glyphicon glyphicon-list-alt">Consultar Todos os Logs</span></a>
<button type="button" style="float:right" class="btn btn-success" onclick="set(form,'new');form.submit();"><span class="glyphicon glyphicon-plus">Agendar</span></button>
<a href="<%=request.getContextPath()%>/user/configurationTasks.do?dispatch=newTask" style="float:right" class="btn btn-success" onclick="set(form,'new');form.submit();"><span class="glyphicon glyphicon-plus">Agendar</span></a>
<a href="<%=request.getContextPath()%>/user/configurationSchedulleTasks.do" class="btn btn-info"><span class="glyphicon glyphicon-refresh"></span></a>
</div>
<div class="panel-body">
<table id="myTable" class="tablesorter">
<table id="myTable" class="tablesorter tablesorterfiltered">
<thead>
<tr>
<th>Agora</th>
/impl/src/web/admin/configuration/task.jsp
2,6 → 2,8
<%@ page import="pt.estgp.estgweb.domain.JobServiceTaskScheduler" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.utils.DatesUtils" %>
<%@ page import="com.sun.mail.handlers.image_gif" %>
<%@ 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" %>
11,111 → 13,300
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib prefix="hmlt" uri="http://jakarta.apache.org/struts/tags-html" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<jsp:useBean id="SchedulleTasksForm" type="pt.estgp.estgweb.web.form.configuration.SchedulleTasksForm" scope="request"/>
<jomm:messages/>
<html:errors/>
 
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/variables.less"/>
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/lavish-bootstrap.css"/>
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/js/jquerytables/bootstrap/css/bootstrap.css"/>
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/js/jquerytables/bootstrap/css/bootstrap-theme.css"/>
 
<script>
$(document).ready(function()
{
<logic:equal value="true" name="SchedulleTasksForm" property="jobScheduller.weekly">
$("#weekdaySelection").show();
$("#monthdaySelection").hide();
</logic:equal>
<logic:equal value="true" name="SchedulleTasksForm" property="jobScheduller.monthly">
$("#weekdaySelection").hide();
$("#monthdaySelection").show();
</logic:equal>
<logic:equal value="true" name="SchedulleTasksForm" property="jobScheduller.daily">
$("#weekdaySelection").hide();
$("#monthdaySelection").hide();
</logic:equal>
<logic:equal value="false" name="SchedulleTasksForm" property="jobScheduller.daily">
<logic:equal value="false" name="SchedulleTasksForm" property="jobScheduller.monthly">
<logic:equal value="false" name="SchedulleTasksForm" property="jobScheduller.weekly">
$("#weekdaySelection").hide();
$("#monthdaySelection").hide();
</logic:equal>
</logic:equal>
</logic:equal>
 
changeParameters();
 
<script src="<%=request.getContextPath()%>/js/jquerytables/jquery-2.1.4.min.js"></script>
<script src="<%=request.getContextPath()%>/js/jquerytables/bootstrap/js/bootstrap.min.js"></script>
}
);
function changeForms(calendarization)
{
if(calendarization == "DAILY")
{
$("#weekdaySelection").hide();
$("#monthdaySelection").hide();
}
else if(calendarization == "MONTLY")
{
$("#weekdaySelection").hide();
$("#monthdaySelection").show();
}
else if(calendarization == "WEEKLY")
{
$("#weekdaySelection").show();
$("#monthdaySelection").hide();
}
}
 
function changeParameters()
{
$("#jobImportYearKeyPart").hide();
$("#jobSemestreKeyPart").hide();
$("#jobSendIonlineKeyPart").hide();
$("#jobSendEmailKeyPart").hide();
$("#jobCloneOnlyNewsKeyPart").hide();
$("#jobGenerateAllPdfsKeyPart").hide();
$("#jobValidateKeyPart").hide();
 
type = $("#targetService").val();
if(type == "pt.estgp.estgweb.services.sigesimports.ImportCourseService")
{
$("#jobImportYearKeyPart").show();
}
else if(type == "pt.estgp.estgweb.services.sigesimports.ImportGradesService")
{
$("#jobImportYearKeyPart").show();
}
else if(type == "pt.estgp.estgweb.services.sigesimports.ImportTeachersService")
{
$("#jobImportYearKeyPart").show();
}
else if(type == "pt.estgp.estgweb.services.sigesimports.ImportStudentsService")
{
$("#jobImportYearKeyPart").show();
}
else if(type == "pt.estgp.estgweb.services.sigesimports.ImportSumariesJson")
{
$("#jobImportYearKeyPart").show();
$("#jobSemestreKeyPart").show();
$("#jobSendIonlineKeyPart").show();
$("#jobSendEmailKeyPart").show();
}
else if(type == "pt.estgp.estgweb.services.sigesimports.SincronizeLastYearCourseUnitProgramsService")
{
$("#jobImportYearKeyPart").show();
//$("#jobSemestreKeyPart").show();
$("#jobCloneOnlyNewsKeyPart").show();
$("#jobGenerateAllPdfsKeyPart").show();
$("#jobValidateKeyPart").show();
}
else
{
$("#jobImportYearKeyPart").show();
}
 
<%
AbstractDao.getCurrentSession().beginTransaction();
List<JobServiceTaskScheduler> schedulledTasks = DaoFactory.getJobServiceTaskSchedulerDaoImpl().findAll();
request.setAttribute("tasks",schedulledTasks);
%>
 
}
 
 
 
</script>
 
 
<div class="container-fluid">
<div class="panel panel-default">
<div class="panel-heading">
<bean:message key="configuration.tasks"/>
<button type="button" style="float:right" class="btn btn-default" onclick="set(form,'new');form.submit();"><span class="glyphicon glyphicon-list-alt">Consultar Todos os Logs</span></button>
<button type="button" style="float:right" class="btn btn-success" onclick="set(form,'new');form.submit();"><span class="glyphicon glyphicon-plus">Agendar</span></button>
<bean:message key="configuration.task"/>
</div>
<div class="panel-body">
<table class="datatable tablesorter">
<thead>
<tr>
<th><bean:message key="configuration.task"/></th>
<th>Tipo</th>
<th>Calendarização</th>
 
<th>Criador</th>
<th>Parametros</th>
<th>Última</th>
<th>Progresso</th>
<th></th>
</tr>
</thead>
<tbody>
<logic:iterate id="task" name="tasks" type="pt.estgp.estgweb.domain.JobServiceTaskSchedulerImpl">
<tr>
<td><bean:message key="targetService.${task.targetService}"/></td>
<td><bean:message key="configuration.task.${task.typeMsgKey}"/></td>
<td>
<logic:equal value="true" name="task" property="weekly">
<bean:message key="weekday.day"/> <bean:message key="weekday.${task.weekDayMsgKey}"/>
</logic:equal>
<logic:equal value="true" name="task" property="monthly">
<bean:message key="monthday.day"/> ${task.monthday}
</logic:equal>
<bean:message key="day.time"/>
${task.hour}:${task.minute}
</td>
<html:form action="/user/configurationTasks" >
<input type="hidden" name="dispatch" value="save"/>
<html:hidden property="jobScheduller.id"/>
<div class="form-group">
<label for="targetService">Tarefa:</label>
<html:select onchange="changeParameters()" property="jobScheduller.targetService" styleClass="form-control" styleId="targetService">
<html:option value="pt.estgp.estgweb.services.sigesimports.ImportCourseService">Importação de Cursos</html:option>
<html:option value="pt.estgp.estgweb.services.sigesimports.ImportGradesService">Importação de Notas</html:option>
<html:option value="pt.estgp.estgweb.services.sigesimports.ImportTeachersService">Importação de Docentes</html:option>
<html:option value="pt.estgp.estgweb.services.sigesimports.ImportStudentsService">Importação de Estudantes</html:option>
<html:option value="pt.estgp.estgweb.services.sigesimports.ImportSumariesJson">Importação de Sumários</html:option>
<html:option value="pt.estgp.estgweb.services.sigesimports.SincronizeLastYearCourseUnitProgramsService">Clonagem de Fichas Curriculares</html:option>
</html:select>
</div>
<div class="form-group">
<label for="description">Descrição:</label>
<html:textarea styleClass="form-control" styleId="description" property="jobScheduller.description"/>
</div>
<div class="form-group">
<label for="description">Calendarização:</label>
<html:select styleClass="form-control" property="jobScheduller.calendarization" onchange="changeForms(this.value)">
<html:option value="DAILY">Diário</html:option>
<html:option value="WEEKLY">Semanal</html:option>
<html:option value="MONTLY">Mensal</html:option>
</html:select>
</div>
<div class="form-group" id="weekdaySelection">
<label for="weekday">Dia da Semana:</label>
<html:select styleClass="form-control" styleId="weekday" property="jobScheduller.weekday">
<%
for(int i=1;i<=7;i++)
{
request.setAttribute("i",i);
%>
<html:option value="${i}"><bean:message key="weekday.${i}"/></html:option>
<%
}
%>
</html:select>
</div>
<div class="form-group" id="monthdaySelection">
<label for="monthday">Dia do Mês:</label>
<html:select styleClass="form-control" styleId="monthday" property="jobScheduller.monthday">
<%
for(int i=1;i<31;i++)
{
request.setAttribute("i",i);
%>
<html:option value="${i}">${i}</html:option>
<%
}
%>
</html:select>
</div>
<div class="form-group">
<div class="row">
<div class="col-sm-4">
<label for="hour">Hora:</label>
<html:select styleClass="form-control" styleId="hour" property="jobScheduller.hour">
<%
for(int i=0;i<24;i++)
{
request.setAttribute("i",i);
%>
<html:option value="${i}">${i}</html:option>
<%
}
%>
</html:select>
</div>
<div class="col-sm-4">
<label for="minute">Minuto:</label>
<html:select styleClass="form-control" styleId="minute" property="jobScheduller.minute">
<%
for(int i=0;i<60;i++)
{
request.setAttribute("i",i);
%>
<html:option value="${i}">${i}</html:option>
<%
}
%>
</html:select>
</div>
<div class="col-sm-4">
<label for="second">Segundo:</label>
<html:select styleClass="form-control" styleId="second" property="jobScheduller.second">
<%
for(int i=0;i<60;i++)
{
request.setAttribute("i",i);
%>
<html:option value="${i}">${i}</html:option>
<%
}
%>
</html:select>
</div>
</div>
</div>
<!--
;
 
<td>${task.createdBy.username}</td>
<td>
<table cellspacing="0" cellspadding="0">
<logic:iterate id="taskParam" name="task" property="serviceTaskSchedulerParameters" type="pt.estgp.estgweb.domain.JobServiceTaskSchedulerParameter">
<tr>
<td>
${taskParam.name}
</td>
<td>
${taskParam.object}
</td>
</tr>
</logic:iterate>
</table>
</td>
<td class="jobStatus${task.lastJobServiceTask.status}">
<logic:notEmpty name="task" property="lastJobServiceTask">
<bean:message key="job.status.${task.lastJobServiceTask.status}"/>
</logic:notEmpty>
</td>
<td style="text-align: right">
<logic:notEmpty name="task" property="lastJobServiceTask">
${task.lastJobServiceTask.progress} %
</logic:notEmpty>
</td>
 
<td>
<button type="button" class="btn btn-default">
<span class="glyphicon glyphicon-list-alt"></span>
</button>
private String jobGenerateAllPdfsKey;
private String jobValidateKey;-->
<div class="form-group" id="jobImportYearKeyPart">
<label for="jobImportYearKey">Ano:</label>
<%
List<String> years = DatesUtils.getImportYears(10);
%>
<html:select styleClass="form-control" styleId="jobImportYearKey" property="jobImportYearKey">
<%
for(String year:years)
{
request.setAttribute("year",year);
%>
<html:option value="${year}">${year}</html:option>
<%
}
%>
</html:select>
</div>
 
<div class="form-group" id="jobSemestreKeyPart">
<label for="jobSemestreKey">Semestre:</label>
<html:select styleClass="form-control" styleId="jobSemestreKey" property="jobSemestreKey">
<html:option value="A">Anual</html:option>
<html:option value="S1">Semestre 1</html:option>
<html:option value="S2">Semestre 2</html:option>
<html:option value="T1">Trimestre 1</html:option>
<html:option value="T2">Trimestre 2</html:option>
<html:option value="T3">Trimestre 3</html:option>
<html:option value="T4">Trimestre 4</html:option>
</html:select>
</div>
 
</td>
<div class="form-group" id="jobSendIonlineKeyPart">
<label for="jobSendIonlineKey">Enviar para a pasta do DTP:</label>
<html:select styleClass="form-control" styleId="jobSendIonlineKey" property="jobSendIonlineKey">
<html:option value="true">Sim</html:option>
<html:option value="false">Não</html:option>
</html:select>
</div>
 
</tr>
</logic:iterate>
</tbody>
<div class="form-group" id="jobSendEmailKeyPart">
<label for="jobSendEmailKey">Enviar email de notificação:</label>
<html:select styleClass="form-control" styleId="jobSendEmailKey" property="jobSendEmailKey">
<html:option value="true">Sim</html:option>
<html:option value="false">Não</html:option>
</html:select>
</div>
 
</table>
<div class="form-group" id="jobCloneOnlyNewsKeyPart">
<label for="jobCloneOnlyNewsKey">Clonar apenas quando não existe ficha (Se escolher não irá clonar também fichas inválidas):</label>
<html:select styleClass="form-control" styleId="jobCloneOnlyNewsKey" property="jobCloneOnlyNewsKey">
<html:option value="true">Sim</html:option>
<html:option value="false">Não</html:option>
</html:select>
</div>
 
<div class="form-group" id="jobGenerateAllPdfsKeyPart">
<label for="jobGenerateAllPdfsKey">Gerar PDF's mesmo que não clone as fichas:</label>
<html:select styleClass="form-control" styleId="jobGenerateAllPdfsKey" property="jobGenerateAllPdfsKey">
<html:option value="true">Sim</html:option>
<html:option value="false">Não</html:option>
</html:select>
</div>
 
<div class="form-group" id="jobValidateKeyPart">
<label for="jobValidateKey">Validar Fichas ao Clonar:</label>
<html:select styleClass="form-control" styleId="jobValidateKey" property="jobValidateKey">
<html:option value="true">Sim</html:option>
<html:option value="false">Não</html:option>
</html:select>
</div>
<button type="submit" class="btn btn-default"><bean:message key="confirm"/></button>
</html:form>
 
 
</div>
</div>
</div>
 
 
<%
AbstractDao.getCurrentSession().getTransaction().commit();
%>
</div>
/impl/src/web/css/lavish-bootstrap.css
254,7 → 254,7
font-size: 14px;
line-height: 1.428571429;
color: #a67b50;
background-color: #fbfbfa;
background-color: #FFFFFF;
}
input,
button,
/impl/src/web/css/intranet.css
9,10 → 9,10
{
background-color: lightsteelblue;
}
td.icons
.icons a img
{
width: 60px;
white-space: nowrap;
width: 60px !important;
white-space: nowrap !important;
 
}
#headerIntranet td.links
/impl/src/web/ping.jsp
New file
0,0 → 1,4
<%--
Serviço de PING para manter a sessao online
--%>
{"result" : "PING OK"}
/impl/src/web/layout/scripts.jsp
1,6 → 1,7
<%@ page import="pt.estgp.estgweb.web.filters.TopImageFilter" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
<meta name="viewport" content="width=device-width, initial-scale=1">
 
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/yui/build/menu/assets/skins/sam/menu.css" />
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/yui/build/button/assets/skins/sam/button.css" />
8,13 → 9,20
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/yui/build/container/assets/skins/sam/container.css" />
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/yui/build/editor/assets/skins/sam/editor.css" />
 
 
<!--OFF CANVAS É PARA METER O BODY ABAIXO DO MENU DESLIZANTE DE TOPO-->
<!--<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/offcanvas.css"/>-->
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/style.css"/>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/functions.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/ajax.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/compactedPopup.js"></script>
 
<!--
<style>
body
{
background: url('http://www.ist.utl.pt/img/page/cubes.png')
}
</style>-->
<!--
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/js/jquery/style.css"/>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery-latest.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery.tablesorter.js"></script>
56,7 → 64,78
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/variables.less"/>
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/lavish-bootstrap.css"/>
 
 
<script type="text/javascript" language="JavaScript">
var cal = new CalendarPopup();
 
/*
//TABLE SORTER
$(document).ready(function()
{
$("#myTable").tablesorter();
 
}
);
*/
 
function isBreakpoint( alias ) {
return $('.device-' + alias).is(':visible');
}
 
 
 
 
 
$(document).ready(
function(){
$("#network").hide();
$("#network2").hide();
$("#network").mouseleave(
function(){
$("#network").animate({
height: 'hide'
});
}
 
);
$("#network2").mouseleave(
function(){
$("#network2").animate({
height: 'hide'
});
}
 
);
}
);
 
function openNetwork(){
$("#network2").animate({
height: 'hide'
});
$("#network").animate({
height: 'toggle'
});
}
 
function openNetwork2(){
$("#network").animate({
height: 'hide'
});
$("#network2").animate({
height: 'toggle'
});
}
 
</script>
<script language="javascript">
 
function ping()
{
$.getJSON( "<%=request.getContextPath()%>/ping.jsp", function( data ) {
setTimeout("ping()",10000);
});
}
$(document).ready(function()
{
if($("#myTable"))
231,7 → 310,7
widgets: ["zebra","filter"],
ignoreCase: false,
widthFixed : true,
widgetOptions : {filter_reset : 'button.reset',filter_columnFilters : false},
widgetOptions : {filter_reset : 'button.reset',filter_columnFilters : true},
textExtraction: function(node) {
// extract data from markup and return it
if($(node).find(':input').size()>0)
249,8 → 328,67
);
}
 
if($(".tablesorterfiltered"))
{
$(".tablesorterfiltered").tablesorter({
theme: 'blue',
 
 
sortMultiSortKey: 'altKey',
//sortList: [[0,0]],
widgets: ["zebra","filter"],
 
ignoreCase: false,
widthFixed : true,
widgetOptions : {filter_reset : 'button.reset',filter_columnFilters : true},
textExtraction: function(node) {
// extract data from markup and return it
if($(node).find(':input').size()>0)
{
var values = $(node).find(":input").map(function() {
return $(this).val()
}).get().join(",");
 
 
return values;
}
return $(node).text();
}
}
);
}
if($(".tablesorterfiltered"))
{
$(".tablesorterfiltered").tablesorter({
theme: 'blue',
 
 
sortMultiSortKey: 'altKey',
//sortList: [[0,0]],
widgets: ["zebra","filter"],
 
ignoreCase: false,
widthFixed : true,
widgetOptions : {filter_reset : 'button.reset',filter_columnFilters : true},
textExtraction: function(node) {
// extract data from markup and return it
if($(node).find(':input').size()>0)
{
var values = $(node).find(":input").map(function() {
return $(this).val()
}).get().join(",");
 
 
return values;
}
return $(node).text();
}
}
);
}
 
 
 
// External search
// buttons set up like this:
// <button type="button" data-filter-column="4" data-filter-text="2?%">Saved Search</button>
268,7 → 406,13
$.tablesorter.setFilters( $('#myTable'), filters, true ); // new v2.9
if($('#myTable2'))
$.tablesorter.setFilters( $('#myTable2'), filters, true ); // new v2.9
if($('.tablesorterfiltered'))
$.tablesorter.setFilters( $('.tablesorterfiltered'), filters, true ); // new v2.9
 
/*
if($('.tablesorterfiltered'))
$.tablesorter.setFilters( $('.tablesorterfiltered'), filters, true ); // new v2.9
*/
/** old method (prior to tablsorter v2.9 ***
var filters = $('table.tablesorter').find('input.tablesorter-filter');
filters.val(''); // clear all filters
/impl/src/web/layout/navigationLeftMenu.jsp
23,7 → 23,7
</li>
<baco:isAuthenticated>
<li>
<a href=" http://mail.google.com/a/estgp.pt." target="_blank">
<a href=" http://mail.google.com/a/estgp.pt" target="_blank">
Webmail [Nova Plataforma]
</a>
</li>
/impl/src/web/public/profile/profileGrades.jsp
100,7 → 100,7
total+=nota;
float media = total/((float)unidadeNota.size());
%>
Média: <%=media%>
<%--Média: <%=media%>--%>
</div>
<table id="myTable" class="dataTable tablesorter">
<thead>
112,6 → 112,9
<bean:message key="course.unit"/>
</th>
<th>
<bean:message key="course.label"/>
</th>
<th>
<bean:message key="grade"/>
</th>
<th>
135,6 → 138,9
${grade.courseUnit.name}
</td>
<td>
${grade.courseUnit.courseName}
</td>
<td>
<logic:greaterThan value="0" name="grade" property="grade">
${grade.grade}
</logic:greaterThan>
/impl/src/web/user/courses/directedCoordinatedCoursesCourseView.jsp
18,6 → 18,17
<jsp:useBean id="SEMESTRE" type="java.lang.String" scope="request"/>
<jsp:useBean id="courseView" type="pt.estgp.estgweb.domain.views.CourseView" scope="request"/>
 
<style>
td .icons
{
white-space: nowrap !important;
}
td .icons a img
{
width: 15px !important;
 
}
</style>
<%
boolean canChange = false;
%>
42,11 → 53,12
}
);
</script>
<table id="myTable${SEMESTRE}NP${courseView.id}" class="dataTable tablesorter">
<table id="myTable${SEMESTRE}NP${courseView.id}" class="dataTable tablesorter tablesorterfiltered">
<thead>
<tr>
<th>Código</th>
<th>Unidade</th>
<th>Turma</th>
<th>Docente</th>
<td></td>
</tr>
56,6 → 68,7
<tr>
<td>${courseUnitView.code}</td>
<td>${courseUnitView.name}</td>
<td>${courseUnitView.cdTurma}</td>
<td>${courseUnitView.teachersSnipet}</td>
 
<td class="icons">
68,17 → 81,24
<html:link action="/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/edit.png"/></html:link>
</logic:equal>
<logic:notEqual value="${courseView.coordinator.id}" name="UserSession" property="user.id">
<baco:hasRole role="${courseView.validationRole},courseValidatePrograms,servicesPrograms">
<html:link action="/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/edit.png"/></html:link>
</baco:hasRole>
</logic:notEqual>
<logic:notEqual value="${courseView.coordinator.id}" name="UserSession" property="user.id">
<baco:isTeacherOfCourseUnit courseUnitId="${courseUnitView.id}">
<html:link action="/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/edit.png"/></html:link>
<baco:hasNotRole role="${courseView.validationRole},courseValidatePrograms,servicesPrograms">
<html:link action="/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/edit.png"/></html:link>
</baco:hasNotRole>
</baco:isTeacherOfCourseUnit>
</logic:notEqual>
</logic:equal>
<baco:hasRole role="${courseView.validationRole},courseValidatePrograms">
<baco:hasRole role="${courseView.validationRole},courseValidatePrograms,servicesPrograms">
<logic:equal value="true" name="courseUnitView" property="validEvaluation">
<a href="<%=request.getContextPath()%>/repositoryStream/${courseUnitView.evaluationStreamId}"><img src="<%=request.getContextPath()%>/imgs/avaliacao_icon.png"/></a>
</logic:equal>
</baco:hasRole>
<baco:hasNotRole role="${courseView.validationRole},courseValidatePrograms">
<baco:hasNotRole role="${courseView.validationRole},courseValidatePrograms,servicesPrograms">
<baco:isTeacherOfCourseUnit courseUnitId="${courseUnitView.id}">
<logic:equal value="true" name="courseUnitView" property="validEvaluation">
<a href="<%=request.getContextPath()%>/repositoryStream/${courseUnitView.evaluationStreamId}"><img src="<%=request.getContextPath()%>/imgs/avaliacao_icon.png"/></a>
125,12 → 145,13
}
);
</script>
<table id="myTable${SEMESTRE}PI${courseView.id}" class="dataTable tablesorter">
<table id="myTable${SEMESTRE}PI${courseView.id}" class="dataTable tablesorter tablesorterfiltered">
<thead>
<tr>
<td></td>
<th>Código</th>
<th>Unidade</th>
<th>Turma</th>
<th>Docente</th>
<td></td>
</tr>
164,7 → 185,9
<nested:checkbox property="validProgram"/></td>
</baco:hasRole>
<td>${courseUnitView.code}</td>
<td>${courseUnitView.name}</td>
<td>${courseUnitView.name}</td>
<td>${courseUnitView.cdTurma}</td>
<td>${courseUnitView.cdTurma}</td>
<td>${courseUnitView.teachersSnipet}</td>
<td class="icons">
<a href="<%=request.getContextPath()%>/user/startLoadCourseUnitFromHome.do?id=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/home.png"/></a>
175,17 → 198,24
<html:link action="/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/edit.png"/></html:link>
</logic:equal>
<logic:notEqual value="${courseView.coordinator.id}" name="UserSession" property="user.id">
<baco:hasRole role="${courseView.validationRole},courseValidatePrograms,servicesPrograms">
<html:link action="/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/edit.png"/></html:link>
</baco:hasRole>
</logic:notEqual>
<logic:notEqual value="${courseView.coordinator.id}" name="UserSession" property="user.id">
<baco:isTeacherOfCourseUnit courseUnitId="${courseUnitView.id}">
<html:link action="/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/edit.png"/></html:link>
<baco:hasNotRole role="${courseView.validationRole},courseValidatePrograms,servicesPrograms">
<html:link action="/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/edit.png"/></html:link>
</baco:hasNotRole>
</baco:isTeacherOfCourseUnit>
</logic:notEqual>
</logic:equal>
<baco:hasRole role="${courseView.validationRole},courseValidatePrograms">
<baco:hasRole role="${courseView.validationRole},courseValidatePrograms,servicesPrograms">
<logic:equal value="true" name="courseUnitView" property="validEvaluation">
<a href="<%=request.getContextPath()%>/repositoryStream/${courseUnitView.evaluationStreamId}"><img src="<%=request.getContextPath()%>/imgs/avaliacao_icon.png"/></a>
</logic:equal>
</baco:hasRole>
<baco:hasNotRole role="${courseView.validationRole},courseValidatePrograms">
<baco:hasNotRole role="${courseView.validationRole},courseValidatePrograms,servicesPrograms">
<baco:isTeacherOfCourseUnit courseUnitId="${courseUnitView.id}">
<logic:equal value="true" name="courseUnitView" property="validEvaluation">
<a href="<%=request.getContextPath()%>/repositoryStream/${courseUnitView.evaluationStreamId}"><img src="<%=request.getContextPath()%>/imgs/avaliacao_icon.png"/></a>
227,12 → 257,13
}
);
</script>
<table id="myTable${SEMESTRE}PV${courseView.id}" class="dataTable tablesorter">
<table id="myTable${SEMESTRE}PV${courseView.id}" class="dataTable tablesorter tablesorterfiltered">
<thead>
<tr>
<td></td>
<th>Código</th>
<th>Unidade</th>
<th>Turma</th>
<th>Docente</th>
<td></td>
</tr>
266,6 → 297,7
</baco:hasRole>
<td>${courseUnitView.code}</td>
<td>${courseUnitView.name}</td>
<td>${courseUnitView.cdTurma}</td>
<td>${courseUnitView.teachersSnipet}</td>
<td class="icons">
<a href="<%=request.getContextPath()%>/user/startLoadCourseUnitFromHome.do?id=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/home.png"/></a>
278,23 → 310,30
<html:link action="/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/edit.png"/></html:link>
</logic:equal>
<logic:notEqual value="${courseView.coordinator.id}" name="UserSession" property="user.id">
<baco:hasRole role="${courseView.validationRole},courseValidatePrograms,servicesPrograms">
<html:link action="/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/edit.png"/></html:link>
</baco:hasRole>
</logic:notEqual>
<logic:notEqual value="${courseView.coordinator.id}" name="UserSession" property="user.id">
<baco:isTeacherOfCourseUnit courseUnitId="${courseUnitView.id}">
<html:link action="/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/edit.png"/></html:link>
<baco:hasNotRole role="${courseView.validationRole},courseValidatePrograms,servicesPrograms">
<html:link action="/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/edit.png"/></html:link>
</baco:hasNotRole>
</baco:isTeacherOfCourseUnit>
</logic:notEqual>
<baco:hasRole role="${courseView.validationRole},courseValidatePrograms">
</logic:equal>
<baco:hasRole role="${courseView.validationRole},courseValidatePrograms,servicesPrograms">
<logic:equal value="true" name="courseUnitView" property="validEvaluation">
<a href="<%=request.getContextPath()%>/repositoryStream/${courseUnitView.evaluationStreamId}"><img src="<%=request.getContextPath()%>/imgs/avaliacao_icon.png"/></a>
</logic:equal>
</baco:hasRole>
<baco:hasNotRole role="${courseView.validationRole},courseValidatePrograms,servicesPrograms">
<baco:isTeacherOfCourseUnit courseUnitId="${courseUnitView.id}">
<logic:equal value="true" name="courseUnitView" property="validEvaluation">
<a href="<%=request.getContextPath()%>/repositoryStream/${courseUnitView.evaluationStreamId}"><img src="<%=request.getContextPath()%>/imgs/avaliacao_icon.png"/></a>
</logic:equal>
</baco:hasRole>
<baco:hasNotRole role="${courseView.validationRole},courseValidatePrograms">
<baco:isTeacherOfCourseUnit courseUnitId="${courseUnitView.id}">
<logic:equal value="true" name="courseUnitView" property="validEvaluation">
<a href="<%=request.getContextPath()%>/repositoryStream/${courseUnitView.evaluationStreamId}"><img src="<%=request.getContextPath()%>/imgs/avaliacao_icon.png"/></a>
</logic:equal>
</baco:isTeacherOfCourseUnit>
</baco:hasNotRole>
</logic:equal>
</baco:isTeacherOfCourseUnit>
</baco:hasNotRole>
</baco:isNotAdmin>
<baco:isAdmin>
<html:link action="/startLoadCourseUnitProgram?courseUnitId=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/edit.png"/></html:link>
/impl/src/web/user/courses/selectCourse.jsp
21,14 → 21,60
<div class="seccao">
<h2><bean:message key="course.select.message"/> </h2>
<div class="form">
<html:form action="/user/courseControllerFromServiceZone">
<input type="hidden" name="dispatch" value="edit"/>
<html:select property="courseView.id">
<table class="tablesorter tablesorterfiltered">
<thead>
<tr>
<th class="filter-name filter-select"><bean:message key="status"/></th>
<th><bean:message key="course.code"/>(SIGES)</th>
<th><bean:message key="course.label"/></th>
<th class="filter-name filter-select"><bean:message key="course.degree"/></th>
<th class="filter-name filter-select"><bean:message key="course.importYear"/></th>
<th><bean:message key="course.validation.role"/></th>
<th><bean:message key="course.studies.plan"/></th>
<th></th>
</tr>
</thead>
<tbody>
<logic:iterate id="course" name="Courses" type="pt.estgp.estgweb.domain.views.CourseView">
<html:option value="${course.id}">(${course.code}) ${course.name}</html:option>
<tr>
<td>
<logic:equal value="true" name="course" property="status">
<bean:message key="yes"/>
</logic:equal>
<logic:equal value="false" name="course" property="status">
<bean:message key="no"/>
</logic:equal>
</td>
<td>${course.code}</td>
<td>${course.name}</td>
<td><bean:message key="course.${course.degreeCleanCode}"/></td>
<td>${course.importYear}</td>
<td>
<logic:present name="course" property="validationRole">
<bean:message key="user.role.${course.validationRole}"/>
</logic:present>
<logic:notPresent name="course" property="validationRole">
---
</logic:notPresent>
</td>
<td>
<logic:present name="CourseView" property="studiesPlan">
<a href="<%=request.getContextPath()%>/repositoryStream/${course.studiesPlanStreamId}"><bean:message key="course.studies.plan"/></a>
</logic:present>
<logic:notPresent name="CourseView" property="studiesPlan">
---
</logic:notPresent>
</td>
<td>
<a class="btn btn-warning" href="<%=request.getContextPath()%>/user/courseControllerFromServiceZone.do?dispatch=edit&courseView.id=${course.id}">
<span class="glyphicon glyphicon-pencil"></span>
</a>
</td>
</tr>
</logic:iterate>
</html:select>
<input type="submit" value="<bean:message key="edit"/>">
</html:form>
</tbody>
 
</table>
 
</div>
</div>
/impl/src/web/user/courseunits/courseunitworks.jsp
158,6 → 158,9
</td>
<td>
<a href="javascript:showOrHideOne('assignement${work.id}')">${work.title}</a>
<div style="padding:5px;border:1px solid gray" id="assignement${work.id}" style="<%=Globals.HIDDEN%>">
${work.formatedDescription}
</div>
</td>
<td>
<logic:notEmpty name="work" property="workFile">
289,11 → 292,6
</td>
</logic:notEmpty>
</tr>
<tr id="assignement${work.id}" style="<%=Globals.HIDDEN%>">
<td colspan="${colspanAssignement}">
${work.formatedDescription}
</td>
</tr>
</logic:iterate>
</tbody>
</table>
305,4 → 303,4
</div>
 
</div>
</div>
</div>
/impl/src/web/user/courseunits/courseunitEvaluation.jsp
6,6 → 6,7
<%@ page import="pt.estgp.estgweb.domain.Teacher" %>
<%@ page import="pt.estgp.estgweb.domain.ConfigurationImpl" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ 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" %>
23,12 → 24,18
<html:errors/>
<jomm:messages/>
 
<script>
//Manter a sessão activa para os docentes não perderem os dados
ping();
</script>
 
<%
IServiceManager sm = ServiceManager.getInstance();
 
List<pt.estgp.estgweb.domain.views.CourseUnitView> otherYearUnits;
/*List<pt.estgp.estgweb.domain.views.CourseUnitView> otherYearUnits;
otherYearUnits = new ArrayList<pt.estgp.estgweb.domain.views.CourseUnitView>();
try{
 
String[] names = new String[]{};
Object[] args = new Object[]{new Long(CourseUnitView.getId())};
otherYearUnits =
46,7 → 53,7
{
System.err.print(e.toString());
e.printStackTrace();
}
}*/
 
boolean closed = CourseUnitEvaluationForm.getCourseUnitEvaluationView().getCourseUnitEvaluation().isClosed();
boolean teacherComplete = CourseUnitEvaluationForm.getCourseUnitEvaluationView().getCourseUnitEvaluation().isTeacherComplete();
118,7 → 125,9
CourseUnitView.isOwnedBy(UserSession.getUser(),false)
||
//Validation Role e o papel da comissão de curso
UserSession.getUser().hasRole(CourseUnitView.getCourseView().getValidationRole()))
UserSession.getUser().hasRole(CourseUnitView.getCourseView().getValidationRole())
||
UserSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE))
{
 
 
/impl/src/web/user/courseunits/courseunitProgram.jsp
20,6 → 20,10
<div id="contentPane">
<html:errors/>
<jomm:messages/>
<script>
//Manter a sessão activa para os docentes não perderem os dados
ping();
</script>
 
<%
IServiceManager sm = ServiceManager.getInstance();
/impl/src/web/user/courseunits/courseunit.jsp
1,3 → 1,5
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page import="pt.estgp.estgweb.domain.UserImpl" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
29,7 → 31,7
request.setAttribute("fromAction", fromAction);
 
 
String activeEvaluationYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYearCreateTransaction();
//String activeEvaluationYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYearCreateTransaction();
 
IServiceManager sm = ServiceManager.getInstance();
 
42,20 → 44,25
request.setAttribute("CourseUnitInEvaluation",courseUnitViewInEvaluation);
}
 
boolean showEvaluationReport = false;
 
%>
 
 
 
<jomm:messages/>
 
<div id="contentPane">
<h1>${CourseUnitView.name} (${CourseUnitView.code}) - (${CourseUnitView.semestre}) - ${CourseUnitView.importYear})</h1>
<table width="100%" cellpadding="0" cellspacing="2" border="0">
<tr>
<td valign="top" class="seccao">
<div class="panel panel-primary panel-container">
<div class="panel-heading">
${CourseUnitView.name} (${CourseUnitView.code}) - semestre ${CourseUnitView.semestre} - ano ${CourseUnitView.importYear} - turma ${CourseUnitView.cdTurma}
</div>
<div class="panel-body">
 
 
 
<baco:isAuthenticated>
<%
if(activeEvaluationYear != null)
{
 
%>
 
<%
64,300 → 71,298
CourseUnitView.isOwnedBy(UserSession.getUser(),false)
||
//Validation Role e o papel da comissão de curso
UserSession.getUser().hasRole(CourseUnitView.getCourseView().getValidationRole()))
UserSession.getUser().hasRole(CourseUnitView.getCourseView().getValidationRole())
||
UserSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE))
{
if(CourseUnitView.isValidEvaluation())
{
%>
<p>
<label class="INFO"> <a href="<%=request.getContextPath()%>/repositoryStream/<%=CourseUnitView.getEvaluationStreamId()%>">Relatório de avaliação em PDF</a></label>
</p>
<%
showEvaluationReport = true;
 
}
 
if(courseUnitViewInEvaluation != null)
{
%>
<p>
<label class="WARNING">Atenção tem um relatório de avaliação em fase de preenchimento no ano <%=courseUnitViewInEvaluation.getImportYear()%> (Entrar no <%=courseUnitViewInEvaluation.getImportYear()%> pelo menu lateral esquerdo antes de clicar em relatório de avaliação e confirmar no titulo da unidade).</label>
</p>
<%
%>
<div class="row">
<div class="col-sm-8">
<div class="alert alert-warning" role="alert">Atenção tem um relatório de avaliação em fase de preenchimento no ano <%=courseUnitViewInEvaluation.getImportYear()%> (Entrar no <%=courseUnitViewInEvaluation.getImportYear()%> pelo menu lateral esquerdo antes de clicar em relatório de avaliação e confirmar no titulo da unidade).</div>
</div>
</div>
 
<%
}
}
 
}
%>
</baco:isAuthenticated>
<baco:hasRole role="admin,all,services">
<ul>
<li>
<html:link action="/user/startEditCourseUnitAdminFromServiceZone.do?id=${CourseUnitView.id}">
Editar Dados Administrativos Unidade
</html:link>
</li>
<li>
<html:link action="/user/courseControllerFromServiceZone.do?dispatch=edit&courseView.id=${CourseUnitView.courseId}">
Editar Dados Administrativos Curso
</html:link>
</li>
</ul>
<html:form styleClass="form" action="/user/courseUnitControllerFromHome" enctype="multipart/form-data">
<input type="hidden" name="dispatch" value="update"/>
<html:hidden property="courseUnitView.id"/>
 
</baco:hasRole>
 
<html:form styleClass="form" action="/user/courseUnitControllerFromHome" enctype="multipart/form-data">
<input type="hidden" name="dispatch" value="update"/>
<html:hidden property="courseUnitView.id"/>
<div class="panel panel-default">
<div class="panel-heading">
<bean:message key="courseunit.objectives"/>
</div>
<div class="panel-body">
<p><logic:present name="CourseUnitView" property="objectives">
${CourseUnitView.formatedObjectives}
</logic:present>
<logic:notPresent name="CourseUnitView" property="objectives">
<bean:message key="courseunit.objectives.not.available"/>
</logic:notPresent></p>
</div>
</div>
<div class="row">
<div class="col-md-8 col-sm-6 col-xs-12">
<div class="row">
<div class="col-md-6 col-sm-12 col-xs-12">
 
<p>
<%--<baco:cantManage name="CourseUnitView">--%>
<div class="panel panel-default">
<div class="panel-heading">
<bean:message key="courseunit.objectives"/>
</div>
<div class="panel-body">
<p><logic:present name="CourseUnitView" property="objectives">
${CourseUnitView.formatedObjectives}
</logic:present>
<logic:notPresent name="CourseUnitView" property="objectives">
<bean:message key="courseunit.objectives.not.available"/>
</logic:notPresent></p>
</div>
</div>
</div>
<div class="col-md-6 col-sm-12 col-xs-12">
<div class="panel panel-default">
<div class="panel-heading">
Recursos
</div>
<div class="panel-body">
 
<%--</baco:cantManage>--%>
<%--<baco:canManage name="CourseUnitView">--%>
<%--<html:textarea styleClass="textarea" property="courseUnitView.objectives"/>--%>
<%--</baco:canManage>--%>
</p>
<baco:canManage name="CourseUnitView">
<h2><bean:message key="courseunits.contentsGrants"/></h2>
<p>
<html:select property="courseUnitView.contentsGrants">
<%--<html:option value="PUBLIC"><bean:message key="courseunits.contentsGrants.PUBLIC"/></html:option>--%>
<html:option value="INTERNAL"><bean:message key="courseunits.contentsGrants.INTERNAL"/></html:option>
<html:option value="PRIVATE"><bean:message key="courseunits.contentsGrants.PRIVATE"/></html:option>
</html:select>
<baco:canManage name="CourseUnitView">
<input type="button" onclick="set(form,'update');form.submit()" value="<bean:message key="confirm"/>">
</baco:canManage>
</p>
</baco:canManage>
<baco:isAuthenticated>
<h2><bean:message key="courseunit.programfilepath"/>
<baco:isTeacherOfCourseUnit courseUnitId="${CourseUnitView.id}">
<logic:equal value="false" name="CourseUnitView" property="validProgram">
Ficha aberta para edição: (<html:link action="/startLoadCourseUnitProgram?courseUnitId=${CourseUnitView.id}"><bean:message key="courseunit.edit.program"/></html:link>)
</logic:equal>
<div class="list-group">
 
</baco:isTeacherOfCourseUnit>
<logic:equal value="${CourseUnitView.coordinatorId}" name="UserSession" property="user.id">
<logic:equal value="false" name="CourseUnitView" property="validProgram">
Ficha aberta para edição: (<html:link action="/startLoadCourseUnitProgram?courseUnitId=${CourseUnitView.id}"><bean:message key="courseunit.edit.program"/></html:link>)
</logic:equal>
</logic:equal>
<baco:hasRole role="admin,all,services,ci">
<div class="list-group-item">
<html:link action="/user/startEditCourseUnitAdminFromServiceZone.do?id=${CourseUnitView.id}">
Editar Dados Administrativos Unidade
</html:link>
</div>
<div class="list-group-item">
<html:link action="/user/courseControllerFromServiceZone.do?dispatch=edit&courseView.id=${CourseUnitView.courseId}">
Editar Dados Administrativos Curso
</html:link>
</div>
</baco:hasRole>
<%
if(showEvaluationReport)
{
%>
<div class="list-group-item">
<a href="<%=request.getContextPath()%>/repositoryStream/<%=CourseUnitView.getEvaluationStreamId()%>">Relatório de avaliação (ano ${CourseUnitView.importYear})</a>
<span class="badge">
<a href="<%=request.getContextPath()%>/repositoryStream/${CourseUnitView.evaluationStreamId}"><img style="clear: both" src="<%=request.getContextPath()%>/imgs/mime/pdf.gif"/></a>
</span>
</div>
<%
}
%>
<baco:canManage name="CourseUnitView">
 
<baco:isAdmin>
Ficha aberta para edição: (<html:link action="/startLoadCourseUnitProgram?courseUnitId=${CourseUnitView.id}"><bean:message key="courseunit.edit.program"/></html:link>)
</baco:isAdmin>
<div class="list-group-item">
<bean:message key="courseunits.contentsGrants"/> -
<%--<html:option value="PUBLIC"><bean:message key="courseunits.contentsGrants.PUBLIC"/></html:option>--%>
<html:radio onclick="set(form,'update');form.submit()" property="courseUnitView.contentsGrants" value="INTERNAL"/> <bean:message key="courseunits.contentsGrants.INTERNAL"/>
<html:radio onclick="set(form,'update');form.submit()" property="courseUnitView.contentsGrants" value="PRIVATE" /> <bean:message key="courseunits.contentsGrants.PRIVATE"/>
</div>
</baco:canManage>
 
<baco:isAuthenticated>
 
<logic:equal value="true" name="CourseUnitView" property="validProgram">
(Ficha curricular validada)
</logic:equal>
<logic:equal value="false" name="CourseUnitView" property="validProgram">
(<label style="color:red">Ficha curricular ainda não validada pela Comissão de Curso</label>)
</logic:equal>
</h2>
<p>
<baco:canManage name="CourseUnitView">
<!--
<logic:equal value="false" name="CourseUnitView" property="validProgram">
<html:file property="programFile"/>
</logic:equal>
-->
<logic:present name="CourseUnitView" property="programStreamId">
<a href="<%=request.getContextPath()%>/repositoryStream/${CourseUnitView.programStreamId}"><bean:message key="courseunit.programfilepath"/></a> (${CourseUnitView.programSize} Kb)
<logic:equal value="true" name="CourseUnitView" property="validProgram">
(<bean:message key="courseunit.programfile.valid"/>)
</logic:equal>
</logic:present>
</baco:canManage>
 
 
<baco:cantManage name="CourseUnitView">
<logic:present name="CourseUnitView" property="programStreamId">
<logic:equal value="true" name="CourseUnitView" property="validProgram">
(<bean:message key="courseunit.programfile.valid"/>)
</logic:equal>
<a href="<%=request.getContextPath()%>/repositoryStream/${CourseUnitView.programStreamId}"><bean:message key="courseunit.programfilepath"/></a> (${CourseUnitView.programSize} Kb)
 
</logic:present>
</baco:cantManage>
<div class="list-group-item">
<logic:present name="CourseUnitView" property="programStreamId">
<a href="<%=request.getContextPath()%>/repositoryStream/${CourseUnitView.programStreamId}"><bean:message key="courseunit.programfilepath"/></a> <!--(${CourseUnitView.programSize} Kb)-->
 
<logic:notPresent name="CourseUnitView" property="programStreamId">
<bean:message key="courseunit.programfilepath.not.available"/>
</logic:notPresent>
<%--<logic:equal value="true" name="CourseUnitView" property="validProgram">
(<bean:message key="courseunit.programfile.valid"/>)
</logic:equal>--%>
<logic:equal value="false" name="CourseUnitView" property="validProgram">
(<label style="color:red">Não validada pela Comissão de Curso</label>)
</logic:equal>
 
<logic:present name="CourseUnitView" property="programStreamId">
<logic:equal value="false" name="CourseUnitView" property="validProgram">
<bean:message key="courseunit.programfile.invalid"/>
</logic:equal>
</logic:present>
<baco:isNotAdmin>
<logic:notEqual value="${CourseUnitView.coordinatorId}" name="UserSession" property="user.id">
<baco:isTeacherOfCourseUnit courseUnitId="${CourseUnitView.id}">
<logic:equal value="false" name="CourseUnitView" property="validProgram">
<span class="badge"> <html:link action="/startLoadCourseUnitProgram?courseUnitId=${CourseUnitView.id}"><span class="glyphicon glyphicon-pencil"></span></html:link></span>
</logic:equal>
</baco:isTeacherOfCourseUnit>
</logic:notEqual>
<logic:equal value="${CourseUnitView.coordinatorId}" name="UserSession" property="user.id">
<logic:equal value="false" name="CourseUnitView" property="validProgram">
<span class="badge"><html:link action="/startLoadCourseUnitProgram?courseUnitId=${CourseUnitView.id}"><span class="glyphicon glyphicon-pencil"></span></html:link></span>
</logic:equal>
</logic:equal>
</baco:isNotAdmin>
<baco:isAdmin>
<html:link styleClass="btn btn-warning" action="/startLoadCourseUnitProgram?courseUnitId=${CourseUnitView.id}"><span class="glyphicon glyphicon-pencil"></span></html:link>
</baco:isAdmin>
<span class="badge" style="overflow: auto;display: inline-flex;height: 20px;"><a href="<%=request.getContextPath()%>/repositoryStream/${CourseUnitView.programStreamId}"><img src="<%=request.getContextPath()%>/imgs/mime/pdf.gif"/></a></span>
</logic:present>
<logic:notPresent name="CourseUnitView" property="programStreamId">
<bean:message key="courseunit.programfilepath.not.available"/>
</logic:notPresent>
</div>
<div class="list-group-item">
<logic:present name="CourseUnitView" property="programStreamId">
<baco:hasRole role="teacher,admin,all,services,servicesPrograms,courseValidatePrograms">
<a href="<%=request.getContextPath()%>/admin/data.jsp?id=${CourseUnitView.programStreamId}">Ver todas as versoes do programa</a>
</baco:hasRole>
</logic:present>
</div>
 
<logic:present name="CourseUnitView" property="programStreamId">
<baco:hasRole role="teacher,admin,all">
<a href="<%=request.getContextPath()%>/admin/data.jsp?id=${CourseUnitView.programStreamId}">Ver todas as versoes do programa</a>
</baco:hasRole>
</logic:present>
</baco:isAuthenticated>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12">
<baco:isAuthenticated>
<%
if(CourseUnitView.getContentsGrants() == null)
CourseUnitView.setContentsGrants("INTERNAL");
if(CourseUnitView.getContentsGrants().equals("INTERNAL") || (CourseUnitView.getContentsGrants().equals("PRIVATE") &&
(
((UserImpl)UserSession.getUser()).isTeacherOfCourseUnit(CourseUnitView.getId()) ||
((UserImpl)UserSession.getUser()).isStudentfCourseUnit(CourseUnitView.getId()) ||
(UserSession.getUser()).getId() == CourseUnitView.getResponsableId()
)))
{
 
</p>
</baco:isAuthenticated>
%>
<h2><bean:message key="module.Announcements"/></h2>
<logic:notEmpty name="CourseUnitView" property="announcements">
<%--<div class="listCircleWhite">
<ul>
<logic:iterate id="announcement" name="CourseUnitView" property="announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<li>
<h3><html:link action="/user/startLoadAnnouncementFromCourseUnit?id=${announcement.id}">${announcement.title}</html:link></h3>
<p>${announcement.formatedText}</p>
<p class="pFooterSeccao"><bean:message key="from"/>: ${announcement.owner.name} (${announcement.owner.username}) <bean:message key="at"/> ${announcement.formatedSaveDate} </p>
</li>
</logic:iterate>
</ul>
</div>--%>
<logic:iterate id="announcement" name="CourseUnitView" property="announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<div class="panel panel-info">
<div class="panel-heading">
<html:link action="/user/startLoadAnnouncementFromCourseUnit?id=${announcement.id}">${announcement.title}</html:link>
</div>
<div class="panel-body">
<p>${announcement.formatedText}</p>
</div>
<div class="panel-footer"><bean:message key="from"/>: ${announcement.owner.name} (${announcement.owner.username}) <bean:message key="at"/> ${announcement.formatedSaveDate} </div>
</div>
</logic:iterate>
 
 
</html:form>
</logic:notEmpty>
<logic:empty name="CourseUnitView" property="announcements">
<p><bean:message key="announcement.zero.placed"/></p>
</logic:empty>
<%
}
%>
 
</baco:isAuthenticated>
</div>
</div>
</div>
<div class="col-md-4 col-sm-6 col-xs-12">
 
<baco:isAuthenticated>
 
<h2><bean:message key="module.Announcements"/></h2>
<logic:notEmpty name="CourseUnitView" property="announcements">
<%--<div class="listCircleWhite">
<ul>
<logic:iterate id="announcement" name="CourseUnitView" property="announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<li>
<h3><html:link action="/user/startLoadAnnouncementFromCourseUnit?id=${announcement.id}">${announcement.title}</html:link></h3>
<p>${announcement.formatedText}</p>
<p class="pFooterSeccao"><bean:message key="from"/>: ${announcement.owner.name} (${announcement.owner.username}) <bean:message key="at"/> ${announcement.formatedSaveDate} </p>
</li>
</logic:iterate>
</ul>
</div>--%>
<logic:iterate id="announcement" name="CourseUnitView" property="announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
 
<div class="panel panel-default">
<div class="panel-heading">
<html:link action="/user/startLoadAnnouncementFromCourseUnit?id=${announcement.id}">${announcement.title}</html:link>
</div>
<div class="panel-body">
<p>${announcement.formatedText}</p>
</div>
<div class="panel-footer"><bean:message key="from"/>: ${announcement.owner.name} (${announcement.owner.username}) <bean:message key="at"/> ${announcement.formatedSaveDate} </div>
</div>
</logic:iterate>
<div class="panel-heading">
<bean:message key="courseunit.teachers"/>
</div>
<div class="panel-body">
<logic:notEmpty name="CourseUnitView" property="responsableTeacher">
<div class="list-group">
<div class="list-group-item"><bean:message key="courseunit.responsable"/></div>
<div class="list-group-item">
 
<html:link action="${user}/startLoadTeacherCourseUnit${fromAction}?code=${CourseUnitView.responsableTeacher.code}&courseUnitView.id=${CourseUnitView.id}">${CourseUnitView.responsableTeacher.name}</html:link>
<span class="badge">${CourseUnitView.responsableTeacher.code}</span>
 
</logic:notEmpty>
<logic:empty name="CourseUnitView" property="announcements">
<p><bean:message key="announcement.zero.placed"/></p>
</logic:empty>
</td>
</div>
<div class="list-group-item disabled"> ${CourseUnitView.responsableTeacher.safeEmail}</div>
</div>
</logic:notEmpty>
<div class="list-group">
<logic:iterate id="teacher" name="CourseUnitView" property="teachers" type="pt.estgp.estgweb.domain.views.UserView">
<div class="list-group-item"><html:link action="${user}/startLoadTeacherCourseUnit${fromAction}?code=${teacher.code}&courseUnitView.id=${CourseUnitView.id}">${teacher.name}</html:link> <span class="badge">${teacher.code}</span></div>
<div class="list-group-item disabled"> ${teacher.safeEmail}</div>
</logic:iterate>
</div>
 
</baco:isAuthenticated>
 
</td>
<td valign="top" class="seccao">
</div>
 
<div class="seccao">
<logic:notEmpty name="CourseUnitView" property="responsableTeacher">
 
<div class="panel panel-default">
<div class="panel-heading">
<bean:message key="courseunit.responsable"/>
</div>
<div class="panel-body">
<table class="dataTable">
<tr>
<th><bean:message key="number"/></th>
<th><bean:message key="name"/></th>
<th><bean:message key="email"/></th>
</tr>
<tr>
<td>
${CourseUnitView.responsableTeacher.code}
</td>
<td>
<html:link action="${user}/startLoadTeacherCourseUnit${fromAction}?code=${CourseUnitView.responsableTeacher.code}&courseUnitView.id=${CourseUnitView.id}">${CourseUnitView.responsableTeacher.name}</html:link>
</td>
<td>
${CourseUnitView.responsableTeacher.safeEmail}
</td>
</tr>
</table>
</div>
</div>
 
 
 
</logic:notEmpty>
 
<div class="panel panel-default">
<div class="panel-heading">
<bean:message key="courseunit.teachers"/>
</div>
<div class="panel-body">
<table class="dataTable tablesorter">
<tr>
<th><bean:message key="number"/></th>
<th><bean:message key="name"/></th>
<th><bean:message key="email"/></th>
</tr>
<logic:iterate id="teacher" name="CourseUnitView" property="teachers" type="pt.estgp.estgweb.domain.views.UserView">
<tr>
<td>
${teacher.code}
</td>
<td>
<html:link action="${user}/startLoadTeacherCourseUnit${fromAction}?code=${teacher.code}&courseUnitView.id=${CourseUnitView.id}">${teacher.name}</html:link>
</td>
<td>
${teacher.safeEmail}
</td>
</tr>
</logic:iterate>
</table>
</div>
</div>
 
</div>
<div class="seccao">
<h2><bean:message key="courseunit.summaries"/></h2>
<logic:notEmpty name="CourseUnitView" property="summariesFromJson">
<baco:hasRole role="teacher">
<p><a href="<%=request.getContextPath()%>/ftpProxyStream/ionline${CourseUnitView.sumariosPathFileIntranet}">Descarregar PDF</a></p>
<logic:greaterThan value="0" name="CourseUnitView" property="lateSummaries">
<p style="background-color: yellow">Alerta.Tem <bean:write name="CourseUnitView" property="lateSummaries"/>
<logic:equal name="CourseUnitView" property="lateSummaries" value="1">Sumário</logic:equal>
<logic:greaterThan name="CourseUnitView" property="lateSummaries" value="1">Sumários</logic:greaterThan>
lançados pelos serviços que não estão preenchidos e estão abertos há mais de 48 horas. Se este for um falso alerta pedimos desculpa pelo incómodo.
<a target="_blank" href="http://netpa.ipportalegre.pt">Aceda ao NETPA para regularizar</a>
ou entre em contacto com o Sr José Luis para confirmar a situação:</a>
 
</p>
<ul>
<logic:iterate id="sumLate" name="CourseUnitView" property="lateSummariesDates">
<li>Por lançar: <bean:write name="sumLate"/></li>
</logic:iterate>
</ul>
</logic:greaterThan>
</baco:hasRole>
</logic:notEmpty>
<baco:isAuthenticated>
<div class="panel panel-default">
<div class="panel-heading">
<bean:message key="courseunit.summaries"/>
</div>
<div class="panel-body">
 
<logic:notEmpty name="CourseUnitView" property="summariesFromJson">
<baco:hasRole role="teacher">
<p><a href="<%=request.getContextPath()%>/ftpProxyStream/ionline${CourseUnitView.sumariosPathFileIntranet}">Descarregar PDF <img src="<%=request.getContextPath()%>/imgs/mime/pdf.gif"/></a></p>
<logic:greaterThan value="0" name="CourseUnitView" property="lateSummaries">
<p style="background-color: yellow">Alerta.Tem <bean:write name="CourseUnitView" property="lateSummaries"/>
<logic:equal name="CourseUnitView" property="lateSummaries" value="1">Sumário</logic:equal>
<logic:greaterThan name="CourseUnitView" property="lateSummaries" value="1">Sumários</logic:greaterThan>
lançados pelos serviços que não estão preenchidos e estão abertos há mais de 48 horas. Se este for um falso alerta pedimos desculpa pelo incómodo.
<a target="_blank" href="http://netpa.ipportalegre.pt">Aceda ao NETPA para regularizar</a>
ou entre em contacto com o Sr José Luis para confirmar a situação:</a>
 
<logic:notEmpty name="CourseUnitView" property="summariesFromJson">
<logic:iterate id="summary" name="CourseUnitView" property="summariesFromJson" type="pt.estgp.estgweb.domain.views.CourseUnitSummaryView">
<div class="blockData">
<div class="blockDataTitle">Aula ${summary.number} - ${summary.title}</div>
<div class="blockDataContent">${summary.description}</div>
<div class="blockDataFooter">${summary.date} - ${summary.horas} Horas - ${summary.students} <bean:message key="courseunit.summary.present.students"/> </div>
</p>
<ul>
<logic:iterate id="sumLate" name="CourseUnitView" property="lateSummariesDates">
<li>Por lançar: <bean:write name="sumLate"/></li>
</logic:iterate>
</ul>
</logic:greaterThan>
</baco:hasRole>
</logic:notEmpty>
 
 
<logic:notEmpty name="CourseUnitView" property="summariesFromJson">
<logic:iterate id="summary" name="CourseUnitView" property="summariesFromJson" type="pt.estgp.estgweb.domain.views.CourseUnitSummaryView">
<div class="blockData">
<div class="blockDataTitle">Aula ${summary.number} - ${summary.title}</div>
<div class="blockDataContent">${summary.description}</div>
<div class="blockDataFooter">${summary.date} - ${summary.horas} Horas - ${summary.students} <bean:message key="courseunit.summary.present.students"/> </div>
</div>
</logic:iterate>
</logic:notEmpty>
<logic:empty name="CourseUnitView" property="summariesFromJson">
<p><bean:message key="courseunit.summaries.zero.placed"/></p>
</logic:empty>
</div>
</div>
</logic:iterate>
</logic:notEmpty>
<logic:empty name="CourseUnitView" property="summariesFromJson">
<p><bean:message key="courseunit.summaries.zero.placed"/></p>
</logic:empty>
</baco:isAuthenticated>
</div>
</div>
</td>
 
</tr>
 
</table>
 
</html:form>
 
 
 
 
 
 
</div>
</div>
/impl/src/web/user/courseunits/menu.jsp
13,6 → 13,7
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnit" %>
<%@ page import="pt.estgp.estgweb.domain.views.CourseUnitView" %>
<%@ page import="pt.estgp.estgweb.domain.UserSessionImpl" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
21,6 → 22,11
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<%
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request);
if(userSession == null)
request.setAttribute("UserSession",new UserSessionImpl());
%>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<%
 
148,7 → 154,7
 
<baco:isAuthenticated>
<%
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request);
 
CourseUnitContentsGrants contentsGrants = CourseUnitContentsGrants.parse(CourseUnitView.getContentsGrants());
if ( contentsGrants == CourseUnitContentsGrants.PUBLIC ||
/impl/src/web/user/home.jsp
41,75 → 41,19
}
%>
 
<div class="row">
<div class="col-md-2 col-sm-2 hidden-xs" style=" padding-right: 0">
<jsp:include page="/public/announcements/announcementsPortalLeft.jsp?role=${UserSession.user.roles}&from=Home"/>
</div>
<div class="col-md-7 col-sm-7 col-xs-12" style="padding-left: 3px; padding-right: 3px">
<baco:hasRole role="student"><jsp:include page="/user/home/student.jsp"/></baco:hasRole>
<baco:hasRole role="teacher"><jsp:include page="/user/home/teacher.jsp"/></baco:hasRole>
<baco:hasNotRole role="student,teacher"><jsp:include page="/user/home/user.jsp"/></baco:hasNotRole>
</div>
<div class="col-md-3 col-sm-3 col-xs-12" style="padding-left: 0">
<jsp:include page="/public/announcements/announcementsPortalRightHome.jsp?role=${UserSession.user.roles}&from=Home"/>
</div>
</div>
 
 
 
 
 
 
<baco:hasRole role="student">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td id="leftPage">
 
<jsp:include page="/public/announcements/announcementsPortalLeft.jsp?role=${UserSession.user.roles}&from=Home"/>
</td>
<td class="contentPortal">
<jsp:include page="/user/home/student.jsp"/>
<%--<table width="100%" cellpadding="0" cellspacing="0" class="portalServices">--%>
<%--<tr>--%>
<%--<td class="messagesContainer"><jsp:include page="/user/pop/messagesContainer.jsp"/></td>--%>
<%--</tr>--%>
<%--</table>--%>
</td>
<td id="rightPagePortal">
<jsp:include page="/public/announcements/announcementsPortalRightHome.jsp?role=${UserSession.user.roles}&from=Home"/>
</td>
</tr>
</table>
</baco:hasRole>
<baco:hasRole role="teacher">
<table width="100%">
<tr>
<td id="leftPage">
<jsp:include page="/public/announcements/announcementsPortalLeft.jsp?role=${UserSession.user.roles}&from=Home"/>
</td>
<td class="contentPortal">
<jsp:include page="/user/home/teacher.jsp"/>
<%--<table width="100%" cellpadding="0" cellspacing="0">--%>
<%--<tr>--%>
<%--<td class="messagesContainer"><jsp:include page="/user/pop/messagesContainer.jsp"/></td>--%>
<%--</tr>--%>
<%--</table>--%>
</td>
<td id="rightPagePortal">
<jsp:include page="/public/announcements/announcementsPortalRightHome.jsp?role=${UserSession.user.roles}&from=Home"/>
</td>
</tr>
</table>
</baco:hasRole>
<baco:hasNotRole role="student">
<baco:hasNotRole role="teacher">
<table>
<tr>
<td id="leftPage">
<jsp:include page="/public/announcements/announcementsPortalLeft.jsp?role=all&from=Home"/>
</td>
<td class="contentPortal">
<jsp:include page="/user/home/user.jsp"/>
<%--<table width="100%" cellpadding="0" cellspacing="0">--%>
<%--<tr>--%>
<%--<td class="messagesContainer"><jsp:include page="/user/pop/messagesContainer.jsp"/></td>--%>
 
<%--</tr>--%>
<%--</table> --%>
</td>
<td id="rightPagePortal">
<jsp:include page="/public/announcements/announcementsPortalRightHome.jsp?role=all&from=Home"/>
</td>
</tr>
</table>
</baco:hasNotRole>
</baco:hasNotRole>
 
 
/impl/src/web/user/home/courseComission.jsp
New file
0,0 → 1,200
<%@ page import="jomm.dao.utils.HibernateUtils" %>
<%@ page import="jomm.utils.MessageResources" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnit" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.domain.dao.impl.CourseUnitDaoImpl" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<%
 
try{
HibernateUtils.getCurrentSession().beginTransaction();
String activeYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear();
List<String> activeDegrees = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveDegrees();
 
List<CourseUnitDaoImpl.CourseMissingValidationProgram> result0 = DaoFactory.getCourseUnitDaoImpl().loadMissingPrograms(UserSession);
List<CourseUnitDaoImpl.CourseMissingValidationProgram> result1 = DaoFactory.getCourseUnitDaoImpl().loadMissingProgramValidate(UserSession);
List<CourseUnitDaoImpl.CourseMissingValidationEvaluation> result2 = DaoFactory.getCourseUnitDaoImpl().loadMissingEvaluationValidate(UserSession);
List<CourseUnitDaoImpl.CourseMissingValidationEvaluation> result3 = DaoFactory.getCourseUnitDaoImpl().loadMissingEvaluation(UserSession);
if(result0.size() > 0 || result1.size() > 0 || result2.size() > 0 || result3.size()>0)
{
%>
<div class="block">
<div class="panel panel-primary">
<div class="panel-heading">Tarefas das Comissões de Curso (<%=activeYear%>)</div>
<div class="panel-body">
<p>Expanda os cursos e clique nas unidades para validar os relatórios de avaliação.</p>
<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="panel-body-h1">Fichas curriculares por validar</div>
<ul>
<%
for(CourseUnitDaoImpl.CourseMissingValidationProgram mis:result1)
{
%>
<li><a href="<%=request.getContextPath()%>/user/startLoadCoursesProgramsFromHome.do?courseId=<%=mis.course.getId()%>#<%=mis.course.getId()%>"><%=mis.course.getName()%> (<%=mis.courseUnits.size()%>)</a></li>
<%
}
%>
</ul>
 
<%
}
%>
 
<%
if(result0.size()>0)
{
%>
 
<div class="panel-body-h1">Fichas curriculares por preencher</div>
<ul>
<%
for(CourseUnitDaoImpl.CourseMissingValidationProgram mis:result0)
{
%>
<li><a href="<%=request.getContextPath()%>/user/startLoadCoursesProgramsFromHome.do?courseId=<%=mis.course.getId()%>#<%=mis.course.getId()%>"><%=mis.course.getName()%> (<%=mis.courseUnits.size()%>)</a></li>
<%
}
%>
</ul>
 
<%
}
%>
 
<%
if(result2.size()>0)
{
 
%>
 
<div class="panel-body-h1">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>
 
<%
for(CourseUnitDaoImpl.CourseMissingValidationEvaluation mis:result2)
{
%>
 
<h2><a href="javascript:showOrHide('evaluationValidate<%=mis.course.getId()%>')"><%=mis.course.getName()%> / <%=mis.course.getCode()%> </a> (<%=mis.courseUnits.size()%>)</h2>
<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()%> / <%=cu.getCdTurma()%></a></li>
<%
}
%>
</ul>
</div>
 
 
<%
}
%>
 
<%
 
}
%>
<%
if(result3.size()>0)
{
 
%>
 
<div class="panel-body-h1">Relatórios de avaliação ainda não preenchidos
<%
String sep = "";
if(activeDegrees != null)
{
%>
(graus em processo de validação:
<%
for(String activeDegree: activeDegrees)
{
%>
<%=sep + MessageResources.getInstance(request).getMessage("course."+activeDegree)%>
<%
sep = ",";
}
%>
)
<%
}
%>
</div>
 
<%
for(CourseUnitDaoImpl.CourseMissingValidationEvaluation mis:result3)
{
%>
 
<h2><a href="javascript:showOrHide('evaluationFill<%=mis.course.getId()%>')"><%=mis.course.getName()%> / <%=mis.course.getCode()%></a> (<%=mis.courseUnits.size()%>)</h2>
<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()%> / <%=cu.getCdTurma()%></a></li>
<%
}
%>
</ul>
</div>
<%
}
%>
 
<%
 
}
%>
 
</div>
</div>
</div>
<%
}
 
HibernateUtils.getCurrentSession().getTransaction().commit();
}catch(Throwable e)
{
System.out.println(e);
e.printStackTrace();
}
%>
/impl/src/web/user/home/student.jsp
127,7 → 127,7
<ul>
<logic:iterate id="unit" name="units" type="pt.estgp.estgweb.domain.CourseUnit">
<li>
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name} (${unit.courseName} (${unit.courseCode}))</html:link>
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name} (${unit.courseName} (${unit.courseCode}) (${unit.cdTurma})</html:link>
<html:link action="/user/startLoadCourseUnitRootFromHome?courseUnitView.id=${unit.id}"><img border="0" alt="Pastas" src="<%=request.getContextPath()%>/imgs/folder.gif"></html:link>
</li>
</logic:iterate>
/impl/src/web/user/home/teacher.jsp
102,7 → 102,7
<ul>
<logic:iterate id="unit" name="units" type="pt.estgp.estgweb.domain.CourseUnit">
<li>
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name} (${unit.courseName} (${unit.courseCode}))</html:link>
<html:link action="/user/startLoadCourseUnitFromHome?id=${unit.id}">${unit.name} (${unit.courseName} (${unit.courseCode}) (${unit.cdTurma})</html:link>
<html:link action="/user/startLoadCourseUnitRootFromHome?courseUnitView.id=${unit.id}"><img border="0" alt="Pastas" src="<%=request.getContextPath()%>/imgs/folder.gif"></html:link>
</li>
</logic:iterate>
173,7 → 173,7
for(CourseUnit cu: programs)
{
%>
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%>/<%=cu.getCode()%> (<%=cu.getCourseName() + "/" +cu.getCourseCode()%>)</a></li>
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%>/<%=cu.getCode()%> (<%=cu.getCourseName() + "/" +cu.getCourseCode() +"/" + cu.getCdTurma()%>)</a></li>
<%
}
%>
211,7 → 211,7
for(CourseUnit cu: evaluations)
{
%>
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitFromHome.do?id=<%=cu.getId()%>"><%=cu.getName()%>/<%=cu.getCode()%> (<%=cu.getCourseName() + "/" +cu.getCourseCode()%>)</a></li>
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitFromHome.do?id=<%=cu.getId()%>"><%=cu.getName()%>/<%=cu.getCode()%> (<%=cu.getCourseName() + "/" +cu.getCourseCode()+"/" + cu.getCdTurma()%>)</a></li>
<%
}
%>
233,202 → 233,11
}
%>
 
<jsp:include page="courseComission.jsp"/>
 
<%
 
try{
HibernateUtils.getCurrentSession().beginTransaction();
String activeYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear();
List<String> activeDegrees = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveDegrees();
 
List<CourseUnitDaoImpl.CourseMissingValidationProgram> result0 = DaoFactory.getCourseUnitDaoImpl().loadMissingPrograms(UserSession);
List<CourseUnitDaoImpl.CourseMissingValidationProgram> result1 = DaoFactory.getCourseUnitDaoImpl().loadMissingProgramValidate(UserSession);
List<CourseUnitDaoImpl.CourseMissingValidationEvaluation> result2 = DaoFactory.getCourseUnitDaoImpl().loadMissingEvaluationValidate(UserSession);
List<CourseUnitDaoImpl.CourseMissingValidationEvaluation> result3 = DaoFactory.getCourseUnitDaoImpl().loadMissingEvaluation(UserSession);
if(result0.size() > 0 || result1.size() > 0 || result2.size() > 0 || result3.size()>0)
{
%>
<div class="block">
<div class="panel panel-primary">
<div class="panel-heading">Tarefas das Comissões de Curso (<%=activeYear%>)</div>
<div class="panel-body">
<p>Expanda os cursos e clique nas unidades para validar os relatórios de avaliação.</p>
<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="panel-body-h1">Fichas curriculares por validar</div>
<ul>
<%
for(CourseUnitDaoImpl.CourseMissingValidationProgram mis:result1)
{
%>
<li><a href="<%=request.getContextPath()%>/user/startLoadCoursesProgramsFromHome.do?courseId=<%=mis.course.getId()%>#<%=mis.course.getId()%>"><%=mis.course.getName()%> (<%=mis.courseUnits.size()%>)</a></li>
<%
}
%>
</ul>
 
<%
}
%>
 
<%
if(result0.size()>0)
{
%>
 
<div class="panel-body-h1">Fichas curriculares por preencher</div>
<ul>
<%
for(CourseUnitDaoImpl.CourseMissingValidationProgram mis:result0)
{
%>
<li><a href="<%=request.getContextPath()%>/user/startLoadCoursesProgramsFromHome.do?courseId=<%=mis.course.getId()%>#<%=mis.course.getId()%>"><%=mis.course.getName()%> (<%=mis.courseUnits.size()%>)</a></li>
<%
}
%>
</ul>
 
<%
}
%>
 
<%
if(result2.size()>0)
{
 
%>
 
<div class="panel-body-h1">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>
 
<%
for(CourseUnitDaoImpl.CourseMissingValidationEvaluation mis:result2)
{
%>
 
<h2><a href="javascript:showOrHide('evaluationValidate<%=mis.course.getId()%>')"><%=mis.course.getName()%> / <%=mis.course.getCode()%></a> (<%=mis.courseUnits.size()%>)</h2>
<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>
 
 
<%
}
%>
 
<%
 
}
%>
<%
if(result3.size()>0)
{
 
%>
 
<div class="panel-body-h1">Relatórios de avaliação ainda não preenchidos
<%
String sep = "";
if(activeDegrees != null)
{
%>
(graus em processo de validação:
<%
for(String activeDegree: activeDegrees)
{
%>
<%=sep + MessageResources.getInstance(request).getMessage("course."+activeDegree)%>
<%
sep = ",";
}
%>
)
<%
}
%>
</div>
 
<%
for(CourseUnitDaoImpl.CourseMissingValidationEvaluation mis:result3)
{
%>
 
<h2><a href="javascript:showOrHide('evaluationFill<%=mis.course.getId()%>')"><%=mis.course.getName()%> / <%=mis.course.getCode()%></a> (<%=mis.courseUnits.size()%>)</h2>
<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>
</div>
<%
}
 
HibernateUtils.getCurrentSession().getTransaction().commit();
}catch(Throwable e)
{
System.out.println(e);
e.printStackTrace();
}
%>
 
 
 
</td>
</tr>
</tbody>
/impl/src/web/user/home/user.jsp
77,7 → 77,7
</baco:hasRole>
<div class="block">
<div class="panel panel-primary">
<div class="panel-heading">Atalhas</div>
<div class="panel-heading">Atalhos</div>
<div class="panel-body">
<ul>
<li>
130,6 → 130,7
</div>
</div>
</div>
<jsp:include page="courseComission.jsp"/>
</td>
</tbody>
</table>
/impl/src/web/user/serviceZone/topnavCoursePedagogicContents.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/startHome.do", "intranet.separator.home.back");
topNav.addNavPlace(null, "course.pedagogic.contents.admin");
%>
<jsp:include page="/layout/topnav.jsp"/>
Property changes:
Added: svn:executable
+ *
/impl/gen/java/pt/ipportalegre/siges/web/services/GetTurmasAuxResponse.java
New file
0,0 → 1,62
 
package pt.ipportalegre.siges.web.services;
 
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="getTurmasAuxResult" type="{http://www.ipportalegre.pt/siges/web/services}ArrayOfTurma" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"getTurmasAuxResult"
})
@XmlRootElement(name = "getTurmasAuxResponse")
public class GetTurmasAuxResponse {
 
protected ArrayOfTurma getTurmasAuxResult;
 
/**
* Gets the value of the getTurmasAuxResult property.
*
* @return
* possible object is
* {@link ArrayOfTurma }
*
*/
public ArrayOfTurma getGetTurmasAuxResult() {
return getTurmasAuxResult;
}
 
/**
* Sets the value of the getTurmasAuxResult property.
*
* @param value
* allowed object is
* {@link ArrayOfTurma }
*
*/
public void setGetTurmasAuxResult(ArrayOfTurma value) {
this.getTurmasAuxResult = value;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/Disciplina.java
27,6 → 27,7
* &lt;element name="nome" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="nomeCurso" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="grauCurso" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="cdTipoDisciplina" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
45,7 → 46,8
"cdTurma",
"nome",
"nomeCurso",
"grauCurso"
"grauCurso",
"cdTipoDisciplina"
})
public class Disciplina {
 
61,6 → 63,8
protected String nome;
protected String nomeCurso;
protected String grauCurso;
@XmlElement(required = true)
protected BigDecimal cdTipoDisciplina;
 
/**
* Gets the value of the codigo property.
278,4 → 282,28
this.grauCurso = value;
}
 
/**
* Gets the value of the cdTipoDisciplina property.
*
* @return
* possible object is
* {@link BigDecimal }
*
*/
public BigDecimal getCdTipoDisciplina() {
return cdTipoDisciplina;
}
 
/**
* Sets the value of the cdTipoDisciplina property.
*
* @param value
* allowed object is
* {@link BigDecimal }
*
*/
public void setCdTipoDisciplina(BigDecimal value) {
this.cdTipoDisciplina = value;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/SiGesWEBSoap.java
309,4 → 309,97
@WebParam(name = "secret", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
String secret);
 
/**
*
* @param codigoInstituicao
* @param cdDuracao
* @param cdLectivo
* @return
* returns pt.ipportalegre.siges.web.services.ArrayOfTurmaCurso
*/
@WebMethod(action = "http://www.ipportalegre.pt/siges/web/services/loadParesTurmaCurso")
@WebResult(name = "loadParesTurmaCursoResult", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
@RequestWrapper(localName = "loadParesTurmaCurso", targetNamespace = "http://www.ipportalegre.pt/siges/web/services", className = "pt.ipportalegre.siges.web.services.LoadParesTurmaCurso")
@ResponseWrapper(localName = "loadParesTurmaCursoResponse", targetNamespace = "http://www.ipportalegre.pt/siges/web/services", className = "pt.ipportalegre.siges.web.services.LoadParesTurmaCursoResponse")
public ArrayOfTurmaCurso loadParesTurmaCurso(
@WebParam(name = "codigoInstituicao", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
BigDecimal codigoInstituicao,
@WebParam(name = "cdLectivo", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
String cdLectivo,
@WebParam(name = "cdDuracao", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
String cdDuracao);
 
/**
*
* @param codigoDiscip
* @return
* returns pt.ipportalegre.siges.web.services.ArrayOfDisciplina
*/
@WebMethod(action = "http://www.ipportalegre.pt/siges/web/services/getDisciplinasDaInstituicaoSemestreDiscipAux")
@WebResult(name = "getDisciplinasDaInstituicaoSemestreDiscipAuxResult", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
@RequestWrapper(localName = "getDisciplinasDaInstituicaoSemestreDiscipAux", targetNamespace = "http://www.ipportalegre.pt/siges/web/services", className = "pt.ipportalegre.siges.web.services.GetDisciplinasDaInstituicaoSemestreDiscipAux")
@ResponseWrapper(localName = "getDisciplinasDaInstituicaoSemestreDiscipAuxResponse", targetNamespace = "http://www.ipportalegre.pt/siges/web/services", className = "pt.ipportalegre.siges.web.services.GetDisciplinasDaInstituicaoSemestreDiscipAuxResponse")
public ArrayOfDisciplina getDisciplinasDaInstituicaoSemestreDiscipAux(
@WebParam(name = "codigoDiscip", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
String codigoDiscip);
 
/**
*
* @param cdAluno
* @return
* returns pt.ipportalegre.siges.web.services.ArrayOfInscricao
*/
@WebMethod(action = "http://www.ipportalegre.pt/siges/web/services/getInscricoesAux")
@WebResult(name = "getInscricoesAuxResult", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
@RequestWrapper(localName = "getInscricoesAux", targetNamespace = "http://www.ipportalegre.pt/siges/web/services", className = "pt.ipportalegre.siges.web.services.GetInscricoesAux")
@ResponseWrapper(localName = "getInscricoesAuxResponse", targetNamespace = "http://www.ipportalegre.pt/siges/web/services", className = "pt.ipportalegre.siges.web.services.GetInscricoesAuxResponse")
public ArrayOfInscricao getInscricoesAux(
@WebParam(name = "cdAluno", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
String cdAluno);
 
/**
*
* @param cdLectivo
* @param cdDiscip
* @return
* returns pt.ipportalegre.siges.web.services.ArrayOfInscricao
*/
@WebMethod(action = "http://www.ipportalegre.pt/siges/web/services/getInscricoesDisciplinaAux")
@WebResult(name = "getInscricoesDisciplinaAuxResult", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
@RequestWrapper(localName = "getInscricoesDisciplinaAux", targetNamespace = "http://www.ipportalegre.pt/siges/web/services", className = "pt.ipportalegre.siges.web.services.GetInscricoesDisciplinaAux")
@ResponseWrapper(localName = "getInscricoesDisciplinaAuxResponse", targetNamespace = "http://www.ipportalegre.pt/siges/web/services", className = "pt.ipportalegre.siges.web.services.GetInscricoesDisciplinaAuxResponse")
public ArrayOfInscricao getInscricoesDisciplinaAux(
@WebParam(name = "cdDiscip", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
String cdDiscip,
@WebParam(name = "cdLectivo", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
String cdLectivo);
 
/**
*
* @param cdTurma
* @return
* returns pt.ipportalegre.siges.web.services.ArrayOfTurma
*/
@WebMethod(action = "http://www.ipportalegre.pt/siges/web/services/getTurmasAux")
@WebResult(name = "getTurmasAuxResult", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
@RequestWrapper(localName = "getTurmasAux", targetNamespace = "http://www.ipportalegre.pt/siges/web/services", className = "pt.ipportalegre.siges.web.services.GetTurmasAux")
@ResponseWrapper(localName = "getTurmasAuxResponse", targetNamespace = "http://www.ipportalegre.pt/siges/web/services", className = "pt.ipportalegre.siges.web.services.GetTurmasAuxResponse")
public ArrayOfTurma getTurmasAux(
@WebParam(name = "cdTurma", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
String cdTurma);
 
/**
*
* @param cdCurso
* @return
* returns pt.ipportalegre.siges.web.services.ArrayOfTurma
*/
@WebMethod(action = "http://www.ipportalegre.pt/siges/web/services/getTurmasCursoAux")
@WebResult(name = "getTurmasCursoAuxResult", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
@RequestWrapper(localName = "getTurmasCursoAux", targetNamespace = "http://www.ipportalegre.pt/siges/web/services", className = "pt.ipportalegre.siges.web.services.GetTurmasCursoAux")
@ResponseWrapper(localName = "getTurmasCursoAuxResponse", targetNamespace = "http://www.ipportalegre.pt/siges/web/services", className = "pt.ipportalegre.siges.web.services.GetTurmasCursoAuxResponse")
public ArrayOfTurma getTurmasCursoAux(
@WebParam(name = "cdCurso", targetNamespace = "http://www.ipportalegre.pt/siges/web/services")
String cdCurso);
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/ObjectFactory.java
30,35 → 30,35
}
 
/**
* Create an instance of {@link ArrayOfNota }
* Create an instance of {@link GetDisciplinasDaInstituicaoSemestreDiscipAux }
*
*/
public ArrayOfNota createArrayOfNota() {
return new ArrayOfNota();
public GetDisciplinasDaInstituicaoSemestreDiscipAux createGetDisciplinasDaInstituicaoSemestreDiscipAux() {
return new GetDisciplinasDaInstituicaoSemestreDiscipAux();
}
 
/**
* Create an instance of {@link Aluno }
* Create an instance of {@link GetAlunoInscritoResponse }
*
*/
public Aluno createAluno() {
return new Aluno();
public GetAlunoInscritoResponse createGetAlunoInscritoResponse() {
return new GetAlunoInscritoResponse();
}
 
/**
* Create an instance of {@link SendSmsSeparatedWithComma }
* Create an instance of {@link GetCodigosDisciplinasDaInstituicaoResponse }
*
*/
public SendSmsSeparatedWithComma createSendSmsSeparatedWithComma() {
return new SendSmsSeparatedWithComma();
public GetCodigosDisciplinasDaInstituicaoResponse createGetCodigosDisciplinasDaInstituicaoResponse() {
return new GetCodigosDisciplinasDaInstituicaoResponse();
}
 
/**
* Create an instance of {@link Aula }
* Create an instance of {@link GetAulasResponse }
*
*/
public Aula createAula() {
return new Aula();
public GetAulasResponse createGetAulasResponse() {
return new GetAulasResponse();
}
 
/**
70,254 → 70,270
}
 
/**
* Create an instance of {@link GetDocente }
* Create an instance of {@link GetAlunoInscrito }
*
*/
public GetDocente createGetDocente() {
return new GetDocente();
public GetAlunoInscrito createGetAlunoInscrito() {
return new GetAlunoInscrito();
}
 
/**
* Create an instance of {@link AddAlunoLdapResponse }
* Create an instance of {@link Inscricao }
*
*/
public AddAlunoLdapResponse createAddAlunoLdapResponse() {
return new AddAlunoLdapResponse();
public Inscricao createInscricao() {
return new Inscricao();
}
 
/**
* Create an instance of {@link SendSmsSeparatedWithCommaResponse }
* Create an instance of {@link SendSmsSResponse }
*
*/
public SendSmsSeparatedWithCommaResponse createSendSmsSeparatedWithCommaResponse() {
return new SendSmsSeparatedWithCommaResponse();
public SendSmsSResponse createSendSmsSResponse() {
return new SendSmsSResponse();
}
 
/**
* Create an instance of {@link GetCodigosDisciplinasDaInstituicaoSemestre }
* Create an instance of {@link GetTurmasCursoAux }
*
*/
public GetCodigosDisciplinasDaInstituicaoSemestre createGetCodigosDisciplinasDaInstituicaoSemestre() {
return new GetCodigosDisciplinasDaInstituicaoSemestre();
public GetTurmasCursoAux createGetTurmasCursoAux() {
return new GetTurmasCursoAux();
}
 
/**
* Create an instance of {@link Docente }
* Create an instance of {@link GetCodigosAlunosInscritosDaInstituicao }
*
*/
public Docente createDocente() {
return new Docente();
public GetCodigosAlunosInscritosDaInstituicao createGetCodigosAlunosInscritosDaInstituicao() {
return new GetCodigosAlunosInscritosDaInstituicao();
}
 
/**
* Create an instance of {@link GetAulas }
* Create an instance of {@link ArrayOfAula }
*
*/
public GetAulas createGetAulas() {
return new GetAulas();
public ArrayOfAula createArrayOfAula() {
return new ArrayOfAula();
}
 
/**
* Create an instance of {@link SendSms }
* Create an instance of {@link AddAlunoLdap }
*
*/
public SendSms createSendSms() {
return new SendSms();
public AddAlunoLdap createAddAlunoLdap() {
return new AddAlunoLdap();
}
 
/**
* Create an instance of {@link GetCodigosDisciplinasDaInstituicao }
* Create an instance of {@link GetSumarios }
*
*/
public GetCodigosDisciplinasDaInstituicao createGetCodigosDisciplinasDaInstituicao() {
return new GetCodigosDisciplinasDaInstituicao();
public GetSumarios createGetSumarios() {
return new GetSumarios();
}
 
/**
* Create an instance of {@link GetDisciplinasDaInstituicaoSemestre }
* Create an instance of {@link GetInscricoesDisciplinaAuxResponse }
*
*/
public GetDisciplinasDaInstituicaoSemestre createGetDisciplinasDaInstituicaoSemestre() {
return new GetDisciplinasDaInstituicaoSemestre();
public GetInscricoesDisciplinaAuxResponse createGetInscricoesDisciplinaAuxResponse() {
return new GetInscricoesDisciplinaAuxResponse();
}
 
/**
* Create an instance of {@link GetCodigosAlunosInscritosDaInstituicaoResponse }
* Create an instance of {@link ArrayOfAlunoHistorico }
*
*/
public GetCodigosAlunosInscritosDaInstituicaoResponse createGetCodigosAlunosInscritosDaInstituicaoResponse() {
return new GetCodigosAlunosInscritosDaInstituicaoResponse();
public ArrayOfAlunoHistorico createArrayOfAlunoHistorico() {
return new ArrayOfAlunoHistorico();
}
 
/**
* Create an instance of {@link GetAlunoInscrito }
* Create an instance of {@link GetCodigosDocentesInscritosDaInstituicaoResponse }
*
*/
public GetAlunoInscrito createGetAlunoInscrito() {
return new GetAlunoInscrito();
public GetCodigosDocentesInscritosDaInstituicaoResponse createGetCodigosDocentesInscritosDaInstituicaoResponse() {
return new GetCodigosDocentesInscritosDaInstituicaoResponse();
}
 
/**
* Create an instance of {@link ArrayOfAlunoHistorico }
* Create an instance of {@link GetDisciplinasDaInstituicaoSemestreDiscipAuxResponse }
*
*/
public ArrayOfAlunoHistorico createArrayOfAlunoHistorico() {
return new ArrayOfAlunoHistorico();
public GetDisciplinasDaInstituicaoSemestreDiscipAuxResponse createGetDisciplinasDaInstituicaoSemestreDiscipAuxResponse() {
return new GetDisciplinasDaInstituicaoSemestreDiscipAuxResponse();
}
 
/**
* Create an instance of {@link GetDisciplinasDaInstituicaoResponse }
* Create an instance of {@link GetDocente }
*
*/
public GetDisciplinasDaInstituicaoResponse createGetDisciplinasDaInstituicaoResponse() {
return new GetDisciplinasDaInstituicaoResponse();
public GetDocente createGetDocente() {
return new GetDocente();
}
 
/**
* Create an instance of {@link SendSmsSResponse }
* Create an instance of {@link GetTurmasCursoAuxResponse }
*
*/
public SendSmsSResponse createSendSmsSResponse() {
return new SendSmsSResponse();
public GetTurmasCursoAuxResponse createGetTurmasCursoAuxResponse() {
return new GetTurmasCursoAuxResponse();
}
 
/**
* Create an instance of {@link AddAlunoLdap }
* Create an instance of {@link ArrayOfNota }
*
*/
public AddAlunoLdap createAddAlunoLdap() {
return new AddAlunoLdap();
public ArrayOfNota createArrayOfNota() {
return new ArrayOfNota();
}
 
/**
* Create an instance of {@link GetSumarios }
* Create an instance of {@link GetCodigosDisciplinasDaInstituicao }
*
*/
public GetSumarios createGetSumarios() {
return new GetSumarios();
public GetCodigosDisciplinasDaInstituicao createGetCodigosDisciplinasDaInstituicao() {
return new GetCodigosDisciplinasDaInstituicao();
}
 
/**
* Create an instance of {@link GetAulasResponse }
* Create an instance of {@link SendSmsResponse }
*
*/
public GetAulasResponse createGetAulasResponse() {
return new GetAulasResponse();
public SendSmsResponse createSendSmsResponse() {
return new SendSmsResponse();
}
 
/**
* Create an instance of {@link GetCodigosDocentesInscritosDaInstituicaoResponse }
* Create an instance of {@link Disciplina }
*
*/
public GetCodigosDocentesInscritosDaInstituicaoResponse createGetCodigosDocentesInscritosDaInstituicaoResponse() {
return new GetCodigosDocentesInscritosDaInstituicaoResponse();
public Disciplina createDisciplina() {
return new Disciplina();
}
 
/**
* Create an instance of {@link GetCodigosDisciplinasDaInstituicaoResponse }
* Create an instance of {@link LoadParesTurmaCursoResponse }
*
*/
public GetCodigosDisciplinasDaInstituicaoResponse createGetCodigosDisciplinasDaInstituicaoResponse() {
return new GetCodigosDisciplinasDaInstituicaoResponse();
public LoadParesTurmaCursoResponse createLoadParesTurmaCursoResponse() {
return new LoadParesTurmaCursoResponse();
}
 
/**
* Create an instance of {@link GetNotasResponse }
* Create an instance of {@link GetAulas }
*
*/
public GetNotasResponse createGetNotasResponse() {
return new GetNotasResponse();
public GetAulas createGetAulas() {
return new GetAulas();
}
 
/**
* Create an instance of {@link ArrayOfDecimal }
* Create an instance of {@link GetCodigosDisciplinasDaInstituicaoSemestre }
*
*/
public ArrayOfDecimal createArrayOfDecimal() {
return new ArrayOfDecimal();
public GetCodigosDisciplinasDaInstituicaoSemestre createGetCodigosDisciplinasDaInstituicaoSemestre() {
return new GetCodigosDisciplinasDaInstituicaoSemestre();
}
 
/**
* Create an instance of {@link GetAlunoInscritoResponse }
* Create an instance of {@link ArrayOfTurma }
*
*/
public GetAlunoInscritoResponse createGetAlunoInscritoResponse() {
return new GetAlunoInscritoResponse();
public ArrayOfTurma createArrayOfTurma() {
return new ArrayOfTurma();
}
 
/**
* Create an instance of {@link GetCodigosDisciplinasDaInstituicaoSemestreResponse }
* Create an instance of {@link GetInscricoesAuxResponse }
*
*/
public GetCodigosDisciplinasDaInstituicaoSemestreResponse createGetCodigosDisciplinasDaInstituicaoSemestreResponse() {
return new GetCodigosDisciplinasDaInstituicaoSemestreResponse();
public GetInscricoesAuxResponse createGetInscricoesAuxResponse() {
return new GetInscricoesAuxResponse();
}
 
/**
* Create an instance of {@link GetDocenteResponse }
* Create an instance of {@link GetDisciplinasDaInstituicaoResponse }
*
*/
public GetDocenteResponse createGetDocenteResponse() {
return new GetDocenteResponse();
public GetDisciplinasDaInstituicaoResponse createGetDisciplinasDaInstituicaoResponse() {
return new GetDisciplinasDaInstituicaoResponse();
}
 
/**
* Create an instance of {@link GetCodigosAlunosInscritosDaInstituicao }
* Create an instance of {@link GetInscricoesAux }
*
*/
public GetCodigosAlunosInscritosDaInstituicao createGetCodigosAlunosInscritosDaInstituicao() {
return new GetCodigosAlunosInscritosDaInstituicao();
public GetInscricoesAux createGetInscricoesAux() {
return new GetInscricoesAux();
}
 
/**
* Create an instance of {@link SendSmsS }
* Create an instance of {@link GetTurmasAux }
*
*/
public SendSmsS createSendSmsS() {
return new SendSmsS();
public GetTurmasAux createGetTurmasAux() {
return new GetTurmasAux();
}
 
/**
* Create an instance of {@link ArrayOfAula }
* Create an instance of {@link GetDisciplinasDaInstituicaoSemestreResponse }
*
*/
public ArrayOfAula createArrayOfAula() {
return new ArrayOfAula();
public GetDisciplinasDaInstituicaoSemestreResponse createGetDisciplinasDaInstituicaoSemestreResponse() {
return new GetDisciplinasDaInstituicaoSemestreResponse();
}
 
/**
* Create an instance of {@link Disciplina }
* Create an instance of {@link ArrayOfTurmaCurso }
*
*/
public Disciplina createDisciplina() {
return new Disciplina();
public ArrayOfTurmaCurso createArrayOfTurmaCurso() {
return new ArrayOfTurmaCurso();
}
 
/**
* Create an instance of {@link AlunoHistorico }
* Create an instance of {@link GetCodigosDisciplinasDaInstituicaoSemestreResponse }
*
*/
public AlunoHistorico createAlunoHistorico() {
return new AlunoHistorico();
public GetCodigosDisciplinasDaInstituicaoSemestreResponse createGetCodigosDisciplinasDaInstituicaoSemestreResponse() {
return new GetCodigosDisciplinasDaInstituicaoSemestreResponse();
}
 
/**
* Create an instance of {@link Nota }
* Create an instance of {@link Aula }
*
*/
public Nota createNota() {
return new Nota();
public Aula createAula() {
return new Aula();
}
 
/**
* Create an instance of {@link GetDisciplinasDaInstituicaoSemestreResponse }
* Create an instance of {@link Docente }
*
*/
public GetDisciplinasDaInstituicaoSemestreResponse createGetDisciplinasDaInstituicaoSemestreResponse() {
return new GetDisciplinasDaInstituicaoSemestreResponse();
public Docente createDocente() {
return new Docente();
}
 
/**
* Create an instance of {@link SendSmsSeparatedWithCommaResponse }
*
*/
public SendSmsSeparatedWithCommaResponse createSendSmsSeparatedWithCommaResponse() {
return new SendSmsSeparatedWithCommaResponse();
}
 
/**
* Create an instance of {@link ArrayOfDisciplina }
*
*/
public ArrayOfDisciplina createArrayOfDisciplina() {
return new ArrayOfDisciplina();
}
 
/**
* Create an instance of {@link GetDisciplinasDaInstituicao }
*
*/
326,30 → 342,62
}
 
/**
* Create an instance of {@link SendSmsResponse }
* Create an instance of {@link TurmaCurso }
*
*/
public SendSmsResponse createSendSmsResponse() {
return new SendSmsResponse();
public TurmaCurso createTurmaCurso() {
return new TurmaCurso();
}
 
/**
* Create an instance of {@link GetCodigosDocentesInscritosDaInstituicao }
* Create an instance of {@link GetDisciplinasDaInstituicaoSemestre }
*
*/
public GetCodigosDocentesInscritosDaInstituicao createGetCodigosDocentesInscritosDaInstituicao() {
return new GetCodigosDocentesInscritosDaInstituicao();
public GetDisciplinasDaInstituicaoSemestre createGetDisciplinasDaInstituicaoSemestre() {
return new GetDisciplinasDaInstituicaoSemestre();
}
 
/**
* Create an instance of {@link ArrayOfDisciplina }
* Create an instance of {@link GetDocenteResponse }
*
*/
public ArrayOfDisciplina createArrayOfDisciplina() {
return new ArrayOfDisciplina();
public GetDocenteResponse createGetDocenteResponse() {
return new GetDocenteResponse();
}
 
/**
* Create an instance of {@link GetNotasResponse }
*
*/
public GetNotasResponse createGetNotasResponse() {
return new GetNotasResponse();
}
 
/**
* Create an instance of {@link AlunoHistorico }
*
*/
public AlunoHistorico createAlunoHistorico() {
return new AlunoHistorico();
}
 
/**
* Create an instance of {@link ArrayOfInscricao }
*
*/
public ArrayOfInscricao createArrayOfInscricao() {
return new ArrayOfInscricao();
}
 
/**
* Create an instance of {@link Nota }
*
*/
public Nota createNota() {
return new Nota();
}
 
/**
* Create an instance of {@link ArrayOfString }
*
*/
358,6 → 406,22
}
 
/**
* Create an instance of {@link GetCodigosDocentesInscritosDaInstituicao }
*
*/
public GetCodigosDocentesInscritosDaInstituicao createGetCodigosDocentesInscritosDaInstituicao() {
return new GetCodigosDocentesInscritosDaInstituicao();
}
 
/**
* Create an instance of {@link Turma }
*
*/
public Turma createTurma() {
return new Turma();
}
 
/**
* Create an instance of {@link GetSumariosResponse }
*
*/
365,4 → 429,84
return new GetSumariosResponse();
}
 
/**
* Create an instance of {@link LoadParesTurmaCurso }
*
*/
public LoadParesTurmaCurso createLoadParesTurmaCurso() {
return new LoadParesTurmaCurso();
}
 
/**
* Create an instance of {@link Aluno }
*
*/
public Aluno createAluno() {
return new Aluno();
}
 
/**
* Create an instance of {@link GetCodigosAlunosInscritosDaInstituicaoResponse }
*
*/
public GetCodigosAlunosInscritosDaInstituicaoResponse createGetCodigosAlunosInscritosDaInstituicaoResponse() {
return new GetCodigosAlunosInscritosDaInstituicaoResponse();
}
 
/**
* Create an instance of {@link AddAlunoLdapResponse }
*
*/
public AddAlunoLdapResponse createAddAlunoLdapResponse() {
return new AddAlunoLdapResponse();
}
 
/**
* Create an instance of {@link ArrayOfDecimal }
*
*/
public ArrayOfDecimal createArrayOfDecimal() {
return new ArrayOfDecimal();
}
 
/**
* Create an instance of {@link GetTurmasAuxResponse }
*
*/
public GetTurmasAuxResponse createGetTurmasAuxResponse() {
return new GetTurmasAuxResponse();
}
 
/**
* Create an instance of {@link GetInscricoesDisciplinaAux }
*
*/
public GetInscricoesDisciplinaAux createGetInscricoesDisciplinaAux() {
return new GetInscricoesDisciplinaAux();
}
 
/**
* Create an instance of {@link SendSmsS }
*
*/
public SendSmsS createSendSmsS() {
return new SendSmsS();
}
 
/**
* Create an instance of {@link SendSms }
*
*/
public SendSms createSendSms() {
return new SendSms();
}
 
/**
* Create an instance of {@link SendSmsSeparatedWithComma }
*
*/
public SendSmsSeparatedWithComma createSendSmsSeparatedWithComma() {
return new SendSmsSeparatedWithComma();
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/LoadParesTurmaCurso.java
New file
0,0 → 1,119
 
package pt.ipportalegre.siges.web.services;
 
import java.math.BigDecimal;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="codigoInstituicao" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* &lt;element name="cdLectivo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="cdDuracao" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"codigoInstituicao",
"cdLectivo",
"cdDuracao"
})
@XmlRootElement(name = "loadParesTurmaCurso")
public class LoadParesTurmaCurso {
 
@XmlElement(required = true)
protected BigDecimal codigoInstituicao;
protected String cdLectivo;
protected String cdDuracao;
 
/**
* Gets the value of the codigoInstituicao property.
*
* @return
* possible object is
* {@link BigDecimal }
*
*/
public BigDecimal getCodigoInstituicao() {
return codigoInstituicao;
}
 
/**
* Sets the value of the codigoInstituicao property.
*
* @param value
* allowed object is
* {@link BigDecimal }
*
*/
public void setCodigoInstituicao(BigDecimal value) {
this.codigoInstituicao = value;
}
 
/**
* Gets the value of the cdLectivo property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCdLectivo() {
return cdLectivo;
}
 
/**
* Sets the value of the cdLectivo property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCdLectivo(String value) {
this.cdLectivo = value;
}
 
/**
* Gets the value of the cdDuracao property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCdDuracao() {
return cdDuracao;
}
 
/**
* Sets the value of the cdDuracao property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCdDuracao(String value) {
this.cdDuracao = value;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/TurmaCurso.java
New file
0,0 → 1,144
 
package pt.ipportalegre.siges.web.services;
 
import java.math.BigDecimal;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for TurmaCurso complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType name="TurmaCurso">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="cdLectivo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="cdDuracao" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="codigoCurso" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* &lt;element name="cdTurma" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "TurmaCurso", propOrder = {
"cdLectivo",
"cdDuracao",
"codigoCurso",
"cdTurma"
})
public class TurmaCurso {
 
protected String cdLectivo;
protected String cdDuracao;
@XmlElement(required = true)
protected BigDecimal codigoCurso;
protected String cdTurma;
 
/**
* Gets the value of the cdLectivo property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCdLectivo() {
return cdLectivo;
}
 
/**
* Sets the value of the cdLectivo property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCdLectivo(String value) {
this.cdLectivo = value;
}
 
/**
* Gets the value of the cdDuracao property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCdDuracao() {
return cdDuracao;
}
 
/**
* Sets the value of the cdDuracao property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCdDuracao(String value) {
this.cdDuracao = value;
}
 
/**
* Gets the value of the codigoCurso property.
*
* @return
* possible object is
* {@link BigDecimal }
*
*/
public BigDecimal getCodigoCurso() {
return codigoCurso;
}
 
/**
* Sets the value of the codigoCurso property.
*
* @param value
* allowed object is
* {@link BigDecimal }
*
*/
public void setCodigoCurso(BigDecimal value) {
this.codigoCurso = value;
}
 
/**
* Gets the value of the cdTurma property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCdTurma() {
return cdTurma;
}
 
/**
* Sets the value of the cdTurma property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCdTurma(String value) {
this.cdTurma = value;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/Inscricao.java
New file
0,0 → 1,399
 
package pt.ipportalegre.siges.web.services;
 
import java.math.BigDecimal;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for Inscricao complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType name="Inscricao">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="CD_LECTIVO" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="CD_CURSO" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* &lt;element name="CD_ALUNO" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* &lt;element name="CD_DISCIP" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* &lt;element name="CD_DURACAO" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="CD_STATUS" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* &lt;element name="CD_CUR_DIS" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* &lt;element name="CD_TIP_INS" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* &lt;element name="CD_TIPDIS" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* &lt;element name="CD_TIPO_ORIGEM" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="CD_TURMA_T" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="CD_TURMA_P" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="CD_TURMA_L" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Inscricao", propOrder = {
"cdlectivo",
"cdcurso",
"cdaluno",
"cddiscip",
"cdduracao",
"cdstatus",
"cdcurdis",
"cdtipins",
"cdtipdis",
"cdtipoorigem",
"cdturmat",
"cdturmap",
"cdturmal"
})
public class Inscricao {
 
@XmlElement(name = "CD_LECTIVO")
protected String cdlectivo;
@XmlElement(name = "CD_CURSO", required = true)
protected BigDecimal cdcurso;
@XmlElement(name = "CD_ALUNO", required = true)
protected BigDecimal cdaluno;
@XmlElement(name = "CD_DISCIP", required = true)
protected BigDecimal cddiscip;
@XmlElement(name = "CD_DURACAO")
protected String cdduracao;
@XmlElement(name = "CD_STATUS", required = true)
protected BigDecimal cdstatus;
@XmlElement(name = "CD_CUR_DIS", required = true)
protected BigDecimal cdcurdis;
@XmlElement(name = "CD_TIP_INS", required = true)
protected BigDecimal cdtipins;
@XmlElement(name = "CD_TIPDIS", required = true)
protected BigDecimal cdtipdis;
@XmlElement(name = "CD_TIPO_ORIGEM")
protected String cdtipoorigem;
@XmlElement(name = "CD_TURMA_T")
protected String cdturmat;
@XmlElement(name = "CD_TURMA_P")
protected String cdturmap;
@XmlElement(name = "CD_TURMA_L")
protected String cdturmal;
 
/**
* Gets the value of the cdlectivo property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCDLECTIVO() {
return cdlectivo;
}
 
/**
* Sets the value of the cdlectivo property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCDLECTIVO(String value) {
this.cdlectivo = value;
}
 
/**
* Gets the value of the cdcurso property.
*
* @return
* possible object is
* {@link BigDecimal }
*
*/
public BigDecimal getCDCURSO() {
return cdcurso;
}
 
/**
* Sets the value of the cdcurso property.
*
* @param value
* allowed object is
* {@link BigDecimal }
*
*/
public void setCDCURSO(BigDecimal value) {
this.cdcurso = value;
}
 
/**
* Gets the value of the cdaluno property.
*
* @return
* possible object is
* {@link BigDecimal }
*
*/
public BigDecimal getCDALUNO() {
return cdaluno;
}
 
/**
* Sets the value of the cdaluno property.
*
* @param value
* allowed object is
* {@link BigDecimal }
*
*/
public void setCDALUNO(BigDecimal value) {
this.cdaluno = value;
}
 
/**
* Gets the value of the cddiscip property.
*
* @return
* possible object is
* {@link BigDecimal }
*
*/
public BigDecimal getCDDISCIP() {
return cddiscip;
}
 
/**
* Sets the value of the cddiscip property.
*
* @param value
* allowed object is
* {@link BigDecimal }
*
*/
public void setCDDISCIP(BigDecimal value) {
this.cddiscip = value;
}
 
/**
* Gets the value of the cdduracao property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCDDURACAO() {
return cdduracao;
}
 
/**
* Sets the value of the cdduracao property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCDDURACAO(String value) {
this.cdduracao = value;
}
 
/**
* Gets the value of the cdstatus property.
*
* @return
* possible object is
* {@link BigDecimal }
*
*/
public BigDecimal getCDSTATUS() {
return cdstatus;
}
 
/**
* Sets the value of the cdstatus property.
*
* @param value
* allowed object is
* {@link BigDecimal }
*
*/
public void setCDSTATUS(BigDecimal value) {
this.cdstatus = value;
}
 
/**
* Gets the value of the cdcurdis property.
*
* @return
* possible object is
* {@link BigDecimal }
*
*/
public BigDecimal getCDCURDIS() {
return cdcurdis;
}
 
/**
* Sets the value of the cdcurdis property.
*
* @param value
* allowed object is
* {@link BigDecimal }
*
*/
public void setCDCURDIS(BigDecimal value) {
this.cdcurdis = value;
}
 
/**
* Gets the value of the cdtipins property.
*
* @return
* possible object is
* {@link BigDecimal }
*
*/
public BigDecimal getCDTIPINS() {
return cdtipins;
}
 
/**
* Sets the value of the cdtipins property.
*
* @param value
* allowed object is
* {@link BigDecimal }
*
*/
public void setCDTIPINS(BigDecimal value) {
this.cdtipins = value;
}
 
/**
* Gets the value of the cdtipdis property.
*
* @return
* possible object is
* {@link BigDecimal }
*
*/
public BigDecimal getCDTIPDIS() {
return cdtipdis;
}
 
/**
* Sets the value of the cdtipdis property.
*
* @param value
* allowed object is
* {@link BigDecimal }
*
*/
public void setCDTIPDIS(BigDecimal value) {
this.cdtipdis = value;
}
 
/**
* Gets the value of the cdtipoorigem property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCDTIPOORIGEM() {
return cdtipoorigem;
}
 
/**
* Sets the value of the cdtipoorigem property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCDTIPOORIGEM(String value) {
this.cdtipoorigem = value;
}
 
/**
* Gets the value of the cdturmat property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCDTURMAT() {
return cdturmat;
}
 
/**
* Sets the value of the cdturmat property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCDTURMAT(String value) {
this.cdturmat = value;
}
 
/**
* Gets the value of the cdturmap property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCDTURMAP() {
return cdturmap;
}
 
/**
* Sets the value of the cdturmap property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCDTURMAP(String value) {
this.cdturmap = value;
}
 
/**
* Gets the value of the cdturmal property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCDTURMAL() {
return cdturmal;
}
 
/**
* Sets the value of the cdturmal property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCDTURMAL(String value) {
this.cdturmal = value;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/LoadParesTurmaCursoResponse.java
New file
0,0 → 1,62
 
package pt.ipportalegre.siges.web.services;
 
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="loadParesTurmaCursoResult" type="{http://www.ipportalegre.pt/siges/web/services}ArrayOfTurmaCurso" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"loadParesTurmaCursoResult"
})
@XmlRootElement(name = "loadParesTurmaCursoResponse")
public class LoadParesTurmaCursoResponse {
 
protected ArrayOfTurmaCurso loadParesTurmaCursoResult;
 
/**
* Gets the value of the loadParesTurmaCursoResult property.
*
* @return
* possible object is
* {@link ArrayOfTurmaCurso }
*
*/
public ArrayOfTurmaCurso getLoadParesTurmaCursoResult() {
return loadParesTurmaCursoResult;
}
 
/**
* Sets the value of the loadParesTurmaCursoResult property.
*
* @param value
* allowed object is
* {@link ArrayOfTurmaCurso }
*
*/
public void setLoadParesTurmaCursoResult(ArrayOfTurmaCurso value) {
this.loadParesTurmaCursoResult = value;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/GetInscricoesDisciplinaAux.java
New file
0,0 → 1,89
 
package pt.ipportalegre.siges.web.services;
 
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="cdDiscip" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="cdLectivo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"cdDiscip",
"cdLectivo"
})
@XmlRootElement(name = "getInscricoesDisciplinaAux")
public class GetInscricoesDisciplinaAux {
 
protected String cdDiscip;
protected String cdLectivo;
 
/**
* Gets the value of the cdDiscip property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCdDiscip() {
return cdDiscip;
}
 
/**
* Sets the value of the cdDiscip property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCdDiscip(String value) {
this.cdDiscip = value;
}
 
/**
* Gets the value of the cdLectivo property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCdLectivo() {
return cdLectivo;
}
 
/**
* Sets the value of the cdLectivo property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCdLectivo(String value) {
this.cdLectivo = value;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/GetInscricoesAux.java
New file
0,0 → 1,62
 
package pt.ipportalegre.siges.web.services;
 
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="cdAluno" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"cdAluno"
})
@XmlRootElement(name = "getInscricoesAux")
public class GetInscricoesAux {
 
protected String cdAluno;
 
/**
* Gets the value of the cdAluno property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCdAluno() {
return cdAluno;
}
 
/**
* Sets the value of the cdAluno property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCdAluno(String value) {
this.cdAluno = value;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/Turma.java
New file
0,0 → 1,227
 
package pt.ipportalegre.siges.web.services;
 
import java.math.BigDecimal;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for Turma complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType name="Turma">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="codigoTurma" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* &lt;element name="cdLectivo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="codigoCurso" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* &lt;element name="cdDuracao" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="cdTurma" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;element name="cdDisciplina" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* &lt;element name="turmaUnica" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Turma", propOrder = {
"codigoTurma",
"cdLectivo",
"codigoCurso",
"cdDuracao",
"cdTurma",
"cdDisciplina",
"turmaUnica"
})
public class Turma {
 
@XmlElement(required = true)
protected BigDecimal codigoTurma;
protected String cdLectivo;
@XmlElement(required = true)
protected BigDecimal codigoCurso;
protected String cdDuracao;
protected String cdTurma;
@XmlElement(required = true)
protected BigDecimal cdDisciplina;
protected String turmaUnica;
 
/**
* Gets the value of the codigoTurma property.
*
* @return
* possible object is
* {@link BigDecimal }
*
*/
public BigDecimal getCodigoTurma() {
return codigoTurma;
}
 
/**
* Sets the value of the codigoTurma property.
*
* @param value
* allowed object is
* {@link BigDecimal }
*
*/
public void setCodigoTurma(BigDecimal value) {
this.codigoTurma = value;
}
 
/**
* Gets the value of the cdLectivo property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCdLectivo() {
return cdLectivo;
}
 
/**
* Sets the value of the cdLectivo property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCdLectivo(String value) {
this.cdLectivo = value;
}
 
/**
* Gets the value of the codigoCurso property.
*
* @return
* possible object is
* {@link BigDecimal }
*
*/
public BigDecimal getCodigoCurso() {
return codigoCurso;
}
 
/**
* Sets the value of the codigoCurso property.
*
* @param value
* allowed object is
* {@link BigDecimal }
*
*/
public void setCodigoCurso(BigDecimal value) {
this.codigoCurso = value;
}
 
/**
* Gets the value of the cdDuracao property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCdDuracao() {
return cdDuracao;
}
 
/**
* Sets the value of the cdDuracao property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCdDuracao(String value) {
this.cdDuracao = value;
}
 
/**
* Gets the value of the cdTurma property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCdTurma() {
return cdTurma;
}
 
/**
* Sets the value of the cdTurma property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCdTurma(String value) {
this.cdTurma = value;
}
 
/**
* Gets the value of the cdDisciplina property.
*
* @return
* possible object is
* {@link BigDecimal }
*
*/
public BigDecimal getCdDisciplina() {
return cdDisciplina;
}
 
/**
* Sets the value of the cdDisciplina property.
*
* @param value
* allowed object is
* {@link BigDecimal }
*
*/
public void setCdDisciplina(BigDecimal value) {
this.cdDisciplina = value;
}
 
/**
* Gets the value of the turmaUnica property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getTurmaUnica() {
return turmaUnica;
}
 
/**
* Sets the value of the turmaUnica property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setTurmaUnica(String value) {
this.turmaUnica = value;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/GetInscricoesAuxResponse.java
New file
0,0 → 1,62
 
package pt.ipportalegre.siges.web.services;
 
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="getInscricoesAuxResult" type="{http://www.ipportalegre.pt/siges/web/services}ArrayOfInscricao" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"getInscricoesAuxResult"
})
@XmlRootElement(name = "getInscricoesAuxResponse")
public class GetInscricoesAuxResponse {
 
protected ArrayOfInscricao getInscricoesAuxResult;
 
/**
* Gets the value of the getInscricoesAuxResult property.
*
* @return
* possible object is
* {@link ArrayOfInscricao }
*
*/
public ArrayOfInscricao getGetInscricoesAuxResult() {
return getInscricoesAuxResult;
}
 
/**
* Sets the value of the getInscricoesAuxResult property.
*
* @param value
* allowed object is
* {@link ArrayOfInscricao }
*
*/
public void setGetInscricoesAuxResult(ArrayOfInscricao value) {
this.getInscricoesAuxResult = value;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/GetInscricoesDisciplinaAuxResponse.java
New file
0,0 → 1,62
 
package pt.ipportalegre.siges.web.services;
 
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="getInscricoesDisciplinaAuxResult" type="{http://www.ipportalegre.pt/siges/web/services}ArrayOfInscricao" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"getInscricoesDisciplinaAuxResult"
})
@XmlRootElement(name = "getInscricoesDisciplinaAuxResponse")
public class GetInscricoesDisciplinaAuxResponse {
 
protected ArrayOfInscricao getInscricoesDisciplinaAuxResult;
 
/**
* Gets the value of the getInscricoesDisciplinaAuxResult property.
*
* @return
* possible object is
* {@link ArrayOfInscricao }
*
*/
public ArrayOfInscricao getGetInscricoesDisciplinaAuxResult() {
return getInscricoesDisciplinaAuxResult;
}
 
/**
* Sets the value of the getInscricoesDisciplinaAuxResult property.
*
* @param value
* allowed object is
* {@link ArrayOfInscricao }
*
*/
public void setGetInscricoesDisciplinaAuxResult(ArrayOfInscricao value) {
this.getInscricoesDisciplinaAuxResult = value;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/GetDisciplinasDaInstituicaoSemestreDiscipAux.java
New file
0,0 → 1,62
 
package pt.ipportalegre.siges.web.services;
 
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="codigoDiscip" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"codigoDiscip"
})
@XmlRootElement(name = "getDisciplinasDaInstituicaoSemestreDiscipAux")
public class GetDisciplinasDaInstituicaoSemestreDiscipAux {
 
protected String codigoDiscip;
 
/**
* Gets the value of the codigoDiscip property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCodigoDiscip() {
return codigoDiscip;
}
 
/**
* Sets the value of the codigoDiscip property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCodigoDiscip(String value) {
this.codigoDiscip = value;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/GetTurmasCursoAux.java
New file
0,0 → 1,62
 
package pt.ipportalegre.siges.web.services;
 
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="cdCurso" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"cdCurso"
})
@XmlRootElement(name = "getTurmasCursoAux")
public class GetTurmasCursoAux {
 
protected String cdCurso;
 
/**
* Gets the value of the cdCurso property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCdCurso() {
return cdCurso;
}
 
/**
* Sets the value of the cdCurso property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCdCurso(String value) {
this.cdCurso = value;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/GetDisciplinasDaInstituicaoSemestreDiscipAuxResponse.java
New file
0,0 → 1,62
 
package pt.ipportalegre.siges.web.services;
 
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="getDisciplinasDaInstituicaoSemestreDiscipAuxResult" type="{http://www.ipportalegre.pt/siges/web/services}ArrayOfDisciplina" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"getDisciplinasDaInstituicaoSemestreDiscipAuxResult"
})
@XmlRootElement(name = "getDisciplinasDaInstituicaoSemestreDiscipAuxResponse")
public class GetDisciplinasDaInstituicaoSemestreDiscipAuxResponse {
 
protected ArrayOfDisciplina getDisciplinasDaInstituicaoSemestreDiscipAuxResult;
 
/**
* Gets the value of the getDisciplinasDaInstituicaoSemestreDiscipAuxResult property.
*
* @return
* possible object is
* {@link ArrayOfDisciplina }
*
*/
public ArrayOfDisciplina getGetDisciplinasDaInstituicaoSemestreDiscipAuxResult() {
return getDisciplinasDaInstituicaoSemestreDiscipAuxResult;
}
 
/**
* Sets the value of the getDisciplinasDaInstituicaoSemestreDiscipAuxResult property.
*
* @param value
* allowed object is
* {@link ArrayOfDisciplina }
*
*/
public void setGetDisciplinasDaInstituicaoSemestreDiscipAuxResult(ArrayOfDisciplina value) {
this.getDisciplinasDaInstituicaoSemestreDiscipAuxResult = value;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/GetTurmasCursoAuxResponse.java
New file
0,0 → 1,62
 
package pt.ipportalegre.siges.web.services;
 
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="getTurmasCursoAuxResult" type="{http://www.ipportalegre.pt/siges/web/services}ArrayOfTurma" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"getTurmasCursoAuxResult"
})
@XmlRootElement(name = "getTurmasCursoAuxResponse")
public class GetTurmasCursoAuxResponse {
 
protected ArrayOfTurma getTurmasCursoAuxResult;
 
/**
* Gets the value of the getTurmasCursoAuxResult property.
*
* @return
* possible object is
* {@link ArrayOfTurma }
*
*/
public ArrayOfTurma getGetTurmasCursoAuxResult() {
return getTurmasCursoAuxResult;
}
 
/**
* Sets the value of the getTurmasCursoAuxResult property.
*
* @param value
* allowed object is
* {@link ArrayOfTurma }
*
*/
public void setGetTurmasCursoAuxResult(ArrayOfTurma value) {
this.getTurmasCursoAuxResult = value;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/ArrayOfTurmaCurso.java
New file
0,0 → 1,69
 
package pt.ipportalegre.siges.web.services;
 
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for ArrayOfTurmaCurso complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType name="ArrayOfTurmaCurso">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="TurmaCurso" type="{http://www.ipportalegre.pt/siges/web/services}TurmaCurso" maxOccurs="unbounded" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ArrayOfTurmaCurso", propOrder = {
"turmaCurso"
})
public class ArrayOfTurmaCurso {
 
@XmlElement(name = "TurmaCurso", nillable = true)
protected List<TurmaCurso> turmaCurso;
 
/**
* Gets the value of the turmaCurso property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the turmaCurso property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getTurmaCurso().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link TurmaCurso }
*
*
*/
public List<TurmaCurso> getTurmaCurso() {
if (turmaCurso == null) {
turmaCurso = new ArrayList<TurmaCurso>();
}
return this.turmaCurso;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/ArrayOfInscricao.java
New file
0,0 → 1,69
 
package pt.ipportalegre.siges.web.services;
 
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for ArrayOfInscricao complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType name="ArrayOfInscricao">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="Inscricao" type="{http://www.ipportalegre.pt/siges/web/services}Inscricao" maxOccurs="unbounded" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ArrayOfInscricao", propOrder = {
"inscricao"
})
public class ArrayOfInscricao {
 
@XmlElement(name = "Inscricao", nillable = true)
protected List<Inscricao> inscricao;
 
/**
* Gets the value of the inscricao property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the inscricao property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getInscricao().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link Inscricao }
*
*
*/
public List<Inscricao> getInscricao() {
if (inscricao == null) {
inscricao = new ArrayList<Inscricao>();
}
return this.inscricao;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/ArrayOfTurma.java
New file
0,0 → 1,69
 
package pt.ipportalegre.siges.web.services;
 
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for ArrayOfTurma complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType name="ArrayOfTurma">
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="Turma" type="{http://www.ipportalegre.pt/siges/web/services}Turma" maxOccurs="unbounded" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ArrayOfTurma", propOrder = {
"turma"
})
public class ArrayOfTurma {
 
@XmlElement(name = "Turma", nillable = true)
protected List<Turma> turma;
 
/**
* Gets the value of the turma property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the turma property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getTurma().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link Turma }
*
*
*/
public List<Turma> getTurma() {
if (turma == null) {
turma = new ArrayList<Turma>();
}
return this.turma;
}
 
}
/impl/gen/java/pt/ipportalegre/siges/web/services/GetTurmasAux.java
New file
0,0 → 1,62
 
package pt.ipportalegre.siges.web.services;
 
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
 
 
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="cdTurma" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"cdTurma"
})
@XmlRootElement(name = "getTurmasAux")
public class GetTurmasAux {
 
protected String cdTurma;
 
/**
* Gets the value of the cdTurma property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCdTurma() {
return cdTurma;
}
 
/**
* Sets the value of the cdTurma property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCdTurma(String value) {
this.cdTurma = value;
}
 
}