/impl/importRoutines.xml |
---|
29,4 → 29,12 |
<target name="setOfficeExtMainArea"> |
<java fork="true" classname="pt.estgp.estgweb.services.profile.SetUserAreaOfficeExtFromCSV" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
<target name="importPrograms"> |
<java fork="true" classname="pt.estgp.estgweb.domain.CourseUnitProgramImpl" classpath="${build.dir.classes}" classpathref="pathToToolsLib"> |
<arg value="APM.20.dez.12.xml"/> |
<arg value="true"/> |
</java> |
</target> |
</project> |
/impl/conf/language/MessageResourcesComunicationFolder.properties |
---|
New file |
0,0 → 1,12 |
################################################################################ |
# |
# ANNOUNCEMENTS MESSAGE RESOURCES |
# |
################################################################################ |
module.ComunicationFolder=Pastas de Comunicação |
comunicationfolder.name=Nome |
comunicationfolder.code=Code |
/impl/conf/language/MessageResourcesCourse.properties |
---|
20,8 → 20,8 |
course.importYear=Ano de Importação |
course.institutionalCode=Código de Instituição |
course.description=Descrição |
course.coordinator=Presidente do Departamento |
course.director=Director(a) de Curso |
course.coordinator=Coordenador de Curso |
course.director=Director de Departamento |
course.studies.plan=Plano de Estudos (XML válido no planoEstudos.xsd) |
course.studies.plan.users=Plano de Estudos |
course.studies.plan.not.available=Não disponivel |
77,7 → 77,7 |
course.pagina.nao.disponivel=De momento a página à qual acedeu não se encontra disponivel, pedimos desculpa por qualquer incómodo que isto lhe possa causar, a administração foi informada deste facto e irá resolver o problema o mais depressa possivel. |
courseunit.programfile.valid=programa <u>Aprovado</u> pela pela comissão de curso |
course.courseunit.program.validate.todo={0} Unidades por aprovar (programa) |
course.courseunit.program.validate.todo={0} Unidades com ficha curricular por aprovar. |
course.menu.home=Inicio |
course.menu.studiesplan=Plano de Estudos |
/impl/conf/language/MessageResources.properties |
---|
126,8 → 126,7 |
user.role.oldStudent=Antigos Alunos |
user.role.studentAssociation=Associação de Estudantes |
user.role.computerCenter=Centro Informático |
user.role.courseCoordinator=Coordenador |
user.role.courseDirector=Director de Curso |
user.role.courseDirector=Presidente de Departamento |
user.role.identifiersManager=Utilizador de Gestão de Identificadores |
user.role.identifiersCollectionCreator=Administrador de Colecções de Identificadores |
user.role.studentsID=Alunos de Informação e Documentação |
420,17 → 419,14 |
departamento=Departamento |
departamentos.all=Todos os departamentos |
departamento=Departamento |
departamentos=Departamentos |
user.role.validate.ei=Comissão de Curso de Engenharia Informática |
area.td=Departamento de Tecnologia e Design |
area.cesh=Departamento de Ciencias Empresariais Sociais e Humanas |
top.menu.area.td=Tecnologia e Design |
top.menu.area.cesh=Ciencias Empresariais Sociais e Humanas |
user.role.courseValidateProgramCET_TD=Comissão de Curso de CETS de TD |
user.role.courseValidateProgramEI=Comissão de Curso de EI |
user.role.courseValidateProgramEC=Comissão de Curso de EC |
443,7 → 439,9 |
user.role.courseValidateProgramMI=Comissão de Curso de MI |
user.role.courseValidateProgramEGPMEestranho=Comissão de Curso de EPGME |
user.role.courseValidatePrograms=Validação de Programas |
user.role.courseValidateProgramCET_CESH=Comissão de Curso de CETS de CESH |
user.role.courseValidateProgramAPM=Comissão de Curso de APM |
user.role.courseValidateProgramAA=Comissão de Curso de AA |
/impl/conf/language/MessageResourcesCourseUnits.properties |
---|
4,16 → 4,18 |
# |
################################################################################ |
module.CourseUnits=Unidades Curriculares |
course={0} > |
course={0} > |
courseunit={0} |
course.nav.without.arrow={0} |
course.nav.without.arrow={0} |
courseunit.security.not.implemented=Não implementado por razões de segurança |
courseunit.removed=Unidade Removida com sucesso |
courseunit.menu.unit.old.units=Anos anteriores |
courseunit.menu.unit.other.units=Outros Anos |
courseunit.menu.unit=Unidade |
courseunit.teachers=Corpo Docente |
courseunit.objectives=Objectivos da Unidade |
courseunit.programfile.invalid=O programa encontra-se submetido pela administração mas não está validado pela Comissão de Curso |
courseunit.programfilepath=Programa Curricular |
courseunit.programfilepath.not.available=O Programa Curricular não está disponivel |
courseunit.objectives.not.available=Os objectivos não estão disponiveis |
57,7 → 59,7 |
courseunit.teacher.situation.withNoTeachers=Sem Professor |
courseunit.teacher.situation.all=Todos |
courseunit.S1=1º Semestre |
courseunit.S2=2ª Semestre |
courseunit.S2=2ª Semestre |
courseunit.ALL=Todos os Semestres |
courseunit.assignement.delivered.date=Data de Entrega |
courseunit.assignement.delivered.date.first.version=Data de Entrega da Primeira Versão |
76,12 → 78,14 |
courseunit.assignement.deliver=Entregar Trabalho |
courseunit.search=Procurar Unidade Curricular |
courseunitwork.confirm.delete=Atenção: Todas as entregas de alunos serão também removidas. Pode Invalidar o trabalho para este não ficar visivel aos alunos e desta forma mantém a informação relativa a entregas. De certeza que pretende apagar o Trabalho selecionado? |
courseunit.assignement.deliver.sucess=Trabalho {0} entregue com sucesso |
courseunit.assignement.deliver.sucess=Trabalho {0} entregue com sucesso |
errors.courseunit.assignement.deliver.file=O Ficheiro que escolheu não existe ou estão vazio |
errors.courseunit.assignement.deliver.zip=Por favor escolha um ficheiro comprimido em formato ZIP |
errors.courseunit.assignement.file.type=Por favor escolha um ficheiro comprimido em formato ZIP |
courseunit.students=Estudantes |
courseunit.students.count=Total de estudantes inscritos |
courseunit.program=Ficha Curricular |
courseunit.edit.program=Editar Programa |
courseunit.assignement.deliver.time=Entregue |
courseunit.assignement.deliver.time.ok=Entregue a Horas |
112,7 → 116,7 |
courseunits.backups=Criar cópia de Segurança de todos das Unidades Curriculares em todos os cursos |
courseunits.backups.actual.year=Criar cópia de Segurança (apenas do ano corrente) de todos das Unidades Curriculares em todos os cursos |
courseunits.actual.year.backup=Backup do ano corrente |
courseunits.all.backup=Backup de todos os anos (Este serviço pode demorar alguns minutos a executar) |
courseunits.all.backup=Backup de todos os anos (Este serviço pode demorar alguns minutos a executar) |
123,22 → 127,45 |
courseunit.responsable=Professor responsável |
courseunits.contentsGrants=Permissões de Consulta dos Ficheiros de Conteúdos |
courseunits.contentsGrants.PUBLIC=PUBLICAS |
courseunits.contentsGrants.PRIVATE=PRIVADOS A ESTUDANTES E DOCENTES DA UNIDADE |
courseunits.contentsGrants.INTERNAL=COMUNIDADE ACADÉMICA |
courseunit.program.objectivos=Objetivos da aprendizagem (conhecimentos, aptidões e competências) a desenvolver pelos estudantes, operacionalização dos objetivos e medição do seu grau de cumprimento) |
courseunit.program.conteudosProgramaticos=Conteúdos |
courseunit.program.prerequisitos=Pré-requisitos |
courseunit.program.demonstracaoCoerenciaConteudosObjectivos=Demonstração da coerência dos conteúdos programáticos com os objectivos da unidade curricular |
courseunit.program.metodologiasEnsino=Metodologias de ensino e Aprendizagem |
courseunit.program.demonstracaoDaCoerenciaMetodologiasObjectivos=Demonstração da coerência das metodologias de ensino com os objectivos da aprendizagem da unidade curricular |
courseunit.program.lingua1=Língua de ensino |
courseunit.program.lingua2=Língua de ensino 2 |
courseunit.program.avaliacao=Avaliação <br/>[indicar os componentes d sistema de avaliação, tipo, matéria e peso de cada componente na classificação final] |
courseunit.program.alunosOrdinariosPorFrequencia=Avaliação por frequência |
courseunit.program.alunosOrdinariosPorExame=Avaliação por Exame |
courseunit.program.bibliografia=Bibliografia |
courseunit.program.bibliografiaPrincipal=Bibliografia Principal |
courseunit.program.bibliografiaComplementar=Bibliografia Complementar |
courseunit.program.avaliacao.especial=Alunos em mobilidade e alunos com estatuto especial |
courseunit.program.alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia=Avaliação por frequência |
courseunit.program.alunosMobilidadeAlunosComEstatutoEspecialPorExame=Avaliação por Exame |
courseunit.program.ects.title=ECTS/tempo de trabalho (horas) |
courseunit.program.ects=ECTS |
courseunit.program.ects.cargaHorariaTotal=Total |
courseunit.program.cargaHorariaT=T |
courseunit.program.cargaHorariaTP=TP |
courseunit.program.cargaHorariaPL=PL |
courseunit.program.cargaHorariaS=S |
courseunit.program.cargaHorariaTC=TC |
courseunit.program.cargaHorariaO=O |
courseunit.program.cargaHorariaOT=OT |
/impl/conf/WEB-INF/struts/struts-courseunits.xml |
---|
8,6 → 8,7 |
<form-beans> |
<form-bean type="pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm" name="CourseUnitsForm"/> |
<form-bean type="pt.estgp.estgweb.web.form.courseunits.CourseUnitProgramForm" name="CourseUnitProgramForm"/> |
</form-beans> |
<global-exceptions> |
23,7 → 24,7 |
<action path="/startTeste2" forward="page.separators.home"/> |
<action path="/startLoadCourseUnitProgram" forward="/courseUnitProgramController.do?dispatch=editProgram"/> |
<action path="/startLoadCourseUnitStudents" forward="/courseUnitController.do?dispatch=loadStudents"/> |
<action path="/startCourseUnitBlog" forward="/courseUnitController.do?dispatch=startBlog"/> |
<action path="/startLoadCourseUnitWorks" forward="/courseUnitController.do?dispatch=loadWorks"/> |
43,8 → 44,20 |
<forward name="load.students" path="page.load.courseunit.students"/> |
<forward name="load.teacher" path="page.load.courseunit.teacher"/> |
<forward name="load.student" path="page.load.courseunit.student"/> |
<forward name="edit.program" path="page.edit.courseunit.program"/> |
</action> |
<action path="/courseUnitProgramController" |
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsController" |
name="CourseUnitProgramForm" |
scope="request" |
parameter="dispatch" |
validate="false" |
input="page.welcome"> |
<forward name="load" path="page.load.courseunit"/> |
<forward name="edit.program" path="page.edit.courseunit.program"/> |
</action> |
<!--<action path="/user/startLoadCourseUnitFromHome" forward="page.load.courseunit.from.home"/>--> |
<action path="/user/startLoadCourseUnitRootFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadRoot&from=Home"/> |
/impl/conf/WEB-INF/struts/tiles-courseunits.xml |
---|
19,6 → 19,13 |
<put name="navigation" value="/user/courseunits/menu.jsp"/> |
<put name="body" value="/user/courseunits/courseunitworks.jsp"/> |
</definition> |
<definition name="page.edit.courseunit.program" extends="base.layout1"> |
<put name="title" value="Ficha da Unidade Curricular"/> |
<put name="topnav" value="/public/courseunits/topnavCourseUnitProgram.jsp"/> |
<put name="navigation" value="/user/courseunits/menu.jsp"/> |
<put name="body" value="/user/courseunits/courseunitProgram.jsp"/> |
</definition> |
<definition name="page.load.courseunit.blog" extends="base.layout1"> |
<put name="title" value="Blog da Unidade Curricular"/> |
<put name="topnav" value="/public/courseunits/topnavCourseUnitBlog.jsp"/> |
/impl/conf/app.properties |
---|
50,6 → 50,12 |
email.summary.subject.en=Sumário lançado em {0} |
email.unidade.edicao.subject.pt=Ficha em edição {0} |
email.unidade.edicao.subject.en=Unit in edition {0} |
email.unidade.editada.subject.pt=Ficha editada {0} |
email.unidade.editada.subject.en=Unit edited {0} |
email.unidade.validade.subject.pt=Ficha Validada {0} |
email.unidade.validada.subject.en=Unit validated {0} |
################################################## |
# Modules usage |
# |
179,11 → 185,11 |
user.role.77=courseValidateProgramEGPMEestranho |
user.role.78=courseValidatePrograms |
######################################################################### |
# |
# Modules |
/impl/conf/template/email/unidadeValidada_pt.txt |
---|
New file |
0,0 → 1,11 |
#Email unidade ficha em edicao |
Caro docente |
O BACO informa-o de que a ficha curricular da unidade de {0} |
foi aprovada pela comissão de curso |
Com os melhores cumprimentos |
--------------------------------------------- |
Escola Superior de Tecnologia e Gestão |
Instituto Politécnico de Portalegre |
http://www.estgp.pt |
/impl/conf/template/email/unidadeEditada_en.txt |
---|
New file |
0,0 → 1,11 |
#Email unidade ficha em edicao |
Caro membro da comissão de curso de {0} |
O BACO informa-o de que a ficha curricular da unidade de {1} |
foi editada |
Com os melhores cumprimentos |
--------------------------------------------- |
Escola Superior de Tecnologia e Gestão |
Instituto Politécnico de Portalegre |
http://www.estgp.pt |
/impl/conf/template/email/unidadeValidada_en.txt |
---|
New file |
0,0 → 1,11 |
#Email unidade ficha em edicao |
Dear teacher |
The courseunit program of {0} |
was approved by course comission |
Best Regards |
--------------------------------------------- |
Escola Superior de Tecnologia e Gestão |
Instituto Politécnico de Portalegre |
http://www.estgp.pt |
/impl/conf/template/email/unidadeEdicao_pt.txt |
---|
New file |
0,0 → 1,11 |
#Email unidade ficha em edicao |
Caro docente |
O BACO informa-o de que a ficha curricular da unidade de {0} |
se encontra disponivel para edição |
Com os melhores cumprimentos |
--------------------------------------------- |
Escola Superior de Tecnologia e Gestão |
Instituto Politécnico de Portalegre |
http://www.estgp.pt |
/impl/conf/template/email/unidadeEditada_pt.txt |
---|
New file |
0,0 → 1,11 |
#Email unidade ficha em edicao |
Caro membro da comissão de curso de {0} |
O BACO informa-o de que a ficha curricular da unidade de {1} |
foi editada |
Com os melhores cumprimentos |
--------------------------------------------- |
Escola Superior de Tecnologia e Gestão |
Instituto Politécnico de Portalegre |
http://www.estgp.pt |
/impl/conf/template/email/unidadeEdicao_en.txt |
---|
New file |
0,0 → 1,11 |
#Email unidade ficha em edicao |
Dear teacher |
The courseunit program of {0} |
is available for edition |
Best Regards |
--------------------------------------------- |
Escola Superior de Tecnologia e Gestão |
Instituto Politécnico de Portalegre |
http://www.estgp.pt |
/impl/conf/berserk/sd.xml |
---|
89,7 → 89,18 |
</filterChains> |
</service> |
<service> |
<name>LoadTeachers</name> |
<implementationClass>pt.estgp.estgweb.services.users.LoadUsersService</implementationClass> |
<description>Load user of some class</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>loadTeachers</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
</filterChains> |
</service> |
<!--URL Statistics--> |
<service> |
<name>UpdateUrlStatistics</name> |
751,6 → 762,19 |
<chain name="OwnersEdit"/> |
</filterChains> |
</service> |
<service> |
<name>DeleteCourseUnit</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.UpdateCourseUnitService</implementationClass> |
<description>Update course unit objectives and program file</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>delete</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="Supers"/> |
</filterChains> |
</service> |
<service> |
<name>LoadCourseUnit</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitService</implementationClass> |
761,7 → 785,31 |
<chain name="Session"/> |
</filterChains> |
</service> |
<service> |
<name>LoadCourseUnitViewAndCourse</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitService</implementationClass> |
<description>Load course unit</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>loadCourseUnitViewAndCourse</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
</filterChains> |
</service> |
<service> |
<name>SaveCourseUnitProgram</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.SaveCourseUnitProgram</implementationClass> |
<description>Save course unit program</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
</filterChains> |
</service> |
<service> |
<name>LoadCourseUnitsBySigesCodes</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadCourseUnitsBySigesCodesService</implementationClass> |
<description>Load course old units</description> |
/impl/conf/berserk/berserk.properties |
---|
1,6 → 1,7 |
#WARNING: Be carefull with spaces (' '). Please be sure that all classes names ends with a new line ! |
#This is the berserk configuration file |
#If you don't provide a configuration file in your application classpath, default options will be used |
#To make editable rows more visible I added a <---- int the previous row. |
/impl/conf/berserk/fcd.xml |
---|
36,7 → 36,7 |
</filterChain> |
<filterChain> |
<name>DirectorsCoordinators</name> |
<expression>AuthenticatedUsers && (RoleUsers("courseDirector") || RoleUsers("courseCoordinator"))</expression> |
<expression>AuthenticatedUsers</expression> |
<description>Validate if a user is coordinator or director</description> |
<invocationTiming>1</invocationTiming> |
<filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass> |
/impl/src/java/jomm/dao/utils/HibernateUtils.java |
---|
1,17 → 1,16 |
package jomm.dao.utils; |
import org.apache.log4j.Logger; |
import org.hibernate.SessionFactory; |
import org.hibernate.Transaction; |
import org.hibernate.cfg.Configuration; |
import org.hibernate.classic.Session; |
import org.apache.log4j.Logger; |
import java.sql.SQLException; |
import pt.estgp.estgweb.domain.Course; |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
import pt.estgp.estgweb.domain.dao.impl.CourseDao; |
import java.sql.SQLException; |
public class HibernateUtils implements Runnable{ |
// private static Session session; |
/impl/src/java/pt/estgp/estgweb/utils/StringsUtils.java |
---|
38,4 → 38,34 |
return l; |
} |
//TODO ARRANJAR ISTO |
public static String getNormalizedName(String nome) |
{ |
try{ |
if(nome != null) |
{ |
String[] partes = nome.split(" "); |
StringBuilder sb = new StringBuilder(); |
for(String n : partes) |
{ |
n = n.toLowerCase(); |
n = (""+n.charAt(0)).toUpperCase() + n.substring(1); |
sb.append(n).append(" "); |
} |
return sb.toString().trim(); |
} |
return nome; |
}catch(Exception e) |
{ |
return nome; |
} |
} |
public static void main(String [] args) |
{ |
System.out.println(getNormalizedName("JORGE MIGUEL MACHADO")); |
} |
} |
/impl/src/java/pt/estgp/estgweb/Globals.java |
---|
291,6 → 291,25 |
public static final String EMAIL_NEW_GRADES_TEMPLATE_PT = "newGrades_pt.txt"; |
public static final String EMAIL_NEW_GRADES_TEMPLATE_EN = "newGrades_en.txt"; |
public static final String EMAIL_UNDADE_EDICAO_TEMPLATE_PT = "unidadeEdicao_pt.txt"; |
public static final String EMAIL_UNDADE_EDICAO_TEMPLATE_EN = "unidadeEdicao_en.txt"; |
public static final String EMAIL_UNDADE_EDITADA_TEMPLATE_PT = "unidadeEditada_pt.txt"; |
public static final String EMAIL_UNDADE_EDITADA_TEMPLATE_EN = "unidadeEditada_en.txt"; |
public static final String EMAIL_UNDADE_VALIDADA_TEMPLATE_PT = "unidadeValidada_pt.txt"; |
public static final String EMAIL_UNDADE_VALIDADA_TEMPLATE_EN = "unidadeValidada_en.txt"; |
public static final String EMAIL_UNDADE_EDICAO_SUBJECT_PT = "email.unidade.edicao.subject.pt"; |
public static final String EMAIL_UNDADE_EDICAO_SUBJECT_EN = "email.unidade.edicao.subject.en"; |
public static final String EMAIL_UNDADE_EDITADA_SUBJECT_PT = "email.unidade.editada.subject.pt"; |
public static final String EMAIL_UNDADE_EDITADA_SUBJECT_EN = "email.unidade.editada.subject.en"; |
public static final String EMAIL_UNDADE_VALIDADA_SUBJECT_PT = "email.unidade.validade.subject.pt"; |
public static final String EMAIL_UNDADE_VALIDADA_SUBJECT_EN = "email.unidade.validada.subject.en"; |
public static final String EMAIL_SUMMARY_TEMPLATE_PT = "summary_pt.txt"; |
public static final String EMAIL_SUMMARY_TEMPLATE_EN = "summary_en.txt"; |
/impl/src/java/pt/estgp/estgweb/services/courseunits/DirectedCoordinatedUnitsService.java |
---|
1,14 → 1,23 |
package pt.estgp.estgweb.services.courseunits; |
import org.apache.fop.apps.FOPException; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.enums.LangEnum; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.views.CourseView; |
import pt.estgp.estgweb.services.email.EMAILJob; |
import pt.estgp.estgweb.services.email.SendEmailService; |
import pt.estgp.estgweb.services.jobs.JobScheduleService; |
import pt.estgp.estgweb.utils.AreasBelongUtils; |
import pt.estgp.estgweb.utils.CourseViewComparator; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.utils.AreasBelongUtils; |
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import javax.xml.transform.TransformerException; |
import java.io.IOException; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.List; |
20,6 → 29,8 |
*/ |
public class DirectedCoordinatedUnitsService implements IService |
{ |
private static final Logger logger = Logger.getLogger(DirectedCoordinatedUnitsService.class); |
public DirectedCoordinatedCourses loadForUserSession(String importYear, UserSession userSession) |
{ |
return loadForUser(userSession.getUser().getId(),importYear, userSession); |
99,17 → 110,17 |
} |
/** |
* If is a student can see only his course |
// ALTERACAO PARA TODOS VEREM TODOS OS PROGRAMAS |
// ALTERACAO PARA TODOS VEREM TODOS OS PROGRAMAS |
if (userSession.getUser() != null && userSession.getUser() instanceof Student) |
{ |
StudentImpl sigesUser = (StudentImpl) userSession.getUser(); |
if (sigesUser.getSubscribedUnits() != null && sigesUser.getSubscribedUnits().size() > 0) |
{ |
Course course = sigesUser.getSubscribedUnits().iterator().next().getCourse(); |
courseId = course.getId(); |
} |
} |
if (userSession.getUser() != null && userSession.getUser() instanceof Student) |
{ |
StudentImpl sigesUser = (StudentImpl) userSession.getUser(); |
if (sigesUser.getSubscribedUnits() != null && sigesUser.getSubscribedUnits().size() > 0) |
{ |
Course course = sigesUser.getSubscribedUnits().iterator().next().getCourse(); |
courseId = course.getId(); |
} |
} |
*/ |
List<Course> courses; |
211,8 → 222,7 |
} |
} |
public DirectedCoordinatedCourses update(DirectedCoordinatedCourses directedCoordinatedCourses, UserSession userSession) |
{ |
public DirectedCoordinatedCourses update(DirectedCoordinatedCourses directedCoordinatedCourses, UserSession userSession) throws NotAuthorizedException, TransformerException, IOException, FOPException { |
int counter = 0; |
for(CourseView courseView: directedCoordinatedCourses.getMerge()) |
{ |
222,12 → 232,13 |
// if(userSession.getUser().getId() == c.getCoordinator().getId()) |
if(courseView.getId() == 2) |
System.out.println(courseView.getValidationRole()); |
if(userSession.getUser().hasRole(c.getValidationRole())) //NOVO para validação por programas |
if(userSession.getUser().isAdmin() || userSession.getUser().hasRole("courseValidatePrograms") || userSession.getUser().hasRole(c.getValidationRole())) //NOVO para validação por programas |
{ |
counter+=updateList(courseView.getCourseUnitsWithProgramCheckedS1()); |
counter+=updateList(courseView.getCourseUnitsWithProgramCheckedS2()); |
counter+=updateList(courseView.getCourseUnitsWithProgramNotCheckedS1()); |
counter+=updateList(courseView.getCourseUnitsWithProgramNotCheckedS2()); |
counter+=updateList(courseView.getCourseUnitsWithProgramCheckedS1(),userSession); |
counter+=updateList(courseView.getCourseUnitsWithProgramCheckedS2(),userSession); |
counter+=updateList(courseView.getCourseUnitsWithProgramNotCheckedS1(),userSession); |
counter+=updateList(courseView.getCourseUnitsWithProgramNotCheckedS2(),userSession); |
} |
} |
} |
235,27 → 246,102 |
return directedCoordinatedCourses; |
} |
private int updateList(List<CourseUnitView> views) |
{ |
private int updateList(List<CourseUnitView> views, UserSession usession) throws NotAuthorizedException, TransformerException, IOException, FOPException { |
int counter = 0; |
for(CourseUnitView courseUnitView: views) |
{ |
if(courseUnitView != null && courseUnitView.getId()>0) |
{ |
if(courseUnitView.getProgramStreamId() != null && courseUnitView.getProgramStreamId().length() > 0) |
{ |
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().load(courseUnitView.getId()); |
if(courseUnit.isValidProgram() != courseUnitView.isValidProgram()) |
if(usession.getUser().isAdmin() || usession.getUser().hasRole("courseValidatePrograms") || usession.getUser().hasRole(courseUnit.getCourse().getValidationRole())) |
{ |
courseUnit.setValidProgram(courseUnitView.isValidProgram()); |
counter++; |
if(courseUnit.isValidProgram() != courseUnitView.isValidProgram()) |
{ |
courseUnit.setValidProgram(courseUnitView.isValidProgram()); |
counter++; |
new SaveCourseUnitProgram().createPdf(courseUnit,null); |
if(courseUnitView.isValidProgram()) |
sendNotificationsValidadaInterestedPeople(courseUnit,usession); |
else |
sendNotificationsEditionInterestedPeople(courseUnit,usession); |
} |
} |
else |
{ |
throw new NotAuthorizedException("Não pode editar estado da unidade " + courseUnit.getCode()); |
} |
} |
} |
} |
return counter; |
} |
public static void sendNotificationsValidadaInterestedPeople(CourseUnit courseUnit,UserSession u) |
{ |
try{ |
SendEmailService sendEmailService = new SendEmailService(); |
List<String> emails = getEmailJobNotifications(courseUnit); |
EMAILJob emailJob = new EMAILJob(sendEmailService.getUnidadeValidadaEmail(emails,courseUnit,LangEnum.PORTUGUESE)); |
JobScheduleService.getInstance().scheduleNow(emailJob,"New Notification EMAIL unit state changed to courseComission and teachers " ,u); |
}catch(Throwable t) |
{ |
logger.error(t,t); |
} |
} |
public static void sendNotificationsEditionInterestedPeople(CourseUnit courseUnit,UserSession u) |
{ |
try{ |
SendEmailService sendEmailService = new SendEmailService(); |
List<String> emails = getEmailJobNotifications(courseUnit); |
EMAILJob emailJob = new EMAILJob(sendEmailService.getUnidadeEdicaoEmail(emails,courseUnit,LangEnum.PORTUGUESE)); |
JobScheduleService.getInstance().scheduleNow(emailJob,"New Notification EMAIL unit state changed to courseComission and teachers " ,u); |
}catch(Throwable t) |
{ |
logger.error(t,t); |
} |
} |
public static void sendNotificationsEditedInterestedPeople(CourseUnit courseUnit,UserSession u) |
{ |
try{ |
SendEmailService sendEmailService = new SendEmailService(); |
List<String> emails = getEmailJobNotifications(courseUnit); |
EMAILJob emailJob = new EMAILJob(sendEmailService.getUnidadeEditadaEmail(emails,courseUnit,LangEnum.PORTUGUESE)); |
JobScheduleService.getInstance().scheduleNow(emailJob,"New Notification EMAIL unit state changed to courseComission and teachers " ,u); |
}catch(Throwable t) |
{ |
logger.error(t,t); |
} |
} |
public static List<String> getEmailJobNotifications(CourseUnit courseUnit) { |
List<String> emails = DaoFactory.getCourseUnitDaoImpl().getTeachersEmails(courseUnit.getId()); |
if(emails == null) |
emails = new ArrayList<String>(); |
if(courseUnit.getCourse().getCoordinator() != null && courseUnit.getCourse().getCoordinator().getEmail()!=null) |
emails.add(courseUnit.getCourse().getCoordinator().getEmail()); |
if(courseUnit.getResponsableTeacher() != null && courseUnit.getResponsableTeacher().getEmail() != null && !emails.contains(courseUnit.getResponsableTeacher().getEmail())) |
{ |
emails.add(courseUnit.getResponsableTeacher().getEmail()); |
} |
List<User> courseComission = DaoFactory.getUserDaoImpl().loadRoleUsers(courseUnit.getCourse().getValidationRole()); |
for(User cc: courseComission) |
{ |
if(cc.getEmail() != null) |
emails.add(cc.getEmail()); |
} |
return emails; |
} |
public static enum TeachersSituationEnum |
{ |
withTeachers, |
/impl/src/java/pt/estgp/estgweb/services/courseunits/SaveCourseUnitProgram.java |
---|
New file |
0,0 → 1,322 |
package pt.estgp.estgweb.services.courseunits; |
import jomm.utils.PdfUtils; |
import org.apache.fop.apps.FOPException; |
import org.apache.log4j.Logger; |
import org.dom4j.*; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.CourseUnitProgramView; |
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
import pt.estgp.estgweb.services.data.RepositoryService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.utils.Dom4jUtil; |
import pt.estgp.estgweb.utils.StringsUtils; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import javax.xml.transform.TransformerException; |
import javax.xml.transform.dom.DOMSource; |
import java.io.File; |
import java.io.FileInputStream; |
import java.io.FileOutputStream; |
import java.io.IOException; |
import java.text.SimpleDateFormat; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.List; |
import java.util.Map; |
/* |
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt |
* |
* |
* Created at 17/Out/2003 , 23:45:24 |
* |
*/ |
/** |
* @author Jorge Machado |
* |
* |
* Created at 17/Out/2003 , 23:45:24 |
* |
*/ |
public class SaveCourseUnitProgram implements IService |
{ |
RepositoryService repositoryService = new RepositoryService(); |
LoadCourseUnitAnnouncements loadCourseUnitAnnouncements = new LoadCourseUnitAnnouncements(); |
private static final Logger logger = Logger.getLogger(SaveCourseUnitProgram.class); |
public CourseUnitProgramView run(CourseUnitProgramView cupv, Long coursUnitId, UserSession usession) throws ServiceException, TransformerException, IOException, FOPException { |
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(coursUnitId); |
CourseUnitProgram program = c.getCourseUnitProgram(); |
if(program == null) |
{ |
program = new CourseUnitProgramImpl(); |
DaoFactory.getCourseUnitProgramDaoImpl().save(program); |
program.setCourseUnitProgramPart2(new CourseUnitProgramPart2Impl()); |
DaoFactory.getCourseUnitProgramPart2DaoImpl().save(program.getCourseUnitProgramPart2()); |
c.setCourseUnitProgram(program); |
} |
// |
if(usession.getUser().isSuperuserOrAdmin()) |
{ |
cupv.persistViewInObjectAdministrator(program); |
cupv.persistViewInObjectCoordinator(program); |
cupv.persistViewInObjectTeacher(program); |
} |
if(usession.getUser() instanceof Teacher && (((Teacher)(usession.getUser())).isTeacherOfCourseUnit(c.getId(),true))) |
{ |
cupv.persistViewInObjectTeacher(program); |
} |
if(usession.getUser() instanceof Teacher |
&& (((usession.getUser())).hasRole(c.getCourse().getValidationRole()) |
|| |
((usession.getUser()) == c.getCourse().getCoordinator())) |
) |
{ |
cupv.persistViewInObjectCoordinator(program); |
} |
List<String> errors = new ArrayList<String>(); |
createPdf(c,errors,usession); |
if(usession.getUser() instanceof Teacher) |
DirectedCoordinatedUnitsService.sendNotificationsEditedInterestedPeople(c,usession); |
else |
{ |
logger.info("Nao vai informar docentes"); |
} |
return cupv; |
} |
public void createPdf(CourseUnit cu, List<String> errors) throws IOException, TransformerException, FOPException { |
createPdf(cu,errors,null); |
} |
public void createPdf(CourseUnit cu, List<String> errors,UserSession u) throws IOException, TransformerException, FOPException { |
((CourseUnitProgramImpl)cu.getCourseUnitProgram()).consistNullValues(); |
Document responseDoc = DocumentHelper.createDocument(); |
Namespace namespace = new Namespace("uc", "http://baco.estgp.pt/schemas/courseunits/program/"); |
responseDoc.setXMLEncoding("ISO-8859-1"); |
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); |
Element curriculum = responseDoc.addElement(new QName("UnidadeCurricular", namespace)); |
curriculum.addAttribute(new QName("data",namespace),sdf.format(new java.util.Date())); |
Element curso = curriculum.addElement(new QName("curso",namespace)); |
if(cu.getCourseName() == null) |
{ |
if(cu.getCourse() == null) |
{ |
System.out.println("Unidade nao tem curso"); |
curso.setText("Desactualizado"); |
} |
else |
{ |
System.out.println("Unidade nao tem nome no curso a actualizar com " + cu.getCourse().getName()); |
curso.setText(cu.getCourse().getName()); |
cu.setCourseName(cu.getCourse().getName()); |
} |
} |
else |
curso.setText(cu.getCourseName()); |
Element anoLectivo = curriculum.addElement(new QName("anoLectivo",namespace)); |
anoLectivo.setText(DatesUtils.getImportYearPrograms(cu.getImportYear())); |
Element unidadeCurricular = curriculum.addElement(new QName("unidadeCurricular",namespace)); |
unidadeCurricular.setText(cu.getName()); |
if(cu.getResponsableTeacher() != null) |
{ |
Element responsavel = curriculum.addElement(new QName("responsavel",namespace)); |
responsavel.setText(cu.getResponsableTeacher().getName()); |
Element responsavelEmail = curriculum.addElement(new QName("responsavelEmail",namespace)); |
if(cu.getResponsableTeacher().getEmail()==null) |
{ |
logger.warn("Teacher don't has email: " + cu.getResponsableTeacher().getSigesCode() + " - " + cu.getResponsableTeacher().getName()); |
try { |
Thread.sleep(3000); |
} catch (InterruptedException e) { |
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. |
} |
responsavelEmail.setText(""); |
} |
else |
responsavelEmail.setText(cu.getResponsableTeacher().getEmail()); |
} |
Element apresentacaoObjectivos = curriculum.addElement(new QName("objetivosDaAprendizagem",namespace)); |
apresentacaoObjectivos.setText(cu.getCourseUnitProgram().getCourseUnitProgramPart2().getObjectivos()); |
int docenteNumber = 1; |
for(Teacher t : cu.getTeachers()) |
{ |
Element codigoSIGESDocente1 = curriculum.addElement(new QName("codigoSIGESDocente" + docenteNumber,namespace)); |
codigoSIGESDocente1.setText(t.getSigesCode()+""); |
Element outroDocente1 = curriculum.addElement(new QName("outroDocente" + docenteNumber,namespace)); |
outroDocente1.setText(StringsUtils.getNormalizedName(t.getName())); |
Element docenteEmail1 = curriculum.addElement(new QName("docenteEmail" + docenteNumber,namespace)); |
if(t.getEmail()==null) |
{ |
logger.warn("Teacher don't has email: " + t.getSigesCode() + " - " + t.getName()); |
try { |
Thread.sleep(3000); |
} catch (InterruptedException e) { |
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. |
} |
docenteEmail1.setText(""); |
} |
else |
docenteEmail1.setText(t.getEmail()); |
docenteNumber++; |
} |
Element conteudosProgramaticos = curriculum.addElement(new QName("conteudosProgramaticos",namespace)); |
conteudosProgramaticos.setText(cu.getCourseUnitProgram().getCourseUnitProgramPart2().getConteudos()); |
Element demonstracaoCoerenciaConteudosObjectivos = curriculum.addElement(new QName("demonstracaoCoerenciaConteudosObjectivos",namespace)); |
demonstracaoCoerenciaConteudosObjectivos.setText(cu.getCourseUnitProgram().getCourseUnitProgramPart2().getDemonstracaoCoerenciaConteudos()); |
Element metodologiasEnsino = curriculum.addElement(new QName("metodologiasEnsino",namespace)); |
metodologiasEnsino.setText(cu.getCourseUnitProgram().getCourseUnitProgramPart2().getMetodologiasEnsino()); |
Element alunosOrdinariosPorFrequencia = curriculum.addElement(new QName("alunosOrdinariosPorFrequencia",namespace)); |
alunosOrdinariosPorFrequencia.setText(cu.getCourseUnitProgram().getCourseUnitProgramPart2().getAvaliacaoOrdinariosFrequencia()); |
Element alunosOrdinariosPorExame = curriculum.addElement(new QName("alunosOrdinariosPorExame",namespace)); |
alunosOrdinariosPorExame.setText(cu.getCourseUnitProgram().getCourseUnitProgramPart2().getAvaliacaoOrdinariosExame()); |
Element alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia = curriculum.addElement(new QName("alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia",namespace)); |
alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia.setText(cu.getCourseUnitProgram().getCourseUnitProgramPart2().getAvaliacaoEspeciaisFrequencia()); |
Element alunosMobilidadeAlunosComEstatutoEspecialPorExame = curriculum.addElement(new QName("alunosMobilidadeAlunosComEstatutoEspecialPorExame",namespace)); |
alunosMobilidadeAlunosComEstatutoEspecialPorExame.setText(cu.getCourseUnitProgram().getCourseUnitProgramPart2().getAvaliacaoEspeciaissExame()); |
Element demonstracaoDaCoerenciaMetodologiasObjectivos = curriculum.addElement(new QName("demonstracaoDaCoerenciaMetodologiasObjectivos",namespace)); |
demonstracaoDaCoerenciaMetodologiasObjectivos.setText(cu.getCourseUnitProgram().getCourseUnitProgramPart2().getDemonstracaoObjectivosMetodologia()); |
Element bibliografiaPrincipal = curriculum.addElement(new QName("bibliografiaPrincipal",namespace)); |
bibliografiaPrincipal.setText(cu.getCourseUnitProgram().getBibliografia()); |
Element bibliografiaComplementar = curriculum.addElement(new QName("bibliografiaComplementar",namespace)); |
bibliografiaComplementar.setText(cu.getCourseUnitProgram().getBibliografiaComplementar()); |
Element adaptacaoMetodologiasObjectivos = curriculum.addElement(new QName("adaptacaoMetodologiasObjectivos",namespace)); |
adaptacaoMetodologiasObjectivos.setText(cu.getCourseUnitProgram().getAdaptacaoObjectivosMetodologia()); |
Element verificacaoCargaECTS = curriculum.addElement(new QName("verificacaoCargaECTS",namespace)); |
verificacaoCargaECTS.setText(cu.getCourseUnitProgram().getDemonstracaoCargaEcts()); |
Element avaliacaoFuncaoObjectivos = curriculum.addElement(new QName("avaliacaoFuncaoObjectivos",namespace)); |
avaliacaoFuncaoObjectivos.setText(cu.getCourseUnitProgram().getGarantiaAvaliacaoFuncaObjectivos()); |
Element metodologiasFacilitamParticipacaoCientificas = curriculum.addElement(new QName("metodologiasFacilitamParticipacaoCientificas",namespace)); |
metodologiasFacilitamParticipacaoCientificas.setText(cu.getCourseUnitProgram().getMetodologiasActividadeCientifica()); |
Element ects = curriculum.addElement(new QName("ects",namespace)); |
ects.setText(cu.getCourseUnitProgram().getEcts()); |
Element preRequisitos = curriculum.addElement(new QName("preRequisitos",namespace)); |
preRequisitos.setText(cu.getCourseUnitProgram().getPrerequisitos()); |
Element obrigatoria = curriculum.addElement(new QName("obrigatoria",namespace)); |
obrigatoria.setText(cu.getCourseUnitProgram().getObrigatoria()); |
Element lingua1 = curriculum.addElement(new QName("lingua1",namespace)); |
lingua1.setText(cu.getCourseUnitProgram().getLingua1()); |
Element lingua2 = curriculum.addElement(new QName("lingua2",namespace)); |
lingua2.setText(cu.getCourseUnitProgram().getLingua1()); |
Element cargaHorariaT = curriculum.addElement(new QName("cargaHorariaT",namespace)); |
cargaHorariaT.setText(cu.getCourseUnitProgram().getCargaHorariaT()); |
Element cargaHorariaTP = curriculum.addElement(new QName("cargaHorariaTP",namespace)); |
cargaHorariaTP.setText(cu.getCourseUnitProgram().getCargaHorariaTP()); |
Element cargaHorariaPL = curriculum.addElement(new QName("cargaHorariaPL",namespace)); |
cargaHorariaPL.setText(cu.getCourseUnitProgram().getCargaHorariaPL()); |
Element cargaHorariaS = curriculum.addElement(new QName("cargaHorariaS",namespace)); |
cargaHorariaS.setText(cu.getCourseUnitProgram().getCargaHorariaS()); |
Element cargaHorariaTC = curriculum.addElement(new QName("cargaHorariaTC",namespace)); |
cargaHorariaTC.setText(cu.getCourseUnitProgram().getCargaHorariaTC()); |
Element cargaHorariaO = curriculum.addElement(new QName("cargaHorariaO",namespace)); |
cargaHorariaO.setText(cu.getCourseUnitProgram().getCargaHorariaO()); |
Element cargaHorariaOT = curriculum.addElement(new QName("cargaHorariaOT",namespace)); |
cargaHorariaOT.setText(cu.getCourseUnitProgram().getCargaHorariaOT()); |
Element cargaHorariaTotal = curriculum.addElement(new QName("cargaHorariaTotal",namespace)); |
cargaHorariaTotal.setText(cu.getCourseUnitProgram().getCargaHorariaTotal()); |
// Dom4jUtil.writeSout(responseDoc); |
System.out.println(""); |
String path = Globals.TMP_DIR + File.separator + cu.getCode() + "-" + cu.getName() + ".pdf"; |
FileOutputStream teste = new FileOutputStream(path); |
Map<String,Object> params = new HashMap<String,Object>(); |
params.put("site", Globals.SITE_URL); |
if(cu.isValidProgram()) |
params.put("validadoCC", "true"); |
else |
params.put("validadoCC", "false"); |
if(u != null && u.getUser() != null) |
params.put("revisor", u.getUser().getName()); |
PdfUtils.createPdfFromXml(new DOMSource(Dom4jUtil.toW3c(responseDoc)), "pt/estgp/estgweb/services/courseunits/courseunitprogram.fo.xsl", teste,params); |
teste.flush(); |
teste.close(); |
RepositoryService repositoryService = new RepositoryService(); |
User owner; |
if(cu.getTeachers() != null && cu.getTeachers().size() > 0) |
owner = cu.getTeachers().iterator().next(); |
else |
owner = DaoFactory.getUserDaoImpl().load(new Long(1)); |
if(owner.getUsername() == null) |
{ |
errors.add("Docente: " + owner.getName() + " ( " + owner.getId() + " ) don't have username check that situation"); |
// owner.setUsername("UKNOWN"); |
} |
if(cu.getProgramStreamId() == null) |
{ |
String identifier = repositoryService.storeRepositoryFile(new FileInputStream(path), "application/pdf", "pdf",((int) new File(path).length()), cu.getCode() + ".pdf", "courseunit.program.description" + cu.getName(), ResourceAccessControlEnum.publicDomain,owner); |
cu.setProgramStreamId(identifier); |
} |
else |
{ |
repositoryService.updateRepositoryFile(cu.getProgramStreamId(), new FileInputStream(path), "application/pdf", "pdf", ((int)new File(path).length()),cu.getCode() + ".pdf", "courseunit.program.description " + cu.getName(), ResourceAccessControlEnum.publicDomain); |
} |
cu.setObjectives(cu.getCourseUnitProgram().getCourseUnitProgramPart2().getObjectivos()); |
//Obrigar a ser falso |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/courseunitprogram.fo.xsl |
---|
2,7 → 2,9 |
<xsl:stylesheet version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" |
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
xmlns:uc="http://baco.estgp.pt/schemas/courseunits/program/"> |
<xsl:param name="site">http://localhost/bacoTESTE</xsl:param> |
<xsl:param name="revisor">automático</xsl:param> |
<xsl:param name="validadoCC">false</xsl:param> |
<xsl:template match="/"> |
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> |
<fo:layout-master-set> |
60,8 → 62,17 |
<fo:table-row> |
<fo:table-cell > |
<fo:block> |
<fo:external-graphic height="auto" width="auto" |
content-height="30"> |
<!--<xsl:attribute name="src">url('http://www.ipportalegre.pt/imagens/Logos/ESTG/Logotipo%20ESTG.jpg')</xsl:attribute>--> |
<xsl:attribute name="src">url('<xsl:value-of select="$site"/>/imgs/logoestg.gif')</xsl:attribute> |
</fo:external-graphic> |
</fo:block> |
<xsl:if test="$validadoCC = 'false'"> |
<fo:block font-size="20pt"> |
(Documento ainda não validado pela Comissão de Curso) |
</fo:block> |
</xsl:if> |
</fo:table-cell> |
</fo:table-row> |
76,34 → 87,36 |
<fo:static-content flow-name="footer"> |
<fo:table width="100%" table-layout="fixed" border-top="1px solid black" font-size="6.5pt" > |
<fo:table-column column-width="20%"/> |
<fo:table-column column-width="80%" /> |
<fo:table-column column-width="20%"/> |
<fo:table-column column-width="80%" /> |
<fo:table-body> |
<fo:table-row> |
<fo:table-cell padding-top="3pt"> |
<fo:block> |
<xsl:value-of select="//uc:UnidadeCurricular/@uc:data"/> / Página <fo:page-number/> |
</fo:block> |
<fo:block font-size="5pt"> |
ESTG.SA.23-Rev.0 |
</fo:block> |
<fo:table-body> |
<fo:table-row> |
<fo:table-cell padding-top="3pt"> |
<fo:block > |
Revisto a <xsl:value-of select="//uc:UnidadeCurricular/@uc:data"/> por <xsl:value-of select="$revisor"/> / Página <fo:page-number/> |
</fo:block> |
<fo:block font-size="5pt"> |
ESTG.SA.23-Rev.1 |
</fo:block> |
</fo:table-cell> |
<fo:table-cell padding-top="3pt" > |
<fo:block font-size="6pt" text-align="right"> |
http://www.estgp.pt | gerado pela plataforma baco® 2012 |
</fo:block> |
</fo:table-cell> |
</fo:table-row> |
</fo:table-body> |
</fo:table> |
</fo:table-cell> |
<fo:table-cell padding-top="3pt" > |
<fo:block font-size="6pt" text-align="right"> |
http://www.estgp.pt | gerado pela plataforma baco® 2012 |
</fo:block> |
</fo:table-cell> |
</fo:table-row> |
</fo:table-body> |
</fo:table> |
</fo:static-content> |
<fo:flow flow-name="body"> |
<fo:block> |
<xsl:apply-templates select="//uc:UnidadeCurricular"/> |
</fo:block> |
</fo:flow> |
154,49 → 167,416 |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Ano Lectivo</xsl:with-param> |
<xsl:with-param name="label2"></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:anoLectivo"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Curso</xsl:with-param> |
<xsl:with-param name="label2"></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:curso"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Unidade Curricular</xsl:with-param> |
<xsl:with-param name="label2"></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:unidadeCurricular"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Responsável</xsl:with-param> |
<xsl:with-param name="label2">[nome completo e e-mail]</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:responsavel"/> / <xsl:value-of select="//uc:responsavelEmail"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label">Objetivos da aprendizagem (conhecimentos, apetidões e competências) a desenvolver pelos estudantes, operacionalização dos objetivos e medição do seu grau de cumprimento)</xsl:with-param> |
<xsl:with-param name="label">Objetivos da aprendizagem (conhecimentos, aptidões e competências) a desenvolver pelos estudantes, operacionalização dos objetivos e medição do seu grau de cumprimento)</xsl:with-param> |
<xsl:with-param name="label2"></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:objetivosDaAprendizagem"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="ects"/> |
<!--<xsl:call-template name="tableWhiteLine">--> |
<!--<xsl:with-param name="label">Docente(s)/contacto</xsl:with-param>--> |
<!--<xsl:with-param name="label2">[nome completo e e-mail]</xsl:with-param>--> |
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:responsavel"/> / <xsl:value-of select="//uc:responsavelEmail"/></xsl:with-param>--> |
<!--</xsl:call-template>--> |
<xsl:if test="//uc:outroDocente1/text() != ''"> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Docente(s)/contacto</xsl:with-param> |
<xsl:with-param name="label2">[nome completo e e-mail]</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:outroDocente1"/> / <xsl:value-of select="//uc:docenteEmail1"/></xsl:with-param> |
</xsl:call-template> |
</xsl:if> |
<xsl:if test="//uc:outroDocente2/text() != ''"> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label"></xsl:with-param> |
<xsl:with-param name="label2"></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:outroDocente2"/> / <xsl:value-of select="//uc:docenteEmail2"/></xsl:with-param> |
</xsl:call-template> |
</xsl:if> |
<xsl:if test="//uc:outroDocente3/text() != ''"> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label"></xsl:with-param> |
<xsl:with-param name="label2"></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:outroDocente3"/> / <xsl:value-of select="//uc:docenteEmail3"/></xsl:with-param> |
</xsl:call-template> |
</xsl:if> |
<xsl:if test="//uc:outroDocente4/text() != ''"> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label"></xsl:with-param> |
<xsl:with-param name="label2"></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:outroDocente4"/> / <xsl:value-of select="//uc:docenteEmail4"/></xsl:with-param> |
</xsl:call-template> |
</xsl:if> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Requisitos Orientadores</xsl:with-param> |
<xsl:with-param name="label2">[competências à entrada; pré-requisitos; precedências]</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:preRequisitos"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Conteúdos</xsl:with-param> |
<xsl:with-param name="label2">[estrutura de conteúdos a desenvolver para o total de horas previsto]</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:conteudosProgramaticos"/></xsl:with-param> |
</xsl:call-template> |
<!--<xsl:call-template name="tableGrayLine">--> |
<!--<xsl:with-param name="label">Demonstração da coerência dos conteúdos programáticos com os objectivos da unidade curricular</xsl:with-param>--> |
<!--<xsl:with-param name="label2"></xsl:with-param>--> |
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:demonstracaoCoerenciaConteudosObjectivos"/></xsl:with-param>--> |
<!--</xsl:call-template>--> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Metodologias de ensino e Aprendizagem</xsl:with-param> |
<xsl:with-param name="label2"></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:metodologiasEnsino"/></xsl:with-param> |
</xsl:call-template> |
<!--<xsl:call-template name="tableGrayLine">--> |
<!--<xsl:with-param name="label">Demonstração da coerência das metodologias de ensino com os objectivos da aprendizagem da unidade curricular</xsl:with-param>--> |
<!--<xsl:with-param name="label2"></xsl:with-param>--> |
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:demonstracaoDaCoerenciaMetodologiasObjectivos"/></xsl:with-param>--> |
<!--</xsl:call-template>--> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Língua de ensino</xsl:with-param> |
<xsl:with-param name="label2"></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:lingua1"/> <xsl:value-of select="//uc:lingua2"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine2Fields"> |
<xsl:with-param name="label">Avaliação</xsl:with-param> |
<xsl:with-param name="label2">[indicar os componentes d sistema de avaliação, tipo, matéria e peso de cada componente na classificação final]</xsl:with-param> |
<xsl:with-param name="field1">Avaliação por frequência</xsl:with-param> |
<xsl:with-param name="field2">Avaliação por Exame</xsl:with-param> |
<xsl:with-param name="value1"><xsl:value-of select="//uc:alunosOrdinariosPorFrequencia"/></xsl:with-param> |
<xsl:with-param name="value2"><xsl:value-of select="//uc:alunosOrdinariosPorExame"/></xsl:with-param> |
</xsl:call-template> |
<!--<xsl:call-template name="tableWhiteLine">--> |
<!--<xsl:with-param name="label">Avaliação de Alunos ordinários por frequência</xsl:with-param>--> |
<!--<xsl:with-param name="label2"></xsl:with-param>--> |
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:alunosOrdinariosPorFrequencia"/></xsl:with-param>--> |
<!--</xsl:call-template>--> |
<!--<xsl:call-template name="tableGrayLine">--> |
<!--<xsl:with-param name="label">Avaliação de Alunos ordinários por exame</xsl:with-param>--> |
<!--<xsl:with-param name="label2"></xsl:with-param>--> |
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:alunosOrdinariosPorExame"/></xsl:with-param>--> |
<!--</xsl:call-template>--> |
<!--<xsl:call-template name="tableWhiteLine">--> |
<!--<xsl:with-param name="label">Avaliação de Alunos em mobilidade e alunos com estatuto especial por frequência</xsl:with-param>--> |
<!--<xsl:with-param name="label2"></xsl:with-param>--> |
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia"/></xsl:with-param>--> |
<!--</xsl:call-template>--> |
<!--<xsl:call-template name="tableGrayLine">--> |
<!--<xsl:with-param name="label">Avaliação de Alunos em mobilidade e alunos com estatuto especial por exame</xsl:with-param>--> |
<!--<xsl:with-param name="label2"></xsl:with-param>--> |
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:alunosMobilidadeAlunosComEstatutoEspecialPorExame"/></xsl:with-param>--> |
<!--</xsl:call-template>--> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Bibliografia Principal</xsl:with-param> |
<xsl:with-param name="label2"></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:bibliografiaPrincipal"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Bibliografia Complementar</xsl:with-param> |
<xsl:with-param name="label2"></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:bibliografiaComplementar"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine2Fields"> |
<xsl:with-param name="label">Alunos em mobilidade e alunos com estatuto especial</xsl:with-param> |
<xsl:with-param name="label2"></xsl:with-param> |
<xsl:with-param name="field1">Avaliação por frequência</xsl:with-param> |
<xsl:with-param name="field2">Avaliação por Exame</xsl:with-param> |
<xsl:with-param name="value1"><xsl:value-of select="//uc:alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia"/></xsl:with-param> |
<xsl:with-param name="value2"><xsl:value-of select="//uc:alunosMobilidadeAlunosComEstatutoEspecialPorExame"/></xsl:with-param> |
</xsl:call-template> |
<!----> |
<!----> |
<!----> |
<!--<xsl:call-template name="tableWhiteLine">--> |
<!--<xsl:with-param name="label">Adaptação das metodologias de ensino e das didácticas aos objectivos de aprendizagem das unidades curriculares</xsl:with-param>--> |
<!--<xsl:with-param name="label2"></xsl:with-param>--> |
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:adaptacaoMetodologiasObjectivos"/></xsl:with-param>--> |
<!--</xsl:call-template>--> |
<!--<xsl:call-template name="tableGrayLine">--> |
<!--<xsl:with-param name="label"> </xsl:with-param>--> |
<!--<xsl:with-param name="label2"></xsl:with-param>--> |
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:verificacaoCargaECTS"/>Verificação de que a carga média de trabalho necessária aos estudantes corresponde ao estimado em ECTS</xsl:with-param>--> |
<!--</xsl:call-template>--> |
<!--<xsl:call-template name="tableWhiteLine">--> |
<!--<xsl:with-param name="label">Formas de garantir que a avaliação da aprendizagem dos estudantes é feita em função dos objectivos de aprendizagem da unidade curricular</xsl:with-param>--> |
<!--<xsl:with-param name="label2"></xsl:with-param>--> |
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:avaliacaoFuncaoObjectivos"/></xsl:with-param>--> |
<!--</xsl:call-template>--> |
<!--<xsl:call-template name="tableGrayLine">--> |
<!--<xsl:with-param name="label">Metodologias de ensino que facilitam a participação dos estudantes nas actividades cientificas</xsl:with-param>--> |
<!--<xsl:with-param name="label2"></xsl:with-param>--> |
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:metodologiasFacilitamParticipacaoCientificas"/></xsl:with-param>--> |
<!--</xsl:call-template>--> |
<!--<xsl:call-template name="tableWhiteLine">--> |
<!--<xsl:with-param name="label">Pré-requisitos</xsl:with-param>--> |
<!--<xsl:with-param name="label2"></xsl:with-param>--> |
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:preRequisitos"/></xsl:with-param>--> |
<!--</xsl:call-template>--> |
<!--<xsl:call-template name="tableGrayLine">--> |
<!--<xsl:with-param name="label">Natureza opcional ou obrigatória da unidade curricular</xsl:with-param>--> |
<!--<xsl:with-param name="label2"></xsl:with-param>--> |
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:obrigatoria"/></xsl:with-param>--> |
<!--</xsl:call-template>--> |
<!--<xsl:call-template name="tableWhiteLine">--> |
<!--<xsl:with-param name="label">Língua de ensino 1</xsl:with-param>--> |
<!--<xsl:with-param name="label2"></xsl:with-param>--> |
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:lingua1"/></xsl:with-param>--> |
<!--</xsl:call-template>--> |
<!--<xsl:call-template name="tableGrayLine">--> |
<!--<xsl:with-param name="label">Língua de ensino 2</xsl:with-param>--> |
<!--<xsl:with-param name="label2"></xsl:with-param>--> |
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:lingua2"/></xsl:with-param>--> |
<!--</xsl:call-template>--> |
</xsl:template> |
<xsl:template name="ects"> |
<fo:table-row background-color="#FFFFFF"> |
<fo:table-cell border-bottom="1px solid gray" border-right="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="right" padding="3pt" font-weight="bold"> |
ECTS/tempo de trabalho (horas) |
</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"> |
<fo:table table-layout="fixed" border="1px solid gray" margin="0.5em" font-size="8.5pt"> |
<fo:table-column border="1px solid gray"/> |
<fo:table-column border="1px solid gray"/> |
<fo:table-column border="1px solid gray"/> |
<fo:table-column border="1px solid gray"/> |
<fo:table-column border="1px solid gray"/> |
<fo:table-column border="1px solid gray" /> |
<fo:table-column border="1px solid gray" /> |
<fo:table-column border="1px solid gray"/> |
<fo:table-column border="1px solid gray"/> |
<fo:table-body text-align="left"> |
<fo:table-row > |
<fo:table-cell > |
<fo:block text-align="right" padding="3pt" font-weight="bold"> |
ECTS |
</fo:block> |
</fo:table-cell> |
<fo:table-cell padding-right="0.1em" display-align="center" > |
<fo:block text-align="right" padding="3pt" font-weight="bold"> |
Total |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid gray" padding-right="0.1em" display-align="center" number-columns-spanned="7"> |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
Horas de contacto semestral |
</fo:block> |
</fo:table-cell> |
</fo:table-row> |
<fo:table-row > |
<fo:table-cell border="1px solid gray" padding-right="0.1em" display-align="center" number-rows-spanned="2" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:ects"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid gray" padding-right="0.1em" display-align="center" number-rows-spanned="2" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaTotal"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
T |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
TP |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="right" padding="3pt" font-weight="bold"> |
PL |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
S |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
TC |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
O |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
OT |
</fo:block> |
</fo:table-cell> |
</fo:table-row> |
<fo:table-row > |
<fo:table-cell border-right="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaT"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border-right="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaTP"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border-right="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaPL"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border-right="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaS"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border-right="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaTC"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border-right="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaO"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border-right="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaOT"/> |
</fo:block> |
</fo:table-cell> |
</fo:table-row> |
</fo:table-body> |
</fo:table> |
</fo:block> |
</fo:table-cell> |
</fo:table-row> |
</xsl:template> |
<xsl:template name="tableWhiteLine"> |
<xsl:param name="label"/> |
<xsl:param name="label2"/> |
<xsl:param name="value"/> |
<xsl:call-template name="tableLine"> |
<xsl:with-param name="label"><xsl:value-of select="$label"/></xsl:with-param> |
<xsl:with-param name="label2"><xsl:value-of select="$label2"/></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="$value"/></xsl:with-param> |
<xsl:with-param name="bgcolor">#FFF</xsl:with-param> |
<xsl:with-param name="color">#000</xsl:with-param> |
</xsl:call-template> |
</xsl:template> |
<xsl:template name="tableGrayLine"> |
<xsl:template name="tableWhiteLine2Fields"> |
<xsl:param name="label"/> |
<xsl:param name="label2"/> |
<xsl:param name="field1"/> |
<xsl:param name="field2"/> |
<xsl:param name="value1"/> |
<xsl:param name="value2"/> |
<xsl:call-template name="tableLine2Fields"> |
<xsl:with-param name="label"><xsl:value-of select="$label"/></xsl:with-param> |
<xsl:with-param name="label2"><xsl:value-of select="$label2"/></xsl:with-param> |
<xsl:with-param name="field1"><xsl:value-of select="$field1"/></xsl:with-param> |
<xsl:with-param name="field2"><xsl:value-of select="$field2"/></xsl:with-param> |
<xsl:with-param name="value1"><xsl:value-of select="$value1"/></xsl:with-param> |
<xsl:with-param name="value2"><xsl:value-of select="$value2"/></xsl:with-param> |
<xsl:with-param name="bgcolor">#FFF</xsl:with-param> |
<xsl:with-param name="color">#000</xsl:with-param> |
</xsl:call-template> |
</xsl:template> |
<xsl:template name="tableGrayLine"> |
<xsl:param name="label"/> |
<xsl:param name="label2"/> |
<xsl:param name="value"/> |
<xsl:call-template name="tableLine"> |
<xsl:with-param name="label"><xsl:value-of select="$label"/></xsl:with-param> |
<xsl:with-param name="label2"><xsl:value-of select="$label2"/></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="$value"/></xsl:with-param> |
<xsl:with-param name="bgcolor">#AAA</xsl:with-param> |
<xsl:with-param name="color">#FFF</xsl:with-param> |
205,6 → 585,7 |
<xsl:template name="tableLine"> |
<xsl:param name="label"/> |
<xsl:param name="label2"/> |
<xsl:param name="value"/> |
<xsl:param name="bgcolor"/> |
<xsl:param name="color"/> |
215,13 → 596,16 |
<xsl:attribute name="color"> |
<xsl:value-of select="$color"/> |
</xsl:attribute> |
<fo:table-cell border-right="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:table-cell border-right="1px solid gray" border-bottom="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="right" padding="3pt" font-weight="bold"> |
<xsl:value-of select="$label"/> |
</fo:block> |
<fo:block text-align="right" padding="3pt" font-size="6pt"> |
<xsl:value-of select="$label2"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell background-color="#FFF" color="#000" border="1px solid gray" padding-right="0.1em" display-align="center"> |
<fo:block text-align="left" padding="3pt"> |
<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"> |
<xsl:value-of select="$value"/> |
</fo:block> |
</fo:table-cell> |
231,8 → 615,52 |
<xsl:template name="tableLine2Fields"> |
<xsl:param name="label"/> |
<xsl:param name="label2"/> |
<xsl:param name="field1"/> |
<xsl:param name="field2"/> |
<xsl:param name="value1"/> |
<xsl:param name="value2"/> |
<xsl:param name="bgcolor"/> |
<xsl:param name="color"/> |
<fo:table-row > |
<xsl:attribute name="background-color"> |
<xsl:value-of select="$bgcolor"/> |
</xsl:attribute> |
<xsl:attribute name="color"> |
<xsl:value-of select="$color"/> |
</xsl:attribute> |
<fo:table-cell border-right="1px solid gray" border-bottom="1px solid gray" padding-right="0.1em" display-align="center" > |
<fo:block text-align="right" padding="3pt" font-weight="bold"> |
<xsl:value-of select="$label"/> |
</fo:block> |
<fo:block text-align="right" padding="3pt" font-size="6pt"> |
<xsl:value-of select="$label2"/> |
</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" font-weight="bold"> |
1 - <xsl:value-of select="$field1"/> |
</fo:block> |
<fo:block text-align="left" padding="3pt" linefeed-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"> |
<xsl:value-of select="$value2"/> |
</fo:block> |
</fo:table-cell> |
</fo:table-row> |
</xsl:template> |
</xsl:stylesheet> |
/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitDirPackageService.java |
---|
116,6 → 116,7 |
courseUnit.setNormalizedName(normalizedName); |
courseUnit.setPathIntranet(unitPath.substring(tmpDir.length())); |
nowWriter.write(normalizedName); |
System.out.println("GENERATING LINE: " + normalizedName); |
if(courseUnit.getTeachers() != null) |
{ |
133,8 → 134,12 |
nowWriter.write("\n"); |
} |
} |
confWriterSemestre1.flush(); |
confWriterSemestre2.flush(); |
confWriterA.flush(); |
confWriterSemestre1.close(); |
confWriterSemestre2.close(); |
confWriterA.close(); |
} |
catch (IOException e) |
{ |
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadCourseUnitService.java |
---|
1,20 → 1,22 |
package pt.estgp.estgweb.services.courseunits; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.CourseUnitSummary; |
import pt.estgp.estgweb.domain.RepositoryFile; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.AnnouncementView; |
import pt.estgp.estgweb.domain.views.CourseUnitSummaryView; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.views.CourseView; |
import pt.estgp.estgweb.services.data.RepositoryService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.services.blogs.LoadBlogService; |
import pt.estgp.estgweb.services.blogs.LoadBlogPostsService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.data.RepositoryService; |
import pt.estgp.estgweb.domain.views.*; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import org.apache.log4j.Logger; |
import java.util.ArrayList; |
import java.util.List; |
import java.util.ArrayList; |
import jomm.utils.MyCalendar; |
/* |
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt |
* |
73,4 → 75,17 |
} |
return cV; |
} |
public CourseUnitView loadCourseUnitViewAndCourse(long id, boolean initTeachers, boolean initStudents, boolean initBlog, boolean initCourseView, UserSession userSession) throws ServiceException |
{ |
CourseUnitView cV = run(id,initTeachers,initStudents,initBlog,userSession); |
if(initCourseView) |
{ |
CourseView coV = new CourseView(cV.getCourseUnit().getCourse()); |
cV.setCourseView(coV); |
} |
return cV; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/UpdateCourseUnitService.java |
---|
1,22 → 1,19 |
package pt.estgp.estgweb.services.courseunits; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.UserSession; |
import jomm.utils.FilesUtils; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.RepositoryFileImpl; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
import pt.estgp.estgweb.services.data.RepositoryService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.data.RepositoryService; |
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
import org.apache.log4j.Logger; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.io.InputStream; |
import jomm.utils.MessageResources; |
import jomm.utils.MimeTypeGuesser; |
import jomm.utils.FilesUtils; |
/* |
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt |
* |
79,4 → 76,16 |
} |
return loadCourseUnitService.run(cV.getId(),true,false,false,userSession); |
} |
public void delete(long id, |
UserSession userSession) |
throws ServiceException |
{ |
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(id); |
c.setStatus(false); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/courseunitprogram.fo.xsl.rev0 |
---|
New file |
0,0 → 1,512 |
<?xml version="1.0" encoding="ISO-8859-1"?> |
<xsl:stylesheet version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" |
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" |
xmlns:uc="http://baco.estgp.pt/schemas/courseunits/program/"> |
<xsl:template match="/"> |
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> |
<fo:layout-master-set> |
<fo:simple-page-master master-name="A4Vertical" page-width="210mm" page-height="297mm" |
margin-top="1cm" margin-bottom="1cm" margin-left="1cm" margin-right="1cm" |
reference-orientation="0"> |
<fo:region-body region-name="body" margin-top="20mm" margin-bottom="10mm" margin-right="0" |
margin-left="0"/> |
<fo:region-before region-name="header" extent="15mm"/> |
<fo:region-after region-name="footer" extent="1cm"/> |
</fo:simple-page-master> |
<fo:simple-page-master master-name="A4HorizontalRot" page-width="210mm" page-height="297mm" |
margin-top="0.5cm" margin-bottom="0.5cm" margin-left="0.5cm" margin-right="0.5cm" |
reference-orientation="90"> |
<fo:region-body region-name="body" margin-top="20mm" margin-bottom="10mm" margin-right="0" |
margin-left="0"/> |
<fo:region-before region-name="header" extent="15mm"/> |
<fo:region-after region-name="footer" extent="1cm"/> |
</fo:simple-page-master> |
<fo:simple-page-master master-name="A4Horizontal" page-width="297mm" page-height="210mm" |
margin-top="0.5cm" margin-bottom="0.5cm" margin-left="0.5cm" |
margin-right="0.5cm"> |
<fo:region-body region-name="body" margin-top="20mm" margin-bottom="15mm" margin-right="0" |
margin-left="0"/> |
<fo:region-before region-name="header" extent="15mm"/> |
<fo:region-after region-name="footer" extent="1cm"/> |
</fo:simple-page-master> |
<fo:page-sequence-master master-name="pages"> |
<fo:repeatable-page-master-alternatives> |
<fo:conditional-page-master-reference master-reference="pages" page-position="any"/> |
</fo:repeatable-page-master-alternatives> |
</fo:page-sequence-master> |
</fo:layout-master-set> |
<!--LAYOUT DE PAGINA ESCOLHIDO--> |
<fo:page-sequence master-reference="A4Vertical" initial-page-number="auto"> |
<xsl:call-template name="page"/> |
</fo:page-sequence> |
</fo:root> |
</xsl:template> |
<xsl:template name="page"> |
<fo:static-content flow-name="header"> |
<fo:block text-align="left" > |
<fo:table width="100%" table-layout="fixed" border-bottom="1px solid black"> |
<fo:table-column column-width="100%"/> |
<fo:table-body> |
<fo:table-row> |
<fo:table-cell > |
<fo:block> |
</fo:block> |
</fo:table-cell> |
</fo:table-row> |
</fo:table-body> |
</fo:table> |
</fo:block> |
</fo:static-content> |
<fo:static-content flow-name="footer"> |
<fo:table width="100%" table-layout="fixed" border-top="1px solid black" font-size="6.5pt" > |
<fo:table-column column-width="20%"/> |
<fo:table-column column-width="80%" /> |
<fo:table-body> |
<fo:table-row> |
<fo:table-cell padding-top="3pt"> |
<fo:block> |
<xsl:value-of select="//uc:UnidadeCurricular/@uc:data"/> / Página <fo:page-number/> |
</fo:block> |
<fo:block font-size="5pt"> |
ESTG.SA.23-Rev.0 |
</fo:block> |
</fo:table-cell> |
<fo:table-cell padding-top="3pt" > |
<fo:block font-size="6pt" text-align="right"> |
http://www.estgp.pt | gerado pela plataforma baco® 2012 |
</fo:block> |
</fo:table-cell> |
</fo:table-row> |
</fo:table-body> |
</fo:table> |
</fo:static-content> |
<fo:flow flow-name="body"> |
<fo:block> |
<xsl:apply-templates select="//uc:UnidadeCurricular"/> |
</fo:block> |
</fo:flow> |
</xsl:template> |
<xsl:template match="/uc:UnidadeCurricular"> |
<fo:table table-layout="fixed" border="0px solid black" margin="0.5em" font-size="8.5pt"> |
<xsl:call-template name="gen_cols"/> |
<fo:table-body text-align="left"> |
<xsl:call-template name="gen_header"/> |
<xsl:call-template name="gen_line"/> |
</fo:table-body> |
</fo:table> |
</xsl:template> |
<xsl:template name="gen_cols"> |
<fo:table-column column-width="15em" /> |
<fo:table-column/> |
</xsl:template> |
<xsl:template name="gen_header"> |
<!--<fo:table-row background-color="#000" color="#FFF" height="7mm">--> |
<!--<fo:table-cell border="1px solid black" display-align="center" >--> |
<!--<fo:block text-align="center" >Pos</fo:block>--> |
<!--</fo:table-cell>--> |
<!--<fo:table-cell border="1px solid black" display-align="center" >--> |
<!--<fo:block text-align="center">Pos. Esc.</fo:block>--> |
<!--</fo:table-cell>--> |
<!--</fo:table-row>--> |
</xsl:template> |
<xsl:template name="gen_line"> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Ano Lectivo</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:anoLectivo"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Curso</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:curso"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Unidade Curricular</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:unidadeCurricular"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Responsável</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:responsavel"/> / <xsl:value-of select="//uc:responsavelEmail"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label">Objetivos da aprendizagem (conhecimentos, apetidões e competências) a desenvolver pelos estudantes, operacionalização dos objetivos e medição do seu grau de cumprimento)</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:objetivosDaAprendizagem"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="ects"/> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label">Docente(s)/contacto</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:responsavel"/> / <xsl:value-of select="//uc:responsavelEmail"/></xsl:with-param> |
</xsl:call-template> |
<xsl:if test="//uc:outroDocente1/text() != ''"> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label"></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:outroDocente1"/> / <xsl:value-of select="//uc:docenteEmail1"/></xsl:with-param> |
</xsl:call-template> |
</xsl:if> |
<xsl:if test="//uc:outroDocente2/text() != ''"> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label"></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:outroDocente2"/> / <xsl:value-of select="//uc:docenteEmail2"/></xsl:with-param> |
</xsl:call-template> |
</xsl:if> |
<xsl:if test="//uc:outroDocente3/text() != ''"> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label"></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:outroDocente3"/> / <xsl:value-of select="//uc:docenteEmail3"/></xsl:with-param> |
</xsl:call-template> |
</xsl:if> |
<xsl:if test="//uc:outroDocente4/text() != ''"> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label"></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:outroDocente4"/> / <xsl:value-of select="//uc:docenteEmail4"/></xsl:with-param> |
</xsl:call-template> |
</xsl:if> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Conteúdos Programáticos</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:conteudosProgramaticos"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label">Demonstração da coerência dos conteúdos programáticos com os objectivos da unidade curricular</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:demonstracaoCoerenciaConteudosObjectivos"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Metodologias de ensino</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:metodologiasEnsino"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label">Demonstração da coerência das metodologias de ensino com os objectivos da aprendizagem da unidade curricular</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:demonstracaoDaCoerenciaMetodologiasObjectivos"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Avaliação de Alunos ordinários por frequência</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:alunosOrdinariosPorFrequencia"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label">Avaliação de Alunos ordinários por exame</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:alunosOrdinariosPorExame"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Avaliação de Alunos em mobilidade e alunos com estatuto especial por frequência</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label">Avaliação de Alunos em mobilidade e alunos com estatuto especial por exame</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:alunosMobilidadeAlunosComEstatutoEspecialPorExame"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Bibliografia Principal</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:bibliografiaPrincipal"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label">Bibliografia Complementar</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:bibliografiaComplementar"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Adaptação das metodologias de ensino e das didácticas aos objectivos de aprendizagem das unidades curriculares</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:adaptacaoMetodologiasObjectivos"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label"> </xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:verificacaoCargaECTS"/>Verificação de que a carga média de trabalho necessária aos estudantes corresponde ao estimado em ECTS</xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Formas de garantir que a avaliação da aprendizagem dos estudantes é feita em função dos objectivos de aprendizagem da unidade curricular</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:avaliacaoFuncaoObjectivos"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label">Metodologias de ensino que facilitam a participação dos estudantes nas actividades cientificas</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:metodologiasFacilitamParticipacaoCientificas"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Pré-requisitos</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:preRequisitos"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label">Natureza opcional ou obrigatória da unidade curricular</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:obrigatoria"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableWhiteLine"> |
<xsl:with-param name="label">Língua de ensino 1</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:lingua1"/></xsl:with-param> |
</xsl:call-template> |
<xsl:call-template name="tableGrayLine"> |
<xsl:with-param name="label">Língua de ensino 2</xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="//uc:lingua2"/></xsl:with-param> |
</xsl:call-template> |
</xsl:template> |
<xsl:template name="ects"> |
<fo:table-row background-color="#FFFFFF"> |
<fo:table-cell border-right="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="right" padding="3pt" font-weight="bold"> |
ECTS |
</fo:block> |
</fo:table-cell> |
<fo:table-cell background-color="#FFF" color="#000" border="1px solid gray" padding-right="0.1em" display-align="center"> |
<fo:block text-align="left" padding="3pt"> |
<fo:table table-layout="fixed" border="1px solid black" margin="0.5em" font-size="8.5pt"> |
<fo:table-column border="1px solid black"/> |
<fo:table-column border="1px solid black"/> |
<fo:table-column border="1px solid black"/> |
<fo:table-column border="1px solid black"/> |
<fo:table-column border="1px solid black"/> |
<fo:table-column border="1px solid black" /> |
<fo:table-column border="1px solid black" /> |
<fo:table-column border="1px solid black"/> |
<fo:table-column border="1px solid black"/> |
<fo:table-body text-align="left"> |
<fo:table-row > |
<fo:table-cell> |
<fo:block > |
ECTS |
</fo:block> |
</fo:table-cell> |
<fo:table-cell padding-right="0.1em" display-align="center" > |
<fo:block text-align="right" padding="3pt" font-weight="bold"> |
Total |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid black" padding-right="0.1em" display-align="center" number-columns-spanned="7"> |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
Horas de contacto semestral |
</fo:block> |
</fo:table-cell> |
</fo:table-row> |
<fo:table-row > |
<fo:table-cell border="1px solid black" padding-right="0.1em" display-align="center" number-rows-spanned="2" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:ects"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid black" padding-right="0.1em" display-align="center" number-rows-spanned="2" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaTotal"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
T |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
TP |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="right" padding="3pt" font-weight="bold"> |
PL |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
S |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
TC |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
O |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
OT |
</fo:block> |
</fo:table-cell> |
</fo:table-row> |
<fo:table-row > |
<fo:table-cell border-right="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaT"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border-right="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaTP"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border-right="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaPL"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border-right="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaS"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border-right="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaTC"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border-right="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaO"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell border-right="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="center" padding="3pt" font-weight="bold"> |
<xsl:value-of select="//uc:cargaHorariaOT"/> |
</fo:block> |
</fo:table-cell> |
</fo:table-row> |
</fo:table-body> |
</fo:table> |
</fo:block> |
</fo:table-cell> |
</fo:table-row> |
</xsl:template> |
<xsl:template name="tableWhiteLine"> |
<xsl:param name="label"/> |
<xsl:param name="value"/> |
<xsl:call-template name="tableLine"> |
<xsl:with-param name="label"><xsl:value-of select="$label"/></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="$value"/></xsl:with-param> |
<xsl:with-param name="bgcolor">#FFF</xsl:with-param> |
<xsl:with-param name="color">#000</xsl:with-param> |
</xsl:call-template> |
</xsl:template> |
<xsl:template name="tableGrayLine"> |
<xsl:param name="label"/> |
<xsl:param name="value"/> |
<xsl:call-template name="tableLine"> |
<xsl:with-param name="label"><xsl:value-of select="$label"/></xsl:with-param> |
<xsl:with-param name="value"><xsl:value-of select="$value"/></xsl:with-param> |
<xsl:with-param name="bgcolor">#AAA</xsl:with-param> |
<xsl:with-param name="color">#FFF</xsl:with-param> |
</xsl:call-template> |
</xsl:template> |
<xsl:template name="tableLine"> |
<xsl:param name="label"/> |
<xsl:param name="value"/> |
<xsl:param name="bgcolor"/> |
<xsl:param name="color"/> |
<fo:table-row > |
<xsl:attribute name="background-color"> |
<xsl:value-of select="$bgcolor"/> |
</xsl:attribute> |
<xsl:attribute name="color"> |
<xsl:value-of select="$color"/> |
</xsl:attribute> |
<fo:table-cell border-right="1px solid black" padding-right="0.1em" display-align="center" > |
<fo:block text-align="right" padding="3pt" font-weight="bold"> |
<xsl:value-of select="$label"/> |
</fo:block> |
</fo:table-cell> |
<fo:table-cell background-color="#FFF" color="#000" border="1px solid gray" padding-right="0.1em" display-align="center"> |
<fo:block text-align="left" padding="3pt"> |
<xsl:value-of select="$value"/> |
</fo:block> |
</fo:table-cell> |
</fo:table-row> |
</xsl:template> |
</xsl:stylesheet> |
/impl/src/java/pt/estgp/estgweb/services/email/SendEmailService.java |
---|
3,6 → 3,7 |
import jomm.utils.TemplateUtils; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.web.utils.DatesUtils; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.domain.enums.LangEnum; |
364,6 → 365,91 |
return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments); |
} |
public Email getUnidadeEdicaoEmail(List<String> emails, CourseUnit c, LangEnum langEnum) |
{ |
List<String> arguments = new ArrayList<String>(); |
String subject; |
String template; |
if(langEnum == LangEnum.PORTUGUESE) |
{ |
template = Globals.EMAIL_UNDADE_EDICAO_TEMPLATE_PT; |
subject = Globals.EMAIL_UNDADE_EDICAO_SUBJECT_PT; |
} |
else |
{ |
template = Globals.EMAIL_UNDADE_EDICAO_TEMPLATE_EN; |
subject = Globals.EMAIL_UNDADE_EDICAO_SUBJECT_EN; |
} |
subject = MessageFormat.format(ConfigProperties.getProperty(subject),new String[]{c.getName()}); |
arguments.add(c.getName()); |
List<String> recipients = new ArrayList<String>(); |
for(String email:emails) |
recipients.add(email); |
return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments); |
} |
public Email getUnidadeValidadaEmail(List<String> emails, CourseUnit c, LangEnum langEnum) |
{ |
List<String> arguments = new ArrayList<String>(); |
String subject; |
String template; |
if(langEnum == LangEnum.PORTUGUESE) |
{ |
template = Globals.EMAIL_UNDADE_VALIDADA_TEMPLATE_PT; |
subject = Globals.EMAIL_UNDADE_VALIDADA_SUBJECT_PT; |
} |
else |
{ |
template = Globals.EMAIL_UNDADE_VALIDADA_TEMPLATE_EN; |
subject = Globals.EMAIL_UNDADE_VALIDADA_SUBJECT_EN; |
} |
subject = MessageFormat.format(ConfigProperties.getProperty(subject),new String[]{c.getName()}); |
arguments.add(c.getName()); |
List<String> recipients = new ArrayList<String>(); |
for(String email:emails) |
recipients.add(email); |
return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments); |
} |
public Email getUnidadeEditadaEmail(List<String> emails, CourseUnit c, LangEnum langEnum) |
{ |
List<String> arguments = new ArrayList<String>(); |
String subject; |
String template; |
if(langEnum == LangEnum.PORTUGUESE) |
{ |
template = Globals.EMAIL_UNDADE_EDITADA_TEMPLATE_PT; |
subject = Globals.EMAIL_UNDADE_EDITADA_SUBJECT_PT; |
} |
else |
{ |
template = Globals.EMAIL_UNDADE_EDITADA_TEMPLATE_EN; |
subject = Globals.EMAIL_UNDADE_EDITADA_SUBJECT_EN; |
} |
subject = MessageFormat.format(ConfigProperties.getProperty(subject),new String[]{c.getName()}); |
arguments.add(c.getCourseName()); |
arguments.add(c.getName()); |
List<String> recipients = new ArrayList<String>(); |
for(String email:emails) |
recipients.add(email); |
return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments); |
} |
public boolean sendNewGrades(List<String[]> grades, LangEnum langEnum, String studentEmail, String studentName) |
{ |
try |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportCourseService.java |
---|
2,6 → 2,7 |
import jomm.dao.impl.AbstractDao; |
import org.apache.log4j.Logger; |
import org.hibernate.NonUniqueResultException; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.utils.ConfigProperties; |
148,7 → 149,14 |
for (Map.Entry<String, Disciplina> entry : set) |
{ |
Disciplina d = entry.getValue(); |
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + d.getCodigo(), "" + d.getCodigoCurso(), semestre, year); |
CourseUnit c; |
try{ |
c = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + d.getCodigo(), "" + d.getCodigoCurso(), semestre, year); |
}catch(NonUniqueResultException e) |
{ |
logger.fatal("Unidade Repetida: (" + d.getCodigo() + ") curso: " + d.getCodigoCurso() + " " + semestre + " " + year); |
throw e; |
} |
if (c == null) |
{ |
c = DomainObjectFactory.createCourseUnitImpl(); |
/impl/src/java/pt/estgp/estgweb/services/users/LoadUsersService.java |
---|
1,27 → 1,20 |
package pt.estgp.estgweb.services.users; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import jomm.dao.impl.AbstractDao; |
import org.apache.log4j.Logger; |
import org.hibernate.criterion.Order; |
import pt.estgp.estgweb.domain.Teacher; |
import pt.estgp.estgweb.domain.User; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.UserImpl; |
import pt.estgp.estgweb.domain.Teacher; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.UserView; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.expceptions.FieldException; |
import pt.estgp.estgweb.services.expceptions.AlreadyExistsException; |
import pt.estgp.estgweb.services.common.CommonServicesManager; |
import pt.estgp.estgweb.utils.DatesUtils; |
import org.apache.log4j.Logger; |
import org.hibernate.criterion.Order; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.util.Date; |
import java.util.ArrayList; |
import java.util.List; |
import java.util.ArrayList; |
import jomm.utils.BytesUtils; |
import jomm.dao.impl.AbstractDao; |
/* |
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt |
* |
82,4 → 75,14 |
return null; |
return UserView.getViews(users); |
} |
public List<UserView> loadTeachers() throws ServiceException |
{ |
List<Teacher> users = DaoFactory.getTeacherDaoImpl().getAll(); |
if(users == null) |
return null; |
return UserView.getTeacherViews(users); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/data/RepositoryService.java |
---|
1,22 → 1,21 |
package pt.estgp.estgweb.services.data; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import org.dom4j.Document; |
import org.dom4j.DocumentFactory; |
import org.dom4j.Element; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum; |
import pt.estgp.estgweb.services.data.impl.DefaultRepositoryFile; |
import pt.estgp.estgweb.web.utils.DatesUtils; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.io.InputStream; |
import java.util.ArrayList; |
import java.util.Date; |
import java.util.HashSet; |
import java.util.List; |
import java.util.ArrayList; |
import org.dom4j.DocumentFactory; |
import org.dom4j.Element; |
import org.dom4j.Document; |
/** |
* @author Jorge Machado |
* @date 4/Jun/2008 |
25,6 → 24,10 |
public class RepositoryService implements IService |
{ |
public String storeRepositoryFile(InputStream stream, String contentType, String extension, int size, String name, String description, ResourceAccessControlEnum accessControl, UserSession userSession) |
{ |
return storeRepositoryFile(stream,contentType,extension,size,name,description,accessControl,userSession.getUser()); |
} |
/** |
* @param stream . |
* @param contentType . |
33,16 → 36,16 |
* @param description . |
* @param extension . |
* @param accessControl . |
* @param userSession . |
* @param user . |
* @return the identifier to retrieve the document |
*/ |
public String storeRepositoryFile(InputStream stream, String contentType, String extension, int size, String name, String description, ResourceAccessControlEnum accessControl, UserSession userSession) |
public String storeRepositoryFile(InputStream stream, String contentType, String extension, int size, String name, String description, ResourceAccessControlEnum accessControl, User user) |
{ |
RepositoryFileImpl repositoryFile = DomainObjectFactory.createRepositoryFileImpl(); |
repositoryFile.setSaveDate(new Date()); |
repositoryFile.setDeleted(false); |
repositoryFile.setAccessControl(accessControl.getKey()); |
repositoryFile.setOwner(userSession.getUser()); |
repositoryFile.setOwner(user); |
DaoFactory.getRepositoryFileDaoImpl().save(repositoryFile); |
RepositoryFileVersionImpl repositoryFileVersion = createVersion(repositoryFile); |
237,7 → 240,10 |
if (repositoryFile.getRepositoryFile().getOwner() instanceof User) |
{ |
Element oUsername = DocumentFactory.getInstance().createElement("username"); |
oUsername.setText(((User) repositoryFile.getRepositoryFile().getOwner()).getUsername()); |
if(((User) repositoryFile.getRepositoryFile().getOwner()).getUsername() == null) |
oUsername.setText("UNKNOWN"); |
else |
oUsername.setText(((User) repositoryFile.getRepositoryFile().getOwner()).getUsername()); |
owner.add(oUsername); |
if (((User) repositoryFile.getRepositoryFile().getOwner()).getEmail() != null) |
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitProgramImpl.java |
---|
1,21 → 1,25 |
package pt.estgp.estgweb.domain; |
import jomm.dao.utils.HibernateUtils; |
import jomm.utils.PdfUtils; |
import org.apache.fop.apps.FOPException; |
import org.dom4j.*; |
import org.dom4j.Document; |
import org.dom4j.DocumentException; |
import org.dom4j.Element; |
import org.dom4j.XPath; |
import org.hibernate.NonUniqueResultException; |
import org.hibernate.Session; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.courseunits.SaveCourseUnitProgram; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.utils.Dom4jUtil; |
import javax.xml.transform.TransformerException; |
import javax.xml.transform.dom.DOMSource; |
import java.io.*; |
import java.io.File; |
import java.io.FileInputStream; |
import java.io.IOException; |
import java.io.Serializable; |
import java.net.MalformedURLException; |
import java.sql.SQLException; |
import java.text.SimpleDateFormat; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.List; |
35,57 → 39,138 |
return getId(); |
} |
public CourseUnitProgramImpl() { |
setBibliografia(""); |
setBibliografiaComplementar(""); |
setAdaptacaoObjectivosMetodologia(""); |
setDemonstracaoCargaEcts(""); |
setGarantiaAvaliacaoFuncaObjectivos(""); |
setMetodologiasActividadeCientifica(""); |
setEcts(""); |
setPrerequisitos(""); |
setObrigatoria(""); |
setLingua1(""); |
setLingua2(""); |
setCargaHorariaTotal(""); |
setCargaHorariaT(""); |
setCargaHorariaTP(""); |
setCargaHorariaPL(""); |
setCargaHorariaS(""); |
setCargaHorariaTC(""); |
setCargaHorariaO(""); |
setCargaHorariaOT(""); |
} |
public void consistNullValues() |
{ |
if(getBibliografia() == null) |
setBibliografia(""); |
if(getBibliografiaComplementar() == null) |
setBibliografiaComplementar(""); |
if(getAdaptacaoObjectivosMetodologia() == null) |
setAdaptacaoObjectivosMetodologia(""); |
if(getDemonstracaoCargaEcts() == null) |
setDemonstracaoCargaEcts(""); |
if(getGarantiaAvaliacaoFuncaObjectivos() == null) |
setGarantiaAvaliacaoFuncaObjectivos(""); |
if(getMetodologiasActividadeCientifica() == null) |
setMetodologiasActividadeCientifica(""); |
if(getEcts() == null) |
setEcts(""); |
if(getPrerequisitos() == null) |
setPrerequisitos(""); |
if(getObrigatoria() == null) |
setObrigatoria(""); |
if(getLingua1() == null) |
setLingua1(""); |
if(getLingua2() == null) |
setLingua2(""); |
if(getCargaHorariaTotal() == null) |
setCargaHorariaTotal(""); |
if(getCargaHorariaT() == null) |
setCargaHorariaT(""); |
if(getCargaHorariaTP() == null) |
setCargaHorariaTP(""); |
if(getCargaHorariaPL() == null) |
setCargaHorariaPL(""); |
if(getCargaHorariaS() == null) |
setCargaHorariaS(""); |
if(getCargaHorariaTC() == null) |
setCargaHorariaTC(""); |
if(getCargaHorariaO() == null) |
setCargaHorariaO(""); |
if(getCargaHorariaOT() == null) |
setCargaHorariaOT(""); |
if(getCourseUnitProgramPart2() != null) |
{ |
((CourseUnitProgramPart2Impl)getCourseUnitProgramPart2()).consistNullValues(); |
} |
} |
public static class CourseUnitInputLine |
{ |
String codigoCurso; |
String codigoCurso = ""; |
String codigoSIGESUnidade; |
String ano; |
String semestre; |
String nomeUnidadeCurricular; |
String codigoSIGESUnidade = ""; |
String ano = ""; |
String semestre = ""; |
String nomeUnidadeCurricular = ""; |
String codSIGESDocenteResponsavel; |
String nomeDocenteResponsavel; |
String emailDocenteResponsavel; |
String codSIGESDocenteResponsavel = ""; |
String nomeDocenteResponsavel = ""; |
String emailDocenteResponsavel = ""; |
String codigoSIGESDocente1; |
String outroDocente1; |
String docenteEmail1; |
String codigoSIGESDocente1 = ""; |
String outroDocente1 = ""; |
String docenteEmail1 = ""; |
String codigoSIGESDocente2; |
String outroDocente2; |
String docenteEmail2; |
String codigoSIGESDocente2 = ""; |
String outroDocente2 = ""; |
String docenteEmail2 = ""; |
String codigoSIGESDocente3; |
String outroDocente3; |
String docenteEmail3; |
String codigoSIGESDocente3 = ""; |
String outroDocente3 = ""; |
String docenteEmail3 = ""; |
String codigoSIGESDocente4; |
String outroDocente4; |
String docenteEmail4; |
String codigoSIGESDocente4 = ""; |
String outroDocente4 = ""; |
String docenteEmail4 = ""; |
String objetivosDaAprendizagem; |
String conteudosProgramaticos; |
String demonstracaoCoerenciaConteudosObjectivos; |
String metodologiasEnsino; |
String alunosOrdinariosPorFrequencia; |
String alunosOrdinariosPorExame; |
String alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia; |
String alunosMobilidadeAlunosComEstatutoEspecialPorExame; |
String demonstracaoDaCoerenciaMetodologiasObjectivos; |
String bibliografiaPrincipal; |
String adaptacaoMetodologiasObjectivos; |
String verificacaoCargaECTS; |
String avaliacaoFuncaoObjectivos; |
String metodologiasFacilitamParticipacaoCientificas; |
String objetivosDaAprendizagem = ""; |
String conteudosProgramaticos = ""; |
String demonstracaoCoerenciaConteudosObjectivos = ""; |
String metodologiasEnsino = ""; |
String alunosOrdinariosPorFrequencia = ""; |
String alunosOrdinariosPorExame = ""; |
String alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia = ""; |
String alunosMobilidadeAlunosComEstatutoEspecialPorExame = ""; |
String demonstracaoDaCoerenciaMetodologiasObjectivos = ""; |
String bibliografiaPrincipal = ""; |
String bibliografiaComplementar = ""; |
String adaptacaoMetodologiasObjectivos = ""; |
String verificacaoCargaECTS = ""; |
String avaliacaoFuncaoObjectivos = ""; |
String metodologiasFacilitamParticipacaoCientificas = ""; |
String ects; |
String preRequisitos; |
String obrigatoria; |
String lingua1; |
String lingua2; |
String ects = ""; |
String preRequisitos = ""; |
String obrigatoria = ""; |
String lingua1 = ""; |
String lingua2 = ""; |
String cargaHorariaT = ""; |
String cargaHorariaTP = ""; |
String cargaHorariaPL = ""; |
String cargaHorariaS = ""; |
String cargaHorariaTC = ""; |
String cargaHorariaO = ""; |
String cargaHorariaOT = ""; |
String cargaHorariaTotal = ""; |
@Override |
public String toString() { |
return "CourseUnitInputLine{" + |
115,10 → 200,11 |
", metodologiasEnsino='" + metodologiasEnsino + '\'' + |
", alunosOrdinariosPorFrequencia='" + alunosOrdinariosPorFrequencia + '\'' + |
", alunosOrdinariosPorExame='" + alunosOrdinariosPorExame + '\'' + |
", alunosMobilidadeAlunosComEstatutoEspecialPorFrequência='" + alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia + '\'' + |
", alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia='" + alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia + '\'' + |
", alunosMobilidadeAlunosComEstatutoEspecialPorExame='" + alunosMobilidadeAlunosComEstatutoEspecialPorExame + '\'' + |
", demonstracaoDaCoerenciaMetodologiasObjectivos='" + demonstracaoDaCoerenciaMetodologiasObjectivos + '\'' + |
", bibliografiaPrincipal='" + bibliografiaPrincipal + '\'' + |
", bibliografiaCompletmentar='" + bibliografiaComplementar + '\'' + |
", adaptacaoMetodologiasObjectivos='" + adaptacaoMetodologiasObjectivos + '\'' + |
", verificacaoCargaECTS='" + verificacaoCargaECTS + '\'' + |
", avaliacaoFuncaoObjectivos='" + avaliacaoFuncaoObjectivos + '\'' + |
128,100 → 214,239 |
", obrigatoria='" + obrigatoria + '\'' + |
", lingua1='" + lingua1 + '\'' + |
", lingua2='" + lingua2 + '\'' + |
", cargaHorariaT='" + cargaHorariaT + '\'' + |
", cargaHorariaTP='" + cargaHorariaTP + '\'' + |
", cargaHorariaPL='" + cargaHorariaPL + '\'' + |
", cargaHorariaS='" + cargaHorariaS + '\'' + |
", cargaHorariaTC='" + cargaHorariaTC + '\'' + |
", cargaHorariaOT='" + cargaHorariaOT + '\'' + |
", cargaHorariaOT='" + cargaHorariaOT + '\'' + |
", cargaHorariaTotal='" + cargaHorariaTotal + '\'' + |
'}'; |
} |
} |
public static void main(String[] args) throws IOException, MalformedURLException, DocumentException, SQLException, TransformerException, FOPException { |
static boolean valiPrograms = true; |
static int contaProgramas = 0; |
public static void main(String[] args) throws IOException, DocumentException, SQLException, TransformerException, FOPException { |
System.out.println("CONSISTING COURSE IDS in units:"); |
HibernateUtils.getCurrentSession().beginTransaction(); |
DaoFactory.getCourseUnitDaoImpl().consistCourseUnitCourseCodes(DatesUtils.getImportYear()); |
HibernateUtils.getCurrentSession().getTransaction().commit(); |
System.out.println("Done"); |
String file = "D:\\Jorge\\Documents\\estg\\projectos\\Fichas Curriculares Baco\\FICHAS_CORRIGIDAS"; |
if(args.length > 0) |
file = args[0]; |
if(args.length > 1) |
valiPrograms = Boolean.parseBoolean(args[1]); |
File f = new File(file); |
File f2 = f; |
try{ |
if(f.isDirectory()) |
{ |
for(File f3 : f.listFiles()) |
{ |
f2 = f3; |
if(f3.getName().endsWith("xml")) |
{ |
contaProgramas++; |
System.out.println("TOTAL Programas: " + contaProgramas); |
importFile(f3); |
} |
} |
} |
else |
{ |
importFile(f); |
} |
}catch(Throwable e) |
{ |
System.out.println(e.toString()); |
e.printStackTrace(); |
System.out.println("Falhou a importar o ficheiro: " + f2.getName()); |
} |
for(String error: errors) |
{ |
System.out.println("ERRO:" + error); |
} |
System.out.println("INFOS:" + infos.size() + "#############################################"); |
for(String info: infos) |
{ |
System.out.println(info); |
} |
System.out.println("ERROS:" + errors.size() + "#############################################"); |
for(String error: errors) |
{ |
System.out.println(error); |
} |
} |
public static void importFile(File f) throws IOException, MalformedURLException, DocumentException, SQLException, TransformerException, FOPException { |
List<CourseUnitInputLine> unitsLines = new ArrayList<CourseUnitInputLine>(); |
Document dom = parse(new FileInputStream(new File("D:\\Jorge\\Documents\\estg\\projectos\\Fichas Curriculares Baco\\APM (1).xml"))); |
Document dom = parse(new FileInputStream(f)); |
Dom4jUtil.writeSout(dom); |
// Dom4jUtil.writeSout(dom); |
List<String>[] lista = new ArrayList[43]; |
List<String>[] lista = new ArrayList[56]; |
Map<String,String> namespaces = new HashMap<String,String>(); |
namespaces.put("m","urn:schemas-microsoft-com:office:spreadsheet"); |
XPath xPath = dom.createXPath("//m:Row"); |
XPath xPath = dom.createXPath("//m:Worksheet"); |
xPath.setNamespaceURIs(namespaces); |
List<Element> rows = xPath.selectNodes(dom.getRootElement()); |
List<Element> worksheets = xPath.selectNodes(dom.getRootElement()); |
for(Element worksheet:worksheets) |
{ |
xPath = worksheet.createXPath(".//m:Row"); |
xPath.setNamespaceURIs(namespaces); |
List<Element> rows = xPath.selectNodes(worksheet); |
for(int r = 3; r < 46; r++) |
{ |
lista[r - 3] = new ArrayList<String>(); |
Element row = rows.get(r); |
XPath xPathCells = dom.createXPath("m:Cell"); |
xPathCells.setNamespaceURIs(namespaces); |
List<Element> cells = xPathCells.selectNodes(row); |
for(int i = 6; i < cells.size();i++) |
for(int r = 3; r < 56; r++) |
{ |
Element cell = cells.get(i); |
XPath xPathData = dom.createXPath("m:Data"); |
xPathData.setNamespaceURIs(namespaces); |
Element data = (Element) xPathData.selectSingleNode(cell); |
if(data!=null) |
if(lista[r-3] == null) |
lista[r - 3] = new ArrayList<String>(); |
Element row = rows.get(r); |
XPath xPathCells = dom.createXPath("m:Cell"); |
xPathCells.setNamespaceURIs(namespaces); |
List<Element> cells = xPathCells.selectNodes(row); |
for(int i = 6; i < cells.size();i++) |
{ |
String text = data.getText(); |
lista[r-3].add(text); |
Element cell = cells.get(i); |
XPath xPathData = dom.createXPath("m:Data"); |
xPathData.setNamespaceURIs(namespaces); |
Element data = (Element) xPathData.selectSingleNode(cell); |
if(data!=null) |
{ |
String text = data.getText(); |
lista[r-3].add(text); |
} |
else |
lista[r-3].add(""); |
} |
else |
lista[r-3].add(""); |
} |
} |
int maxUnits = lista[0].size(); |
for(int unit = 0; unit < maxUnits; unit++) |
{ |
CourseUnitInputLine courseUnitInputLine = new CourseUnitInputLine(); |
courseUnitInputLine.codigoCurso = lista[0].get(unit); |
courseUnitInputLine.codigoSIGESUnidade = lista[2].get(unit); |
courseUnitInputLine.ano = lista[3].get(unit); |
courseUnitInputLine.semestre = lista[4].get(unit); |
courseUnitInputLine.nomeUnidadeCurricular = lista[5].get(unit); |
if(lista[0].size() > unit) |
courseUnitInputLine.codigoCurso = lista[0].get(unit); |
if(lista[2].size() > unit) |
courseUnitInputLine.codigoSIGESUnidade = lista[2].get(unit); |
if(lista[3].size() > unit) |
courseUnitInputLine.ano = lista[3].get(unit); |
if(lista[4].size() > unit) |
courseUnitInputLine.semestre = lista[4].get(unit); |
if(lista[5].size() > unit) |
courseUnitInputLine.nomeUnidadeCurricular = lista[5].get(unit); |
courseUnitInputLine.codSIGESDocenteResponsavel = lista[7].get(unit); |
courseUnitInputLine.nomeDocenteResponsavel = lista[8].get(unit); |
courseUnitInputLine.emailDocenteResponsavel = lista[9].get(unit); |
if(lista[7].size() > unit) |
courseUnitInputLine.codSIGESDocenteResponsavel = lista[7].get(unit); |
if(lista[8].size() > unit) |
courseUnitInputLine.nomeDocenteResponsavel = lista[8].get(unit); |
if(lista[9].size() > unit) |
courseUnitInputLine.emailDocenteResponsavel = lista[9].get(unit); |
courseUnitInputLine.codigoSIGESDocente1 = lista[10].get(unit); |
courseUnitInputLine.outroDocente1 = lista[11].get(unit); |
courseUnitInputLine.docenteEmail1 = lista[12].get(unit); |
if(lista[10].size() > unit) |
courseUnitInputLine.codigoSIGESDocente1 = lista[10].get(unit); |
if(lista[11].size() > unit) |
courseUnitInputLine.outroDocente1 = lista[11].get(unit); |
if(lista[12].size() > unit) |
courseUnitInputLine.docenteEmail1 = lista[12].get(unit); |
courseUnitInputLine.codigoSIGESDocente2 = lista[13].get(unit); |
courseUnitInputLine.outroDocente2 = lista[14].get(unit); |
courseUnitInputLine.docenteEmail2 = lista[15].get(unit); |
if(lista[13].size() > unit) |
courseUnitInputLine.codigoSIGESDocente2 = lista[13].get(unit); |
if(lista[14].size() > unit) |
courseUnitInputLine.outroDocente2 = lista[14].get(unit); |
if(lista[15].size() > unit) |
courseUnitInputLine.docenteEmail2 = lista[15].get(unit); |
courseUnitInputLine.codigoSIGESDocente3 = lista[16].get(unit); |
courseUnitInputLine.outroDocente3 = lista[17].get(unit); |
courseUnitInputLine.docenteEmail3 = lista[18].get(unit); |
if(lista[16].size() > unit) |
courseUnitInputLine.codigoSIGESDocente3 = lista[16].get(unit); |
if(lista[17].size() > unit) |
courseUnitInputLine.outroDocente3 = lista[17].get(unit); |
if(lista[18].size() > unit) |
courseUnitInputLine.docenteEmail3 = lista[18].get(unit); |
courseUnitInputLine.codigoSIGESDocente4 = lista[19].get(unit); |
courseUnitInputLine.outroDocente4 = lista[20].get(unit); |
courseUnitInputLine.docenteEmail4 = lista[21].get(unit); |
if(lista[19].size() > unit) |
courseUnitInputLine.codigoSIGESDocente4 = lista[19].get(unit); |
if(lista[20].size() > unit) |
courseUnitInputLine.outroDocente4 = lista[20].get(unit); |
if(lista[21].size() > unit) |
courseUnitInputLine.docenteEmail4 = lista[21].get(unit); |
courseUnitInputLine.objetivosDaAprendizagem = lista[22].get(unit); |
courseUnitInputLine.conteudosProgramaticos = lista[23].get(unit); |
courseUnitInputLine.demonstracaoCoerenciaConteudosObjectivos = lista[24].get(unit); |
courseUnitInputLine.metodologiasEnsino = lista[25].get(unit); |
courseUnitInputLine.alunosOrdinariosPorFrequencia = lista[26].get(unit); |
courseUnitInputLine.alunosOrdinariosPorExame = lista[27].get(unit); |
courseUnitInputLine.alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia = lista[28].get(unit); |
courseUnitInputLine.alunosMobilidadeAlunosComEstatutoEspecialPorExame = lista[29].get(unit); |
courseUnitInputLine.demonstracaoDaCoerenciaMetodologiasObjectivos = lista[30].get(unit); |
courseUnitInputLine.bibliografiaPrincipal = lista[31].get(unit); |
courseUnitInputLine.adaptacaoMetodologiasObjectivos = lista[33].get(unit); |
courseUnitInputLine.verificacaoCargaECTS = lista[34].get(unit); |
courseUnitInputLine.avaliacaoFuncaoObjectivos = lista[35].get(unit); |
courseUnitInputLine.metodologiasFacilitamParticipacaoCientificas = lista[36].get(unit); |
courseUnitInputLine.ects = lista[38].get(unit); |
courseUnitInputLine.preRequisitos = lista[39].get(unit); |
courseUnitInputLine.obrigatoria = lista[40].get(unit); |
courseUnitInputLine.lingua1 = lista[41].get(unit); |
courseUnitInputLine.lingua2 = lista[42].get(unit); |
if(lista[22].size() > unit) |
courseUnitInputLine.objetivosDaAprendizagem = lista[22].get(unit); |
if(lista[23].size() > unit) |
courseUnitInputLine.conteudosProgramaticos = lista[23].get(unit); |
if(lista[24].size() > unit) |
courseUnitInputLine.demonstracaoCoerenciaConteudosObjectivos = lista[24].get(unit); |
if(lista[25].size() > unit) |
courseUnitInputLine.metodologiasEnsino = lista[25].get(unit); |
if(lista[26].size() > unit) |
courseUnitInputLine.alunosOrdinariosPorFrequencia = lista[26].get(unit); |
if(lista[27].size() > unit) |
courseUnitInputLine.alunosOrdinariosPorExame = lista[27].get(unit); |
if(lista[28].size() > unit) |
courseUnitInputLine.alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia = lista[28].get(unit); |
if(lista[29].size() > unit) |
courseUnitInputLine.alunosMobilidadeAlunosComEstatutoEspecialPorExame = lista[29].get(unit); |
if(lista[30].size() > unit) |
courseUnitInputLine.demonstracaoDaCoerenciaMetodologiasObjectivos = lista[30].get(unit); |
if(lista[31].size() > unit) |
courseUnitInputLine.bibliografiaPrincipal = lista[31].get(unit); |
if(lista[32].size() > unit) |
courseUnitInputLine.bibliografiaComplementar = lista[32].get(unit); |
if(lista[34].size() > unit) |
courseUnitInputLine.adaptacaoMetodologiasObjectivos = lista[34].get(unit); |
if(lista[35].size() > unit) |
courseUnitInputLine.verificacaoCargaECTS = lista[35].get(unit); |
if(lista[36].size() > unit) |
courseUnitInputLine.avaliacaoFuncaoObjectivos = lista[36].get(unit); |
if(lista[37].size() > unit) |
courseUnitInputLine.metodologiasFacilitamParticipacaoCientificas = lista[37].get(unit); |
if(lista[39].size() > unit) |
courseUnitInputLine.ects = lista[39].get(unit); |
if(lista[40].size() > unit) |
courseUnitInputLine.preRequisitos = lista[40].get(unit); |
if(lista[41].size() > unit) |
courseUnitInputLine.obrigatoria = lista[41].get(unit); |
if(lista[42].size() > unit) |
courseUnitInputLine.lingua1 = lista[42].get(unit); |
if(lista[43].size() > unit) |
courseUnitInputLine.lingua2 = lista[43].get(unit); |
if(lista[45].size() > unit) |
courseUnitInputLine.cargaHorariaT = lista[45].get(unit); |
if(lista[46].size() > unit) |
courseUnitInputLine.cargaHorariaTP = lista[46].get(unit); |
if(lista[47].size() > unit) |
courseUnitInputLine.cargaHorariaPL = lista[47].get(unit); |
if(lista[48].size() > unit) |
courseUnitInputLine.cargaHorariaS = lista[48].get(unit); |
if(lista[49].size() > unit) |
courseUnitInputLine.cargaHorariaTC = lista[49].get(unit); |
if(lista[50].size() > unit) |
courseUnitInputLine.cargaHorariaO = lista[50].get(unit); |
if(lista[51].size() > unit) |
courseUnitInputLine.cargaHorariaOT = lista[51].get(unit); |
if(lista[52].size() > unit) |
courseUnitInputLine.cargaHorariaTotal = lista[52].get(unit); |
if(courseUnitInputLine.semestre.equals("S1") || courseUnitInputLine.semestre.equals("S2") || courseUnitInputLine.semestre.equals("A")) |
unitsLines.add(courseUnitInputLine); |
else |
234,77 → 459,57 |
// System.out.println(line.toString()); |
HibernateUtils.getCurrentSession().beginTransaction(); |
HibernateUtils.getCurrentSession().connection().setAutoCommit(false); |
System.out.println("Unidade curricular " + line.codigoSIGESUnidade + " " + line.nomeUnidadeCurricular); |
importCourseUnit(line,importYear); |
HibernateUtils.getCurrentSession().flush(); |
HibernateUtils.getCurrentSession().connection().commit(); |
System.out.println(line.alunosOrdinariosPorFrequencia); |
HibernateUtils.getCurrentSession().getTransaction().commit(); |
} |
} |
static String importYear = "201213"; |
private static void importCourseUnit(CourseUnitInputLine line, String importYear) throws TransformerException, IOException, FOPException { |
CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique(line.codigoSIGESUnidade,line.codigoCurso,line.semestre, importYear); |
CourseUnit cu; |
try{ |
cu = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique(line.codigoSIGESUnidade,line.codigoCurso,line.semestre, importYear); |
}catch(NonUniqueResultException e) |
{ |
errors.add("unidade nao unica: " + line.codigoSIGESUnidade + ":" + line.codigoCurso + ":" + line.semestre + ":" + importYear ); |
return; |
} |
if(cu != null) |
{ |
setCourse(cu, line); |
if(!setCourse(cu, line)) |
{ |
errors.add("Curso não encontrada: line.codigoSIGESUnidade,line.codigoCurso,line.semestre, importYear: " + line.codigoSIGESUnidade + ":" + line.codigoCurso + ":" + line.semestre + ":" + importYear ); |
return; |
} |
} |
else |
{ |
cu = createNewCourseUnit(cu,line,importYear); |
errors.add("Unidade não encontrada: line.codigoSIGESUnidade,line.codigoCurso,line.semestre, importYear: " + line.codigoSIGESUnidade + ":" + line.codigoCurso + ":" + line.semestre + ":" + importYear ); |
// cu = createNewCourseUnit(cu,line,importYear); |
return; |
} |
persistCourseUnitProgram(cu,line); |
setTeachers(cu,line); |
createPdf(line,cu); |
new SaveCourseUnitProgram().createPdf(cu,errors); |
cu.setValidProgram(valiPrograms); |
} |
private static void createPdf(CourseUnitInputLine line, CourseUnit cu) throws IOException, TransformerException, FOPException { |
Document responseDoc = DocumentHelper.createDocument(); |
Namespace namespace = new Namespace("uc", "http://baco.estgp.pt/schemas/courseunits/program/"); |
responseDoc.setXMLEncoding("ISO-8859-1"); |
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); |
Element curriculum = responseDoc.addElement(new QName("UnidadeCurricular", namespace)); |
curriculum.addAttribute(new QName("data",namespace),sdf.format(new java.util.Date())); |
Element curso = curriculum.addElement(new QName("curso",namespace)); |
curso.setText(cu.getCourseName()); |
Element anoLectivo = curriculum.addElement(new QName("anoLectivo",namespace)); |
anoLectivo.setText(DatesUtils.getImportYearPrograms(cu.getImportYear())); |
Element unidadeCurricular = curriculum.addElement(new QName("unidadeCurricular",namespace)); |
unidadeCurricular.setText(cu.getName()); |
Element responsavel = curriculum.addElement(new QName("responsavel",namespace)); |
responsavel.setText(line.nomeDocenteResponsavel); |
Element responsavelEmail = curriculum.addElement(new QName("responsavelEmail",namespace)); |
responsavelEmail.setText(line.emailDocenteResponsavel); |
Element apresentacaoObjectivos = curriculum.addElement(new QName("objetivosDaAprendizagem",namespace)); |
apresentacaoObjectivos.setText(line.objetivosDaAprendizagem); |
Dom4jUtil.writeSout(responseDoc); |
FileOutputStream teste = new FileOutputStream("D:\\Jorge\\Documents\\estg\\projectos\\Fichas Curriculares Baco\\APM (1).pdf"); |
PdfUtils.createPdfFromXml(new DOMSource(Dom4jUtil.toW3c(responseDoc)), "pt/estgp/estgweb/services/courseunits/courseunitprogram.fo.xsl", teste); |
teste.flush(); |
teste.close(); |
} |
private static void setTeachers(CourseUnit cu, CourseUnitInputLine line) |
{ |
if(line.codSIGESDocenteResponsavel != null && line.codSIGESDocenteResponsavel.trim().length() > 0) |
{ |
checkTeacher(cu, line.codSIGESDocenteResponsavel,line.nomeDocenteResponsavel,line.emailDocenteResponsavel); |
checkTeacherResponsable(cu, line.codSIGESDocenteResponsavel,line.nomeDocenteResponsavel,line.emailDocenteResponsavel); |
} |
else |
System.out.println("Nao existe docente responsavel para a unidade " + cu.getCode()); |
319,6 → 524,13 |
checkTeacher(cu, line.codigoSIGESDocente4,line.outroDocente4,line.docenteEmail4); |
} |
static List<String> errors = new ArrayList<String>(); |
static List<String> infos = new ArrayList<String>(); |
private static void checkTeacher(CourseUnit cu, String codSIGESDocenteResponsavel, String nomeDocenteResponsavel, String emailDocenteResponsavel) { |
try{ |
332,8 → 544,14 |
break; |
} |
} |
if(!found) |
if(!found && t != null) |
cu.getTeachers().add((TeacherImpl) t); |
else if(!found && t == null) |
{ |
errors.add("Teacher: " + codSIGESDocenteResponsavel + " not found in courseUnit " + cu.getName() + "(" + cu.getCode() + ") no curso " + cu.getCourseName()); |
} |
}catch(Exception e) |
{ |
341,6 → 559,32 |
} |
private static void checkTeacherResponsable(CourseUnit cu, String codSIGESDocenteResponsavel, String nomeDocenteResponsavel, String emailDocenteResponsavel) { |
try{ |
Teacher t = DaoFactory.getTeacherDaoImpl().loadBySigesCode(Integer.parseInt(codSIGESDocenteResponsavel)); |
if(t != null) |
{ |
cu.setResponsableTeacher(t); |
if(cu.getTeachers().contains(t)) |
{ |
infos.add("Docente Responsavel removido da lista de docentes da unidade: " + t.getName()+ " - unit(" + cu.getId() + ") " + cu.getName()); |
cu.getTeachers().remove(t); |
} |
} |
else |
{ |
errors.add("Teacher: " + codSIGESDocenteResponsavel + " not found in courseUnit " + cu.getName() + "(" + cu.getCode() + ") no curso " + cu.getCourseName()); |
} |
}catch(Exception e) |
{ |
} |
} |
private static CourseUnit createNewCourseUnit(CourseUnit cu, CourseUnitInputLine line,String importYear) |
{ |
cu = DomainObjectFactory.createCourseUnitImpl(); |
356,45 → 600,269 |
return cu; |
} |
private static void setCourse(CourseUnit cu, CourseUnitInputLine line) { |
private static boolean setCourse(CourseUnit cu, CourseUnitInputLine line) { |
Course c = DaoFactory.getCourseDaoImpl().findCourseByCode(line.codigoCurso); |
if(c == null) |
{ |
System.out.println("Curso " + line.codigoCurso + " nao existe por favor crie e importe novamente"); |
return false; |
} |
cu.setCourse(c); |
return true; |
} |
private static void persistCourseUnitProgram(CourseUnit cu, CourseUnitInputLine line) throws IOException, TransformerException, FOPException { |
Session sess = HibernateUtils.getCurrentSession(); |
Session sess = HibernateUtils.getCurrentSession(); |
CourseUnitProgram program = cu.getCourseUnitProgram(); |
CourseUnitProgramPart2 program2; |
if(program == null) |
{ |
program = new CourseUnitProgramImpl(); |
program2 = new CourseUnitProgramPart2Impl(); |
program.setSaveDate(new java.util.Date()); |
program2.setSaveDate(new java.util.Date()); |
program.setCourseUnitProgramPart2(program2); |
sess.save(program); |
sess.save(program2); |
cu.setCourseUnitProgram(program); |
sess.save(program); |
} |
else |
program2 = program.getCourseUnitProgramPart2(); |
program.setAdaptacaoObjectivosMetodologia(line.adaptacaoMetodologiasObjectivos); |
program.setAvaliacaoEspeciaisFrequencia(line.alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia); |
program.setAvaliacaoEspeciaissExame(line.alunosMobilidadeAlunosComEstatutoEspecialPorExame); |
program.setAvaliacaoOrdinariosFrequencia(line.alunosOrdinariosPorFrequencia); |
program.setAvaliacaoOrdinariosExame(line.alunosOrdinariosPorExame); |
program2.setAvaliacaoEspeciaisFrequencia(line.alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia); |
program2.setAvaliacaoEspeciaissExame(line.alunosMobilidadeAlunosComEstatutoEspecialPorExame); |
program2.setAvaliacaoOrdinariosFrequencia(line.alunosOrdinariosPorFrequencia); |
program2.setAvaliacaoOrdinariosExame(line.alunosOrdinariosPorExame); |
program.setBibliografia(line.bibliografiaPrincipal); |
program.setConteudos(line.conteudosProgramaticos); |
program.setBibliografiaComplementar(line.bibliografiaComplementar); |
program2.setConteudos(line.conteudosProgramaticos); |
program.setDemonstracaoCargaEcts(line.verificacaoCargaECTS); |
program.setDemonstracaoObjectivosMetodologia(line.demonstracaoDaCoerenciaMetodologiasObjectivos); |
program2.setDemonstracaoObjectivosMetodologia(line.demonstracaoDaCoerenciaMetodologiasObjectivos); |
program.setEcts(line.ects); |
program.setGarantiaAvaliacaoFuncaObjectivos(line.avaliacaoFuncaoObjectivos); |
program.setLingua1(line.lingua1); |
program.setLingua2(line.lingua2); |
program.setMetodologiasActividadeCientifica(line.metodologiasFacilitamParticipacaoCientificas); |
program.setMetodologiasEnsino(line.metodologiasEnsino); |
program.setDemonstracaoCoerenciaConteudos(line.demonstracaoCoerenciaConteudosObjectivos); |
program.setObjectivos(line.objetivosDaAprendizagem); |
program2.setMetodologiasEnsino(line.metodologiasEnsino); |
program2.setDemonstracaoCoerenciaConteudos(line.demonstracaoCoerenciaConteudosObjectivos); |
program2.setObjectivos(line.objetivosDaAprendizagem); |
program.setObrigatoria(line.obrigatoria); |
program.setPrerequisitos(line.preRequisitos); |
program.setCargaHorariaTotal(line.cargaHorariaTotal); |
program.setCargaHorariaT(line.cargaHorariaT); |
program.setCargaHorariaTP(line.cargaHorariaTP); |
program.setCargaHorariaPL(line.cargaHorariaPL); |
program.setCargaHorariaS(line.cargaHorariaS); |
program.setCargaHorariaTC(line.cargaHorariaTC); |
program.setCargaHorariaO(line.cargaHorariaO); |
program.setCargaHorariaOT(line.cargaHorariaOT); |
} |
// private static void createPdf(CourseUnitInputLine line, CourseUnit cu) throws IOException, TransformerException, FOPException { |
// Document responseDoc = DocumentHelper.createDocument(); |
// Namespace namespace = new Namespace("uc", "http://baco.estgp.pt/schemas/courseunits/program/"); |
// responseDoc.setXMLEncoding("ISO-8859-1"); |
// |
// SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); |
// Element curriculum = responseDoc.addElement(new QName("UnidadeCurricular", namespace)); |
// curriculum.addAttribute(new QName("data",namespace),sdf.format(new java.util.Date())); |
// |
// Element curso = curriculum.addElement(new QName("curso",namespace)); |
// if(cu.getCourseName() == null) |
// { |
// if(cu.getCourse() == null) |
// { |
// System.out.println("Unidade nao tem curso"); |
// curso.setText("Desactualizado"); |
// } |
// else |
// { |
// System.out.println("Unidade nao tem nome no curso a actualizar com " + cu.getCourse().getName()); |
// curso.setText(cu.getCourse().getName()); |
// cu.setCourseName(cu.getCourse().getName()); |
// } |
// } |
// else |
// curso.setText(cu.getCourseName()); |
// |
// Element anoLectivo = curriculum.addElement(new QName("anoLectivo",namespace)); |
// anoLectivo.setText(DatesUtils.getImportYearPrograms(cu.getImportYear())); |
// |
// Element unidadeCurricular = curriculum.addElement(new QName("unidadeCurricular",namespace)); |
// unidadeCurricular.setText(cu.getName()); |
// |
// Element responsavel = curriculum.addElement(new QName("responsavel",namespace)); |
// responsavel.setText(line.nomeDocenteResponsavel); |
// |
// Element responsavelEmail = curriculum.addElement(new QName("responsavelEmail",namespace)); |
// responsavelEmail.setText(line.emailDocenteResponsavel); |
// |
// |
// |
// Element apresentacaoObjectivos = curriculum.addElement(new QName("objetivosDaAprendizagem",namespace)); |
// apresentacaoObjectivos.setText(line.objetivosDaAprendizagem); |
// |
// |
// |
// Element codigoSIGESDocente1 = curriculum.addElement(new QName("codigoSIGESDocente1",namespace)); |
// codigoSIGESDocente1.setText(line.codigoSIGESDocente1); |
// Element outroDocente1 = curriculum.addElement(new QName("outroDocente1",namespace)); |
// outroDocente1.setText(line.outroDocente1); |
// Element docenteEmail1 = curriculum.addElement(new QName("docenteEmail1",namespace)); |
// docenteEmail1.setText(line.docenteEmail1); |
// |
// |
// Element codigoSIGESDocente2 = curriculum.addElement(new QName("codigoSIGESDocente2",namespace)); |
// codigoSIGESDocente2.setText(line.codigoSIGESDocente2); |
// Element outroDocente2 = curriculum.addElement(new QName("outroDocente2",namespace)); |
// outroDocente2.setText(line.outroDocente2); |
// Element docenteEmail2 = curriculum.addElement(new QName("docenteEmail2",namespace)); |
// docenteEmail2.setText(line.docenteEmail2); |
// |
// Element codigoSIGESDocente3 = curriculum.addElement(new QName("codigoSIGESDocente3",namespace)); |
// codigoSIGESDocente3.setText(line.codigoSIGESDocente2); |
// Element outroDocente3 = curriculum.addElement(new QName("outroDocente3",namespace)); |
// outroDocente3.setText(line.outroDocente3); |
// Element docenteEmail3 = curriculum.addElement(new QName("docenteEmail3",namespace)); |
// docenteEmail3.setText(line.docenteEmail3); |
// |
// |
// Element codigoSIGESDocente4 = curriculum.addElement(new QName("codigoSIGESDocente4",namespace)); |
// codigoSIGESDocente4.setText(line.codigoSIGESDocente4); |
// Element outroDocente4 = curriculum.addElement(new QName("outroDocente4",namespace)); |
// outroDocente4.setText(line.outroDocente4); |
// Element docenteEmail4 = curriculum.addElement(new QName("docenteEmail4",namespace)); |
// docenteEmail4.setText(line.docenteEmail4); |
// |
// |
// Element conteudosProgramaticos = curriculum.addElement(new QName("conteudosProgramaticos",namespace)); |
// conteudosProgramaticos.setText(line.conteudosProgramaticos); |
// |
// Element demonstracaoCoerenciaConteudosObjectivos = curriculum.addElement(new QName("demonstracaoCoerenciaConteudosObjectivos",namespace)); |
// demonstracaoCoerenciaConteudosObjectivos.setText(line.demonstracaoCoerenciaConteudosObjectivos); |
// |
// Element metodologiasEnsino = curriculum.addElement(new QName("metodologiasEnsino",namespace)); |
// metodologiasEnsino.setText(line.metodologiasEnsino); |
// |
// Element alunosOrdinariosPorFrequencia = curriculum.addElement(new QName("alunosOrdinariosPorFrequencia",namespace)); |
// alunosOrdinariosPorFrequencia.setText(line.alunosOrdinariosPorFrequencia); |
// |
// Element alunosOrdinariosPorExame = curriculum.addElement(new QName("alunosOrdinariosPorExame",namespace)); |
// alunosOrdinariosPorExame.setText(line.alunosOrdinariosPorExame); |
// |
// Element alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia = curriculum.addElement(new QName("alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia",namespace)); |
// alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia.setText(line.alunosMobilidadeAlunosComEstatutoEspecialPorFrequencia); |
// |
// Element alunosMobilidadeAlunosComEstatutoEspecialPorExame = curriculum.addElement(new QName("alunosMobilidadeAlunosComEstatutoEspecialPorExame",namespace)); |
// alunosMobilidadeAlunosComEstatutoEspecialPorExame.setText(line.alunosMobilidadeAlunosComEstatutoEspecialPorExame); |
// |
// |
// Element demonstracaoDaCoerenciaMetodologiasObjectivos = curriculum.addElement(new QName("demonstracaoDaCoerenciaMetodologiasObjectivos",namespace)); |
// demonstracaoDaCoerenciaMetodologiasObjectivos.setText(line.demonstracaoDaCoerenciaMetodologiasObjectivos); |
// |
// |
// Element bibliografiaPrincipal = curriculum.addElement(new QName("bibliografiaPrincipal",namespace)); |
// bibliografiaPrincipal.setText(line.bibliografiaPrincipal); |
// |
// Element bibliografiaComplementar = curriculum.addElement(new QName("bibliografiaComplementar",namespace)); |
// bibliografiaComplementar.setText(line.bibliografiaComplementar); |
// |
// Element adaptacaoMetodologiasObjectivos = curriculum.addElement(new QName("adaptacaoMetodologiasObjectivos",namespace)); |
// adaptacaoMetodologiasObjectivos.setText(line.adaptacaoMetodologiasObjectivos); |
// |
// Element verificacaoCargaECTS = curriculum.addElement(new QName("verificacaoCargaECTS",namespace)); |
// verificacaoCargaECTS.setText(line.verificacaoCargaECTS); |
// |
// Element avaliacaoFuncaoObjectivos = curriculum.addElement(new QName("avaliacaoFuncaoObjectivos",namespace)); |
// avaliacaoFuncaoObjectivos.setText(line.avaliacaoFuncaoObjectivos); |
// |
// Element metodologiasFacilitamParticipacaoCientificas = curriculum.addElement(new QName("metodologiasFacilitamParticipacaoCientificas",namespace)); |
// metodologiasFacilitamParticipacaoCientificas.setText(line.metodologiasFacilitamParticipacaoCientificas); |
// |
// Element ects = curriculum.addElement(new QName("ects",namespace)); |
// ects.setText(line.ects); |
// |
// |
// Element preRequisitos = curriculum.addElement(new QName("preRequisitos",namespace)); |
// preRequisitos.setText(line.preRequisitos); |
// |
// Element obrigatoria = curriculum.addElement(new QName("obrigatoria",namespace)); |
// obrigatoria.setText(line.obrigatoria); |
// |
// Element lingua1 = curriculum.addElement(new QName("lingua1",namespace)); |
// lingua1.setText(line.lingua1); |
// |
// Element lingua2 = curriculum.addElement(new QName("lingua2",namespace)); |
// lingua2.setText(line.lingua2); |
// |
// Element cargaHorariaT = curriculum.addElement(new QName("cargaHorariaT",namespace)); |
// cargaHorariaT.setText(line.cargaHorariaT); |
// Element cargaHorariaTP = curriculum.addElement(new QName("cargaHorariaTP",namespace)); |
// cargaHorariaTP.setText(line.cargaHorariaTP); |
// Element cargaHorariaPL = curriculum.addElement(new QName("cargaHorariaPL",namespace)); |
// cargaHorariaPL.setText(line.cargaHorariaPL); |
// Element cargaHorariaS = curriculum.addElement(new QName("cargaHorariaS",namespace)); |
// cargaHorariaS.setText(line.cargaHorariaS); |
// Element cargaHorariaTC = curriculum.addElement(new QName("cargaHorariaTC",namespace)); |
// cargaHorariaTC.setText(line.cargaHorariaTC); |
// Element cargaHorariaO = curriculum.addElement(new QName("cargaHorariaO",namespace)); |
// cargaHorariaO.setText(line.cargaHorariaO); |
// Element cargaHorariaOT = curriculum.addElement(new QName("cargaHorariaOT",namespace)); |
// cargaHorariaOT.setText(line.cargaHorariaOT); |
// |
// Element cargaHorariaTotal = curriculum.addElement(new QName("cargaHorariaTotal",namespace)); |
// cargaHorariaTotal.setText(line.cargaHorariaTotal); |
// |
// |
// |
// |
// |
// |
// |
// |
// |
// |
// |
//// Dom4jUtil.writeSout(responseDoc); |
// System.out.println(""); |
// |
// String path = Globals.TMP_DIR + File.separator + cu.getName() + ".pdf"; |
// FileOutputStream teste = new FileOutputStream(path); |
// Map<String,Object> params = new HashMap<String,Object>(); |
// params.put("site", Globals.SITE_URL); |
// PdfUtils.createPdfFromXml(new DOMSource(Dom4jUtil.toW3c(responseDoc)), "pt/estgp/estgweb/services/courseunits/courseunitprogram.fo.xsl", teste,params); |
// teste.flush(); |
// teste.close(); |
// |
// |
// RepositoryService repositoryService = new RepositoryService(); |
// User owner; |
// if(cu.getTeachers() != null && cu.getTeachers().size() > 0) |
// owner = cu.getTeachers().iterator().next(); |
// else |
// owner = DaoFactory.getUserDaoImpl().load(new Long(1)); |
// if(owner.getUsername() == null) |
// { |
// errors.add("Docente: " + owner.getName() + " ( " + owner.getId() + " ) don't have username check that situation"); |
//// owner.setUsername("UKNOWN"); |
// } |
// if(cu.getProgramStreamId() == null) |
// { |
// String identifier = repositoryService.storeRepositoryFile(new FileInputStream(path), "application/pdf", "pdf",((int) new File(path).length()), cu.getCode() + ".pdf", "courseunit.program.description" + cu.getName(), ResourceAccessControlEnum.publicDomain,owner); |
// cu.setProgramStreamId(identifier); |
// } |
// else |
// { |
// repositoryService.updateRepositoryFile(cu.getProgramStreamId(), new FileInputStream(path), "application/pdf", "pdf", ((int)new File(path).length()),cu.getCode() + ".pdf", "courseunit.program.description " + cu.getName(), ResourceAccessControlEnum.publicDomain); |
// } |
// cu.setObjectives(line.objetivosDaAprendizagem); |
// //Obrigar a ser falso |
// cu.setValidProgram(valiPrograms); |
// } |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/UserView.java |
---|
595,7 → 595,20 |
} |
return views; |
} |
public static List<UserView> getTeacherViews(List<Teacher> users) |
{ |
if(users == null) |
return null; |
List<UserView> views = new ArrayList<UserView>(); |
for(User u: users) |
{ |
views.add(new UserView(u)); |
} |
return views; |
} |
public static Set<User> loadUsers(List<UserView> views) |
{ |
if(views != null) |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitProgramView.java |
---|
New file |
0,0 → 1,105 |
package pt.estgp.estgweb.domain.views; |
import pt.estgp.estgweb.domain.CourseUnitProgram; |
import pt.estgp.estgweb.domain.CourseUnitProgramImpl; |
import java.io.Serializable; |
/** |
* @author Jorge Machado |
* @date 2/Mar/2008 |
* @time 19:34:49 |
* @see pt.estgp.estgweb.domain.views |
*/ |
public class CourseUnitProgramView extends DomainObjectView |
{ |
private CourseUnitProgram courseUnitProgram; |
public Class getReferenceClass() |
{ |
return CourseUnitProgramImpl.class; |
} |
public Serializable getSerializable() |
{ |
return courseUnitProgram.getId(); |
} |
public CourseUnitProgramView() |
{ |
} |
public CourseUnitProgram getCourseUnitProgram() { |
return courseUnitProgram; |
} |
public void setCourseUnitProgram(CourseUnitProgram courseUnitProgram) { |
this.courseUnitProgram = courseUnitProgram; |
} |
public CourseUnitProgramView(CourseUnitProgram courseUnitProgram) |
{ |
super(courseUnitProgram); |
this.courseUnitProgram = courseUnitProgram; |
} |
public void persistViewInObjectTeacher(CourseUnitProgram c) |
{ |
c.getCourseUnitProgramPart2().setAvaliacaoOrdinariosFrequencia(courseUnitProgram.getCourseUnitProgramPart2().getAvaliacaoOrdinariosFrequencia()); |
c.getCourseUnitProgramPart2().setAvaliacaoOrdinariosExame(courseUnitProgram.getCourseUnitProgramPart2().getAvaliacaoOrdinariosExame()); |
c.getCourseUnitProgramPart2().setAvaliacaoEspeciaisFrequencia(courseUnitProgram.getCourseUnitProgramPart2().getAvaliacaoEspeciaisFrequencia()); |
c.getCourseUnitProgramPart2().setAvaliacaoEspeciaissExame(courseUnitProgram.getCourseUnitProgramPart2().getAvaliacaoEspeciaissExame()); |
c.getCourseUnitProgramPart2().setMetodologiasEnsino(courseUnitProgram.getCourseUnitProgramPart2().getMetodologiasEnsino()); |
c.getCourseUnitProgramPart2().setDemonstracaoObjectivosMetodologia(courseUnitProgram.getCourseUnitProgramPart2().getDemonstracaoObjectivosMetodologia()); |
c.setBibliografia(courseUnitProgram.getBibliografia()); |
c.setBibliografiaComplementar(courseUnitProgram.getBibliografiaComplementar()); |
c.getCourseUnitProgramPart2().setConteudos(courseUnitProgram.getCourseUnitProgramPart2().getConteudos()); |
c.getCourseUnitProgramPart2().setDemonstracaoCoerenciaConteudos(courseUnitProgram.getCourseUnitProgramPart2().getDemonstracaoCoerenciaConteudos()); |
} |
public void persistViewInObjectCoordinator(CourseUnitProgram c) |
{ |
c.getCourseUnitProgramPart2().setObjectivos(courseUnitProgram.getCourseUnitProgramPart2().getObjectivos()); |
c.setPrerequisitos(courseUnitProgram.getPrerequisitos()); |
c.setLingua1(courseUnitProgram.getLingua1()); |
c.setLingua2(courseUnitProgram.getLingua2()); |
c.setEcts(courseUnitProgram.getEcts()); |
c.setCargaHorariaTotal(courseUnitProgram.getCargaHorariaTotal()); |
c.setCargaHorariaT(courseUnitProgram.getCargaHorariaT()); |
c.setCargaHorariaTP(courseUnitProgram.getCargaHorariaTP()) ; |
c.setCargaHorariaPL(courseUnitProgram.getCargaHorariaPL()); |
c.setCargaHorariaTC(courseUnitProgram.getCargaHorariaTC()); |
c.setCargaHorariaO(courseUnitProgram.getCargaHorariaO()); |
c.setCargaHorariaS(courseUnitProgram.getCargaHorariaS()); |
c.setCargaHorariaOT(courseUnitProgram.getCargaHorariaOT()); |
} |
public void persistViewInObjectAdministrator(CourseUnitProgram c) |
{ |
c.getCourseUnitProgramPart2().setObjectivos(courseUnitProgram.getCourseUnitProgramPart2().getObjectivos()); |
c.setPrerequisitos(courseUnitProgram.getPrerequisitos()); |
c.setLingua1(courseUnitProgram.getLingua1()); |
c.setLingua2(courseUnitProgram.getLingua2()); |
c.setEcts(courseUnitProgram.getEcts()); |
c.setCargaHorariaTotal(courseUnitProgram.getCargaHorariaTotal()); |
c.setCargaHorariaT(courseUnitProgram.getCargaHorariaT()); |
c.setCargaHorariaTP(courseUnitProgram.getCargaHorariaTP()) ; |
c.setCargaHorariaPL(courseUnitProgram.getCargaHorariaPL()); |
c.setCargaHorariaTC(courseUnitProgram.getCargaHorariaTC()); |
c.setCargaHorariaO(courseUnitProgram.getCargaHorariaO()); |
c.setCargaHorariaS(courseUnitProgram.getCargaHorariaS()); |
c.setCargaHorariaOT(courseUnitProgram.getCargaHorariaOT()); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java |
---|
26,6 → 26,8 |
private String name; |
private String code; |
private long courseId; |
private long coordinatorId; |
private long responsableId; |
private String courseCode; |
private String courseName; |
private String semestre; |
38,6 → 40,7 |
private List<CourseUnitSummaryView> summaries; |
private CourseUnit courseUnit; |
private UserView responsableTeacher; |
private Set<UserView> teachers; |
private Set<UserView> students; |
private List<UserView> studentsOrderedByName; |
99,6 → 102,10 |
init(courseUnit, false,false,false,false); |
} |
public CourseUnit getCourseUnit() { |
return courseUnit; |
} |
private void init(CourseUnit courseUnit, boolean initTeachers, boolean initStudents, boolean initBlog, boolean validatorUser) |
{ |
this.pathIntranet = courseUnit.getPathIntranet(); |
110,7 → 117,12 |
this.importYear = courseUnit.getImportYear(); |
this.semestre = courseUnit.getSemestre(); |
this.courseCode = courseUnit.getCourseCode(); |
this.objectives = courseUnit.getObjectives(); |
// this.objectives = courseUnit.getObjectives(); DEPRECATED |
if(courseUnit.getCourseUnitProgram() !=null && courseUnit.getCourseUnitProgram().getCourseUnitProgramPart2() != null) |
this.objectives = courseUnit.getCourseUnitProgram().getCourseUnitProgramPart2().getObjectivos(); |
else |
this.objectives = null; |
this.contentsGrants = courseUnit.getContentsGrants(); |
if(courseUnit.getProgramStreamId() != null) |
{ |
130,6 → 142,7 |
students = new HashSet<UserView>(); |
if(initTeachers && courseUnit.getTeachers() != null) |
{ |
responsableTeacher = new UserView(courseUnit.getResponsableTeacher()); |
for(TeacherImpl t: courseUnit.getTeachers()) |
{ |
UserView u = new UserView(t); |
151,10 → 164,32 |
if(courseUnit.getCourse() != null) |
{ |
courseId = courseUnit.getCourse().getId(); |
if(courseUnit.getCourse().getCoordinator() != null) |
coordinatorId = courseUnit.getCourse().getCoordinator().getId(); |
} |
if(courseUnit.getResponsableTeacher() != null) |
{ |
responsableId = courseUnit.getResponsableTeacher().getId(); |
} |
} |
public long getCoordinatorId() { |
return coordinatorId; |
} |
public void setCoordinatorId(long coordinatorId) { |
this.coordinatorId = coordinatorId; |
} |
public long getResponsableId() { |
return responsableId; |
} |
public void setResponsableId(long responsableId) { |
this.responsableId = responsableId; |
} |
public long getCourseId() |
{ |
return courseId; |
282,7 → 317,13 |
if(courseId > 0) |
{ |
c.setCourse(DaoFactory.getCourseDaoImpl().load(courseId)); |
c.setCourseCode(c.getCourse().getCode()); |
c.setCourseName(c.getCourse().getName()); |
} |
if(responsableId > 0) |
{ |
c.setResponsableTeacher(DaoFactory.getTeacherDaoImpl().load(responsableId)); |
} |
} |
public String getObjectives() |
476,7 → 517,14 |
this.validatorUser = validatorUser; |
} |
public UserView getResponsableTeacher() { |
return responsableTeacher; |
} |
public void setResponsableTeacher(UserView responsableTeacher) { |
this.responsableTeacher = responsableTeacher; |
} |
public void setSummaries(List<CourseUnitSummaryView> summaries) |
{ |
this.summaries = summaries; |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitProgramDaoImpl.java |
---|
New file |
0,0 → 1,23 |
package pt.estgp.estgweb.domain.dao.impl; |
/** |
* @author Jorge Machado |
* @date 28/Fev/2008 |
* @time 2:51:06 |
* @see pt.estgp.estgweb.domain.dao.impl |
*/ |
public class CourseUnitProgramDaoImpl extends CourseUnitProgramDao |
{ |
private CourseUnitProgramDaoImpl() |
{ |
} |
public static CourseUnitProgramDaoImpl getInstance() |
{ |
if (myInstance == null) |
{ |
myInstance = new CourseUnitProgramDaoImpl(); |
} |
return (CourseUnitProgramDaoImpl) myInstance; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java |
---|
1,25 → 1,22 |
package pt.estgp.estgweb.domain.dao.impl; |
import org.hibernate.criterion.Projection; |
import org.hibernate.criterion.Projections; |
import pt.estgp.estgweb.domain.*; |
import org.apache.log4j.Logger; |
import org.hibernate.Criteria; |
import org.hibernate.Query; |
import org.hibernate.criterion.Criterion; |
import org.hibernate.criterion.Order; |
import org.hibernate.sql.JoinFragment; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.CourseUnitImpl; |
import pt.estgp.estgweb.domain.Teacher; |
import pt.estgp.estgweb.domain.dao.DaoUtils; |
import pt.estgp.estgweb.services.common.SearchTypeEnum; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.Globals; |
import static org.hibernate.criterion.Restrictions.*; |
import static org.hibernate.criterion.Restrictions.eq; |
import org.hibernate.criterion.Criterion; |
import org.hibernate.criterion.Order; |
import org.hibernate.Criteria; |
import org.hibernate.Query; |
import org.hibernate.sql.JoinFragment; |
import org.apache.log4j.Logger; |
import java.util.Collection; |
import java.util.List; |
import java.util.Set; |
import static org.hibernate.criterion.Restrictions.*; |
/** |
* @author Jorge Machado |
* @date 28/Fev/2008 |
31,6 → 28,7 |
private static final Logger logger = Logger.getLogger(CourseUnitDaoImpl.class); |
private CourseUnitDaoImpl() |
{ |
} |
166,6 → 164,38 |
return null; |
} |
public void consistCourseUnitCourseCodes(String importYear) |
{ |
List<CourseUnit> courseUnit = createCriteria() |
.add(eq("importYear", importYear)).list(); |
for(CourseUnit cu: courseUnit) |
{ |
if(cu.getCourse() != null) |
{ |
if(cu.getCourseCode() == null || (cu.getCourseCode() != null && !cu.getCourseCode().equals(cu.getCourse().getCode()))) |
{ |
System.out.println("Course code wrong: " + cu.getId() + " - " + cu.getName() + " old CourseCode " + cu.getCourseCode() + " now:" + cu.getCourse().getCode() ); |
} |
if(cu.getCourseName() == null || (cu.getCourseName() != null && !cu.getCourseName().equals(cu.getCourse().getName()))) |
{ |
System.out.println("Course name wrong: " + cu.getId() + " - " + cu.getName() + " old CourseCode " + cu.getCourseName() + " now:" + cu.getCourse().getName() ); |
} |
cu.setCourseCode(cu.getCourse().getCode()); |
cu.setCourseName(cu.getCourse().getName()); |
} |
else |
{ |
cu.setCourseCode(""); |
cu.setCourseName(""); |
} |
} |
} |
//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 |
//se nao a carregar unidades vai buscar a errada |
public CourseUnit loadBySigesCodeUnique(String sigesCode, String courseCode, String semestre, String year) |
{ |
return (CourseUnit) |
210,13 → 240,13 |
public int countCourseUnits(String query, SearchTypeEnum searchType) |
{ |
Criterion c = DaoUtils.createSearchQuery(query, searchType, "objectives", "name"); |
Criterion c = DaoUtils.createSearchQuery(query, searchType, "objectives", "name","code"); |
return createCriteria().add(c).list().size(); |
} |
public List<CourseUnit> search(String query, SearchTypeEnum searchTypeEnum, int maxUnits, int page) |
{ |
Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "objectives", "name"); |
Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "objectives", "name","code"); |
Criteria criteria = createCriteria(); |
criteria.add(c) |
.addOrder(Order.asc("name")) |
345,4 → 375,16 |
{ |
return loadMissingProgramValidateGivenCourse(courseId).size(); |
} |
public List<String> getTeachersEmails(long unit) { |
Query q = createQuery("select e.email from " |
+ Teacher.class.getName() + " e join e.teachedUnits as unit " |
+ " where " |
+ " unit.id = ? " |
); |
q.setLong(0,unit); |
return q.list(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitProgramPart2DaoImpl.java |
---|
New file |
0,0 → 1,23 |
package pt.estgp.estgweb.domain.dao.impl; |
/** |
* @author Jorge Machado |
* @date 28/Fev/2008 |
* @time 2:51:06 |
* @see pt.estgp.estgweb.domain.dao.impl |
*/ |
public class CourseUnitProgramPart2DaoImpl extends CourseUnitProgramPart2Dao |
{ |
private CourseUnitProgramPart2DaoImpl() |
{ |
} |
public static CourseUnitProgramPart2DaoImpl getInstance() |
{ |
if (myInstance == null) |
{ |
myInstance = new CourseUnitProgramPart2DaoImpl(); |
} |
return (CourseUnitProgramPart2DaoImpl) myInstance; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/DaoFactory.java |
---|
1,6 → 1,5 |
package pt.estgp.estgweb.domain.dao; |
import pt.estgp.estgweb.domain.SurveyStructuralNode; |
import pt.estgp.estgweb.domain.dao.impl.*; |
/** |
17,8 → 16,19 |
return JobDaoImpl.getInstance(); |
} |
public static CourseUnitSummaryDaoImpl getCourseUnitSummaryDaoImpl() |
public static CourseUnitProgramDaoImpl getCourseUnitProgramDaoImpl() |
{ |
return CourseUnitProgramDaoImpl.getInstance(); |
} |
public static CourseUnitProgramPart2DaoImpl getCourseUnitProgramPart2DaoImpl() |
{ |
return CourseUnitProgramPart2DaoImpl.getInstance(); |
} |
public static CourseUnitSummaryDaoImpl getCourseUnitSummaryDaoImpl() |
{ |
return CourseUnitSummaryDaoImpl.getInstance(); |
} |
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitProgramPart2Impl.java |
---|
New file |
0,0 → 1,52 |
package pt.estgp.estgweb.domain; |
import java.io.Serializable; |
/** |
* @author Jorge Machado |
* @date 8/Jul/2008 |
* @see pt.estgp.estgweb.domain |
*/ |
public class CourseUnitProgramPart2Impl extends CourseUnitProgramPart2 |
{ |
public Serializable getSerializable() |
{ |
return getId(); |
} |
public CourseUnitProgramPart2Impl() { |
setObjectivos(""); |
setConteudos(""); |
setDemonstracaoCoerenciaConteudos(""); |
setMetodologiasEnsino(""); |
setAvaliacaoOrdinariosFrequencia(""); |
setAvaliacaoOrdinariosExame(""); |
setAvaliacaoEspeciaisFrequencia(""); |
setAvaliacaoEspeciaissExame(""); |
setDemonstracaoObjectivosMetodologia(""); |
} |
public void consistNullValues() |
{ |
if(getObjectivos() == null) |
setObjectivos(""); |
if(getConteudos() == null) |
setConteudos(""); |
if(getDemonstracaoCoerenciaConteudos() == null) |
setDemonstracaoCoerenciaConteudos(""); |
if(getMetodologiasEnsino() == null) |
setMetodologiasEnsino(""); |
if(getAvaliacaoOrdinariosFrequencia() == null) |
setAvaliacaoOrdinariosFrequencia(""); |
if(getAvaliacaoOrdinariosExame() == null) |
setAvaliacaoOrdinariosExame(""); |
if(getAvaliacaoEspeciaisFrequencia() == null) |
setAvaliacaoEspeciaisFrequencia(""); |
if(getAvaliacaoEspeciaissExame() == null) |
setAvaliacaoEspeciaissExame(""); |
if(getDemonstracaoObjectivosMetodologia() == null) |
setDemonstracaoObjectivosMetodologia(""); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/GenericUserImpl.java |
---|
1,18 → 1,14 |
package pt.estgp.estgweb.domain; |
import pt.estgp.estgweb.utils.RoleManager; |
import jomm.utils.MessageResources; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.utils.RoleManager; |
import java.util.Date; |
import java.util.List; |
import javax.servlet.http.HttpServletRequest; |
import java.io.Serializable; |
import java.util.List; |
import org.apache.log4j.Logger; |
import javax.servlet.http.HttpServletRequest; |
import jomm.utils.MessageResources; |
/** |
* @author Jorge Machado |
* @date 2/Mar/2008 |
/impl/src/java/pt/estgp/estgweb/filters/filters/CanValidateCourseUnit.java |
---|
New file |
0,0 → 1,56 |
package pt.estgp.estgweb.filters.filters; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.UserImpl; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.filters.chains.LoadControlFilter; |
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException; |
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException; |
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters; |
import pt.estgp.estgweb.utils.ReflectionBean; |
import pt.utl.ist.berserk.ServiceRequest; |
import pt.utl.ist.berserk.ServiceResponse; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
import java.io.Serializable; |
public class CanValidateCourseUnit extends LoadControlFilter |
{ |
private static final Logger logger = Logger.getLogger(CanValidateCourseUnit.class); |
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception |
{ |
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY); |
if(userSession.getUser() == null) |
{ |
logger.info("try access restricted area:" + request.getRequester()); |
throw new NeedAuthenticationException(); |
} |
if(userSession.getUser().isSuperuser()) |
return; |
ReflectionBean serializableBean = new ReflectionBean((String) filterParameters.parametersArray()[0]); |
Object serializableObjectContainer = request.getServiceParameters().getParameter(serializableBean.getName()); |
Serializable serializable = (Serializable) serializableBean.invoke(serializableObjectContainer); |
if(serializable != null && serializable instanceof Long && ((Long)serializable).intValue() > 0) |
{ |
CourseUnit courseUnit = (CourseUnit) LoadObjectFromParameters.loadObjectFromClassName(CourseUnit.class.getName(),filterParameters,request.getServiceParameters()); |
System.out.println((((UserImpl)userSession.getUser()).isTeacherOfCourseUnit(courseUnit.getId(),true) || DaoFactory.getUserDaoImpl().load(userSession.getUser().getId()).hasRole("services"))); |
if(!(((UserImpl)userSession.getUser()).isTeacherOfCourseUnit(courseUnit.getId(),true) || DaoFactory.getUserDaoImpl().load(userSession.getUser().getId()).hasRole("services"))) |
{ |
logger.warn(userSession.getUser().getUsername() + ": try access restricted area"); |
throw new AccessDeniedOperationException("fail.owner"); |
} |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/tags/HasNotRoleTag.java |
---|
1,14 → 1,13 |
package pt.estgp.estgweb.web.tags; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import javax.servlet.jsp.tagext.BodyTagSupport; |
import javax.servlet.jsp.JspException; |
import javax.servlet.jsp.JspWriter; |
import javax.servlet.jsp.tagext.BodyTagSupport; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.Globals; |
public class HasNotRoleTag extends BodyTagSupport |
{ |
39,7 → 38,20 |
public boolean go() |
{ |
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY); |
return !(userSession != null && userSession.getUser() != null && userSession.getUser().hasRole(role)); |
//return !(userSession != null && userSession.getUser() != null && userSession.getUser().hasRole(role)); |
if(userSession == null || userSession.getUser() == null) |
return true; |
String[] roles = role.split(","); |
for(String role: roles) |
{ |
if(userSession.getUser().hasRole(role)) |
return false; |
} |
return true; |
} |
public int doEndTag() throws JspException |
/impl/src/java/pt/estgp/estgweb/web/utils/RequestUtils.java |
---|
1,15 → 1,12 |
package pt.estgp.estgweb.web.utils; |
import jomm.utils.BytesUtils; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.web.UserSessionProxy; |
import pt.estgp.estgweb.web.exceptions.NoCookiesException; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import javax.servlet.http.Cookie; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import org.apache.log4j.Logger; |
/** |
* @author Jorge Machado |
* @date 29/Fev/2008 |
59,7 → 56,7 |
}*/ |
// throw new NoCookiesException(); |
if(request.getSession() != null) |
if(request != null && request.getSession() != null) |
return request.getSession().getId(); |
return "unkown"; |
} |
/impl/src/java/pt/estgp/estgweb/web/form/courseunits/CourseUnitProgramForm.java |
---|
New file |
0,0 → 1,60 |
package pt.estgp.estgweb.web.form.courseunits; |
import org.apache.log4j.Logger; |
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.web.form.ApplicationForm; |
/** |
* @author Jorge Machado |
* @date 2/Jun/2008 |
* @time 14:28:59 |
* @see pt.estgp.estgweb.web.form.blogs |
*/ |
public class CourseUnitProgramForm extends ApplicationForm |
{ |
private static final Logger logger = Logger.getLogger(CourseUnitProgramForm.class); |
CourseUnitProgramView courseUnitProgramView = new CourseUnitProgramView(); |
CourseUnitView courseUnitView = new CourseUnitView(); |
long courseUnitId; |
public CourseUnitProgramForm(CourseUnitProgramView courseUnitProgramView, CourseUnitView courseUnitView, long courseUnitId) { |
this.courseUnitProgramView = courseUnitProgramView; |
this.courseUnitView = courseUnitView; |
this.courseUnitId = courseUnitId; |
} |
public CourseUnitProgramForm() |
{ |
courseUnitProgramView.setCourseUnitProgram(new CourseUnitProgramImpl()); |
courseUnitProgramView.getCourseUnitProgram().setCourseUnitProgramPart2(new CourseUnitProgramPart2Impl()); |
} |
public CourseUnitProgramView getCourseUnitProgramView() { |
return courseUnitProgramView; |
} |
public void setCourseUnitProgramView(CourseUnitProgramView courseUnitProgramView) { |
this.courseUnitProgramView = courseUnitProgramView; |
} |
public CourseUnitView getCourseUnitView() { |
return courseUnitView; |
} |
public void setCourseUnitView(CourseUnitView courseUnitView) { |
this.courseUnitView = courseUnitView; |
} |
public long getCourseUnitId() { |
return courseUnitId; |
} |
public void setCourseUnitId(long courseUnitId) { |
this.courseUnitId = courseUnitId; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsAdminController.java |
---|
31,9 → 31,9 |
public ActionForward createIntranetFolders(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
62,9 → 62,9 |
} |
public ActionForward createAllCourseUnitWorksBackup(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
93,38 → 93,38 |
} |
public ActionForward createImportYearCourseUnitWorksBackup(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
try |
{ |
String importYear = request.getParameter("importYear"); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{importYear}; |
String tmpFile = (String) sm.execute(RequestUtils.getRequester(request, response), "CreateImportYearCourseUnitWorksBackup", args, names); |
request.getRequestDispatcher("/tmpStream/" + tmpFile).forward(request,response); |
return null; |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (NotFoundException e) |
{ |
return mapping.findForward("error404"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
return mapping.findForward("error500"); |
} |
String importYear = request.getParameter("importYear"); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{importYear}; |
String tmpFile = (String) sm.execute(RequestUtils.getRequester(request, response), "CreateImportYearCourseUnitWorksBackup", args, names); |
request.getRequestDispatcher("/tmpStream/" + tmpFile).forward(request,response); |
return null; |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (NotFoundException e) |
{ |
return mapping.findForward("error404"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
return mapping.findForward("error500"); |
} |
} |
public ActionForward createOrUpdateAdmin(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
197,9 → 197,9 |
} |
public ActionForward addTeacher(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
236,9 → 236,9 |
} |
public ActionForward addStudent(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
275,9 → 275,9 |
} |
public ActionForward removeTeacher(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
312,9 → 312,9 |
} |
public ActionForward removeStudent(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
362,6 → 362,33 |
return mapping.findForward("load"); |
} |
public ActionForward delete(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try { |
// 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"); |
} catch (Throwable e) { |
addMessage(request,"error.500"); |
logger.error(e,e); |
} |
return mapping.getInputForward(); |
} |
public ActionForward search(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
396,4 → 423,6 |
} |
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsController.java |
---|
1,28 → 1,26 |
package pt.estgp.estgweb.web.controllers.courseunits; |
import org.apache.log4j.Logger; |
import org.apache.log4j.RollingFileAppender; |
import org.apache.struts.action.ActionErrors; |
import org.apache.struts.action.ActionForm; |
import org.apache.struts.action.ActionForward; |
import org.apache.struts.action.ActionMapping; |
import org.apache.struts.action.ActionErrors; |
import org.apache.struts.upload.FormFile; |
import org.hibernate.ObjectNotFoundException; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.views.CourseUnitAssignementView; |
import pt.estgp.estgweb.domain.views.BlogView; |
import pt.estgp.estgweb.domain.views.UserView; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.CourseUnitProgramImpl; |
import pt.estgp.estgweb.domain.CourseUnitProgramPart2Impl; |
import pt.estgp.estgweb.domain.views.*; |
import pt.estgp.estgweb.filters.exceptions.NotFoundException; |
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController; |
import pt.estgp.estgweb.web.controllers.blogs.BlogsController; |
import pt.estgp.estgweb.web.controllers.profile.ProfileController; |
import pt.estgp.estgweb.web.controllers.blogs.BlogsController; |
import pt.estgp.estgweb.web.exceptions.NoCookiesException; |
import pt.estgp.estgweb.web.form.blogs.BlogForm; |
import pt.estgp.estgweb.web.form.courseunits.CourseUnitProgramForm; |
import pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm; |
import pt.estgp.estgweb.web.form.blogs.BlogForm; |
import pt.estgp.estgweb.web.form.profile.ProfileForm; |
import pt.estgp.estgweb.web.utils.RequestUtils; |
import pt.estgp.estgweb.services.profile.CurriculumService; |
import pt.estgp.estgweb.Globals; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterRetrieveException; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.IncompatibleFilterException; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterException; |
80,23 → 78,23 |
} |
} |
public ActionForward createUserAllCourseUnitWorksBackup(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
String[] args = new String[]{}; |
String[] args = new String[]{}; |
return createBackup("CreateUserAllCourseUnitWorksBackup",args,mapping,form,request,response); |
} |
public ActionForward createUserCourseUnitActualYearWorksBackup(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
String importYear = request.getParameter("importYear"); |
String[] args = new String[]{importYear}; |
String[] args = new String[]{importYear}; |
return createBackup("CreateUserImportYearCourseUnitWorksBackup",args,mapping,form,request,response); |
} |
130,7 → 128,28 |
} |
} |
private CourseUnitView loadCourseUnitViewAndCourse(long id, boolean initTeachers, boolean initStudents, ActionMapping mapping, HttpServletRequest request, HttpServletResponse response) |
throws Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{id,initTeachers,initStudents,false,true}; |
try |
{ |
CourseUnitView cV = (CourseUnitView) sm.execute(RequestUtils.getRequester(request, response), "LoadCourseUnitViewAndCourse", args, names); |
return cV; |
} |
catch (ExecutedFilterException e) |
{ |
if (e.getCause() instanceof ObjectNotFoundException) |
{ |
throw new NotFoundException(e.getCause().toString()); |
} |
throw e; |
} |
} |
public ActionForward load(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
353,6 → 372,90 |
} |
} |
public ActionForward editProgram(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
CourseUnitProgramForm cUF = (CourseUnitProgramForm) form; |
long id = cUF.getCourseUnitId(); |
CourseUnitView cV = loadCourseUnitViewAndCourse(id,true,false, mapping, request, response); |
cUF.setCourseUnitView(cV); |
request.setAttribute("CourseUnitView", cV); |
CourseUnitProgramView cpv; |
if(cV.getCourseUnit().getCourseUnitProgram() == null) |
cpv = new CourseUnitProgramView(new CourseUnitProgramImpl()); |
else |
cpv = new CourseUnitProgramView(cV.getCourseUnit().getCourseUnitProgram()); |
// request.setAttribute("CourseUnitProgramView", cpv); |
if(cpv.getCourseUnitProgram().getCourseUnitProgramPart2() == null) |
cpv.getCourseUnitProgram().setCourseUnitProgramPart2(new CourseUnitProgramPart2Impl()); |
cUF.setCourseUnitProgramView(cpv); |
cUF.setCourseUnitView(cV); |
return mapping.findForward("edit.program"); |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (NotFoundException e) |
{ |
return mapping.findForward("error404"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
return mapping.findForward("error500"); |
} |
} |
public ActionForward saveProgram(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
CourseUnitProgramForm cUF = (CourseUnitProgramForm) form; |
long id = cUF.getCourseUnitId(); |
CourseUnitProgramView cuV = cUF.getCourseUnitProgramView(); |
IServiceManager sm = ServiceManager.getInstance(); |
Object[] args = new Object[]{cuV, id}; |
sm.execute(RequestUtils.getRequester(request, response), "SaveCourseUnitProgram", args); |
CourseUnitView cV = loadCourseUnitView(id,true,false, mapping, request, response); |
cUF.setCourseUnitView(cV); |
request.setAttribute("CourseUnitView", cV); |
return mapping.findForward("load"); |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (NotFoundException e) |
{ |
return mapping.findForward("error404"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
return mapping.findForward("error500"); |
} |
} |
public ActionForward validateInvalidateAssignement(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
709,39 → 812,39 |
} |
} |
public ActionForward loadContents( |
ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
return loadCourseUnitIntranet(Globals.INTRANET_CONTENTS,"courseLayoutIOnlineContents",mapping,form,request,response); |
} |
public ActionForward loadRoot( |
ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
return loadCourseUnitIntranet(Globals.INTRANET_ROOT,"courseLayoutIOnlineContents",mapping,form,request,response); |
} |
public ActionForward loadGrades( |
ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
return loadCourseUnitIntranet(Globals.INTRANET_GRADES,"courseLayoutIOnlineGrades",mapping,form,request,response); |
} |
public ActionForward loadPresences( |
ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
return loadCourseUnitIntranet(Globals.INTRANET_PRESENCES,"courseLayoutIOnlinePresences",mapping,form,request,response); |
/impl/src/doc/revisoes/Revisao1Marco2013 |
---|
New file |
0,0 → 1,81 |
Actualização: Baco versão 5.0.1 de 1 de Março de 2013 |
Autor: Jorge Machado |
1 - Objectivos: |
Formulario de edição de unidades curriculares |
2 - Alterações efectuadas: |
2.1 - Actualizações ao software existente |
- Pesquisa de Unidades Curriculares nos serviços pesquisa também por código SIGES da unidade |
- Actualizar unidade curricular nos serviços faz uma verificação de consistencia ao código do curso atribuido |
cruzando-o com o código do curso expresso na própria unidade de forma a ficarem equivalentes |
- Listagem de estudantes na edição da unidade curricular vem ordenada por numero de estudante |
- A barra de navegação apresentada quando se entra na página inicial de uma unidade apresenta o seu semestre. |
- A importação dos Exceis deixa de colocar o professor responsável como professor da unidade e passa a coloca-lo apenas como professor responsável |
- A unidade curricular passa a ter no modelo de dados um professor responsável que é apresentado |
na página inicial da unidade curricular |
- A página da unidade curricular passa a ter atalhos para a edição de dados da unidade e do curso |
disponiveis apenas a administradores |
- A página de edição de dados de unidades curriculares passa a ter atalhos para a página da unidade |
e para a edição da ficha curricular |
2.2 - Novidades |
Nos serviços procurando por curso ou por unidade curricular: |
- As unidades curriculares têm um professor responsável |
- Os cursos têm um presidente de departamento editavel na edição de dados de curso disponivel nos serviços |
- Os cursos têm um coordenador editavel na edição de dados de curso disponivel nos serviços |
2.3 Processo de Validação de Fihas Curriculares |
O processo de validação de fichas curriculares consiste no ciclo de vida da entidade e acções |
que podem ser efectuadas em cada um desses estados, bem como acções resultantes dessas mudanças |
de estado. Os estados e as acções envolvem actores do universo da ESTG correpondentes aos seguintes |
papeis institucionais: |
1 - Docente |
2 - Comissão de Curso |
3 - Coordenador de Curso |
4 - Administrador de Sistema |
O ciclo de vida da entidade Ficha Curricular tem 3 estados. |
1 - Ficha Importada da base de dados inicial |
2 - Ficha Válida |
3 - Ficha Inválida |
O primeiro estado ficará obsoleto e não voltará a ser usado após a primeira fase. |
O digrama seguinte demonstra esse ciclo de vida e suas eventos de entrada e saida. |
A ficha só pode ser editada pelo docente e coordenador e apenas quando se encontra |
não validada. Neste cenário a ficha encontra-se marcada como não validada pela comissão |
de curso quer na página da unidade quer dentro do PDF gerado automáticamente. |
A ficha curricular está dividida em duas partes. Uma das partes é editável pelo docente |
a outra pelo coordenador. Os administradores de sistema podem sempre editar a ficha |
dando origem a uma nova versão da mesma. A ficha mantém o estado que tinha no caso |
da edição ser administrativa. |
Apenas a comissão de curso pode validar/invalidar uma ficha tornando-a editável ou |
não editável por parte dos docentes e coordenadores. |
Os membros da comissão de curso verão uma notificação de fichas por validar na sua |
area de trabalho da intranet quando existirem fihas nesse estado. |
todos: |
- Permissão de edição. |
- Marca de água |
- Confirmar que o Administrador pode editar mesmo que validada |
- Notificação ao docente e coordenador. |