Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1112 → Rev 1236

/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">
/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}
39,7 → 40,7
course.C=Acções de Formação de Curta Duração
course.A=Formações Avançadas
course.O=Outras Formações
course.T=TeSP
course.T=CTeSP
course.D=Diploma de Estudos Superiores Especializados
course.H=Doutoramento
course.Z=Desconhecido
100,3 → 101,11
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
 
course.comissions=Comissões de Curso
 
course.list=Listagem de Cursos
course.course.units=Listagem de Unidades Curriculares
 
/impl/conf/language/MessageResources.properties
521,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
548,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
564,6 → 573,7
job.status.FAILED=Falhado
job.status.UNKNOWN_ERROR=Erro Desconhecido
 
close=Fechar
 
 
 
602,3 → 612,5
 
 
 
 
 
/impl/conf/language/MessageResourcesCourseUnits.properties
11,6 → 11,7
course.nav.without.arrow={0}
courseunit.security.not.implemented=N\u00e3o implementado por raz\u00f5es de seguran\u00e7a
courseunit.removed=Unidade Removida com sucesso
courseunit.cant.be.removed=N\u00e3o pode remover esta unidade
courseunit.menu.unit.old.units=Anos anteriores
courseunit.menu.unit.other.units=Outros Anos
courseunit.menu.unit=Unidade
183,16 → 184,21
courseunit.evaluation.mapa1.desc=Dados relativos ao processo de avalia\u00e7\u00e3o
courseunit.menu.evaluation=Relat\u00f3rio de Avalia\u00e7\u00e3o
courseunit.evaluation.success=Ficha de Avalia\u00e7\u00e3o alterada com sucesso
courseunit.evaluation.tryagain=Ocorreu um problema a gravar o seu relat\u00f3rio. Por favor tente novamente
 
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.
 
courseunit.dossier.tecnico.pedagogico=Dossier T\u00E9cnico Pedag\u00F3gico
 
 
courseunit.delete.administration=Apagar Unidades Curriculares Administra\u00e7\u00e3o
 
courseunit.canDelete.true=Permitido
courseunit.canDelete.false=Não Permitido
/impl/conf/WEB-INF/struts/struts-courses.xml
86,8 → 86,18
 
 
 
<!--
Administração Conselho Pedagógico
 
Atividade de entrada de inqueritos pedagogicos
-->
 
<action path="/user/coursePedagogicContents" forward="page.courses.pedagogic.contents"/>
<action path="/user/courseComissions" forward="page.courses.comissions"/>
<action path="/user/courseCourseUnits" forward="page.courses.courseunits"/>
 
 
 
</action-mappings>
 
</struts-config>
/impl/conf/WEB-INF/struts/struts-courseunits.xml
144,6 → 144,41
<forward name="edit" path="page.edit.courseunit.admin.from.service.zone"/>
</action>
 
 
<action path="/admin/courseUnitsDeleteAdmin" forward="page.courseunit.delete.admin"/>
 
 
<action path="/user/startDeleteCourseUnitAdminFromUnitsDeleteAdministration"
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsAdminController"
name="CourseUnitsForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.courseunit.delete.admin">
<forward name="delete" path="page.courseunit.delete.admin"/>
</action>
 
<action path="/user/startEditCourseUnitAdminFromUnitsDeleteAdministration" forward="/user/courseUnitControllerAdminFromUnitsDeleteAdministration.do?dispatch=edit&amp;from=UnitsDeleteAdministration"/>
<action path="/user/courseUnitControllerAdminFromUnitsDeleteAdministration"
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsAdminController"
name="CourseUnitsForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.courseunit.delete.admin">
<forward name="edit" path="page.edit.courseunit.admin.from.course.unit.delete"/>
</action>
<action path="/user/startEditCourseUnitAdminFromCourseCourseUnits" forward="/user/courseUnitControllerAdminFromCourseCourseUnits.do?dispatch=edit&amp;from=CourseCourseUnits"/>
<action path="/user/courseUnitControllerAdminFromCourseCourseUnits"
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsAdminController"
name="CourseUnitsForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.courses.courseunits">
<forward name="edit" path="page.edit.courseunit.admin.from.course.course.units"/>
</action>
</action-mappings>
 
</struts-config>
/impl/conf/WEB-INF/struts/tiles-courseunits.xml
177,7 → 177,28
<put name="left" value="/user/courseunits/menu.jsp"/>
<put name="body" value="/user/courseunits/dossierTecnicoPedagogico.jsp"/>
</definition>
 
<!--Remocao de unidades curriculares-->
<definition name="page.courseunit.delete.admin" extends="page.separators.home">
<put name="title" value="Apagar Unidades Curriculares Administração"/>
<put name="topnav" value="/admin/courseunits/topnavCourseUnitDeleteAdministration.jsp"/>
<put name="body" value="/admin/courseunits/courseUnitDeleteAdministration.jsp"/>
</definition>
 
<definition name="page.edit.courseunit.admin.from.course.unit.delete" extends="page.separators.home">
<put name="title" value="Unidade Curricular"/>
<put name="topnav" value="/admin/courseunits/topnavEditCourseUnitFromDelete.jsp"/>
<put name="body" value="/admin/courseunits/courseunit.jsp"/>
</definition>
<definition name="page.edit.courseunit.admin.from.course.course.units" extends="page.separators.home">
<put name="title" value="Unidade Curricular"/>
<put name="topnav" value="/admin/courseunits/topnavEditCourseUnitFromCourseCourseUnits.jsp"/>
<put name="body" value="/admin/courseunits/courseunit.jsp"/>
</definition>
 
 
 
</tiles-definitions>
/impl/conf/WEB-INF/struts/tiles-courses.xml
75,18 → 75,37
</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"/>
</definition>
<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>
<definition name="page.courses.comissions" extends="page.separators.home">
<put name="title" value="Comissões de Curso"/>
<put name="topnav" value="/admin/courses/topnavCourseComissions.jsp"/>
<put name="body" value="/admin/courses/courseComissions.jsp"/>
</definition>
 
 
<definition name="page.courses.courseunits" extends="page.separators.home">
<put name="title" value="Listagem de Unidades"/>
<put name="topnav" value="/admin/courses/topnavCourseCourseUnits.jsp"/>
<put name="body" value="/admin/courses/courseCourseUnits.jsp"/>
</definition>
 
 
 
/impl/conf/WEB-INF/struts/tiles-intranet.xml
8,6 → 8,7
<tiles-definitions>
 
<definition name="base.separators" extends="base.definition" path="/layout/layoutintranet.jsp">
<put name="separator" value="1" type="string"/>
<put name="header" value="/layout/headerIntranet.jsp"/>
<put name="navigationTop" value="/layout/topnavempty.jsp"/>
<put name="left" value="/layout/topnavempty.jsp"/>
/impl/conf/WEB-INF/struts/struts-default.xml
27,6 → 27,7
<forward name="error401" path="/error401.do"/>
<forward name="error408" path="/error408.do"/>
<forward name="errorNoCookies" path="page.no.cookies"/>
<forward name="jsonOk" path="page.service.json.ok"/>
 
<!--Announcements-->
 
/impl/conf/WEB-INF/struts/tiles-default.xml
433,4 → 433,11
<put name="body" value="/errors/noCookies.jsp" />
</definition>
 
<definition name="base.empty.json" path="/layout/emptyLayoutJson.jsp">
</definition>
 
<definition name="page.service.json.ok" extends="base.empty.json">
<put name="body" value="/layout/jsonAutoSaveOk.jsp"/>
</definition>
 
</tiles-definitions>
/impl/conf/app.properties
460,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
 
469,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
487,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@
536,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
 
686,8 → 693,8
 
 
#################
# SIGES CODES
#
# SIGES CODES
#################
netpa.tipo.aula.1=Teorica
netpa.tipo.aula.2=Teorico-pratica
netpa.tipo.aula.3=Pratica Laboratorial
696,3 → 703,11
netpa.tipo.aula.6=OT-Orientacao Tutorial
netpa.tipo.aula.7=Ensino Clinico
netpa.tipo.aula.8=Estagio HO
 
 
#################
#ORACLE IPP
#################
oracle.siges.url=@oracle.siges.url@
oracle.siges.username=@oracle.siges.username@
oracle.siges.password=@oracle.siges.password@
/impl/conf/berserk/sd.xml
813,7 → 813,7
</filterChains>
</service>
 
<service>
<!--<service>
<name>DeleteCourseUnit</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.UpdateCourseUnitService</implementationClass>
<description>Update course unit objectives and program file</description>
824,7 → 824,7
<chain name="Session"/>
<chain name="Supers"/>
</filterChains>
</service>
</service>-->
<service>
<name>LoadCourseUnit</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitService</implementationClass>
2225,10 → 2225,52
</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>
 
 
 
<service>
<name>TryDeleteCourseUnitService</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.DeleteCourseUnitService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>tryDelete</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Admins"/>
</filterChains>
</service>
 
<service>
<name>LoadCandidatesDeleteCourseUnitService</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.DeleteCourseUnitService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>loadDeleteCandidates</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Admins"/>
</filterChains>
</service>
 
 
 
 
 
 
 
 
</serviceDefinitions>
/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/DeleteCourseUnitService.java
New file
0,0 → 1,208
package pt.estgp.estgweb.services.courseunits;
 
import jomm.dao.impl.AbstractDao;
import org.apache.log4j.Logger;
import org.hibernate.Query;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
 
/**
* Created by jorgemachado on 15/12/15.
*/
public class DeleteCourseUnitService implements IService
{
 
private static final Logger logger = Logger.getLogger(DeleteCourseUnitService.class);
 
public static class CourseUnitContentsInfo
{
public List<String> warnings = new ArrayList<String>();
public String messageResult = "";
boolean canDelete = false;
public CourseUnitView cuv;
 
public List<String> getWarnings() {
return warnings;
}
 
public String getMessageResult() {
return messageResult;
}
 
public boolean isCanDelete() {
return canDelete;
}
 
public CourseUnitView getCuv() {
return cuv;
}
}
/**
*
* @param courseUnitId
* @return a list of warnings
*
*/
public CourseUnitContentsInfo checkDelete(long courseUnitId,UserSession session)
{
CourseUnitContentsInfo result = new CourseUnitContentsInfo();
result.canDelete = true;
 
CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(courseUnitId);
 
boolean alert = false;
if(cu.getStudents() != null && cu.getStudents().size() > 0)
{
result.warnings.add("ALERT - Tem Alunos (NAO PODE APAGAR, remova os alunos primeiro)");
result.canDelete = false;
}
if(cu.getTeachers() != null && cu.getTeachers().size() > 0)
{
result.warnings.add("ALERT - Tem Professores");
}
if(cu.getAnnouncements() != null && cu.getAnnouncements().size() > 0)
{
result.warnings.add("ALERT - Tem Anuncios");
}
if(cu.getAssignements() != null && cu.getAssignements().size() > 0)
{
result.warnings.add("ALERT - Tem Trabalhos (NAO PODE APAGAR, remova os trabalhos primeiro (tarefa do professor))");
}
if(cu.getBlogs() != null && cu.getBlogs().size() > 0)
{
result.warnings.add("ALERT - Tem BLOGS");
}
if(cu.getCourseUnitEvaluation() != null)
{
result.warnings.add("ALERT - Tem Relatorio de Avaliacao (NAO PODE APAGAR, contacte a equipa de desenvolvimento para encontrar solucao)");
result.canDelete = false;
}
if(cu.getCourseUnitProgram() != null)
{
result.warnings.add("ALERT - Tem ficha curricular, nao vai apagar a ficha fica em backup id ficha: (" + cu.getCourseUnitProgram().getId() + ") pdf: (http://SITE_URL/repositoryStream/" + cu.getProgramStreamId() + "), exporte a ficha para backup");
}
if(cu.getSummaries() != null && cu.getSummaries().size() > 0)
{
result.warnings.add("ALERT - Tem Sumarios, vai apagar os sumarios localmente");
}
if(result.canDelete)
{
result.messageResult ="Pode Apagar";
}
else
{
result.messageResult ="Não é permitido apagar esta unidade";
}
result.cuv = new CourseUnitView(cu,false,false,false,false);
return result;
}
 
/**
*
* @param courseUnitId
* @return a list of warnings
*
*/
public CourseUnitContentsInfo tryDelete(long courseUnitId,UserSession session)
{
CourseUnitContentsInfo result = checkDelete(courseUnitId,session);
 
if(result.canDelete)
{
CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(courseUnitId);
logger.warn("Will Delete courseUnit: " + cu.getImportYear() + ";" + cu.getSemestre() + ";" + cu.getCode() + ";" + cu.getName() + ";" + cu.getCourseCode() + ";" + cu.getCourseName());
 
if(cu.getTeachers() != null && cu.getTeachers().size() > 0)
{
Iterator<TeacherImpl> teachers = cu.getTeachers().iterator();
while(teachers.hasNext())
{
Teacher t = teachers.next();
teachers.remove();
t.getTeachedUnits().remove(cu);
logger.warn("Removing Teacher: " + t.getSigesCode() + " - id:" + t.getId() + " name:" + t.getName());
}
}
if(cu.getAnnouncements() != null && cu.getAnnouncements().size() > 0)
{
Iterator<CourseUnitAnnouncement> annoucements = cu.getAnnouncements().iterator();
while(annoucements.hasNext())
{
CourseUnitAnnouncement a = annoucements.next();
annoucements.remove();
a.setCourseUnit(null);
logger.warn("Removing Annoucement: " + a.getId());
DaoFactory.getAnnouncementDaoImpl().delete(a);
}
}
if(cu.getBlogs() != null && cu.getBlogs().size() > 0)
{
Iterator<CourseUnitBlog> blogs = cu.getBlogs().iterator();
while(blogs.hasNext())
{
CourseUnitBlog a = blogs.next();
blogs.remove();
Set<BlogPost> posts = a.getPosts();
Iterator<BlogPost> postsIter = posts.iterator();
while(postsIter.hasNext())
{
BlogPost bp = postsIter.next();
a.getPosts().remove(bp);
bp.setBlog(null);
DaoFactory.getBlogPostDaoImpl().delete(bp);
}
a.setCourseUnit(null);
logger.warn("Removing Blog: " + a.getId());
DaoFactory.getCourseUnitBlogDaoImpl().delete(a);
}
}
 
if(cu.getCourseUnitProgram() != null)
{
result.warnings.add("ALERT - Tem ficha curricular, nao vai apagar a ficha fica em backup id ficha: (" + cu.getCourseUnitProgram().getId() + ") pdf: (http://SITE_URL/repositoryStream/" + cu.getProgramStreamId() + "), exporte a ficha para backup");
cu.setCourseUnitProgram(null);
}
if(cu.getSummaries() != null && cu.getSummaries().size() > 0)
{
result.warnings.add("ALERT - Tem Sumarios, vai apagar os sumarios localmente");
Iterator<CourseUnitSummary> summaries = cu.getSummaries().iterator();
while(summaries.hasNext())
{
CourseUnitSummary a = summaries.next();
summaries.remove();
a.setCourseUnit(null);
logger.warn("Removing Summary: " + a.getId());
DaoFactory.getCourseUnitSummaryDaoImpl().delete(a);
}
 
}
DaoFactory.getCourseUnitDaoImpl().delete(cu);
result.messageResult = "Unidade Apagada";
}
 
return result;
}
 
public List<CourseUnitContentsInfo> loadDeleteCandidates(String importYear,UserSession session)
{
List<CourseUnitContentsInfo> courseUnitContentsInfos = new ArrayList<CourseUnitContentsInfo>();
Query q = AbstractDao.getCurrentSession().createQuery("select c.id from c in class " + CourseUnit.class.getName() +
" where size(c.students) = 0 and c.importYear = ? order by c.importYear, c.semestre, c.code");
q.setString(0,importYear);
Iterator iter = q.iterate();
while(iter.hasNext())
{
Long id = (Long) iter.next();
CourseUnitContentsInfo cuInfo = checkDelete(id,session);
courseUnitContentsInfos.add(cuInfo);
}
return courseUnitContentsInfos;
}
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/SaveCourseUnitEvaluation.java
61,7 → 61,6
evaluation = new CourseUnitEvaluationImpl();
DaoFactory.getCourseUnitEvaluationDaoImpl().save(evaluation);
c.setCourseUnitEvaluation(evaluation);
cupv.setCourseUnitEvaluation(evaluation);
}
//
 
71,17 → 70,17
(c.getResponsableTeacher()!=null && usession.getUser().getId() == c.getResponsableTeacher().getId())
))
{
//PROF OU RESPONSAVEL
cupv.persistViewInObjectTeacher(evaluation);
cupv.setCourseUnitEvaluation(evaluation);
}
if(usession.getUser() instanceof Teacher
else if(usession.getUser() instanceof Teacher
&& (((usession.getUser())).hasRole(c.getCourse().getValidationRole())
||
((usession.getUser()) == c.getCourse().getCoordinator()))
)
{
//COMISSAO DE CURSO
cupv.persistViewInObjectTeacher(evaluation);
cupv.setCourseUnitEvaluation(evaluation);
}
List<String> errors = new ArrayList<String>();
String estado = "POR ENTREGAR";
96,7 → 95,7
estado = "Entregue à Comissão de Curso pelo docente";
evaluation.setTeacherComplete(true);
}
else
else if(!cupv.isAutosave())
{
estado = "Alterado pelo docente";
evaluation.setClosed(false);
106,14 → 105,20
 
 
 
createPdf(evaluation,c,usession,errors);
if(usession != null && usession.getUser() != null && usession.getUser() instanceof Teacher)
DirectedCoordinatedUnitsService.sendNotificationsCourseUnitEvaluationEditedInterestedPeople(c, estado, usession);
else
if(!cupv.isAutosave())
{
logger.info("Nao vai informar docentes");
createPdf(evaluation,c,usession,errors);
if(usession != null && usession.getUser() != null && usession.getUser() instanceof Teacher)
DirectedCoordinatedUnitsService.sendNotificationsCourseUnitEvaluationEditedInterestedPeople(c, estado, usession);
else
{
logger.info("Nao vai informar docentes");
}
}
//passou para aqui para não afetar a persistencia
//estava em cima no create do new e depois o evaluation interno ficava a nulo
// e no persist ja nao havia nada para persistir
cupv.setCourseUnitEvaluation(evaluation);
return cupv;
}
 
/impl/src/java/pt/estgp/estgweb/services/courseunits/courseunitsummaries.fo.xsl
242,8 → 242,15
 
<fo:table-body>
 
<!--Confirmar isto do cEstado = 1
 
<xsl:for-each select="//summary[./numeroAula != '-1']">
Sumarios T_SUMARIOSAULAS.CD_ESTADO
1 Lançado
2 Faltou
3 Cancelado
4 Pré-lançado
-->
<xsl:for-each select="//summary[./numeroAula != '-1' and ./cEstado = '1']">
<xsl:sort select="dataAula" case-order="lower-first"/>
 
<fo:table-row>
/impl/src/java/pt/estgp/estgweb/services/courseunits/courseunitprogram.fo.xsl
608,7 → 608,7
</fo:block>
</fo:table-cell>
<fo:table-cell background-color="#FFF" color="#000" border-bottom="1px solid gray" padding-right="0.1em" display-align="center">
<fo:block text-align="left" padding="3pt" linefeed-treatment="preserve">
<fo:block text-align="left" padding="3pt" linefeed-treatment="preserve" wrap-option="wrap" white-space-collapse="false" white-space-treatment="preserve">
<xsl:value-of select="$value"/>
</fo:block>
</fo:table-cell>
646,13 → 646,13
<fo:block text-align="left" padding="3pt" linefeed-treatment="preserve" font-weight="bold">
1 - <xsl:value-of select="$field1"/>
</fo:block>
<fo:block text-align="left" padding="3pt" linefeed-treatment="preserve">
<fo:block text-align="left" padding="3pt" linefeed-treatment="preserve" wrap-option="wrap" white-space-collapse="false" white-space-treatment="preserve">
<xsl:value-of select="$value1"/>
</fo:block>
<fo:block text-align="left" padding="3pt" linefeed-treatment="preserve" font-weight="bold">
2 - <xsl:value-of select="$field2"/>
</fo:block>
<fo:block text-align="left" padding="3pt" linefeed-treatment="preserve">
<fo:block text-align="left" padding="3pt" linefeed-treatment="preserve" wrap-option="wrap" white-space-collapse="false" white-space-treatment="preserve">
<xsl:value-of select="$value2"/>
</fo:block>
</fo:table-cell>
/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,23
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());
}
 
 
List<User> usersServicesPrograms = DaoFactory.getUserDaoImpl().loadRoleUsers("servicesPrograms");
 
 
try
{
FileWriter batRunner = new FileWriter(tmpDir + "/create.bat");
134,6 → 148,44
 
batRunner.write("md " + courseNormalizedName + "\\\n");
batRunner.write("md " + relativeDirCourse + "\\\n");
 
/**
* Relatorio de Curso Novo
*/
batRunner.write("md " + relativeDirCourse + "\\" + "Relatorio.Curso" + "\n");
batRunner.write("cd " + relativeDirCourse + "\\\n");
 
 
batRunner.write("cacls " + "Relatorio.Curso" + " /t /e /p \"Domain Users\":n\n");
batRunner.write("cacls " + "Relatorio.Curso" + " /t /e /p \"Authenticated Users\":n\n");
batRunner.write("cacls " + "Relatorio.Curso" + " /t /e /p \"Intranet\":n\n");
batRunner.write("cacls " + "Relatorio.Curso" + " /t /e /p \"Alunos\":n\n");
batRunner.write("cacls " + "Relatorio.Curso" + " /t /e /r \"Domain Users\"\n");
batRunner.write("cacls " + "Relatorio.Curso" + " /t /e /r \"Authenticated Users\"\n");
batRunner.write("cacls " + "Relatorio.Curso" + " /t /e /r \"Intranet\"\n");
batRunner.write("cacls " + "Relatorio.Curso" + " /t /e /r \"Alunos\"\n");
 
batRunner.write("cacls " + "Relatorio.Curso" + " /t /e /g \"" + ConfigProperties.getProperty("ionline.user") + "\":f\n");
 
batRunner.write("cacls " + "Relatorio.Curso" + " /t /e /g \"Docentes\":r\n");
 
 
if(c.getUserGroupStudents() != null)
batRunner.write("cacls " + "Relatorio.Curso" + " /t /e /g \"" + c.getUserGroupStudents() + "\":r\n");
 
if(c.getDirector() != null)
batRunner.write("cacls " + "Relatorio.Curso" + " /t /e /g \"" + c.getDirector().getUsername() + "\":f\n");
 
if(c.getCoordinator() != null)
batRunner.write("cacls " + "Relatorio.Curso" + " /t /e /g \"" + c.getCoordinator().getUsername() + "\":f\n");
 
for(User serviceUser: usersServicesPrograms)
batRunner.write("cacls " + "Relatorio.Curso" + " /t /e /g \"" + serviceUser.getUsername() + "\":f\n");
 
batRunner.write("cd ..\\..\\\n");
/*Fim de Relatorio de Curso*/
 
 
if(s1t)
batRunner.write("md " + relativeDirCourse + "\\" + Globals.INTRANET_SEMESTRE_S1 + "\\\n");
if(s2t)
157,6 → 209,17
// List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadByCourse(c.getId(),importYear);
for(CourseUnit courseUnit: courseUnits)
{
boolean turmasMultiplas = false;
for(CourseUnit cuCompare: courseUnits)
{
if(cuCompare.getId() == courseUnit.getId())
continue;
if(((CourseUnitImpl)cuCompare).equalsIgnoringTurma(courseUnit))
{
turmasMultiplas = true;
break;
}
}
//FileWriter nowWriter;
String semestre;
if(courseUnit.getSemestre().equals("S1"))
203,9 → 266,23
md Unidade\DTP\6.Inquerito.Pedagogico.Unidade.Curricular
md Unidade\DTP\7.Relatorio.Final*/
 
 
 
 
String normalizedName = StringsUtils.normalizeResourceName(courseUnit.getName());
//Em caso de turmas multiplas necessitamos de colocar na path a turma
//todo mudar isto no futuro para meter sempre que houver turma
if(turmasMultiplas && courseUnit.getCdTurma() !=null && courseUnit.getCdTurma().trim().length() > 0)
{
normalizedName = normalizedName + "." + courseUnit.getCdTurma();
batRunner.write("REM Unidade de Turma Multipla " + courseImportYearPath + "/" + semestre + "/" + normalizedName + " \n");
}
 
courseUnit.setNormalizedName(normalizedName);
 
String unitPath = courseImportYearPath + "/" + semestre + "/" + normalizedName;
courseUnit.setNormalizedName(normalizedName);
 
 
courseUnit.setPathIntranet(unitPath.substring(tmpDir.length()));
 
String semestreUnitName = semestre + "\\" + normalizedName + "\\";
237,7 → 314,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
289,7 → 368,7
batRunner.write("cd ..\\\n");
 
}
if(Globals.INTRANET_DTP_CourseDirectorWrite && c.getCoordinator() != null)
if(Globals.INTRANET_DTP_CourseDirectorWrite && c.getDirector() != null)
{
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + c.getDirector().getUsername() + "\":c\n");
batRunner.write("cd " + Globals.INTRANET_DTP + "\n");
297,6 → 376,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/courseunits/courseunitevaluation.fo.xsl
304,20 → 304,20
<fo:table-column/>
<fo:table-body>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="myBorder" display-align="center" padding="3pt"><fo:block font-weight="bold"> Apreciação dos resultados quantitativos obtidos pelos estudantes </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding="3pt"><fo:block > <xsl:value-of select="//qualApreciacaoQuantitivos"/> </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" display-align="center" padding="3pt"><fo:block font-weight="bold"> Apreciação dos resultados quantitativos obtidos pelos estudantes </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding="3pt"><fo:block font-family="monospace" wrap-option="wrap" linefeed-treatment="preserve" white-space-collapse="false" white-space-treatment="preserve"> <xsl:value-of select="//qualApreciacaoQuantitivos"/> </fo:block> </fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="myBorder" display-align="center" padding="3pt"><fo:block font-weight="bold"> Apreciação do funcionamento da UC (Condições de funcionamento da UC; problemas detetados; identificação de práticas pedagógicas de mérito ou deficientes; etc.) </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding="3pt"><fo:block > <xsl:value-of select="//qualApreciacaoUC"/> </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding="3pt"><fo:block font-family="monospace" wrap-option="wrap" linefeed-treatment="preserve" white-space-collapse="false" white-space-treatment="preserve" > <xsl:value-of select="//qualApreciacaoUC"/> </fo:block> </fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="myBorder" display-align="center" padding="3pt"><fo:block font-weight="bold"> Apreciação do cumprimento do programa da UC (Adequação das metodologias de ensino/aprendizagem utilizadas; competências efetivamente adquiridas e cumprimento dos conteúdos planificados) </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding="3pt"><fo:block > <xsl:value-of select="//qualApreciacaoCumprimentoPrograma"/> </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding="3pt"><fo:block font-family="monospace" wrap-option="wrap" linefeed-treatment="preserve" white-space-collapse="false" white-space-treatment="preserve" > <xsl:value-of select="//qualApreciacaoCumprimentoPrograma"/> </fo:block> </fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="myBorder" display-align="center" padding="3pt"><fo:block font-weight="bold"> Conclusões (Pontos fortes e fracos; sugestões de melhoria e respetivo plano de ação para a sua concretização) </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding="3pt"><fo:block > <xsl:value-of select="//qualConclusoes"/> </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding="3pt"><fo:block font-family="monospace" wrap-option="wrap" linefeed-treatment="preserve" white-space-collapse="false" white-space-treatment="preserve"> <xsl:value-of select="//qualConclusoes"/> </fo:block> </fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
/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,13 → 44,22
int studentsNew = 0;
int studentsZeroUnits = 0;
int unitsNotFound = 0;
int unitsNotFoundTurma = 0;
int unitsRemovedToStudents = 0;
int unitsLocalAddedNotRemoved = 0;
int unitsLocallyRemovedNotAdded = 0;
int alunosFound = 0;
int studentsChangeBI = 0;
int unitsAddedToStudents = 0;
int alunosErasmusCadeirasEcontradas = 0;
int turmaMoreThanOneRegularCourse = 0;
 
//Vasco da Gama
//Cadeiras a Vulso
//Erasmus
//disciplinas a vulso ESS
Integer[] cursosFicticios = {19,4,0,22};
 
public ILogMessages run(String year) throws ServiceException
{
 
58,16 → 67,21
studentsNew = 0;
studentsZeroUnits = 0;
unitsNotFound = 0;
unitsNotFoundTurma = 0;
unitsRemovedToStudents = 0;
unitsLocalAddedNotRemoved = 0;
unitsLocallyRemovedNotAdded = 0;
alunosFound = 0;
studentsChangeBI = 0;
unitsAddedToStudents = 0;
alunosErasmusCadeirasEcontradas = 0;
turmaMoreThanOneRegularCourse = 0;
 
String activeImportYear = DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear();
 
String msgS = "STARTING STUDENTS IMPORT SERVICE FOR YEAR: " + year;
 
 
serviceLogInfo(msgS);
logger.info(msgS);
 
82,6 → 96,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 → 164,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,10 → 214,14
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);
serviceLogInfo("#Units not Added because localy removed: " + unitsLocallyRemovedNotAdded);
serviceLogInfo("#ERASMUS Sum Subscriptions Replaced: " + alunosErasmusCadeirasEcontradas);
if(turmaMoreThanOneRegularCourse > 0)
serviceLogInfo("#########!!!!!!!PROBLEMA TURMAS COM MAIS DE UM CURSO: " + turmaMoreThanOneRegularCourse);
 
logger.info("############################");
logger.info("############################");
211,10 → 230,15
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);
logger.info("#Units not Added because localy removed: " + unitsLocallyRemovedNotAdded);
logger.info("#ERASMUS Sum Subscriptions Replaced: " + alunosErasmusCadeirasEcontradas);
if(turmaMoreThanOneRegularCourse > 0)
logger.warn("#########!!!!!!!PROBLEMA TURMAS COM MAIS DE UM CURSO: " + turmaMoreThanOneRegularCourse);
 
if(studentsChangeBI>0)
{
serviceLogInfo("#>>>>>AVISO AVISO<<<<<<<<<: ");
257,8 → 281,116
}
}
 
public BigDecimal getRealCourse(String turma,String year, String semestre, SiGesWEB service, DefaultLogMessages messages)
{
HashMap<String,List<BigDecimal>> pairs = getCourseTurmaPairs(year,semestre,service,messages);
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;
}
}
 
boolean isCursoFicticio(int cursoCode)
{
for(Integer cursoFicticio: cursosFicticios)
{
if(cursoFicticio.intValue() == cursoCode)
{
return true;
}
}
return false;
}
 
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, DefaultLogMessages messages)
{
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)
{
boolean cursoFicticio = isCursoFicticio(turmaCursoPair.getCodigoCurso().intValue());
if(!cursoFicticio)
{
cursos.add(turmaCursoPair.getCodigoCurso());
 
msg = "Adding:" + turmaCursoPair.getCdTurma() + "->" + turmaCursoPair.getCodigoCurso();
logger.info(msg);
serviceLogInfo(msg);
if(cursos.size()>1)
{
turmaMoreThanOneRegularCourse++;
msg = "Warning: turma " + turmaCursoPair.getCdTurma() + " has more than one regular course associated ";
logger.warn(msg);
serviceLogWarn(msg);
messages.addMessage(new DefaultLogMessage("", LogMessageTypeEnum.WARNING,msg));
}
}
else
{
msg = "Not adding:" + turmaCursoPair.getCdTurma() + "->" + turmaCursoPair.getCodigoCurso() + " -> Codigo de Curso Ficticio ->não vai ser considerado";
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;
}
 
 
/**
* Nao esta testado
* jm
266,7 → 398,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)
{
358,32 → 490,73
//4 - Remover da lista do aluno as unidades que não vêm do SIGES e que não foram adicionadas localmente
 
 
//todo mudar isto
//todo mudar nos webservices quando vai buscar o mapa de turmas
final int ERASMUS_CODE = 0;
//FALTA AQUI O VASCO DA GAMA
//FALTA AQUI DISCIPLINAS A VULSO
 
//PASSO 1
Set<CourseUnit> units = new HashSet<CourseUnit>();
Set<CourseUnit> unitsFromSigesPersistentInBaco = new HashSet<CourseUnit>();
ArrayOfDisciplina disciplinas = alunoSiges.getDisciplinasInscrito();
for (Disciplina disciplina : disciplinas.getDisciplina())
{
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(),"" + disciplina.getCodigoCurso(),disciplina.getCdDuracao(),disciplina.getCdLectivo());
boolean cursoFicticio = isCursoFicticio(disciplina.getCodigoCurso().intValue());
BigDecimal codigoDoCurso = disciplina.getCodigoCurso();
if(disciplina.getCdTipoDisciplina() != null
&&
(disciplina.getCdTipoDisciplina().intValue() == ImportCourseService.SIGES_CODIGO_TIPO_DISCIPLINA_EXTRA_CURRICULAR
||
cursoFicticio))
{
if(cursoFicticio)
{
alunosErasmusCadeirasEcontradas++;
String msg = "Disciplina para Aluno " + student.getSigesCode() + " de Curso Ficticio " +disciplina.getCodigoCurso().intValue() + " encontrada vamos trocar para código de curso real";
serviceLogInfo(msg);
logger.info(msg);
}
else
{
String msg = "Disciplina para Aluno " + student.getSigesCode() + " ExtraCurricular " +disciplina.getCodigoCurso().intValue() + " encontrada vamos trocar para código de curso real";
serviceLogInfo(msg);
logger.info(msg);
}
codigoDoCurso = getRealCourse(disciplina.getCdTurma(),year,disciplina.getCdDuracao(),service,logMessages);
String msg = "Codigo de curso (" + disciplina.getCodigoCurso() + ") da disciplina " + disciplina.getCodigo() + " tipo: " + disciplina.getCdTipoDisciplina() + " nome:" + disciplina.getNome() + "turma: " + disciplina.getCdTurma() + " Modificado para o real: " + codigoDoCurso;
serviceLogInfo(msg);
logger.info(msg);
}
 
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(),"" + codigoDoCurso,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()
,"" + codigoDoCurso.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 (student " + student.getSigesCode() + "): semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + codigoDoCurso + " year:" + disciplina.getCdLectivo() + " turma: " + disciplina.getCdTurma();
serviceLogWarn(msg);
logger.warn(msg);
}
else
units.add(courseUnit);
unitsFromSigesPersistentInBaco.add(courseUnit);
}
 
//PASSO 2
Iterator<CourseUnit> iter = units.iterator();
StudentImpl sImpl = (StudentImpl) DaoFactory.getStudentDaoImpl().narrow(student);
//PASSO 2 - Sao retiradas da lista unitsFromSigesPersistentInBaco as que o aluno tem mas que foram removidas localmente
Iterator<CourseUnit> iter = unitsFromSigesPersistentInBaco.iterator();
StudentImpl studentImpl = (StudentImpl) DaoFactory.getStudentDaoImpl().narrow(student);
while (iter.hasNext())
{
CourseUnit courseUnit = iter.next();
//In case of a comming proxy
 
if(sImpl.isLocalRemovedUnit(courseUnit))
if(studentImpl.isLocalRemovedUnit(courseUnit))
{
unitsLocallyRemovedNotAdded++;
String msg = "Removendo unidade: " + ((CourseUnitImpl)courseUnit).getSigesUniqueIdentifiers() + " - do aluno: " + student.getSigesCode() + " - Associacao existe no SIGES mas foi removido LOCALMENTE";
393,10 → 566,10
}
}
 
//PASSO 3
//PASSO 3 - Sao adicionadas ao aluno as unidades que o aluno ainda nao tiver da lista unitsFromSigesPersistentInBaco
if(student.getSubscribedUnits() != null)
{
for(CourseUnit c: units)
for(CourseUnit c: unitsFromSigesPersistentInBaco)
{
boolean isIn = false;
for(CourseUnit tc : student.getSubscribedUnits())
418,7 → 591,7
}
}
else
student.setSubscribedUnits(units);
student.setSubscribedUnits(unitsFromSigesPersistentInBaco);
 
//PASSO 4
//Remover unidades deste ano que nao vem do SIGES e que nao foram adicionadas localmente
436,7 → 609,7
{
 
boolean added = false;
for(CourseUnit c: units)
for(CourseUnit c: unitsFromSigesPersistentInBaco)
{
if(cUNow.equals(c))
{
447,7 → 620,7
if(!added)
{
 
if(!sImpl.isLocalUnit(cUNow))
if(!studentImpl.isLocalUnit(cUNow))
{
String msg = "Removendo unidade: " + ((CourseUnitImpl)cUNow).getSigesUniqueIdentifiers() + " - do aluno: " + student.getSigesCode() + " - Associacao desapareceu do SIGES";
serviceLogInfo(msg);
468,6 → 641,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 → 689,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/oracle/dao/connection/ConnectionManager.java
New file
0,0 → 1,27
package pt.estgp.estgweb.services.sigesimports.oracle.dao.connection;
 
import oracle.jdbc.pool.OracleDataSource;
import pt.estgp.estgweb.utils.ConfigProperties;
 
import java.sql.Connection;
import java.sql.SQLException;
 
/**
* Created by jorgemachado on 07/01/16.
*/
public class ConnectionManager
{
private static Connection connection = null;
 
 
public static Connection openConnection() throws SQLException
{
OracleDataSource ods = new OracleDataSource();
ods.setUser(ConfigProperties.getProperty("oracle.siges.username"));
ods.setPassword(ConfigProperties.getProperty("oracle.siges.password"));
ods.setURL(ConfigProperties.getProperty("oracle.siges.url"));
// Connect to the database
Connection conn = ods.getConnection();
return conn;
}
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/dao/AlunoDao.java
New file
0,0 → 1,170
package pt.estgp.estgweb.services.sigesimports.oracle.dao;
 
import pt.estgp.estgweb.services.sigesimports.oracle.domain.Aluno;
import pt.estgp.estgweb.services.sigesimports.oracle.domain.AlunoHistorico;
import pt.estgp.estgweb.services.sigesimports.oracle.domain.Disciplina;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
 
/**
* Created by jorgemachado on 07/01/16.
*/
public class AlunoDao extends AbstractDao<Aluno> {
private static AlunoDao instance = null;
 
private AlunoDao() {
}
 
public static AlunoDao getInstance() {
if (instance == null)
instance = new AlunoDao();
return instance;
}
 
protected String getTable() {
return "CSE.T_ALUNOS";
}
 
protected String getIdColumn() {
return "CD_ALUNO";
}
 
public Aluno load(ResultSet aReader) throws SQLException {
Aluno a = new Aluno();
a.codigo = getDecimal("CD_ALUNO", aReader);
//a.nome = getString("NM_ALUNO",aReader);
a.nome = getString("NM_COMPLETO", aReader);
 
//d.nomeFuncionario = getString("NM_COMPLETO", aReader); //ok T_INDIVIDUO FALTA VER O "NOME"
//d.nomeFuncionarioInt = getString("NM_FUNC_INT", aReader);
//d.nomeFuncionario = getString("NM_ABREVIADO", aReader); //ok T_INDIVIDUO
//d.nomeAcademico = getString("NM_ACADEMICO", aReader); //ok T_INDIVIDUO
 
//a.sexo = getString("CD_SEXO", aReader);
a.sexo = getString("SEXO", aReader);
 
//a.data_nascimento = getDateTime("DT_NASCIME", aReader);
//a.morada = getString("DS_MORADA", aReader);
//a.codigoPostal = getInteger("CD_POSTAL", aReader);
//a.subCodigoPostal = getInteger("CD_SUBPOS", aReader);
//a.email = getString("DS_EMAIL", aReader);
//a.numeroBi = getString("NR_BI", aReader);
a.telemovel = getString("NR_TELEMOVEL", aReader);
 
 
a.data_nascimento = getDateTime("DT_NASCIMENTO", aReader);
a.morada = getString("DS_MORADA", aReader);
a.codigoPostal = getDecimal("CD_POSTAL", aReader);
a.subCodigoPostal = getDecimal("CD_SUBPOS", aReader);
a.email = getString("EMAIL", aReader);
a.numeroBi = getString("IDENTIFICACAO", aReader);
 
 
//a.usernameNetpa = getString("USERNAME_NETPA", aReader);
a.usernameNetpa = getString("USER_NETPA", aReader); //T_ALUNO
return a;
}
 
/*Valid with diagrams*/
public ArrayList<Integer> loadCodigosAlunos(Integer codigoInstituicao, String ano) throws SQLException {
ArrayList<Integer> codigos = new ArrayList<Integer>();
Connection conn = getCurrentConnection();
PreparedStatement catCMD = conn.prepareStatement("SELECT DISTINCT CSE.T_ALUNOS.CD_ALUNO AS CD_ALUNO FROM CSE.T_ALUNOS INNER JOIN (CSE.T_INSCRI INNER JOIN CSE.T_TBDISCIP ON CSE.T_INSCRI.CD_DISCIP = CSE.T_TBDISCIP.CD_DISCIP) ON CSE.T_ALUNOS.CD_ALUNO = CSE.T_INSCRI.CD_ALUNO WHERE (((CSE.T_TBDISCIP.CD_INSTITUIC)=" + codigoInstituicao + ") AND ((CSE.T_INSCRI.CD_LECTIVO)='" + ano + "') AND ((CSE.T_ALUNOS.CD_SITUA_PAR)=1) AND ((CSE.T_INSCRI.CD_STATUS)<>5))");
ResultSet aReader = catCMD.executeQuery();
while (aReader.next()) {
codigos.add(getDecimal("CD_ALUNO", aReader));
}
//close the reader
aReader.close();
return codigos;
}
 
public Aluno loadInscrito(Integer codigo, Integer codigoInstituicao, String ano) throws SQLException {
 
Connection conn = getCurrentConnection();
PreparedStatement catCMD = conn.prepareStatement("SELECT * FROM " + getTable() + " INNER JOIN SIGES.T_INDIVIDUO on SIGES.T_INDIVIDUO.ID_INDIVIDUO = CSE.T_ALUNOS.ID_INDIVIDUO where CD_SITUA_PAR = 1 AND " + getIdColumn() + "=" + codigo);
ResultSet aReader = catCMD.executeQuery();
if (aReader.next()) {
Aluno a = load(aReader);
a.disciplinasInscrito = (Disciplina[]) loadDiscilpinasInscrito(codigo, codigoInstituicao, ano).toArray();
a.historicos = (AlunoHistorico[]) getHistorico(codigo).toArray();
aReader.close();
return a;
}
aReader.close();
//close the reader
return null;
}
 
/*Mudar a lista para uma lista de Códigos com pelo menos CD_LECTIVO, CD_DISCIP, CD_CURSO, CD_TURMA*/
/*Do lado do Baco as Disciplinas são criadas uma por (CD_LECTIVO, CODIGO, CURSO, SEMESTRE) ficam anexadas todas as turmas encontradas*/
/* O Serviço de Leituras de Sumarios pede apenas os detalhe_aula com codigos de turma igual ao pedido e CD_LECTIVO = actual */
public ArrayList<Disciplina> loadDiscilpinasInscrito(Integer codigo, Integer codigoInstituicao, String ano) throws SQLException {
ArrayList<Disciplina> disciplinas = new ArrayList<Disciplina>();
Connection conn = getCurrentConnection();
PreparedStatement catCMD = conn.prepareStatement("SELECT " +
"CSE.T_INSCRI.CD_TIPDIS AS CD_TIPDIS, " +
"CSE.T_INSCRI.CD_DISCIP AS CD_DISCIP, " +
"CSE.T_INSCRI.CD_DURACAO AS CD_DURACAO, " +
"CSE.T_INSCRI.CD_CURSO AS CD_CURSO, " +
"CSE.T_INSCRI.CD_TURMA_T AS CD_TURMA, " +
"CSE.T_INSCRI.CD_TURMA_P, " +
"CSE.T_INSCRI.CD_TURMA_L, " +
"CSE.T_INSCRI.CD_TURMA_TP " +
"FROM CSE.T_ALUNOS INNER JOIN (CSE.T_INSCRI INNER JOIN CSE.T_TBDISCIP ON CSE.T_INSCRI.CD_DISCIP = CSE.T_TBDISCIP.CD_DISCIP) ON CSE.T_ALUNOS.CD_ALUNO = CSE.T_INSCRI.CD_ALUNO WHERE CSE.T_ALUNOS.CD_ALUNO = " + codigo + " AND (((CSE.T_TBDISCIP.CD_INSTITUIC)=" + codigoInstituicao + ") AND ((CSE.T_INSCRI.CD_LECTIVO)='" + ano + "') AND ((CSE.T_ALUNOS.CD_SITUA_PAR)=1) AND ((CSE.T_INSCRI.CD_STATUS)<>5) AND (CSE.T_INSCRI.CD_TIPDIS = 2 OR CSE.T_INSCRI.CD_TIPDIS = 1 OR CSE.T_INSCRI.CD_TIPDIS = 6))");
//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
 
ResultSet aReader = catCMD.executeQuery();
while (aReader.next()) {
Disciplina d = new Disciplina();
d.codigo = getDecimal("CD_DISCIP", aReader);
d.codigoCurso = getDecimal("CD_CURSO", aReader);
d.codigoInstituicao = codigoInstituicao;
d.cdLectivo = ano;
d.cdTipoDisciplina = getDecimal("CD_TIPDIS", aReader);
d.cdDuracao = getString("CD_DURACAO", aReader);
d.cdTurma = getString("CD_TURMA", aReader);
disciplinas.add(d);
}
//close the reader
aReader.close();
return disciplinas;
}
 
/*Mudar a lista para uma lista de Códigos com pelo menos CD_LECTIVO, CD_DISCIP, CD_CURSO, CD_TURMA*/
/*Do lado do Baco as Disciplinas são criadas uma por (CD_LECTIVO, CODIGO, CURSO, SEMESTRE) ficam anexadas todas as turmas encontradas*/
/* O Serviço de Leituras de Sumarios pede apenas os detalhe_aula com codigos de turma igual ao pedido e CD_LECTIVO = actual */
public ArrayList<AlunoHistorico> getHistorico(Integer codigo) throws SQLException {
ArrayList<AlunoHistorico> historicos = new ArrayList<AlunoHistorico>();
Connection conn = getCurrentConnection();
PreparedStatement catCMD = conn.prepareStatement("SELECT CSE.T_HISTALUN.CD_LECTIVO AS CD_LECTIVO, CSE.T_HISTALUN.CD_CURSO AS CD_CURSO, CSE.T_HISTALUN.DT_MATRIC AS DT_MATRIC, CSE.T_HISTALUN.PROTEGIDO AS PROTEGIDO, CSE.T_HISTALUN.CD_PROPINA AS CD_PROPINA FROM CSE.T_HISTALUN WHERE CSE.T_HISTALUN.CD_ALUNO = " + codigo + "");
 
 
ResultSet aReader = catCMD.executeQuery();
while (aReader.next()) {
AlunoHistorico a = new AlunoHistorico();
a.codigo = codigo;
a.codigoCurso = getDecimal("CD_CURSO", aReader);
a.codigoLectivo = getString("CD_LECTIVO", aReader);
a.dataMatricula = getDateTime("DT_MATRIC", aReader);
a.propinaEmDia = getString("CD_PROPINA", aReader);
a.historicoProtegido = getString("PROTEGIDO", aReader);
historicos.add(a);
}
//close the reader
aReader.close();
return historicos;
}
 
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/dao/LEMBRETES
New file
0,0 → 1,7
NO FINAL PROCURAR POR TODOS OS GET CONNECTION E METER CLOSES
 
meter closes nos PS quando ha closes nos RS
 
TODO ver no Aula Dao o remove trouble chars
 
Sumarios de gestão de projecto
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/dao/AulaDao.java
New file
0,0 → 1,355
package pt.estgp.estgweb.services.sigesimports.oracle.dao;
 
import pt.estgp.estgweb.services.sigesimports.oracle.domain.Aula;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
 
/**
* Created by jorgemachado on 07/01/16.
*/
public class AulaDao extends AbstractDao<Aula>
{
private static AulaDao instance = null;
 
private AulaDao() {
}
 
public static AulaDao getInstance() {
if (instance == null)
instance = new AulaDao();
return instance;
}
 
protected String getTable() {
return "CSE.T_OCUPACOES";
}
 
protected String getIdColumn() {
return null;
}
 
public static String RemoveTroublesomeCharacters(String inString) {
if (inString == null) return null;
 
StringBuilder newString = new StringBuilder();
char ch;
 
for (int i = 0; i < inString.length(); i++) {
 
ch = inString.charAt(i);
// remove any characters outside the valid UTF-8 range as well as all control characters
// except tabs and new lines
if ((ch < 0x00FD && ch > 0x001F) || ch == '\t' || ch == '\n' || ch == '\r')
//if using .NET version prior to 4, use above logic
//if (XmlConvert.IsXmlChar(ch)) //this method is new in .NET 4
{
newString.append(ch);
}
}
return newString.toString();
}
 
/*String RemoveInvalidXmlChars(String text)
{
Regex r = new Regex(@"(?<=\<\w+)[#\{\}\(\)\&](?=\>)|(?<=\</\w+)[#\{\}\(\)\&](?=\>)");
text = r.Replace(text, new MatchEvaluator(deleteMatch));
 
return text;
}
String deleteMatch(Match m) { return ""; }
*/
 
 
protected Aula load(ResultSet aReader) throws SQLException {
Aula a = new Aula();
a.data = getDateTime("DT_OCUPACAO", aReader);
a.numeroOcupacao = getDecimal("NR_OCUPACAO", aReader);
a.tipoOcupacao = getDecimal("CD_TIPO_OCUPACAO", aReader);
a.numeroCelulas = getDecimal("TOTAL_CELULAS", aReader);
a.observacoes = getString("OBSERVACOES", aReader);
a.numeroAula = getDecimal("NR_AULA", aReader);
a.horaInicial = getDecimal("HORA_INICIAL", aReader);
a.horaFinal = getDecimal("HORA_FINAL", aReader);
 
a.descricao = getString("DO_DESCRICAO", aReader);
if (a.descricao != null)
a.descricao = RemoveTroublesomeCharacters(a.descricao);
 
a.codigoSala = getDecimal("DO_CD_SALA", aReader);
a.codigoResponsavel = getDecimal("DO_CD_RESPONSAVEL", aReader);
a.codigoSituacao = getString("DO_CD_SITUACAO", aReader);
a.codigoSumario = getDecimal("DO_CD_SUMARIO", aReader);
 
a.aula_codigoLectivo = getString("DA_CD_LECTIVO", aReader);
a.aula_codigoPeriodo = getString("DA_CD_PERIODO", aReader);
a.aula_codigoDisciplina = getDecimal("DA_CD_DISCIP", aReader);
a.aula_codigoTurma = getString("DA_CD_TURMA", aReader);
a.aula_codigoDocente = getDecimal("DA_CD_DOCENTE", aReader);
a.aula_codigoSalaAula = getDecimal("DA_CD_SALA", aReader);
a.aula_codigoSumario = getDecimal("DA_CD_SUMARIO", aReader);
 
a.sum_HoraInicial = getDecimal("SUM_HORA_INICIAL", aReader);
a.sum_HoraFinal = getDecimal("SUM_HORA_FINAL", aReader);
a.sum_numeroAlunos = getDecimal("SUM_NUMERO_ALUNOS", aReader);
a.sum_numeroAula = getDecimal("SUM_NUMERO_AULA", aReader);
//
a.sum_tipoAula = "" + getDecimal("SUM_CD_TIPO_AULA", aReader);
a.sum_titulo = getString("SUM_TITULO", aReader);
if (a.sum_titulo != null)
a.sum_titulo = RemoveTroublesomeCharacters(a.sum_titulo);
a.sum_descricao = getString("SUM_DESCRICAO", aReader);
if (a.sum_descricao != null)
a.sum_descricao = RemoveTroublesomeCharacters(a.sum_descricao);
a.sum_identificador = getString("SUM_IDENTIFICADOR", aReader);
a.sum_cdEstado = getDecimal("SUM_CD_ESTADO", aReader);
a.sum_numeroPresencas = getDecimal("SUM_NR_PRESENCAS", aReader);
 
return a;
}
 
 
public ArrayList<Aula> loadAulas(Integer codigoInstituicao, String anolectivo, String codigoUnidade, String semestre, String codigoCurso) throws SQLException {
Integer limiteSalaInferior = codigoInstituicao * 1000;
Integer limiteSalaSuperior = (codigoInstituicao + 1) * 1000;
 
ArrayList<Aula> aulas = new ArrayList<Aula>();
Connection conn = getCurrentConnection();
String query;
query = "SELECT "
+ "CSH.T_OCUPACOES.DT_OCUPACAO AS DT_OCUPACAO,"
+ "CSH.T_OCUPACOES.NR_OCUPACAO AS NR_OCUPACAO,"
+ "CSH.T_OCUPACOES.CD_TIPO_OCUPACAO AS CD_TIPO_OCUPACAO,"
+ " CSH.T_OCUPACOES.TOTAL_CELULAS AS TOTAL_CELULAS,"
+ " CSH.T_OCUPACOES.OBSERVACOES AS OBSERVACOES,"
+ " CSH.T_OCUPACOES.NR_AULA AS NR_AULA,"
 
+ " CSH.T_DETALHE_OCUPACAO.DESCRICAO AS DO_DESCRICAO,"
+ " CSH.T_DETALHE_OCUPACAO.CD_SALA AS DO_CD_SALA,"
+ " CSH.T_DETALHE_OCUPACAO.CD_RESPONSAVEL AS DO_CD_RESPONSAVEL,"
+ " CSH.T_DETALHE_OCUPACAO.CD_SITUACAO AS DO_CD_SITUACAO,"
+ " CSH.T_DETALHE_OCUPACAO.CD_SUMARIO AS DO_CD_SUMARIO,"
 
 
+ " CSH.T_DETALHE_AULA.CD_LECTIVO AS DA_CD_LECTIVO ,"
+ " CSH.T_DETALHE_AULA.CD_PERIODO AS DA_CD_PERIODO ,"
+ " CSH.T_DETALHE_AULA.CD_DISCIP AS DA_CD_DISCIP ,"
+ " CSH.T_DETALHE_AULA.CD_TURMA AS DA_CD_TURMA ,"
+ " CSH.T_DETALHE_AULA.CD_DOCENTE AS DA_CD_DOCENTE ,"
+ " CSH.T_DETALHE_AULA.CD_SALA AS DA_CD_SALA ,"
+ " CSH.T_DETALHE_AULA.CD_SUMARIO AS DA_CD_SUMARIO ,"
 
 
+ " CSD.T_SUMARIOS_AULAS.HORA_INICIAL AS SUM_HORA_INICIAL ,"
+ " CSD.T_SUMARIOS_AULAS.HORA_FINAL AS SUM_HORA_FINAL ,"
+ " CSD.T_SUMARIOS_AULAS.NUMERO_ALUNOS AS SUM_NUMERO_ALUNOS ,"
+ " CSD.T_SUMARIOS_AULAS.NUMERO_AULA AS SUM_NUMERO_AULA ,"
+ " CSD.T_SUMARIOS_AULAS.CD_TIPO_AULA AS SUM_CD_TIPO_AULA ,"
+ " CSD.T_SUMARIOS_AULAS.TITULO AS SUM_TITULO ,"
+ " CSD.T_SUMARIOS_AULAS.DESCRICAO AS SUM_DESCRICAO ,"
+ " CSD.T_SUMARIOS_AULAS.IDENTIFICADOR AS SUM_IDENTIFICADOR ,"
+ " CSD.T_SUMARIOS_AULAS.CD_ESTADO AS SUM_CD_ESTADO ,"
+ " CSD.T_SUMARIOS_AULAS.NR_PRESENCAS AS SUM_NR_PRESENCAS,"
+ " CSD.T_SUMARIOS_AULAS.HORA_INICIAL AS HORA_INICIAL,"
+ " CSD.T_SUMARIOS_AULAS.HORA_FINAL AS HORA_FINAL"
 
+ " FROM "
 
+ " ((((CSH.T_OCUPACOES LEFT OUTER JOIN CSH.T_DETALHE_OCUPACAO ON "
 
+ " CSH.T_DETALHE_OCUPACAO.CAMPO_REFERENCIA = CSH.T_OCUPACOES.CAMPO_REFERENCIA"
+ " AND"
+ " CSH.T_DETALHE_OCUPACAO.DT_OCUPACAO = CSH.T_OCUPACOES.DT_OCUPACAO"
+ " AND"
+ " CSH.T_DETALHE_OCUPACAO.NR_OCUPACAO = CSH.T_OCUPACOES.NR_OCUPACAO"
+ " )"
+ " LEFT OUTER JOIN CSH.T_DETALHE_AULA ON"
+ " CSH.T_DETALHE_AULA.CAMPO_REFERENCIA = CSH.T_OCUPACOES.CAMPO_REFERENCIA"
+ " AND"
+ " CSH.T_DETALHE_AULA.DT_OCUPACAO = CSH.T_OCUPACOES.DT_OCUPACAO"
+ " AND"
+ " CSH.T_DETALHE_AULA.NR_OCUPACAO = CSH.T_OCUPACOES.NR_OCUPACAO"
+ " )"
+ " LEFT OUTER JOIN CSD.T_SUMARIOS_AULAS ON"
+ " CSD.T_SUMARIOS_AULAS.CD_SUMARIO = CSH.T_DETALHE_AULA.CD_SUMARIO"
+ " )"
+ " LEFT OUTER JOIN CSE.T_TURMA ON"
+ " CSH.T_DETALHE_AULA.CD_TURMA = CSE.T_TURMA.CD_TURMA"
+ " AND"
+ " CSH.T_DETALHE_AULA.CD_LECTIVO = CSE.T_TURMA.CD_LECTIVO"
+ " AND"
+ " CSH.T_DETALHE_AULA.CD_PERIODO = CSE.T_TURMA.CD_DURACAO"
+ " AND"
+ " CSH.T_DETALHE_AULA.CD_DISCIP = CSE.T_TURMA.CD_DISCIP "
+ " )"
+ " WHERE "
//+ " CD_DOCENTE = 20128 AND CD_LECTIVO = '200708'";
+ " CSH.T_DETALHE_AULA.CD_DISCIP = " + codigoUnidade
+ " AND CSH.T_DETALHE_AULA.CD_LECTIVO = '" + anolectivo + "'"
+ " AND CSH.T_DETALHE_AULA.CD_SALA > " + limiteSalaInferior + " AND CSH.T_DETALHE_AULA.CD_SALA < " + limiteSalaSuperior
+ " AND CSH.T_DETALHE_AULA.CD_PERIODO = '" + semestre + "'"
+ " AND (CSE.T_TURMA.CD_CURSO = '" + codigoCurso + "' OR CSE.T_TURMA.CD_CURSO is NULL)"
+ " order by CSH.T_OCUPACOES.DT_OCUPACAO asc";
 
PreparedStatement catCMD = conn.prepareStatement(query);
ResultSet aReader = catCMD.executeQuery();
while (aReader.next()) {
aulas.add(load(aReader));
}
//close the reader
aReader.close();
catCMD.close();
conn.close();
return aulas;
}
 
 
/**
* @deprecated
* @param aReader
* @return
* @throws SQLException
*/
private Aula loadSum(ResultSet aReader) throws SQLException {
Aula a = new Aula();
//a.data = getDateTime("DT_OCUPACAO", aReader);
//a.numeroOcupacao = getDecimal("NR_OCUPACAO", aReader);
//a.tipoOcupacao = getDecimal("CD_TIPO_OCUPACAO", aReader);
//a.numeroCelulas = getDecimal("TOTAL_CELULAS", aReader);
//a.observacoes = getString("OBSERVACOES", aReader);
//a.numeroAula = getDecimal("NR_AULA", aReader);
 
//a.descricao = getString("DO_DESCRICAO", aReader);
//a.codigoSala = getDecimal("DO_CD_SALA", aReader);
//a.codigoResponsavel = getDecimal("DO_CD_RESPONSAVEL", aReader);
//a.codigoSituacao = getString("DO_CD_SITUACAO", aReader);
//a.codigoSumario = getDecimal("DO_CD_SUMARIO", aReader);
 
a.aula_codigoLectivo = getString("DA_CD_LECTIVO", aReader);
a.aula_codigoPeriodo = getString("DA_CD_PERIODO", aReader);
a.aula_codigoDisciplina = getDecimal("DA_CD_DISCIP", aReader);
a.aula_codigoTurma = getString("DA_CD_TURMA", aReader);
a.aula_codigoDocente = getDecimal("DA_CD_DOCENTE", aReader);
a.aula_codigoSalaAula = getDecimal("DA_CD_SALA", aReader);
a.aula_codigoSumario = getDecimal("DA_CD_SUMARIO", aReader);
 
/*
a.sum_HoraInicial = getDecimal("SUM_HORA_INICIAL", aReader);
a.sum_HoraFinal = getDecimal("SUM_HORA_FINAL", aReader);
a.sum_numeroAlunos = getDecimal("SUM_NUMERO_ALUNOS", aReader);
a.sum_numeroAula = getDecimal("SUM_NUMERO_AULA", aReader);
//
a.sum_tipoAula = "" + getDecimal("SUM_CD_TIPO_AULA", aReader);
a.sum_titulo = getString("SUM_TITULO", aReader);
a.sum_descricao = getString("SUM_DESCRICAO", aReader);
a.sum_identificador = getString("SUM_IDENTIFICADOR", aReader);
a.sum_cdEstado = getDecimal("SUM_CD_ESTADO", aReader);
a.sum_numeroPresencas = getDecimal("SUM_NR_PRESENCAS", aReader);
*/
return a;
}
 
/**
* @deprecated apenas para testes
* @param codigoInstituicao
* @param anolectivo
* @param codigoUnidade
* @param semestre
* @return
* @throws SQLException
*/
private ArrayList<Aula> loadSumarios(Integer codigoInstituicao, String anolectivo, String codigoUnidade, String semestre) throws SQLException {
Integer limiteSalaInferior = codigoInstituicao * 1000;
Integer limiteSalaSuperior = (codigoInstituicao + 1) * 1000;
 
ArrayList<Aula> aulas = new ArrayList<Aula>();
Connection conn = getCurrentConnection();
String query;
query = "SELECT "
/*
+ "CSH.T_OCUPACOES.DT_OCUPACAO AS DT_OCUPACAO,"
+ "CSH.T_OCUPACOES.NR_OCUPACAO AS NR_OCUPACAO,"
+ "CSH.T_OCUPACOES.CD_TIPO_OCUPACAO AS CD_TIPO_OCUPACAO,"
+ " CSH.T_OCUPACOES.TOTAL_CELULAS AS TOTAL_CELULAS,"
+ " CSH.T_OCUPACOES.OBSERVACOES AS OBSERVACOES,"
+ " CSH.T_OCUPACOES.NR_AULA AS NR_AULA,"
 
+ " CSH.T_DETALHE_OCUPACAO.DESCRICAO AS DO_DESCRICAO,"
+ " CSH.T_DETALHE_OCUPACAO.CD_SALA AS DO_CD_SALA,"
+ " CSH.T_DETALHE_OCUPACAO.CD_RESPONSAVEL AS DO_CD_RESPONSAVEL,"
+ " CSH.T_DETALHE_OCUPACAO.CD_SITUACAO AS DO_CD_SITUACAO,"
+ " CSH.T_DETALHE_OCUPACAO.CD_SUMARIO AS DO_CD_SUMARIO,"
 
*/
+ " CSH.T_DETALHE_AULA.CD_LECTIVO AS DA_CD_LECTIVO ,"
+ " CSH.T_DETALHE_AULA.CD_PERIODO AS DA_CD_PERIODO ,"
+ " CSH.T_DETALHE_AULA.CD_DISCIP AS DA_CD_DISCIP ,"
+ " CSH.T_DETALHE_AULA.CD_TURMA AS DA_CD_TURMA ,"
+ " CSH.T_DETALHE_AULA.CD_DOCENTE AS DA_CD_DOCENTE ,"
+ " CSH.T_DETALHE_AULA.CD_SALA AS DA_CD_SALA ,"
+ " CSH.T_DETALHE_AULA.CD_SUMARIO AS DA_CD_SUMARIO " //,"
 
/*
 
+ " CSD.T_SUMARIOS_AULAS.HORA_INICIAL AS SUM_HORA_INICIAL ,"
+ " CSD.T_SUMARIOS_AULAS.HORA_FINAL AS SUM_HORA_FINAL ,"
+ " CSD.T_SUMARIOS_AULAS.NUMERO_ALUNOS AS SUM_NUMERO_ALUNOS ,"
+ " CSD.T_SUMARIOS_AULAS.NUMERO_AULA AS SUM_NUMERO_AULA ,"
+ " CSD.T_SUMARIOS_AULAS.CD_TIPO_AULA AS SUM_CD_TIPO_AULA ,"
+ " CSD.T_SUMARIOS_AULAS.TITULO AS SUM_TITULO ,"
+ " CSD.T_SUMARIOS_AULAS.DESCRICAO AS SUM_DESCRICAO ,"
+ " CSD.T_SUMARIOS_AULAS.IDENTIFICADOR AS SUM_IDENTIFICADOR ,"
+ " CSD.T_SUMARIOS_AULAS.CD_ESTADO AS SUM_CD_ESTADO ,"
+ " CSD.T_SUMARIOS_AULAS.NR_PRESENCAS AS SUM_NR_PRESENCAS"
*/
+ " FROM "
 
/*
*
*/
+ " CSH.T_DETALHE_AULA " //LEFT OUTER JOIN CSH.T_DETALHE_AULA ON"
//+ " CSD.T_SUMARIOS_AULAS.CD_SUMARIO = CSH.T_DETALHE_AULA.CD_SUMARIO "
/**/
 
/**
+ " (((CSH.T_OCUPACOES LEFT OUTER JOIN CSH.T_DETALHE_OCUPACAO ON "
 
+ " CSH.T_DETALHE_OCUPACAO.CAMPO_REFERENCIA = CSH.T_OCUPACOES.CAMPO_REFERENCIA"
+ " AND"
+ " CSH.T_DETALHE_OCUPACAO.DT_OCUPACAO = CSH.T_OCUPACOES.DT_OCUPACAO"
+ " AND"
+ " CSH.T_DETALHE_OCUPACAO.NR_OCUPACAO = CSH.T_OCUPACOES.NR_OCUPACAO"
+ " )"
+ " LEFT OUTER JOIN CSH.T_DETALHE_AULA ON"
+ " CSH.T_DETALHE_AULA.CAMPO_REFERENCIA = CSH.T_OCUPACOES.CAMPO_REFERENCIA"
+ " AND"
+ " CSH.T_DETALHE_AULA.DT_OCUPACAO = CSH.T_OCUPACOES.DT_OCUPACAO"
+ " AND"
+ " CSH.T_DETALHE_AULA.NR_OCUPACAO = CSH.T_OCUPACOES.NR_OCUPACAO"
+ " )"
+ " LEFT OUTER JOIN CSD.T_SUMARIOS_AULAS ON"
+ " CSD.T_SUMARIOS_AULAS.CD_SUMARIO = CSH.T_DETALHE_AULA.CD_SUMARIO"
+ " )"*/
+ " WHERE "
//+ " CD_DOCENTE = 20128 AND CD_LECTIVO = '200708'";
+ " CSH.T_DETALHE_AULA.CD_DISCIP = " + codigoUnidade
+ " AND CSH.T_DETALHE_AULA.CD_LECTIVO = '" + anolectivo + "'";
//+ " AND CSH.T_DETALHE_AULA.CD_SALA > " + limiteSalaInferior + " AND CSH.T_DETALHE_AULA.CD_SALA < " + limiteSalaSuperior
//+ " AND CSH.T_DETALHE_AULA.CD_PERIODO = '" + semestre + "'";
// + " order by CSH.T_OCUPACOES.DT_OCUPACAO asc";
 
PreparedStatement catCMD = conn.prepareStatement(query);
ResultSet aReader = catCMD.executeQuery();
while (aReader.next()) {
aulas.add(loadSum(aReader));
}
 
//close the reader
aReader.close();
return aulas;
}
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/dao/AbstractDao.java
New file
0,0 → 1,104
package pt.estgp.estgweb.services.sigesimports.oracle.dao;
 
import pt.estgp.estgweb.services.sigesimports.oracle.dao.connection.ConnectionManager;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
 
/**
* Created by jorgemachado on 07/01/16.
*/
public abstract class AbstractDao<CLAZZ>
{
 
protected Connection getCurrentConnection() throws SQLException
{
return ConnectionManager.openConnection();
}
 
protected abstract String getTable();
 
protected abstract String getIdColumn();
 
protected abstract CLAZZ load(ResultSet rs) throws SQLException;
 
protected CLAZZ load(Integer codigo) throws SQLException
{
 
Connection conn = getCurrentConnection();
PreparedStatement catCMD = conn.prepareStatement("SELECT * FROM " + getTable() + " where " + getIdColumn() + "=" + codigo);
ResultSet rs = catCMD.executeQuery();
if (rs.next())
{
CLAZZ c = load(rs);
rs.close();
catCMD.close();
return c;
}
rs.close();
catCMD.close();
//close the reader
return null;
}
 
protected ArrayList<CLAZZ> loadAll() throws SQLException {
ArrayList<CLAZZ> l = new ArrayList<CLAZZ>();
Connection conn = getCurrentConnection();
PreparedStatement catCMD = conn.prepareStatement("SELECT * FROM " + getTable() + " where ROWNUM < 10");
ResultSet rs = catCMD.executeQuery();
if (rs.next())
{
CLAZZ c = load(rs);
l.add(c);
}
//close the reader
rs.close();
catCMD.close();
return l;
}
 
protected Integer getDecimal(String column, ResultSet aReader) throws SQLException {
if (aReader.getObject(column)==null)
return -1;
else
return aReader.getInt(column);
}
 
protected String getString(String column,ResultSet aReader) throws SQLException {
if (aReader.getObject(column)==null)
return null;
else
return aReader.getString(column);
}
 
 
/*
public Int32 getInt32(string column, OdbcDataReader aReader)
{
if (aReader.IsDBNull(aReader.GetOrdinal(column)))
return -1;
else
return aReader.GetInt32(aReader.GetOrdinal(column));
}
 
public Int64 getInt64(string column, OdbcDataReader aReader)
{
if (aReader.IsDBNull(aReader.GetOrdinal(column)))
return -1;
else
return aReader.GetInt64(aReader.GetOrdinal(column));
}
*/
 
protected Date getDateTime(String column, ResultSet aReader) throws SQLException {
if (aReader.getObject(column)==null)
return new Date(0);
else
return new Date(aReader.getTimestamp(column).getTime());
}
 
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/OracleConnectionTest.java
New file
0,0 → 1,39
package pt.estgp.estgweb.services.sigesimports.oracle;
 
import oracle.jdbc.pool.OracleDataSource;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
 
/**
* Created by jorgemachado on 07/01/16.
*/
public class OracleConnectionTest
{
public static void main(String[] args) throws SQLException
{
OracleDataSource ods = new OracleDataSource();
ods.setUser("estgac");
ods.setPassword("estgac11");
ods.setURL("jdbc:oracle:thin:@localhost:1521:SIGES11");
 
// Connect to the database
Connection conn = ods.getConnection();
 
 
System.out.println();
 
// Prepare a statement to cleanup the employees table
PreparedStatement ps = conn.prepareStatement("SELECT DISTINCT CSE.T_TBDISCIP.CD_DISCIP AS CD_DISCIP, CSE.T_TBDISCIP.DS_DISCIP AS DS_DISCIP, CSE.T_TBDISCIP.CD_INSTITUIC AS CD_INSTITUIC, CSE.T_INSCRI.CD_CURSO AS CD_CURSO, CSE.T_CURSOS.NM_CURSO AS NM_CURSO, CSE.T_CURSOS.CD_GRAU1 AS CD_GRAU1 FROM CSE.T_INSCRI INNER JOIN CSE.T_TBDISCIP ON CSE.T_INSCRI.CD_DISCIP=CSE.T_TBDISCIP.CD_DISCIP INNER JOIN CSE.T_CURSOS ON CSE.T_CURSOS.CD_CURSO = CSE.T_INSCRI.CD_CURSO WHERE (((CSE.T_TBDISCIP.CD_INSTITUIC)=1) AND ((CSE.T_INSCRI.CD_LECTIVO)='201516')) AND (CSE.T_INSCRI.CD_TIPDIS = 1)");
ResultSet rs = ps.executeQuery();
while(rs.next())
{
System.out.println(rs.getString("CD_DISCIP") + ";" + rs.getString("DS_DISCIP"));
}
rs.close();
ps.close();
conn.close();
}
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/domain/Disciplina.java
New file
0,0 → 1,31
package pt.estgp.estgweb.services.sigesimports.oracle.domain;
 
/**
* Created by jorgemachado on 07/01/16.
*/
public class Disciplina
{
 
 
public Integer codigo;
public String cdLectivo;
public Integer codigoCurso;
public String cdDuracao;
public Integer codigoInstituicao;
public String cdTurma;
 
 
public String nome;
public String nomeCurso;
public String grauCurso;
//Tipo 1 ou 6 no caso de ser 6 ignorar o codigo do curso e olhar para a Turma
//Da turma tirar o código do curso
//No caso de haver mais que um curso nos pares Curso Turma reportar Inconsistencia e avisar administradores
//Mas isto tudo do lado do Baco
public Integer cdTipoDisciplina;
 
public Disciplina()
{
 
}
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/domain/AlunoHistorico.java
New file
0,0 → 1,20
package pt.estgp.estgweb.services.sigesimports.oracle.domain;
 
import java.util.Date;
 
/**
* Created by jorgemachado on 07/01/16.
*/
public class AlunoHistorico
{
public Integer codigo;
public String codigoLectivo;
public Integer codigoCurso;
public Date dataMatricula;
public String historicoProtegido;
public String propinaEmDia;
 
public AlunoHistorico()
{
}
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/domain/Aula.java
New file
0,0 → 1,183
package pt.estgp.estgweb.services.sigesimports.oracle.domain;
 
import java.util.Date;
 
/**
* Created by jorgemachado on 07/01/16.
*/
public class Aula {
 
public Date data;
public Integer numeroOcupacao;
public Integer tipoOcupacao;
public Integer duracao;
public Integer numeroCelulas;
public String observacoes;
public Integer numeroAula;
public Integer horaInicial;
public Integer horaFinal;
 
//novo
public String codigoCurso;
 
//DETALHE OCUPACAO
public String descricao;
public Integer codigoSala;
public Integer codigoResponsavel;
public String codigoSituacao;
public Integer codigoSumario;
 
//Aula
public String aula_codigoLectivo;
public Integer aula_codigoDisciplina;
public String aula_codigoPeriodo;
public String aula_codigoTurma;
public Integer aula_codigoDocente;
public Integer aula_codigoSumario;
public Integer aula_codigoSalaAula;
 
//Sumario
public Integer sum_HoraInicial;
public Integer sum_HoraFinal;
public Integer sum_numeroAlunos;
public Integer sum_numeroAula;
public String sum_tipoAula;
public String sum_titulo;
public String sum_descricao;
public String sum_identificador;
public Integer sum_cdEstado;
public Integer sum_numeroPresencas;
 
public Aula()
{
 
}
 
public Date getData() {
return data;
}
 
public Integer getNumeroOcupacao() {
return numeroOcupacao;
}
 
public Integer getTipoOcupacao() {
return tipoOcupacao;
}
 
public Integer getDuracao() {
return duracao;
}
 
public Integer getNumeroCelulas() {
return numeroCelulas;
}
 
public String getObservacoes() {
return observacoes;
}
 
public Integer getNumeroAula() {
return numeroAula;
}
 
public Integer getHoraInicial() {
return horaInicial;
}
 
public Integer getHoraFinal() {
return horaFinal;
}
 
public String getCodigoCurso() {
return codigoCurso;
}
 
public String getDescricao() {
return descricao;
}
 
public Integer getCodigoSala() {
return codigoSala;
}
 
public Integer getCodigoResponsavel() {
return codigoResponsavel;
}
 
public String getCodigoSituacao() {
return codigoSituacao;
}
 
public Integer getCodigoSumario() {
return codigoSumario;
}
 
public String getAula_codigoLectivo() {
return aula_codigoLectivo;
}
 
public Integer getAula_codigoDisciplina() {
return aula_codigoDisciplina;
}
 
public String getAula_codigoPeriodo() {
return aula_codigoPeriodo;
}
 
public String getAula_codigoTurma() {
return aula_codigoTurma;
}
 
public Integer getAula_codigoDocente() {
return aula_codigoDocente;
}
 
public Integer getAula_codigoSumario() {
return aula_codigoSumario;
}
 
public Integer getAula_codigoSalaAula() {
return aula_codigoSalaAula;
}
 
public Integer getSum_HoraInicial() {
return sum_HoraInicial;
}
 
public Integer getSum_HoraFinal() {
return sum_HoraFinal;
}
 
public Integer getSum_numeroAlunos() {
return sum_numeroAlunos;
}
 
public Integer getSum_numeroAula() {
return sum_numeroAula;
}
 
public String getSum_tipoAula() {
return sum_tipoAula;
}
 
public String getSum_titulo() {
return sum_titulo;
}
 
public String getSum_descricao() {
return sum_descricao;
}
 
public String getSum_identificador() {
return sum_identificador;
}
 
public Integer getSum_cdEstado() {
return sum_cdEstado;
}
 
public Integer getSum_numeroPresencas() {
return sum_numeroPresencas;
}
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/domain/Aluno.java
New file
0,0 → 1,30
package pt.estgp.estgweb.services.sigesimports.oracle.domain;
 
import java.util.Date;
 
/**
* Created by jorgemachado on 07/01/16.
*/
public class Aluno
{
public Integer codigo;
public String nome;
public String telemovel;
public String sexo;
public Date data_nascimento;
public String morada;
public Integer codigoPostal;
public Integer subCodigoPostal;
public String email;
public String numeroBi;
public String usernameNetpa;
public Disciplina[] disciplinasInscrito;
public AlunoHistorico[] historicos;
 
public Aluno()
{
//
// TODO: Add constructor logic here
//
}
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportTeachersService.java
46,6 → 46,8
int teachersNew = 0;
int teachersZeroUnits = 0;
int unitsNotFound = 0;
int unitsNotFoundCourseNotFound = 0;
int unitsFoundForCourseNotFound = 0;
int unitsAddedToTeachers = 0;
int unitsRemovedToTeachers = 0;
int unitsLocalAddedNotRemoved = 0;
61,6 → 63,8
teachersNew = 0;
teachersZeroUnits = 0;
unitsNotFound = 0;
unitsNotFoundCourseNotFound = 0;
unitsFoundForCourseNotFound = 0;
unitsAddedToTeachers = 0;
unitsRemovedToTeachers = 0;
unitsLocalAddedNotRemoved = 0;
121,7 → 125,7
t = DomainObjectFactory.createTeacherImpl();
DaoFactory.getTeacherDaoImpl().save(t);
newUser = true;
teachersNew++;
//teachersNew++;
}
else
{
134,7 → 138,7
serviceLogInfo(msgS);
try
{
persist(d, t, newUser,year);
persist(d, t, newUser,year,logMessages);
}
catch (Exception e)
{
187,6 → 191,7
serviceLogInfo("#Teachers New: " + teachersNew);
serviceLogInfo("#Teachers Zero Units: " + teachersZeroUnits);
serviceLogInfo("#Units not found: " + unitsNotFound);
serviceLogInfo("#Units with NULL COURSE : " + unitsNotFoundCourseNotFound);
serviceLogInfo("#Units removed to Teachers: " + unitsRemovedToTeachers);
serviceLogInfo("#Units added to Teachers: " + unitsAddedToTeachers);
serviceLogInfo("#Units not Removed because localy added: " + unitsLocalAddedNotRemoved);
198,6 → 203,7
logger.info("#Teachers New: " + teachersNew);
logger.info("#Teachers Zero Units: " + teachersZeroUnits);
logger.info("#Units not found: " + unitsNotFound);
logger.info("#Units with NULL COURSE : " + unitsNotFoundCourseNotFound);
logger.info("#Units removed to Teachers: " + unitsRemovedToTeachers);
logger.info("#Units added to Teachers: " + unitsAddedToTeachers);
logger.info("#Units not Removed because localy added: " + unitsLocalAddedNotRemoved);
324,11 → 330,14
* @param teacher teacher
* @throws Exception .
*/
private void persist(Docente teacherSiges, Teacher teacher, boolean newUser, String year) throws Exception
private void persist(Docente teacherSiges, Teacher teacher, boolean newUser, String year,DefaultLogMessages logmessages) throws Exception
{
String msgS;
 
 
if(teacherSiges.getCodigoFuncionario().longValue()==20115)
System.out.println("Sergio");
if(teacherSiges.getCodigoFuncionario().longValue()==20219)
System.out.println("Eliseu");
try
{
 
448,16 → 457,74
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());
List<CourseUnit> loadedunits = new ArrayList<CourseUnit>();
if(disciplina.getCodigoCurso().intValue() < 0)
{
//TODO -- CASO ESPECIAL TEM DE SER TRATADO DE FORMA ESPECIAL
//TODO -- ISTO VAI OBRIGAR A FAZER O MESMO PROCESSO N VEZES MUDAMOS PARA UMA LISTA DE LOADEDUNITS
//TODO -- TEMOS MESMO DE IR BUSCAR AS CADEIRAS AO MAPA DAS TURMAS PRIMEIRO, O MAPA DEVOLVE O CURSO REAL DA TURMA??? PODE SER QUE NAO
//TODO -- >>>>>NO CASO DA IMPORTACAO DE ESTUDANTES JA GARANTIMOS QUE A TROCA DE CURSO E FEITA PARA O CORRECTO<<<<<<<
//TODO -- OU SEJA SE OPTASSEMOS POR IR BUSCAR O CURSO REAL AO MAPA: 1) Caso seja apenas 1 para essa turma é esse o curso real,
//TODO -- mas nesse caso também existe apenas uma cadeira com essa Turma que é nesse curso
//TODO -- que é precisamente a cadeira com o curso real, será? pode haver uma cadeira noutro curso nessa turma se o mapa der um curso real unico? Nao.
//TODO -- O WEB SERVICE DEVOLVE TODAS AS COMBINACOES POSSIVEIS ASSUMIDAS DE INSCRICOES NORMAIS COM CD_TIPDISC = 1 ou 2
//TODO -- Caso 2) Caso haja duas metemos o docente em todas as cadeiras possiveis (CASO ESCPECIAL), ou as guardamos no mapa de cursos reais,
//TODO -- ou então vamos à base de dados buscar todas as possiveis e metemos o docente em todas.
//TODO -- PORTANTO AS CADEIRAS QUE TEMOS NA NOSSA BD JA SAO APENAS AS VALIDAS GARANTIDAS NA IMPORTACAO DE ESTUDANTES
//TODO -- NAO HA CURSO VINDO DO WEB-SERVICE METEMOS O DOCENTE COM TODAS AS POSSIVEIS CONSIDERANDO A TURMA
//TODO -- FORMA DE ENCONTRAR A TURMA DEPOIS, TEM DE MUDAR PORQUE VAI MUDAR DE TABELA
 
if (courseUnit == null)
//TODO -- Isto vai passar a vir com Tipologias. Muda alguma coisa? A mesma cadeira vem duas vezes, mas o procedimento tem de ser o mesmo para as duas vezes
//TODO -- que ela é devolvida, caso já exista nao se faz nada, pode-se meter na lista à mesma, fica lá duas vezes, sera?
 
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUniqueAllCourses("" + disciplina.getCodigo(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo(), disciplina.getCdTurma());
if(courseUnits!=null)
loadedunits = courseUnits;
 
if(loadedunits.size() > 0)
{
msgS = "Unit No Course -> course = " + disciplina.getCodigoCurso().intValue() + " semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " year:" + disciplina.getCdLectivo()
+ " will load of all possible courses:{ ";
for(CourseUnit cc : courseUnits)
{
msgS+= cc.getCourseCode() + ",";
}
msgS+=" } all added to teacher: " + teacher.getSigesCode();
logmessages.addMessage(new DefaultLogMessage("import.teachers", LogMessageTypeEnum.WARNING,msgS ));
unitsFoundForCourseNotFound++;
}
}
else{
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(), "" + disciplina.getCodigoCurso(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo(),disciplina.getCdTurma());
if(courseUnit != null)
loadedunits.add(courseUnit);
 
}
 
//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 (loadedunits.size() == 0)
{
msgS = "Unit not found: semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + disciplina.getCodigoCurso() + " year:" + disciplina.getCdLectivo();
unitsNotFound++;
if(disciplina.getCodigoCurso()==null || disciplina.getCodigoCurso().intValue() < 0)
{
unitsNotFoundCourseNotFound++;
msgS += "... unit with No Course Found in SIGES";
logmessages.addMessage(new DefaultLogMessage("import.teachers", LogMessageTypeEnum.WARNING,msgS ));
}
else
{
msgS += "... probably unit with zero students not imported in CoursesImport";
}
logger.warn(msgS);
serviceLogWarn(msgS);
 
}
else
units.add(courseUnit);
units.addAll(loadedunits);
}
//PASSO 2
Iterator<CourseUnit> iter = units.iterator();
491,7 → 558,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++;
535,10 → 602,12
 
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);
113,9 → 112,11
// DaoFactory.getCourseDaoImpl().save(c);
}
c.setName(d.getNomeCurso());
if(d.getGrauCurso() == null || d.getGrauCurso().trim().length() == 0)
d.setGrauCurso("unknown");
String grauBaco = ConfigProperties.getProperty("siges.degree."+d.getGrauCurso());
if(c.getDegree() == null)
c.setDegree(grauBaco);
 
c.setDegree(grauBaco);
c.setCode("" + d.getCodigoCurso().intValue());
c.setImportYear(year);
c.setInstitutionalCode("" + d.getCodigoInstituicao().intValue());
125,13 → 126,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 → 212,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 → 221,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.INFO));
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 → 318,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
25,10 → 25,9
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum;
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage;
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages;
import pt.estgp.estgweb.services.sigesimports.oracle.dao.AulaDao;
import pt.estgp.estgweb.utils.Dom4jUtil;
import pt.estgp.estgweb.web.FtpServer;
import pt.ipportalegre.siges.web.services.ArrayOfAula;
import pt.ipportalegre.siges.web.services.Aula;
import pt.ipportalegre.siges.web.services.SiGesWEB;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
39,7 → 38,6
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
108,7 → 106,7
String nowCode = "";
for(Long cId: cUs)
{
nowCode = "BACO_ONLY_CODE" + cId;
nowCode = "" + cId;
countUnits++;
try
{
125,13 → 123,15
serviceLogInfo(logMessages.getLastMessage());
 
int tries = 3;
ArrayOfAula arrayOfAulas = null;
//ArrayOfAula arrayOfAulas = null;
ArrayList<pt.estgp.estgweb.services.sigesimports.oracle.domain.Aula> arrayOfAulas = null;
while(tries > 0)
{
//comentario de teste
try
{
arrayOfAulas = service.getSiGesWEBSoap().getAulas(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year,c.getCode(),semestre,c.getCourse().getCode());
//arrayOfAulas = service.getSiGesWEBSoap().getAulas(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year,c.getCode(),semestre,c.getCourse().getCode());
arrayOfAulas = AulaDao.getInstance().loadAulas(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode(),year,c.getCode(),semestre,c.getCourse().getCode());
break;
}
catch(Throwable t)
143,13 → 143,15
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);
}
}
 
if(arrayOfAulas != null && arrayOfAulas.getAula() != null)
if(arrayOfAulas != null && arrayOfAulas.size() > 0)
{
List<CourseUnitSummary> courseUnitSummaries = new ArrayList<CourseUnitSummary>();
 
163,9 → 165,24
JSONArray summaries = new JSONArray();
summariesJson.put("summary",summaries);
int summariesValid = 0;
for(Aula aula: arrayOfAulas.getAula())
for(pt.estgp.estgweb.services.sigesimports.oracle.domain.Aula aula: arrayOfAulas)
{
 
//todo cdTurma Rollback aqui não retirar o sumário
//Mas pensar em separar os sumários na página, podemos
//separar tendo em conta quem entra, se for aluno só vê os
//seus sumários, se for prof vê os sumários das suas turmas
 
if(c.getCdTurma() != null && aula.getAula_codigoTurma()!=null
&& c.getCdTurma().trim().length() > 0
&& aula.getAula_codigoTurma().trim().length() > 0
&& !aula.getAula_codigoTurma().equals(c.getCdTurma()))
{
//Código de Turma diferente
System.out.println("Ignoring summary code: " + aula.getAula_codigoTurma() + " for unit " + c.getName() + "/" + c.getCode() + " T:" + c.getCdTurma());
continue;
}
 
//CourseUnitSummary s = map.get(aula.getSumNumeroAula() + ":" + aula.getCodigoSumario());
//if(s == null)
//{
175,16 → 192,19
//DaoFactory.getCourseUnitSummaryDaoImpl().save(s);
//summaries.add();
//}
s.setCdTipoOcupacao(aula.getTipoOcupacao().intValue());
s.setNrAula(aula.getNumeroAula().intValue());
s.setCodigoSumario(""+aula.getCodigoSumario().intValue());
s.setCodigoAula(""+aula.getSumNumeroAula().intValue());
s.setNumeroAula(aula.getSumNumeroAula().intValue());
s.setDataAula(aula.getData().toGregorianCalendar().getTime());
s.setTipoAula(aula.getSumTipoAula());
s.setCodigoSalaAula("" + aula.getAulaCodigoSalaAula().intValue());
s.setAlunosPresentes(aula.getSumNumeroAlunos().intValue());
s.setTitulo(aula.getSumTitulo());
s.setDescricao(aula.getSumDescricao());
s.setcEstado(""+aula.getSumCdEstado().intValue());
s.setCodigoAula("" + aula.getSum_numeroAula().intValue());
s.setNumeroAula(aula.getSum_numeroAula().intValue());
s.setDataAula(aula.getData());
s.setTipoAula(aula.getSum_tipoAula());
s.setCodigoSalaAula("" + aula.getAula_codigoSalaAula().intValue());
s.setAlunosPresentes(aula.getSum_numeroPresencas().intValue());
s.setTitulo(aula.getSum_titulo());
s.setCodigoDocente(aula.getAula_codigoDocente()+ "");
s.setDescricao(aula.getSum_descricao());
s.setcEstado(""+aula.getSum_cdEstado().intValue());
s.setNumeroHoras("" + aula.getNumeroCelulas().intValue());
summaries.put(s.getJson());
courseUnitSummaries.add(s);
200,6 → 220,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 → 245,7
}
else
{
//NAO METE OK MAS METE ZERO
countUnitsZeroSummaries++;
unitsZeroSummaries.add(c.getCode());
logger.error("Summaries come null in unit:" + c.getCode());
232,6 → 254,7
}
catch(Throwable e)
{
//NAO METE OK
unitsFailed.add(nowCode);
logger.error(e,e);
serviceLogError(e.toString(),e);
254,23 → 277,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 → 399,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 → 426,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/JobServiceInterfaces.java
43,7 → 43,8
List<JobServiceTaskScheduler> tasks = DaoFactory.getJobServiceTaskSchedulerDaoImpl().findAll();
for(JobServiceTaskScheduler jobServiceTaskScheduler: tasks)
{
jobServiceTaskScheduler.getLastJobServiceTask().getId();
if(jobServiceTaskScheduler.getLastJobServiceTask() != null)
jobServiceTaskScheduler.getLastJobServiceTask().getId();
}
return tasks;
}
/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/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/CourseUnitEvaluationView.java
19,6 → 19,7
private CourseUnitEvaluation courseUnitEvaluation;
private boolean fechar = false;
private boolean teacherComplete = false;
private boolean autosave = false;
 
public Class getReferenceClass()
{
83,4 → 84,12
public void setTeacherComplete(boolean teacherComplete) {
this.teacherComplete = teacherComplete;
}
 
public boolean isAutosave() {
return autosave;
}
 
public void setAutosave(boolean autosave) {
this.autosave = autosave;
}
}
/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
231,6 → 231,10
return responsableId;
}
 
public String getCdTurma() {
return cdTurma;
}
 
public void setResponsableId(long responsableId) {
this.responsableId = responsableId;
}
358,6 → 362,7
c.setImportYear(importYear);
c.setName(name);
c.setCode(code);
c.setCdTurma(cdTurma);
c.setSemestre(semestre);
if(courseId > 0)
{
492,6 → 497,10
return summariesJson;
}
 
public void setCdTurma(String cdTurma) {
this.cdTurma = cdTurma;
}
 
List<CourseUnitSummaryView> summariesFromJson = null;
/**
*
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java
94,15 → 94,35
if(anotherInstance instanceof CourseUnitImpl)
{
CourseUnitImpl anCourseUnit = (CourseUnitImpl) anotherInstance;
boolean turmaVazia =getCdTurma() == null || getCdTurma().trim().length() == 0;
boolean anotherTurmaVazia = anCourseUnit.getCdTurma() == null || anCourseUnit.getCdTurma().trim().length() == 0;
boolean turmasIguais = (turmaVazia && anotherTurmaVazia) || (!turmaVazia && !anotherTurmaVazia && getCdTurma().equals(anCourseUnit.getCdTurma()));
 
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()) &&
turmasIguais;
}
return false;
 
}
 
public boolean equalsIgnoringTurma(Object anotherInstance)
{
if(anotherInstance instanceof CourseUnitImpl)
{
CourseUnitImpl anCourseUnit = (CourseUnitImpl) anotherInstance;
 
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());
}
return false;
 
}
 
/**
* Means that is teacher os responsable teacher or from course commission
* Only works in open transaction
124,6 → 144,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 → 163,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,7 → 12,9
import pt.estgp.estgweb.services.common.SearchTypeEnum;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
 
import static org.hibernate.criterion.Restrictions.*;
133,7 → 135,17
 
public List<User> loadRoleUsers(String role)
{
return createCriteria().add(like("roles", "%" + role + "%")).addOrder(Order.asc("name")).list();
if(role == null || role.trim().length() == 0)
return new ArrayList<User>();
List<User> users = createCriteria().add(like("roles", "%" + role + "%")).addOrder(Order.asc("name")).list();
Iterator<User> iter = users.iterator();
while(iter.hasNext())
{
User u = iter.next();
if(!u.hasRole(role))
iter.remove();
}
return users;
}
 
public List<User> loadRoleAreaUsers(String role, String area)
141,7 → 153,15
Criteria c = createCriteria().add(like("roles", "%" + role + "%")).addOrder(Order.asc("name"));
if(area != null && area.trim().length() > 0)
c.add(eq("mainArea",area));
return c.list();
List<User> users = c.list();
Iterator<User> iter = users.iterator();
while(iter.hasNext())
{
User u = iter.next();
if(!u.hasRole(role))
iter.remove();
}
return users;
}
 
public List<User> findUsers(String textToSearch)
226,10 → 246,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;
237,6 → 261,23
co = or(co, cor);
}
criteria.add(co);
return criteria.list();
List<User> users = criteria.list();
Iterator<User> iter = users.iterator();
while(iter.hasNext())
{
boolean hasIt = false;
User u = iter.next();
for(String role: roles)
{
if(u.hasRole(role))
{
hasIt = true;
break;
}
}
if(!hasIt)
iter.remove();
}
return users;
}
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseDaoImpl.java
53,6 → 53,47
.list().size();
}
 
public int countCoursesUnits(String importYear,long courseId)
{
return createCriteria()
.createAlias("courseUnits", "c")
.setProjection(Projections.property("c.id"))
.add(eq("c.importYear", importYear))
.add(eq("id", courseId))
.list().size();
}
public int countCoursesUnitsNot(String importYear,long courseId)
{
return createCriteria()
.createAlias("courseUnits", "c")
.setProjection(Projections.property("c.id"))
.add(not(eq("c.importYear", importYear)))
.add(eq("id", courseId))
.list().size();
}
 
public List<Long> findCoursesUnitsIds(String importYear,long courseId)
{
return createCriteria()
.createAlias("courseUnits", "c")
.setProjection(Projections.property("c.id"))
.add(eq("id", courseId))
.add(eq("c.importYear", importYear))
.addOrder(Order.asc("c.name"))
.list();
}
 
public List<Long> findCoursesUnitsIds(long courseId)
{
return createCriteria()
.createAlias("courseUnits","c")
.setProjection(Projections.property("c.id"))
.add(eq("id", courseId))
.addOrder(Order.asc("c.importYear"))
.addOrder(Order.asc("c.name"))
.list();
}
 
public List<Course> searchActualYear(String query, SearchTypeEnum searchTypeEnum, int max, int page)
{
Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "name", "description");
209,10 → 250,24
 
public List<Course> findAll(String importYear)
{
return createCriteria().add(eq("importYear", importYear))
return createCriteria().add(eq("importYear", importYear)).addOrder(Order.asc("name"))
.list();
}
 
public List<Course> findAllStatus(String importYear,boolean status)
{
return createCriteria()
.add(eq("importYear", importYear))
.add(eq("status", status))
.addOrder(Order.asc("name"))
.list();
}
 
public List<Course> findActiveCourses(String importYear)
{
return findAllStatus(importYear,true);
}
 
public List<Course> findAllNotIn(String importYear)
{
return createCriteria().add(not(eq("importYear", importYear)))
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java
220,19 → 220,77
}
 
 
//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)
{
//todo cdTurma Rollback
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)
{
//todo cdTurma Rollback
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 List<CourseUnit> loadBySigesCodeUniqueAllCourses(String sigesCode, String semestre, String year,String turma)
{
//todo cdTurma Rollback
return
createCriteria()
.add(eq("code", sigesCode))
// REMOVED TO LET BE ALL COURSES .add(eq("courseCode", courseCode))
.add(eq("semestre", semestre))
.add(eq("importYear", year))
.add(eq("cdTurma", turma))
.list();
}
 
public CourseUnit loadBySigesCodeUniqueMostRecent(String sigesCode, String courseCode, String semestre)
{
List<CourseUnit> cus =
406,6 → 464,8
{
//todo falta a projeccao do teacher id
return createCriteria()
.createAlias("course","c")
.add(eq("c.status", true))
.add(eq("importYear", DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear()))
.add((or(isNull("programStreamId"), eq("programStreamId", ""))))
.createAlias("teachers", "th")
507,10 → 567,16
public Course course;
public List<CourseUnit> courseUnits;
}
 
/**
* Load all programs from active courses that are for validation
* @param userSession
* @return
*/
public List<CourseMissingValidationProgram> loadMissingProgramValidate(UserSession userSession)
{
List<CourseMissingValidationProgram> result = new ArrayList<CourseMissingValidationProgram>();
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear());
List<Course> courses = DaoFactory.getCourseDaoImpl().findActiveCourses(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear());
for(Course course: courses)
{
if(userSession.getUser().hasRole(course.getValidationRole()) || userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE))
528,11 → 594,15
return result;
}
 
 
/**
* Load all programs missing from active courses
* @param userSession
* @return
*/
public List<CourseMissingValidationProgram> loadMissingPrograms(UserSession userSession)
{
List<CourseMissingValidationProgram> result = new ArrayList<CourseMissingValidationProgram>();
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear());
List<Course> courses = DaoFactory.getCourseDaoImpl().findActiveCourses(DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear());
for(Course course: courses)
{
if(userSession.getUser().hasRole(course.getValidationRole()) || userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE))
/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;
287,4 → 289,13
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
36,13 → 36,14
 
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)
{
Configuration config = DaoFactory.getConfigurationDaoImpl().loadSimpleConfigurationForConsult();
userSession.setNowConfiguration(config);
for(SessionObject sessionObject: userSession.getObjects())
{
51,6 → 52,7
}
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;
81,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/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/controllers/courseunits/CourseUnitsEvaluationController.java
85,21 → 85,29
HttpServletResponse response)
throws ServletException
{
CourseUnitEvaluationForm cUF = (CourseUnitEvaluationForm) form;
try
{
CourseUnitEvaluationForm cUF = (CourseUnitEvaluationForm) form;
 
long id = cUF.getCourseUnitView().getId();
CourseUnitEvaluationView cuV = cUF.getCourseUnitEvaluationView();
 
if(request.getParameter("json")!=null && request.getParameter("json").equals("true"))
{
cuV.setAutosave(true);
}
IServiceManager sm = ServiceManager.getInstance();
Object[] args = new Object[]{cuV, id};
sm.execute(RequestUtils.getRequester(request, response), "SaveCourseUnitEvaluation", args);
cuV = (CourseUnitEvaluationView) sm.execute(RequestUtils.getRequester(request, response), "SaveCourseUnitEvaluation", args);
CourseUnitView cV = loadCourseUnitView(id,true,false, mapping, request, response);
cUF.setCourseUnitView(cV);
request.setAttribute("CourseUnitView", cV);
addMessage(request,"courseunit.evaluation.success");
return mapping.findForward("load");
if(request.getParameter("json")!=null && request.getParameter("json").equals("true"))
{
return mapping.findForward("jsonOk");
}
else
return mapping.findForward("load");
 
}
catch (FilterChainFailedException e)
{
112,7 → 120,8
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
addError(request, "courseunit.evaluation.tryagain");
return editEvaluation(mapping,cUF,request,response);
}
}
 
123,17 → 132,18
HttpServletResponse response)
throws ServletException
{
CourseUnitEvaluationForm cUF = (CourseUnitEvaluationForm) form;
try
{
CourseUnitEvaluationForm cUF = (CourseUnitEvaluationForm) form;
 
 
long id = cUF.getCourseUnitView().getId();
CourseUnitEvaluationView cuV = cUF.getCourseUnitEvaluationView();
cuV.setTeacherComplete(true);
 
IServiceManager sm = ServiceManager.getInstance();
Object[] args = new Object[]{cuV, id};
sm.execute(RequestUtils.getRequester(request, response), "SaveCourseUnitEvaluation", args);
cuV = (CourseUnitEvaluationView) sm.execute(RequestUtils.getRequester(request, response), "SaveCourseUnitEvaluation", args);
CourseUnitView cV = loadCourseUnitView(id,true,false, mapping, request, response);
cUF.setCourseUnitView(cV);
request.setAttribute("CourseUnitView", cV);
151,7 → 161,9
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
addError(request, "courseunit.evaluation.tryagain");
return editEvaluation(mapping,cUF,request,response);
//return mapping.findForward("error500");
}
}
 
161,18 → 173,18
HttpServletResponse response)
throws ServletException
{
CourseUnitEvaluationForm cUF = (CourseUnitEvaluationForm) form;
try
{
CourseUnitEvaluationForm cUF = (CourseUnitEvaluationForm) form;
 
long id = cUF.getCourseUnitView().getId();
CourseUnitEvaluationView cuV = cUF.getCourseUnitEvaluationView();
cuV.setFechar(true);
IServiceManager sm = ServiceManager.getInstance();
Object[] args = new Object[]{cuV, id};
sm.execute(RequestUtils.getRequester(request, response), "SaveCourseUnitEvaluation", args);
cuV = (CourseUnitEvaluationView) sm.execute(RequestUtils.getRequester(request, response), "SaveCourseUnitEvaluation", args);
CourseUnitView cV = loadCourseUnitView(id,true,false, mapping, request, response);
cUF.setCourseUnitView(cV);
cUF.setCourseUnitEvaluationView(cuV);
request.setAttribute("CourseUnitView", cV);
addMessage(request,"courseunit.evaluation.success");
return mapping.findForward("load");
188,7 → 200,8
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
addError(request, "courseunit.evaluation.tryagain");
return editEvaluation(mapping,cUF,request,response);
}
}
 
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsAdminController.java
5,14 → 5,10
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.services.courseunits.DeleteCourseUnitService;
import pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
375,23 → 371,25
{
 
try {
// long id = Long.parseLong(request.getParameter("id"));
// IServiceManager sm = null;
// sm = ServiceManager.getInstance();
// String[] names = new String[]{};
// Object[] args = new Object[]{id};
long id = Long.parseLong(request.getParameter("id"));
IServiceManager sm = null;
sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{id};
 
// sm.execute(RequestUtils.getRequester(request, response), "DeleteCourseUnit", args, names);
 
// addMessage(request,"courseunit.removed");
logger.info("N�o implementado por razoes de seguran�a");
addMessage(request,"courseunit.security.not.implemented");
DeleteCourseUnitService.CourseUnitContentsInfo result = (DeleteCourseUnitService.CourseUnitContentsInfo) sm.execute(RequestUtils.getRequester(request, response), "TryDeleteCourseUnitService", args, names);
if(result.isCanDelete())
addMessage(request,"courseunit.removed");
else
addError(request,"courseunit.cant.be.removed");
//logger.info("Não implementado por razoes de segurança");
//addMessage(request,"courseunit.security.not.implemented");
return mapping.findForward("delete");
} catch (Throwable e) {
addMessage(request,"error.500");
logger.error(e,e);
return mapping.findForward("error500");
}
 
return mapping.getInputForward();
}
 
public ActionForward search(ActionMapping mapping,
/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/updates/version/release2015-11.txt
82,4 → 82,161
- 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
*
* */
 
 
/***
NOTAS SOBRE BASE DE DADOS DE INSCRICOES
***/
Existem Cursos Ficticios na ESTG
Erasmus
Cadeiras a Vulso
Vasco da Gama
que são cursos que apesar de os alunos terem inscrições normais tem de ser mapeadas
ao verdadeiro curso indo buscar o curso pela turma indo buscar os pares Turma Curso
 
 
 
 
######################
REVISAO
DESCRICAO DO PROCESSO DE IMPORTACOES
######################
 
1 - O sistema vai buscar todas as disciplinas diferenciando-as por Turma, Codigo, Ano, Semestre, Curso
considerando as Inscrições de alunos T_INSCR Regulares codigo Tipo 1 e 2
obtendo o resto da info da TB_DISCIP
(DisciplinaDao)
2 - O Sistema cria uma unidade por cada saida do ponto anterior
TO BE (Mudar isto-> o sistema tem de criar apenas uma cadeira para todas as turmas)
Basta mudar no importador para procurar a cadeira sem considerar o código de
turma e depois adiciona a turma se esta não existe.
 
3 - O sistema importa Estudantes e Docentes
Ambos os casos trazem agregados as suas disciplinas
- Para o estudante obtém-se essa lista derivado das inscrições
- Do lado do importador inscrições de código diferente de 1 ou 2
ou em cursos ficticios obrigam a uma conversão do código de curso
para o código do curso Real essa derivação faz-se obtendo uma
relação das Turmas com os códigos de curso, considerando para isso
apenas inscrições tipo 1 e cursos não ficticios como o caso do erasmus
ou disciplinas a vulso ou Vasco da Gama
TOBE (Os alunos estão a ser colocados nas cadeiras considerando a turma
isso tem de deixar de acontecer, a cadeira extraida não pode usar o código de turma
e depois então vai-se colocar o aluno na turma respetiva após termos colocado
já o aluno na cadeira)
TOBE (O Workflow de remoção de um aluno de uma cadeira tem de considerar
que removê-lo de uma cadeira tem também a implicação de o remover da lista da turmas)
- Pelo docente obtém-se essa lista derivado dos sumários do horário de trabalho
ou seja o sistema só é capaz de associar um docente a uma disciplina se já houver
uma AULA criada no sistema NETPA. (A outra hipotese é ir ao Horario de Referência
mas isto ainda não é feito.)
As ocorrencias de cadeiras unicas correspondem as combinacoes
OUTUPUT Turma, Codigo de Cadeira, Codigo Curso
para o
INPUT Ano, Semestre, Instituicao escolhidos
TO BE (O sistema deverá passar a considerar a lista de cadeiras do docente
sem considerar o código de turma, e depois de adicionar
o docente à cadeira deverá ir adicioná-lo às Turmas respectivas)
TOBE (O Workflow de remoção de um professor de uma cadeira tem de considerar
que removê-lo de uma cadeira tem também a implicação de o remover da lista da turmas)
TO BE (As ocorrências deverão vir ainda abertas por TIPOLOGIA,
ou então vir uma lista separada de tipologias para cada docente quando se faz o pedido
das cadeiras. A politica de escolha da tipologia está por decidir. Deverá
ser feita neste ponto mas a ser decidida. Hipoteses:
a) Considerar os sumários (Horario de Trabalho e o campo CD_TIPO_AULA na tabela
T_SUMARIOS_AULAS)) limitado a 1,2,3,4,5,6,7,8 mas é um campo antigo
deveria ter texto e não tem correspondencia em tabela nenhuma, desconfia-se que os tipos
estão na Combobox HardCoded e não servem para mais nada
b) Considerar o campo CD_TIPO_AULA no Horario de Referência do Docente,
que corresponde à tabela T_OCUPACOES, neste caso perde-se tudo
o que não tenha horario de referência criado como por exemplo estágios
c) considerar o mesmo campo nos DETALHE_AULAS dos sumários, Horario de Trabalho
mas ai temos informação a mais e a politica poderá ser dizer o que é ou não considerado
e ignoramos o resto.
TO BE (Todas as associações Turma Docente são necessárias como a cola entre os alunos e o
professor, sem isto é impossivel saber que alunos estão com que professor)
 
 
 
######################
REVISAO
DESCRICAO DO PROCESSO DE IMPORTACOES
######################
 
Sumarios T_SUMARIOSAULAS.CD_ESTADO
1 Lançado
2 Faltou
3 Cancelado
4 Pré-lançado
 
importa tudo
 
Para o Json vai apenas aquilo que tem
Numero Aula > -1 e
que tem menos de 48 horas
e que tem titulo ou descricao e
ESTADO = 1;
Para o PDF vai apenas o que tem
numero de aula > -1
e estado do Sumário = 1
o tipo 1 apenas
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml
48,6 → 48,7
<key column="courseUnit"/>
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitBlog" />
</set>
 
<set name="teachers" lazy="true" table="teachedunits">
<key column="courseUnitId"/>
<many-to-many class="pt.estgp.estgweb.domain.TeacherImpl" column="teacherId"/>
72,6 → 73,10
<key column="courseUnit"/>
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitSummary"/>
</set>
<set name="turmas" cascade="delete" lazy="true" order-by="saveDate desc">
<key column="courseUnit"/>
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitTurma" />
</set>
<subclass name="pt.estgp.estgweb.domain.CourseUnitImpl" discriminator-value="CourseUnitImpl"/>
</class>
 
171,12 → 176,15
<timestamp source="db" name="updateDate" unsaved-value="null"/>
<property name="saveDate" type="timestamp"/>
<property name="dataAula" type="timestamp"/>
<property name="cdTipoOcupacao" type="int"/>
<property name="tipoAula" type="string"/>
<property name="codigoAula" type="string"/>
<property name="codigoSumario" type="string"/>
<property name="codigoSalaAula" type="string"/>
<property name="codigoDocente" type="string"/>
<property name="alunosPresentes" type="int"/>
<property name="numeroAula" type="int"/>
<property name="nrAula" type="int"/>
<property name="titulo" type="string" index="tituloIndex"/>
<property name="descricao" type="text"/>
<property name="cEstado" type="string"/>
284,6 → 292,52
</class>
 
 
<!-- todo Verificar o serviço de apagar cadeira
Parece-me que vai sempre haver aqui turmas a menos que se removam
as turmas quando nao há mais alunos, pelo menos tem de se vir removendo
daqui as associações aos estudantes e profs quando saiem da lista primária
-->
<class name="pt.estgp.estgweb.domain.CourseUnitTurma" table="courseunitturma" abstract="true">
<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta>
<meta attribute="scope-class">public abstract</meta>
<id name="id" type="long">
<generator class="native"/>
</id>
<discriminator column="discrimitator"/>
<timestamp source="db" name="updateDate" unsaved-value="null"/>
<property name="saveDate" type="timestamp"/>
<property name="turma" type="string"/>
<set name="docentesTipologia" cascade="delete" lazy="true" order-by="deliverDate asc">
<key column="courseUnitTurma"/>
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitTurmaDocenteTipologia"/>
</set>
<set name="teachers" lazy="true" table="teachedunits">
<key column="courseUnitId"/>
<many-to-many class="pt.estgp.estgweb.domain.TeacherImpl" column="teacherId"/>
</set>
<set name="students" lazy="true" table="subscribedunits">
<key column="courseUnitId"/>
<many-to-many class="pt.estgp.estgweb.domain.StudentImpl" column="studentId"/>
</set>
<subclass name="pt.estgp.estgweb.domain.CourseUnitTurmaImpl" discriminator-value="CourseUnitTurmaImpl"/>
</class>
 
<class name="pt.estgp.estgweb.domain.CourseUnitTurmaDocenteTipologia" table="courseunitturmadocentetipologia" abstract="true">
<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta>
<meta attribute="scope-class">public abstract</meta>
<id name="id" type="long">
<generator class="native"/>
</id>
<discriminator column="discrimitator"/>
<timestamp source="db" name="updateDate" unsaved-value="null"/>
<property name="saveDate" type="timestamp"/>
<property name="codigoTipoOcupacao" type="string"/>
<property name="tipoOcupacaoDesc" type="string"/>
<many-to-one name="teacher" class="pt.estgp.estgweb.domain.Teacher" lazy="false" outer-join="true" not-null="false"/>
<subclass name="pt.estgp.estgweb.domain.CourseUnitTurmaDocenteTipologiaImpl" discriminator-value="CourseUnitTurmaDocenteTipologiaImpl"/>
</class>
 
 
<!--<class name="pt.estgp.estgweb.domain.CourseUnit" table="courseunitassignement" abstract="true">-->
<!--<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta>-->
<!--<meta attribute="scope-class">public abstract</meta>-->
/impl/src/web/imgs/wait.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/impl/src/web/auth/index.jsp
5,6 → 5,11
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSessionImpl" scope="request"/>
<html:errors/>
 
<%
 
%>
<div class="container">
<logic:notEmpty name="UserSession" property="nowConfiguration.openInfoIntranet">
<div class="row">
32,4 → 37,4
</div>
 
 
</div>
</div>
/impl/src/web/admin/courses/courseCourseUnits.jsp
New file
0,0 → 1,117
 
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.domain.Course" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnit" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.domain.views.CourseUnitView" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.domain.views.CourseView" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
 
<%--
NOTAS DE DESENVOLVIMENTO
 
Este serviço pode encaminhar para edição de unidades curriculares
Portanto a edição de unidades curriculares (Administrativa) envia a CourseUnitView
que é usada aqui para ler o courseId de forma a não perder o ano onde estavamos
Por essa razao o courseId tem de estar presente em todos os links de saida desta página
--%>
<style>
.nav-menu li
{
padding-left: 0;
margin-left: 0;
padding-bottom: 0;
padding-top: 0;
margin-bottom: 0;
margin-top: 0;
 
}
</style>
 
<%
AbstractDao.getCurrentSession().beginTransaction();
 
 
%>
<%
String courseId = request.getParameter("courseId");
 
if(courseId == null || courseId.length()==0)
{
CourseUnitView view = (CourseUnitView) request.getAttribute("CourseUnitView");
if(view == null)
{
// importYear = DaoFactory.getConfigurationDaoImpl().getInterfaceImportYearCreateTransaction();
}
else
{
 
courseId = ""+view.getCourseId();
}
}
 
Course c = DaoFactory.getCourseDaoImpl().get(new Long(courseId));
CourseView cv = new CourseView(c);
request.setAttribute("CourseView",cv);
 
List<Long> courseUnits = DaoFactory.getCourseDaoImpl().findCoursesUnitsIds(c.getId());
request.setAttribute("courseUnits",courseUnits);
%>
<div class="container-fluid">
 
 
 
 
<div class="row">
<div class="col-md-12">
<h1>Unidades Curriculares do Curso de - <bean:message key="course.${CourseView.degreeCleanCode}"/> - <%=c.getCode()%> - <%=c.getName()%></h1>
</div>
</div>
 
<div class="row">
<div class="col-md-12">
<table class="tablesorter tablesorterfiltered">
<thead>
<tr>
<th>Código</th>
<th>Nome</th>
<th>Turma</th>
<th>Ano</th>
<th class="filter-name filter-select">Semestre</th>
<th>Editar</th>
 
</tr>
</thead>
<tbody>
<logic:iterate id="unitId" name="courseUnits" type="java.lang.Long">
<%
CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(unitId);
CourseUnitView cuv = new CourseUnitView(cu);
request.setAttribute("cuv",cuv);
%>
<tr>
<td>${cuv.code}</td>
<td>${cuv.name}</td>
<td>${cuv.cdTurma}</td>
<td>${cuv.importYear}</td>
<td><bean:message key="courseunit.${cuv.semestre}"/></td>
<td>
<a class="btn btn-warning" href="<%=request.getContextPath()%>/user/startEditCourseUnitAdminFromCourseCourseUnits.do?id=${cuv.id}&courseId=<%=c.getId()%>"><bean:message key="edit"/><span class="glyphicon glyphicon-pencil"></span></a>
</td>
</tr>
</logic:iterate>
</tbody>
</table>
 
</div>
</div>
 
</div>
<%
AbstractDao.getCurrentSession().getTransaction().commit();
%>
/impl/src/web/admin/courses/courseComissions.jsp
New file
0,0 → 1,190
 
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.domain.Course" %>
<%@ page import="pt.estgp.estgweb.domain.User" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.domain.views.CourseView" %>
<%@ page import="pt.estgp.estgweb.utils.DatesUtils" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.domain.UserSession" %>
<%@ page import="pt.estgp.estgweb.web.UserSessionProxy" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<style>
.nav-menu li
{
padding-left: 0;
margin-left: 0;
padding-bottom: 0;
padding-top: 0;
margin-bottom: 0;
margin-top: 0;
 
}
</style>
 
<%
AbstractDao.getCurrentSession().beginTransaction();
 
 
%>
<%
String importYear = request.getParameter("importYear");
 
String nowInterfaceImportYear = DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear();
 
if(importYear == null || importYear.length()==0)
{
importYear = DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear();
}
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(importYear);
 
%>
<div class="container-fluid">
<div class="row">
 
<div class="col-sm-12 col-md-4">
 
<h1>Listagem de Cursos</h1>
 
<form role="form" action="<%=request.getContextPath()%>/user/courseComissions.do" method="post">
<div class="form-group">
<label for="importYear">Escolha o úlitmo ano em que o curso esteve ativo:</label>
<select name="importYear" id="importYear" class="form-control" onchange="this.form.submit()">
<option value="">Ultimo ano ativo</option>
<%
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 class="row">
<div class="col-md-12">
<h1>Cursos no Sistema ativos no ano <%=importYear%></h1>
</div>
</div>
 
<div class="row">
<div class="col-md-12">
<table class="tablesorter tablesorterfiltered">
<thead>
<tr>
<th>Codigo</th>
<th>Tipo de Curso</th>
<th>Curso</th>
<baco:hasRole role="services,admin,all">
<th>Activo</th>
<th>Papel Comissão Curso</th>
<th>Unidades <%=importYear%></th>
<th>Unidades noutros anos</th>
</baco:hasRole>
<th>Comissão de Curso</th>
<baco:hasRole role="services,admin,all">
<th>Unidades</th>
<th>Editar</th>
</baco:hasRole>
</tr>
</thead>
<tbody>
<%
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request);
for(Course c: courses)
{
CourseView cv = new CourseView(c);
request.setAttribute("CourseView",cv);
int unitsSize=DaoFactory.getCourseDaoImpl().countCoursesUnits(importYear,c.getId());
int unitsSizeOthers=DaoFactory.getCourseDaoImpl().countCoursesUnitsNot(importYear, c.getId());
int totalUnits = unitsSize + unitsSizeOthers;
//So da verdadeiro se estivermos neste ano e ele estiver inativo
boolean notActiveAndActualThisYear = nowInterfaceImportYear.equals(importYear) && !cv.isStatus();
if((totalUnits > 0 && !notActiveAndActualThisYear) || userSession.getUser().isAdmin() || userSession.getUser().hasRole("services"))
{
%>
 
<tr>
<td>${CourseView.code}</td>
<td><bean:message key="course.${CourseView.degreeCleanCode}"/></td>
<td>${CourseView.name}</td>
<baco:hasRole role="services,admin,all">
<td>${CourseView.status}</td>
<td>
<logic:notEmpty name="CourseView" property="validationRole">
<bean:message key="user.role.${CourseView.validationRole}"/>
</logic:notEmpty>
<logic:empty name="CourseView" property="validationRole">
Papel não atribuido (Corrigir Situação)
</logic:empty>
</td>
<td>
<%=unitsSize%>
</td>
<td>
<%=unitsSizeOthers%>
</td>
</baco:hasRole>
<td>
<div class="list-group">
<%
for(User u:DaoFactory.getUserDaoImpl().loadRoleUsers(c.getValidationRole()))
{
%>
<div class="list-group-item">
<%=u.getName()%>
<baco:hasRole role="admin,services">
<a class="btn btn-default" target="_blank" href="<%=request.getContextPath()%>/user/startProfileFromSearchUsers.do?id=<%=u.getId()%>">
<span class="glyphicon glyphicon-pencil"></span>
</a>
</baco:hasRole>
</div>
<%
}
%>
</div>
</td>
<baco:hasRole role="services,admin,all">
<td>
<a class="btn btn-default" target="_blank" href="<%=request.getContextPath()%>/user/courseCourseUnits.do?courseId=<%=c.getId()%>">
<span class="glyphicon glyphicon-list-alt"></span>
</a>
 
</td>
<td>
<a class="btn btn-warning" target="_blank" href="<%=request.getContextPath()%>/user/courseControllerFromServiceZone.do?dispatch=edit&courseView.id=<%=c.getId()%>">
<span class="glyphicon glyphicon-pencil"></span>
</a>
</td>
</baco:hasRole>
</tr>
<%
}
 
}
%>
 
</tbody>
</table>
 
</div>
</div>
 
</div>
<%
AbstractDao.getCurrentSession().getTransaction().commit();
%>
/impl/src/web/admin/courses/topnavCourseCourseUnits.jsp
New file
0,0 → 1,16
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%@ page import="pt.estgp.estgweb.domain.views.BlogView" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnit" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%--<baco:object2Request beanIdName="id" classname="pt.estgp.estgweb.domain.CourseUnit" useBean="CourseUnitView"/>--%>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back");
topNav.addNavPlace(null, "course.course.units");
%>
<jsp:include page="/layout/topnav.jsp"/>
Property changes:
Added: svn:executable
+ *
/impl/src/web/admin/courses/topnavCourseComissions.jsp
New file
0,0 → 1,16
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%@ page import="pt.estgp.estgweb.domain.views.BlogView" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnit" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%--<baco:object2Request beanIdName="id" classname="pt.estgp.estgweb.domain.CourseUnit" useBean="CourseUnitView"/>--%>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back");
topNav.addNavPlace(null, "course.comissions");
%>
<jsp:include page="/layout/topnav.jsp"/>
Property changes:
Added: svn:executable
+ *
/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,209
<%@ 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");
 
AbstractDao.getCurrentSession().beginTransaction();
 
if(importYear == null)
importYear = DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear();
 
Criteria c = AbstractDao.getCurrentSession().createCriteria(CourseUnit.class);
c.setProjection(Projections.property("id"));
c.createAlias("course","co")
.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()%>/user/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/topnavEditCourseUnitFromDelete.jsp
New file
0,0 → 1,27
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%--
NOTAS DE DESENVOLVIMENTO
 
Para voltar à pagina de delete units precisamos de manter o importYear para não se perder o contexto
do ano onde o user estava a trabalhar no apagar de unidades
O importYear tem de estar portanto em todas as interações que partem
do courseUnitDeleteAdministration
--%>
<%
String importYear = request.getParameter("importYear");
if(importYear != null)
{
importYear = "?importYear=" + importYear;
}
else
importYear ="";
 
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back");
topNav.addNavPlace("/admin/courseUnitsDeleteAdmin.do" + importYear, "courseunit.delete.administration");
topNav.addNavPlace(null, "courseunit.edit");
%>
<jsp:include page="/layout/topnav.jsp"/>
Property changes:
Added: svn:executable
+ *
/impl/src/web/admin/courseunits/topnavEditCourseUnitFromCourseCourseUnits.jsp
New file
0,0 → 1,12
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%
String courseId = request.getParameter("courseId");
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back");
topNav.addNavPlace("/user/courseCourseUnits.do?courseId="+courseId, "course.course.units");
topNav.addNavPlace(null, "courseunit.edit");
%>
<jsp:include page="/layout/topnav.jsp"/>
Property changes:
Added: svn:executable
+ *
/impl/src/web/admin/courseunits/courseUnitDeleteAdministration.jsp
New file
0,0 → 1,243
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.services.courseunits.DeleteCourseUnitService" %>
<%@ page import="pt.estgp.estgweb.utils.DatesUtils" %>
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.domain.views.CourseUnitView" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
 
 
<%--
NOTAS DE DESENVOLVIMENTO
 
Este serviço pode encaminhar para edição de unidades curriculares
Portanto a edição de unidades curriculares (Administrativa) envia a CourseUnitView
que é usada aqui para ler o importYear de forma a não perder o ano onde estavamos
Por essa razao o importYear tem de estar presente em todos os links de saida desta página
--%>
<%
String importYear = request.getParameter("importYear");
 
 
if(importYear == null || importYear.length()==0)
{
CourseUnitView view = (CourseUnitView) request.getAttribute("CourseUnitView");
if(view == null)
{
// importYear = DaoFactory.getConfigurationDaoImpl().getInterfaceImportYearCreateTransaction();
}
else
{
importYear = view.getImportYear();
}
}
 
%>
<div class="container">
<div class="row">
 
<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()%>/admin/courseUnitsDeleteAdmin.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()">
<option value="">Escolha Ano</option>
<%
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>
<%
 
if(importYear == null)
{
 
}
else
{
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{importYear};
List<DeleteCourseUnitService.CourseUnitContentsInfo> courseUnitContentsInfos = (List<DeleteCourseUnitService.CourseUnitContentsInfo>) sm.execute(RequestUtils.getRequester(request, response), "LoadCandidatesDeleteCourseUnitService", args, names);
request.setAttribute("CourseUnitContentsInfos", courseUnitContentsInfos);
 
%>
 
<style>
.modal-dialog{
position: absolute;
left: 0;
//now you must set a margin left under zero - value is a half width your window
}
</style>
 
 
 
 
 
 
 
<script>
$(document).ready(function(){
$('.deleteModal').on('show.bs.modal', function(e) {
$(this).find('.btn-ok').attr('href', $(e.relatedTarget).data('href'));
});
});
</script>
 
<logic:iterate id="contentsInfo" name="CourseUnitContentsInfos" type="pt.estgp.estgweb.services.courseunits.DeleteCourseUnitService.CourseUnitContentsInfo">
 
<div id="info${contentsInfo.cuv.id}" class="modal fade" role="dialog">
<div class="modal-dialog modal-sm">
 
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">${contentsInfo.cuv.name}/${contentsInfo.cuv.code} - ${contentsInfo.cuv.courseName}/${contentsInfo.cuv.courseCode} - ${contentsInfo.cuv.semestre} - ${contentsInfo.cuv.importYear}</h4>
</div>
<div class="modal-body">
<logic:iterate id="msgWarn" name="contentsInfo" property="warnings">
<p>${msgWarn}</p>
</logic:iterate>
 
</div>
<div class="modal-footer">
<logic:equal value="true" name="contentsInfo" property="canDelete">
<button class="btn btn-danger" data-href="<%=request.getContextPath()%>/user/startDeleteCourseUnitAdminFromUnitsDeleteAdministration.do?dispatch=delete&id=${contentsInfo.cuv.id}&importYear=<%=importYear%>" data-toggle="modal" data-target="#confirm-delete${contentsInfo.cuv.id}">
<bean:message key="delete"/>
</button>
</logic:equal>
<html:link styleClass="btn btn-default" action="/user/startLoadCourseUnitFromHome?id=${contentsInfo.cuv.id}" target="_blank">Ir para a página</html:link>
<button type="button" class="btn btn-default" data-dismiss="modal"><bean:message key="close"/></button>
</div>
</div>
</div>
</div>
<div class="modal fade deleteModal" id="confirm-delete${contentsInfo.cuv.id}" tabindex="-1" role="dialog" >
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">${contentsInfo.cuv.name}/${contentsInfo.cuv.code} - ${contentsInfo.cuv.courseName}/${contentsInfo.cuv.courseCode} - ${contentsInfo.cuv.semestre} - ${contentsInfo.cuv.importYear}</h4>
</div>
<div class="modal-body">
<logic:iterate id="msgWarn" name="contentsInfo" property="warnings">
<p>${msgWarn}</p>
</logic:iterate>
<logic:empty name="contentsInfo" property="warnings">
Não tem avisos nesta unidade.
</logic:empty>
</div>
<div class="modal-footer">
Tem a certeza que desja apagar esta unidade curricular?
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<a class="btn btn-danger btn-ok">Delete</a>
</div>
</div>
</div>
</div>
</logic:iterate>
 
 
<!--Modais de iformação com avisos de conteudo da unidade-->
 
<jomm:messages/>
<html:errors/>
<div class="row">
<div class="col-sm-12 col-md-12">
 
<div class="panel panel-default">
<div class="panel-heading">
Administração de Unidades Candidatas a Apagar com Zero Estudantes
<a href="<%=request.getContextPath()%>/admin/courseUnitsDeleteAdmin.do" class="btn btn-info"><span class="glyphicon glyphicon-refresh"></span></a>
</div>
<div class="panel-body">
 
<table class="tablesorter tablesorterfiltered">
<thead>
<tr>
<th>Código</th>
<th>Nome</th>
<th>Turma</th>
<th>Código Curso</th>
<th class="filter-name filter-select">Curso</th>
<th class="filter-name filter-select">Grau Curso</th>
<th>Ano</th>
<th class="filter-name filter-select">Semestre</th>
<th class="filter-name filter-select">Apagar</th>
<th>Apagar</th>
<th>Editar</th>
<th>Info</th>
</tr>
</thead>
<tbody>
<logic:iterate id="contentsInfo" name="CourseUnitContentsInfos" type="pt.estgp.estgweb.services.courseunits.DeleteCourseUnitService.CourseUnitContentsInfo">
 
<tr>
<td>${contentsInfo.cuv.code}</td>
<td>${contentsInfo.cuv.name}</td>
<td>${contentsInfo.cuv.cdTurma}</td>
<td>${contentsInfo.cuv.courseCode}</td>
<td>${contentsInfo.cuv.courseName}</td>
<td><bean:message key="course.${contentsInfo.cuv.courseView.degreeCleanCode}"/></td>
<td>${contentsInfo.cuv.importYear}</td>
<td><bean:message key="courseunit.${contentsInfo.cuv.semestre}"/></td>
<td>
<bean:message key="courseunit.canDelete.${contentsInfo.canDelete}"/>
 
</td>
<td>
<logic:equal value="true" name="contentsInfo" property="canDelete">
<button class="btn btn-danger" data-href="<%=request.getContextPath()%>/user/startDeleteCourseUnitAdminFromUnitsDeleteAdministration.do?importYear=<%=importYear%>&dispatch=delete&id=${contentsInfo.cuv.id}" data-toggle="modal" data-target="#confirm-delete${contentsInfo.cuv.id}">
<bean:message key="delete"/>
</button>
</logic:equal>
</td>
<td>
<a class="btn btn-warning" href="<%=request.getContextPath()%>/user/startEditCourseUnitAdminFromUnitsDeleteAdministration.do?id=${contentsInfo.cuv.id}&importYear=<%=importYear%>"><bean:message key="edit"/><span class="glyphicon glyphicon-pencil"></span></a>
</td>
<td>
<logic:notEmpty name="contentsInfo" property="warnings">
<button type="button" class="btn btn-info" data-toggle="modal" data-target="#info${contentsInfo.cuv.id}"><span class="glyphicon glyphicon-alert"></span></button>
</logic:notEmpty>
</td>
</tr>
</logic:iterate>
</tbody>
</table>
 
 
 
</div>
</div>
</div>
</div>
 
<%
}
%>
</div>
/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[]{};
44,7 → 55,25
<li><html:link action="/user/startLoadCourseUnitFromHome.do?id=${CourseUnitView.id}">Página da Unidade</html:link></li>
<li><html:link action="/startLoadCourseUnitProgram.do?courseUnitId=${CourseUnitView.id}">Ficha Curricular</html:link></li>
</ul>
<html:form styleClass="form" action="/user/courseUnitControllerAdminFromServiceZone" enctype="multipart/form-data">
<%
String fromAction = "";
String from = "";
String user = "";
if (request.getParameter("from") != null)
{
user = "/user";
fromAction = "From" + request.getParameter("from");
from = "?from=" + request.getParameter("from");
}
request.setAttribute("from", from);
request.setAttribute("user", user);
request.setAttribute("fromAction", fromAction);
%>
 
<html:form styleClass="form" action="${user}/courseUnitControllerAdmin${fromAction}${from}" enctype="multipart/form-data">
 
<%--<html:form styleClass="form" action="/user/courseUnitControllerAdminFromServiceZone" enctype="multipart/form-data">--%>
 
<input type="hidden" name="dispatch" value="createOrUpdateAdmin">
<html:hidden property="courseUnitView.id"/>
<html:hidden property="id"/>
62,7 → 91,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 → 111,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 → 127,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 → 156,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 → 183,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 → 220,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/courseunits/topnavCourseUnitDeleteAdministration.jsp
New file
0,0 → 1,18
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%@ page import="pt.estgp.estgweb.domain.views.BlogView" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnit" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%--<baco:object2Request beanIdName="id" classname="pt.estgp.estgweb.domain.CourseUnit" useBean="CourseUnitView"/>--%>
 
 
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back");
topNav.addNavPlace(null, "courseunit.delete.administration");
%>
<jsp:include page="/layout/topnav.jsp"/>
Property changes:
Added: svn:executable
+ *
/impl/src/web/admin/configuration/tasks.jsp
5,13 → 5,12
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib prefix="hmlt" uri="http://jakarta.apache.org/struts/tags-html" %>
<%@ taglib prefix="html" uri="http://jakarta.apache.org/struts/tags-html" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<jomm:messages/>
<html:errors/>
88,11 → 87,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/style.css
802,6 → 802,10
margin-bottom: 10px;
}
 
a
{
color: #4d4d4d !important;
}
.contentPortal li a .contentPortal li {
color: #4d4d4d;
}
/impl/src/web/css/lavish-bootstrap.css
3531,7 → 3531,7
}
}
.navbar-collapse {
max-height: 340px;
 
overflow-x: visible;
padding-right: 15px;
padding-left: 15px;
4571,6 → 4571,15
text-decoration: none;
background-color: #f5f5f5;
}
 
.list-group-item-info {
color: #8a6100;
background-color: #ffdb96;
}
a.list-group-item-info,
button.list-group-item-info {
color: #8a6100;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
4766,18 → 4775,18
border-bottom-color: #eed3d7;
}
.panel-info {
border-color: #bce8f1;
border-color: #e8d68a;
}
.panel-info > .panel-heading {
color: #3a87ad;
background-color: #d9edf7;
border-color: #bce8f1;
color: #8a6100;
background-color: #ffdb96;
border-color: #e8d68a;
}
.panel-info > .panel-heading + .panel-collapse .panel-body {
border-top-color: #bce8f1;
border-color: #e8d68a;
}
.panel-info > .panel-footer + .panel-collapse .panel-body {
border-bottom-color: #bce8f1;
border-color: #e8d68a;
}
.well {
min-height: 20px;
/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/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/layout/emptyLayoutJson.jsp
New file
0,0 → 1,4
<%@page pageEncoding="UTF-8" contentType="application/json"%>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<tiles:insert attribute="body" />
 
Property changes:
Added: svn:executable
+ *
/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,87
<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()
{
$.ajax({
url: "<%=request.getContextPath()%>/ping.jsp",
type: "POST",
dataType: "json",
success: function(resposta) {
setTimeout("ping()",10000);
},
error: function() {
setTimeout("ping()",10000);
}
});
 
}
$(document).ready(function()
{
if($("#myTable"))
231,7 → 319,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 → 337,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 → 415,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/jsonAutoSaveOk.jsp
New file
0,0 → 1,2
<%@ page contentType="application/json;charset=UTF-8" language="java" %>
{"service":"ok"}
/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/listFilesInqueritoPedagogicoJson.jsp
New file
0,0 → 1,41
<%@ 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();
JSONObject json = new JSONObject();
JSONArray filesJson = new JSONArray();
 
if(ftpClient == null)
{
AbstractDao.getCurrentSession().getTransaction().commit();
out.print(json.toString());
 
}
else
{
ftpClient.changeWorkingDirectory("/");
boolean existDirectory = ftpClient.changeWorkingDirectory(cu.getInqueritosPedagogicosPathIntranet());
 
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/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">
132,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>
171,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>
241,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>
280,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>
/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
24,6 → 24,11
<html:errors/>
<jomm:messages/>
 
<script>
//Manter a sessão activa para os docentes não perderem os dados
ping();
</script>
 
<%
IServiceManager sm = ServiceManager.getInstance();
 
79,7 → 84,7
if(!closed)
{
%>
<p class="WARNING"><bean:message key="courseunit.evaluation.warning"/></p>
<p><bean:message key="courseunit.evaluation.warning"/></p>
<%
}
%>
134,12 → 139,12
<%
}
if(!activePeriodRegular && activePeriod)
{
{
%>
<h2>Esta unidade foi <label style="background-color: #00ff00">ABERTA</label> pela administração para efectuar processo de avaliação extraordinário</h2>
<br/>
<%
}
}
 
if(closed)
{
288,34 → 293,135
 
%>
 
 
<!-- Modal -->
 
<!-- Modal -->
<div class="modal fade" id="myModal" role="dialog" >
<div class="modal-dialog" data-width="760" style="display: block; width: 760px; margin-left: -380px; margin-top: 50px;" aria-hidden="false">
 
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
 
<h1 class="modal-title">Envio em curso</h1>
</div>
<div class="modal-body">
<p>O relatório está a ser enviado ao sistema... por favor aguarde <img src="<%=request.getContextPath()%>/imgs/wait.gif"/></p>
 
</div>
<div class="modal-footer">
 
</div>
</div>
 
</div>
</div>
<script>
function submitFormWaitAutoSave()
{
stopAutoSave = true;
$('#myModal').modal({
show: 'true'
});
//esperar se houver algum update a executar 1500 segundos é o maximo de espera
//se a pagina não recarregar e porque a thread parou
setTimeout("submitForm()",40000);
}
 
//function submitForm()
//{
// $("#formEdit").submit();
// }
 
$( document ).ready(function() {
<%
if(!activePeriod)
{
%>
$("#formEdit :input").attr("disabled", true);
<%
%>
$("#formEdit :input").attr("disabled", true);
<%
}
if(closed)
{
else if(closed)
{
%>
$("#formEdit :input").attr("disabled", true);
<%
}
if(!editTeacherPart && !editCoordinatorPart)
else if(!editTeacherPart && !editCoordinatorPart)
{
%>
$("#formEdit :input").attr("disabled", true);
<%
}
else
{
%>
setTimeout("serData()",5000);
<%
}
%>
 
 
 
});
var stopAutoSave = false;
 
function serData()
{
if(stopAutoSave)
{
$("#formEval").submit();
return;
}
else
{
$("#dispatch").val("saveEvaluation");
var data = $("#formEval").serialize().replace(/%0D%0A/g, '%0A').replace(/\r?\n/g, "\r\n");
//alert(data);
 
//alert($("#dispatch").val())
$("#autosave").html("Enviando...");
$.ajax({
url: "<%=request.getContextPath()%>/user/courseUnitEvaluationController.do",
type: "POST",
data: data + "&json=true",
dataType: "json",
success: function(resposta) {
if(resposta.service && resposta.service == "ok")
$("#autosave").html("Salvo Automaticamente (Apenas Dados, não gerou PDF, para gerar PDF terá de salvar o docente)");
else
$("#autosave").html("Deve salvar o seu relatório periodicamente");
setTimeout("serData()",5000);
},
error: function() {
$("#autosave").html("Erro de comunicação, tentando novamente em 5 segundos");
setTimeout("serData()",5000);
}
});
/* $.post('<%=request.getContextPath()%>/user/courseUnitEvaluationController.do', data + "&json=true",
function(resposta)
{
if(resposta.service && resposta.service == "ok")
$("#autosave").html("Salvo Automaticamente (Apenas Dados, não gerou PDF, para gerar PDF terá de salvar o docente)");
else
$("#autosave").html("Deve salvar o seu relatório periodicamente");
setTimeout("serData()",5000);
}
 
);*/
 
 
}
}
 
</script>
<div>
<a target="_blank" href="<%=request.getContextPath()%>/user/data.jsp?id=<%=CourseUnitView.getEvaluationStreamId()%>">Ver versões salvas pelos docentes</a>
</div>
<div id="formEdit">
<html:form action="/user/courseUnitEvaluationController">
<input type="hidden" name="dispatch" value="saveEvaluation">
<html:form styleId="formEval" action="/user/courseUnitEvaluationController">
<input type="hidden" id="dispatch" name="dispatch" value="saveEvaluation">
<html:hidden property="id"/>
<html:hidden property="courseUnitView.id"/>
 
345,7 → 451,7
<%
}
%>
 
<div id="autosave"></div>
<table class="dataTable tableDisabled" width="100%">
<tr>
<th colspan="2">Dados alterados pelo Docente da Unidade</th>
461,11 → 567,12
<tr>
<td colspan="2">
<%
 
if(activePeriod && !teacherComplete && !closed && (editCoordinatorPart || editTeacherPart))
{
%>
 
<input type="button" value="<bean:message key="save"/>" onclick="set(form,'saveEvaluation');form.submit()"/>
<input type="button" value="<bean:message key="save"/>" onclick="set(form,'saveEvaluation');submitFormWaitAutoSave(form);"/>
 
<%
}
474,7 → 581,7
{
%>
 
<input type="button" value="<bean:message key="deliverEvaluation"/>" onclick="set(form,'teacherCompleteEvaluation');form.submit()"/>
<input type="button" value="<bean:message key="deliverEvaluation"/>" onclick="set(form,'teacherCompleteEvaluation');submitFormWaitAutoSave(form);"/>
 
<%
}
484,7 → 591,7
{
%>
 
<input type="button" value="VALIDAR e FECHAR pela Comissão de Curso" onclick="set(form,'publishEvaluation');form.submit()"/>
<input type="button" value="VALIDAR e FECHAR pela Comissão de Curso" onclick="set(form,'publishEvaluation');submitFormWaitAutoSave(form);"/>
<%
}
%>
/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" %>
2,3 → 4,2
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
30,7 → 31,7
request.setAttribute("fromAction", fromAction);
 
 
String activeEvaluationYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYearCreateTransaction();
//String activeEvaluationYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYearCreateTransaction();
 
IServiceManager sm = ServiceManager.getInstance();
 
47,11 → 48,13
 
%>
 
 
 
<jomm:messages/>
 
<div class="panel panel-primary">
<div class="panel panel-primary panel-container">
<div class="panel-heading">
${CourseUnitView.name} (${CourseUnitView.code}) - (${CourseUnitView.semestre}) - ${CourseUnitView.importYear})
${CourseUnitView.name} (${CourseUnitView.code}) - semestre ${CourseUnitView.semestre} - ano ${CourseUnitView.importYear} - turma ${CourseUnitView.cdTurma}
</div>
<div class="panel-body">
 
145,7 → 148,7
<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 src="<%=request.getContextPath()%>/imgs/mime/pdf.gif"/></a>
<a href="<%=request.getContextPath()%>/repositoryStream/${CourseUnitView.evaluationStreamId}"><img style="clear: both" src="<%=request.getContextPath()%>/imgs/mime/pdf.gif"/></a>
</span>
</div>
<%
169,32 → 172,33
<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:present>
<%--<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: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>
 
<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">
<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>
<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>
</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"><a href="<%=request.getContextPath()%>/repositoryStream/${CourseUnitView.programStreamId}"><img src="<%=request.getContextPath()%>/imgs/mime/pdf.gif"/></a></span>
</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>
<logic:present name="CourseUnitView" property="programStreamId">
<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"/>
217,7 → 221,18
<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()
)))
{
 
%>
<h2><bean:message key="module.Announcements"/></h2>
<logic:notEmpty name="CourseUnitView" property="announcements">
<%--<div class="listCircleWhite">
232,7 → 247,7
</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 panel-info">
<div class="panel-heading">
<html:link action="/user/startLoadAnnouncementFromCourseUnit?id=${announcement.id}">${announcement.title}</html:link>
</div>
248,8 → 263,10
<logic:empty name="CourseUnitView" property="announcements">
<p><bean:message key="announcement.zero.placed"/></p>
</logic:empty>
<%
}
%>
 
 
</baco:isAuthenticated>
</div>
</div>
266,7 → 283,12
<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></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>
 
</div>
<div class="list-group-item disabled"> ${CourseUnitView.responsableTeacher.safeEmail}</div>
</div>
</logic:notEmpty>
/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
107,14 → 107,14
{
%>
 
<h2><a href="javascript:showOrHide('evaluationValidate<%=mis.course.getId()%>')"><%=mis.course.getName()%> / <%=mis.course.getCode()%></a> (<%=mis.courseUnits.size()%>)</h2>
<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>
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%> / <%=cu.getCode()%> / <%=cu.getCdTurma()%></a></li>
<%
}
%>
170,7 → 170,7
for(CourseUnit cu: mis.courseUnits)
{
%>
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%> / <%=cu.getCode()%></a></li>
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%> / <%=cu.getCode()%> / <%=cu.getCdTurma()%></a></li>
<%
}
%>
/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>
139,7 → 139,15
<!--<p><bean:message key="intranet.home.curricular"/></p>-->
<!--<ul>
<li>-->
<html:link action="/user/startLoadCoursesProgramsFromHome"><bean:message key="courseunit.indexes"/> (Novo Estilo) </html:link>
<div class="list-group">
<div class="list-group-item">
<html:link action="/user/startLoadCoursesProgramsFromHome"><bean:message key="courseunit.indexes"/> </html:link>
</div>
<div class="list-group-item">
<html:link action="/user/courseComissions"><bean:message key="course.comissions"/> (Novo) </html:link>
</div>
</div>
<!--</li>
</ul>-->
</div>
173,7 → 181,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()%>/startLoadCourseUnitProgram.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%>/<%=cu.getCode()%> (<%=cu.getCourseName() + "/" +cu.getCourseCode() +"/" + cu.getCdTurma()%>)</a></li>
<%
}
%>
211,7 → 219,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>
<%
}
%>
/impl/src/web/user/home/user.jsp
11,127 → 11,118
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/lavish-bootstrap.css"/>
 
 
<div class="portal">
<table class="columnTable" width="100%">
<tbody>
<tr>
<div class="row">
<div class="col-md-6 col-sm-12 col-xs-12">
<div class="panel panel-primary">
<div class="panel-heading"><bean:message key="intranet.home.curricular"/></div>
<div class="panel-body">
<div class="list-group">
 
<baco:hasRole role="services">
<td class="column">
 
<div class="block">
<div class="panel panel-primary">
<div class="panel-heading"><bean:message key="intranet.home.curricular"/></div>
<div class="panel-body">
<!--<p><bean:message key="intranet.home.curricular"/></p>-->
<ul>
<li><html:link action="/user/startLoadCoursesProgramsFromHome"><bean:message key="courseunit.indexes"/> (Novo Estilo) </html:link></li>
<baco:hasRole role="admin,all,services,administrativeCouncil,courseCoordinator,courseDirector,scientificCouncil,pedagogicCouncil">
<li><html:link action="/user/startSelectCourseFromServiceZone"><bean:message key="course.select"/></html:link></li>
<li><html:link action="/user/startFindCourseUnitAdminFromServiceZone"><bean:message key="courseunit.search"/></html:link></li>
</baco:hasRole>
</ul>
</div>
</div>
<div class="list-group-item"><html:link action="/user/startLoadCoursesProgramsFromHome"><bean:message key="courseunit.indexes"/> </html:link></div>
<div class="list-group-item">
<a href="<%=request.getContextPath()%>/dir/utilsIntranet/horarios/intranet/escola/horarios.html">Horários</a>
</div>
<baco:hasRole role="admin,all,services">
<div class="block">
<div class="panel panel-primary">
<div class="panel-heading">Ferramentas Académicas</div>
<div class="panel-body">
<ul>
<li><html:link action="/user/configurationGrades">Épocas de Avaliação</html:link></li>
<li>Situação de Propinas de Alunos (Por implementar)</li>
<li><html:link action="/user/findProfile"><bean:message key="profile.search.user"/></html:link></li>
<li>Gerir Papeis das Comissões Curso (Por Implementar)</li>
</ul>
 
</div>
</div>
<div class="list-group-item">
<a href="<%=request.getContextPath()%>/dir/utilsIntranet/calEscolar/public/portal/CL20102011.pdf">Calendário Escolar</a>
</div>
</baco:hasRole>
<div class="list-group-item">
<a href="<%=request.getContextPath()%>/dir/utilsIntranet/secretaria/intranet/escola/secretaria.html">Secretaria</a>
</div>
<baco:hasRole role="admin,all,services,administrativeCouncil,courseCoordinator,courseDirector,scientificCouncil,pedagogicCouncil">
 
<baco:hasRole role="ci">
<div class="block">
<div class="panel panel-primary">
<div class="panel-heading">Ferramentas de Gestão do CI</div>
<div class="panel-body">
<ul>
<li>Configurações Gerais (Por implementar)</li>
<li>Tarefas Agendadas (Por implementar)</li>
<li>Criar um Backup SQL Agora (Por Implementar)</li>
<baco:isModuleOn module="intranet">
<li>
<html:link target="_blank" action="/user/courseUnitControllerAdminFromServiceZone?dispatch=createIntranetFolders">
<bean:message key="intranet.create.folders"/>
</html:link>
</li>
</baco:isModuleOn>
<li><a href="<%=request.getContextPath()%>/user/configurationDirectories.do"><bean:message key="configuration.directories"/></a></li>
 
</ul>
 
</div>
</div>
</div>
</baco:hasRole>
<div class="block">
<div class="panel panel-primary">
<div class="panel-heading">Atalhos</div>
<div class="panel-body">
<ul>
<li>
<a href="<%=request.getContextPath()%>/dir/utilsIntranet/horarios/intranet/escola/horarios.html">Horários</a>
</li>
<li>
<a href="<%=request.getContextPath()%>/dir/utilsIntranet/calEscolar/public/portal/CL20102011.pdf">Calendário Escolar</a>
</li>
<li>
<a href="<%=request.getContextPath()%>/dir/utilsIntranet/secretaria/intranet/escola/secretaria.html">Secretaria</a>
</li>
</ul>
</div>
</div>
</div>
<baco:hasRole role="admin,all,services">
<div class="panel panel-primary">
<div class="panel-heading">Ferramentas Académicas</div>
<div class="panel-body">
<div class="list-group">
<baco:hasRole role="pedagogicCouncil">
<div class="list-group-item"><html:link action="/user/coursePedagogicContents"><bean:message key="course.pedagogic.contents.admin"/> </html:link></div>
</baco:hasRole>
<baco:isAdmin>
<div class="list-group-item"><html:link action="/admin/courseUnitsDeleteAdmin">Administração de Unidades Curriculares (Remoções)</html:link></div>
</baco:isAdmin>
<div class="list-group-item"><html:link action="/user/configurationGrades">Épocas de Avaliação</html:link></div>
<div class="list-group-item">Situação de Propinas de Alunos (Por implementar)</div>
<div class="list-group-item"><html:link action="/user/findProfile"><bean:message key="profile.search.user"/></html:link></div>
<div class="list-group-item"><html:link action="/user/startFindCourseUnitAdminFromServiceZone"><bean:message key="courseunit.search"/></html:link></div>
<div class="list-group-item"><html:link action="/user/courseComissions">Informação Adicional de Cursos</html:link></div>
<div class="list-group-item"><html:link action="/user/startSelectCourseFromServiceZone"><bean:message key="course.select"/></html:link></div>
</div>
</div>
</div>
</baco:hasRole>
<baco:hasRole role="ci">
<div class="panel panel-primary">
<div class="panel-heading">Ferramentas de Gestão do CI</div>
<div class="panel-body">
<div class="list-group">
<div class="list-group-item">Configurações Gerais (Por implementar)</div>
<div class="list-group-item">>Tarefas Agendadas (Por implementar)</div>
<div class="list-group-item">Criar um Backup SQL Agora (Por Implementar)</div>
<baco:isModuleOn module="intranet">
<div class="list-group-item">
<html:link target="_blank" action="/user/courseUnitControllerAdminFromServiceZone?dispatch=createIntranetFolders">
<bean:message key="intranet.create.folders"/>
</html:link>
</div>
</div>
</baco:isModuleOn>
<div class="list-group-item"><a href="<%=request.getContextPath()%>/user/configurationDirectories.do"><bean:message key="configuration.directories"/></a></div>
 
</div>
 
</div>
</div>
</baco:hasRole>
 
<baco:isModuleOn module="todos">
<jsp:include page="/user/home/todos.jsp"/>
</baco:isModuleOn>
</div>
<div class="col-md-6 col-sm-12 col-xs-12">
<div class="panel panel-primary">
<div class="panel-heading">Comunicar</div>
<div class="panel-body">
<div class="list-group">
 
</td>
</baco:hasRole>
<td class="column">
<baco:isModuleOn module="todos">
<jsp:include page="/user/home/todos.jsp"/>
</baco:isModuleOn>
<div class="block">
<div class="panel panel-primary">
<div class="panel-heading">Comunicar</div>
<div class="panel-body">
<ul>
 
<baco:isModuleOn module="todos">
<baco:hasRole role="admin,all,services,administrativeCouncil,courseCoordinator,courseDirector,scientificCouncil,pedagogicCouncil">
<li>
<html:link action="/user/startSubmitTodoAnnouncementFromServiceZone">
<bean:message key="submit.todo.announcement"/>
</html:link>
</li>
<baco:isModuleOn module="todos">
<baco:hasRole role="admin,all,services,administrativeCouncil,courseCoordinator,courseDirector,scientificCouncil,pedagogicCouncil">
<div class="list-group-item">
<html:link action="/user/startSubmitTodoAnnouncementFromServiceZone">
<bean:message key="submit.todo.announcement"/>
</html:link>
</div>
 
</baco:hasRole>
<baco:hasRole role="admin,all,services,sendMailMessages">
<li>
<html:link action="/user/startSubmitMessage">
<bean:message key="submit.todo.message"/>
</html:link>
</li>
</baco:hasRole>
</baco:isModuleOn>
</ul>
</baco:hasRole>
<baco:hasRole role="admin,all,services,sendMailMessages">
<div class="list-group-item">
<html:link action="/user/startSubmitMessage">
<bean:message key="submit.todo.message"/>
</html:link>
</div>
</baco:hasRole>
</baco:isModuleOn>
 
</div>
</div>
</div>
<jsp:include page="courseComission.jsp"/>
</td>
</tbody>
</table>
</div>
</div>
 
</div>
<!--
<div class="panel panel-primary">
<div class="panel-heading">Atalhos</div>
<div class="panel-body">
<div class="list-group">
 
</div>
</div>
</div>
-->
 
<jsp:include page="courseComission.jsp"/>
</div>
</div>
/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/src/web/user/data.jsp
New file
0,0 → 1,91
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ page import="pt.estgp.estgweb.domain.RepositoryFileVersion" %>
<%@ 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" %>
<%@ page import="pt.estgp.estgweb.Globals" %>
 
<html:html locale="true">
<head>
<title>Histórico de Ficheiros</title>
<jsp:include page="/layout/scripts.jsp"/>
</head>
 
 
<body class="small" marginwidth="0" marginheight="0" bgcolor="#ffffff" topmargin="0" leftmargin="0" onload="horizontal();" >
 
<div class="container">
<h1>Serviço de Histórico do Baco</h1>
<form action="data.jsp">
 
Colque aqui o identificador do Ficheiro: <input name="id"><br/>
<input type="submit">
</form>
 
<table class="tablesorterfiltered" border="1" style="border:1px solid black">
<thead>
<tr>
<th>Nome do Ficheiro</th>
<th>Content Type</th>
<th>Descrição</th>
<th>Tamanho Kb</th>
<th>Data</th>
</tr>
</thead>
<tbody>
 
<%
String id = request.getParameter("id");
if(id != null)
{
pt.utl.ist.berserk.logic.serviceManager.IServiceManager sm = pt.utl.ist.berserk.logic.serviceManager.ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{id};
//pt.estgp.estgweb.domain.RepositoryFileImpl view
// = (pt.estgp.estgweb.domain.RepositoryFileImpl)
// sm.execute(pt.estgp.estgweb.web.utils.RequestUtils.getRequester(request, response), "LoadRepositoryFileView", args, names);
jomm.dao.utils.HibernateUtils.getCurrentSession().beginTransaction();
pt.estgp.estgweb.domain.RepositoryFileImpl view = new pt.estgp.estgweb.services.data.RepositoryService().loadView(id);
if(view != null)
{
java.util.List<pt.estgp.estgweb.domain.RepositoryFileVersion> lista = new java.util.ArrayList<pt.estgp.estgweb.domain.RepositoryFileVersion>(view.getRepositoryFileVersions());
java.util.Collections.sort(lista,new java.util.Comparator<pt.estgp.estgweb.domain.RepositoryFileVersion>()
{
public int compare(RepositoryFileVersion o1, RepositoryFileVersion o2) {
return (int) (o2.getId() - o1.getId());
}
});
for(pt.estgp.estgweb.domain.RepositoryFileVersion version: lista)
{
 
%>
<tr>
<td><a href="<%=request.getContextPath()%>/repositoryStreamVersion/<%=version.getId()%>"><%=version.getName()%></a></td>
<td><%=version.getContentType()%></td>
<td><%=version.getDescription()%></td>
<td><%=(version.getSize()/1024)%></td>
<td><%=version.getSaveDate()%></td>
 
</tr>
<%
 
}
}
jomm.dao.utils.HibernateUtils.getCurrentSession().getTransaction().commit();
}
%>
</tbody>
</table>
 
<div id="footer">
<jsp:include page="/layout/footer.jsp"/>
<!-- Fundo -->
</div>
 
</div>
</body>
</html:html>
 
Property changes:
Added: svn:executable
+ *
/impl/libs.xml
44,6 → 44,9
<fileset dir="${common.lib.dir}/mysql">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${common.lib.dir}/oracle">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${common.lib.dir}/commons">
<include name="**/*.jar"/>
</fileset>
92,6 → 95,10
<fileset dir="${common.lib.dir}/json">
<include name="**/*.jar"/>
</fileset>
<!-- nao precisa de ir para o tomcat basta aqui para gerar mapas UML do Hibernate
<fileset dir="${common.lib.dir}/linguine">
<include name="**/*.jar"/>
</fileset>-->
</path>
 
 
/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;
}
 
}
/impl/build.properties
182,3 → 182,9
#Google Service Specific Configuration
 
ws.google.package=com.google.api.ws.clients
 
 
ORACLE_SIGES_URL
oracle.siges.url=jdbc:oracle:thin:@193.137.229.147:1521:SIGES11
oracle.siges.username=dummyChangeInLocal
oracle.siges.password=dummyChangeInLocal
/impl/build.xml
228,6 → 228,9
<fileset dir="${common.lib.dir}/mysql">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${common.lib.dir}/oracle">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${common.lib.dir}/commons">
<include name="**/*.jar"/>
</fileset>
428,6 → 431,11
<replacefilter token="@ws.siges.target.namespace@" value="${ws.siges.target.namespace}"/>
<replacefilter token="@intranet.setup.folders.file@" value="${build.dir.relative.intranet.setup.folders.file}"/>
<replacefilter token="@intranet.setup.folders.filename@" value="${intranet.setup.folders.filename}"/>
 
<replacefilter token="@oracle.siges.url@" value="${oracle.siges.url}"/>
<replacefilter token="@oracle.siges.username@" value="${oracle.siges.username}"/>
<replacefilter token="@oracle.siges.password@" value="${oracle.siges.password}"/>
 
</replace>
<replace file="${build.dir.classes}/${log4j.properties.filename}">
<replacefilter token="@log.file@" value="${log.file}"/>
566,7 → 574,34
</delete>
</target>
 
<!--
==========================================================================================
Generate Hibernate UML Diagrams
==========================================================================================
 
 
<property name="doc" location="build/ant/diagrams"/>
 
<property name="dot.exe" location="/usr/local/bin/dot" />
 
<taskdef
name="hbm2gif"
classname="com.oy.shared.lm.ant.HBMtoGIFTask"
classpathref="pathToToolsLib"
/>
 
<target name="generateHibernateUmlDiagram" depends="initDirs">
<mkdir dir="${doc}"/>
<hbm2gif
caption="XML file for launching Catalina 5.0.25 applications using Apache Ant."
colors="cyan, lightcyan, orange, black, black"
inFile="${hbm.dir}/pt/estgp/estgweb/domain/CourseUnit.hbm.xml"
dotFile="${doc}/CourseUnit.dot"
outFile="${doc}/CourseUnit.gif"
exeFile="${dot.exe}"
/>
</target>
-->
<!--
==========================================================================================
GENERATE WEBSERVICES JAXWS
645,4 → 680,5
</target>
 
 
 
</project>
/common/log4j/log4j-1.2.8.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/common/log4j/apache-log4j-extras-1.2.17.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/common/log4j/log4j-1.2.17.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/common/hibernate/log4j-1.2.8.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/common/hibernate/log4j-1.2.11.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/common/oracle/ojdbc6.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream