/impl/importRoutines.xml |
---|
14,6 → 14,10 |
<target name="students"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportStudentsService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
<target name="jobs"> |
<java classname="pt.estgp.estgweb.services.jobs.JobDeamon" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
<target name="summaries"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportSumaries" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
</project> |
/impl/conf/language/MessageResourcesCommon.properties |
---|
9,6 → 9,7 |
search.next=Próxima Página |
search.previous=Página Anterior |
search.see.more=ver mais |
search.see.more.content=Clique aqui para ver mais acerca deste conteudo |
search.type.phrase=Frase Exacta |
search.type.any=Algumas Palavras |
search.type.all=Todas as Palavras |
/impl/conf/language/MessageResourcesCourse.properties |
---|
22,11 → 22,12 |
course.director=Director de Curso |
course.studies.plan=Plano de Estudos (XML válido no planoEstudos.xsd) |
course.studies.plan.not.available=Não disponivel |
course.courseunit.program.objectives.todo=Unidade em Falta (programa ou objectivos) |
course.courseunit.program.objectives.todo={0} Unidades em Falta (programa) |
course.externalSite=Site Externo |
course.studies.plan=Plano de Estudos |
course.directed.coordinated.courses=Gestão de Unidades Curriculares |
course.directed.coordinated.courses.updated.success={0} unidades curriculares actualizadas com sucesso |
course.B=Bacharlato |
course.L=Lincenciatura |
course.M=Mestrado |
38,13 → 39,26 |
course.Ms=Mestrados |
course.Ps=Pós Graduaçãos |
course.Es=CET's |
course.units.no.program=Unidades sem programa entregue |
course.units.with.program.not.checked=Unidades com programa por validar |
course.units.with.program.checked=Unidades com programa válido |
course.valid.program=Programa Validado |
course.directed.coordinated=Cursos que coordena e/ou dirige (Apenas os coordenadores tem permissão para alterar o estado de um programa) |
course.directed.courses=Cursos que dirige |
course.coordinated.courses=Cursos que coordena |
course.unit.directed=Unidades Curriculares |
course.unit.coordinated=Unidades Coordenadas |
course.program.courses=Programas Curriculares por Curso |
course.program.coordinated.directed.courses=Programas Curriculares dos Cursos Coordenados e/ou dirigidos |
course.program.courses.choose.year=Escolha o ano que deseja consultar |
courseunit.programfile.valid=programa <u>Aprovado</u> pela coordenação de área |
/impl/conf/language/MessageResourcesProfile.properties |
---|
11,6 → 11,7 |
profile.bad.profile.teacher.iregular.user.class=Existe um problema com o seu perfil. Aparentemente o papel de professor que lhe foi atribuido não foi reconhecido pelo sistema central. Por favor dirija-se ao centro informatico e reporte o problema para que a situação seja corrigida. Pedimos desculpa pelo incómodo. |
profile.bad.profile.student.iregular.user.class=Existe um problema com o seu perfil. Aparentemente o papel de estudante que lhe foi atribuido não foi reconhecido pelo sistema central. Por favor dirija-se ao centro informatico e reporte o problema para que a situação seja corrigida. Pedimos desculpa pelo incómodo. |
user.exists=Já existe um utilizador com o {0} escolhido |
#Degrees |
profile.scholar.degree.notset=Não disponivel |
profile.scholar.degree=Escolaridade |
98,3 → 99,6 |
profile.RecordEventOrganizationImpl=Participação em Organizações de Eventos |
profile.RecordProjectImpl=Participações em Projectos |
profile.RecordOtherImpl=Outros |
profile.record.publisher.all=Instituição / Empresa / Conferência / Workshop / Revista |
profile.record.publisher.paper=Conferência / Workshop / Revista |
/impl/conf/language/MessageResources.properties |
---|
47,6 → 47,7 |
error.no.cookies=Por favor ligue os cookies do seu browser para poder continuar a usar este sistema. Obrigado |
error.500=Ocorreu um erro interno |
error.503=O serviço de monmento encontra-se indisponivel, por favor volte a tentar mais tarde. |
error.404=A página solicitada não está disponível |
error.404.explain=Caro utilizador, a página que pretende visualizar não se encontra disponível neste endereço.<br>O erro pode ter ocorrido por uma das seguintes razões: |
error.404.item.1=Escreveu mal o endereço (URL) do documento a que pretende aceder |
90,6 → 91,7 |
user.role.worker=Funcionário |
user.role.invited=Convidado |
user.role.services=Serviços |
user.role.servicesPrograms=Gestão de Programas Curriculares |
user.role.administrativeCouncil=Conselho Directivo |
user.role.representativeCouncil=Assembleia de Representantes |
user.role.scientificCouncil=Conselho Científico |
/impl/conf/language/MessageResourcesCourseUnits.properties |
---|
13,7 → 13,9 |
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 |
courseunit.summaries=Sumários |
courseunit.summary.present.students=alunos presentes (valor de amostragem) |
courseunit.summaries.zero.placed=Não existem sumários disponiveis |
courseunit.program.description=Programa Curricular de {0} |
courseunit.program.archive=Arquivo |
24,6 → 26,7 |
courseunit.zero.units=Nenhuma Unidade Curricular |
courseunit.objectives.todo=Peenchimento dos objectivos da unidade |
courseunit.program.todo=Upload do programa da unidade |
courseunit.program.objectives.todo=Programa e/ou Objectivos |
courseunit.question.todo=Dúvida |
courseunit.assignement.todo=Trabalho por entregar |
course.unit.works=Trabalhos |
91,9 → 94,10 |
backups=Cópias de Segurança |
courseunits.backups=Criar cópia de Segurança de todos os trabalhos entregues em todos os cursos |
courseunits.actual.year.backup=Trabalhos entregues este ano |
courseunits.all.backup=Todos os trabalhos entregues |
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) |
/impl/conf/language/MessageResourcesBlog.properties |
---|
38,6 → 38,8 |
blog.deleted.success=Blog apagado com sucesso. |
blog.deleted.fail=O Blog não foi apagado, contacte a administração. |
blog.add.post=Adicionar POST |
blog.add.post.cant.add.login=Este blog tem restrições de utilização. (Autênticação necessária) |
blog.add.post.cant.add=Este blog tem restrições de utilização. Se acha que deveria poder colocar Posts neste blog contacte a administração. |
blog.delete.post=Apagar POST |
blog.confirm.delete.post=Tem a certeza que deseja apagar o POST Selecionado? |
blog.post.deleted.success=POST apagado com sucesso. |
/impl/conf/WEB-INF/struts/struts-courses.xml |
---|
34,6 → 34,8 |
<forward name="load" path="page.load.course"/> |
</action> |
<action path="/user/startLoadCoursesProgramsFromServiceZone" forward="/user/courseControllerFromHome.do?dispatch=loadCoursesPrograms&fromDispatch=loadCoursesPrograms&from=ServiceZone"/> |
<action path="/user/startLoadDirectedCoordinatedCoursesFromServiceZone" forward="/user/courseControllerFromServiceZone.do?dispatch=loadDirectedCoordininatedCourses&fromDispatch=loadDirectedCoordininatedCourses&from=ServiceZone"/> |
<action path="/user/startSelectCourseFromServiceZone" forward="page.select.course.from.service.zone"/> |
<action path="/user/startEditCourseFromServiceZone" forward="/user/courseControllerFromServiceZone.do?dispatch=edit&from=ServiceZone"/> |
<action path="/user/startNewCourseFromServiceZone" forward="/user/courseControllerFromServiceZone.do?dispatch=startNew&from=ServiceZone"/> |
46,10 → 48,29 |
validate="false" |
input="page.separators.serviceZone"> |
<forward name="submit" path="page.submit.course.from.service.zone"/> |
<forward name="load.courses.programs" path="page.courses.programs.from.service.zone"/> |
<forward name="load.directed.coordinated.courses" path="page.directed.coordinated.courses.from.service.zone"/> |
<forward name="confirm.courses.programs" path="page.separators.serviceZone"/> |
</action> |
<action path="/user/startLoadCoursesProgramsFromHome" forward="/user/courseControllerFromHome.do?dispatch=loadCoursesPrograms&fromDispatch=loadCoursesPrograms&from=Home"/> |
<action path="/user/startLoadDirectedCoordinatedCoursesFromHome" forward="/user/courseControllerFromHome.do?dispatch=loadDirectedCoordininatedCourses&fromDispatch=loadDirectedCoordininatedCourses&from=Home"/> |
<action path="/user/courseControllerFromHome" |
type="pt.estgp.estgweb.web.controllers.courses.CoursesController" |
name="CourseForm" |
scope="request" |
parameter="dispatch" |
validate="false" |
input="page.separators.serviceZone"> |
<forward name="load.courses.programs" path="page.courses.programs.from.home"/> |
<forward name="load.directed.coordinated.courses" path="page.directed.coordinated.courses.from.home"/> |
<forward name="confirm.courses.programs" path="page.separators.home"/> |
</action> |
</action-mappings> |
</struts-config> |
/impl/conf/WEB-INF/struts/tiles-courses.xml |
---|
32,7 → 32,30 |
<put name="topnav" value="/user/serviceZone/topnavSubmitCourse.jsp"/> |
<put name="body" value="/admin/courses/course.jsp"/> |
</definition> |
<definition name="page.courses.programs.from.service.zone" extends="page.separators.serviceZone"> |
<put name="title" value="Ver Programas de Unidades"/> |
<put name="topnav" value="/user/serviceZone/topnavCoursesPrograms.jsp"/> |
<put name="body" value="/user/courses/directedCoordinatedCourses.jsp"/> |
</definition> |
<definition name="page.directed.coordinated.courses.from.service.zone" extends="page.separators.serviceZone"> |
<put name="title" value="Ver Cursos e Unidades"/> |
<put name="topnav" value="/user/serviceZone/topnavDirectedCoordinatedCourses.jsp"/> |
<put name="body" value="/user/courses/directedCoordinatedCourses.jsp"/> |
</definition> |
<definition name="page.directed.coordinated.courses.from.home" extends="page.separators.home"> |
<put name="title" value="Ver Cursos e Unidades"/> |
<put name="topnav" value="/user/courses/topnavDirectedCoordinatedCourses.jsp"/> |
<put name="body" value="/user/courses/directedCoordinatedCourses.jsp"/> |
</definition> |
<definition name="page.courses.programs.from.home" extends="page.separators.home"> |
<put name="title" value="Ver Cursos e Unidades"/> |
<put name="topnav" value="/user/courses/topnavDirectedCoordinatedCourses.jsp"/> |
<put name="body" value="/user/courses/directedCoordinatedCourses.jsp"/> |
</definition> |
/impl/conf/WEB-INF/struts/struts-default.xml |
---|
21,6 → 21,7 |
<global-forwards> |
<forward name="welcome" path="/Welcome.do"/> |
<forward name="error503" path="/error503.do"/> |
<forward name="error500" path="/error500.do"/> |
<forward name="error404" path="/error404.do"/> |
<forward name="error401" path="/error401.do"/> |
47,6 → 48,7 |
<action path="/error401" forward="page.error.401"/> |
<action path="/error404" forward="page.error.404"/> |
<action path="/error500" forward="page.error.500"/> |
<action path="/error503" forward="page.error.503"/> |
<!--Layout Forward--> |
<action path="/layout" |
/impl/conf/WEB-INF/struts/tiles-default.xml |
---|
324,6 → 324,10 |
<put name="title" value="internal error" /> |
<put name="body" value="/errors/500.jsp" /> |
</definition> |
<definition name="page.error.503" extends="base.error.definition"> |
<put name="title" value="indisponivel" /> |
<put name="body" value="/errors/503.jsp" /> |
</definition> |
<definition name="page.error.401" extends="base.error.definition"> |
<put name="title" value="not authorized" /> |
<put name="body" value="/errors/401.jsp" /> |
/impl/conf/WEB-INF/tlds/baco.tld |
---|
121,6 → 121,20 |
</attribute> |
</tag> |
<tag> |
<name>isRealOwner</name> |
<tagclass>pt.estgp.estgweb.web.tags.RealOwnerTag</tagclass> |
<attribute> |
<name>name</name> |
<required>true</required> |
<rtexprvalue>true</rtexprvalue> |
</attribute> |
<attribute> |
<name>property</name> |
<required>false</required> |
<rtexprvalue>false</rtexprvalue> |
</attribute> |
</tag> |
<tag> |
<name>isValid</name> |
<tagclass>pt.estgp.estgweb.web.tags.IsValidTag</tagclass> |
<attribute> |
149,6 → 163,20 |
</attribute> |
</tag> |
<tag> |
<name>canNotAddContent</name> |
<tagclass>pt.estgp.estgweb.web.tags.CanNotAddContentTag</tagclass> |
<attribute> |
<name>name</name> |
<required>true</required> |
<rtexprvalue>true</rtexprvalue> |
</attribute> |
<attribute> |
<name>property</name> |
<required>false</required> |
<rtexprvalue>false</rtexprvalue> |
</attribute> |
</tag> |
<tag> |
<name>canLoad</name> |
<tagclass>pt.estgp.estgweb.web.tags.CanLoadTag</tagclass> |
<attribute> |
/impl/conf/WEB-INF/web.xml |
---|
294,6 → 294,10 |
<error-code>500</error-code> |
<location>/error500.do</location> |
</error-page> |
<error-page> |
<error-code>503</error-code> |
<location>/error503.do</location> |
</error-page> |
<!--TLDS--> |
<jsp-config> |
/impl/conf/app.properties |
---|
8,7 → 8,7 |
email.local.suffix=estgp.pt |
email.server=mail.estgp.pt |
email.server=localhost |
email.user= |
email.password= |
email.from=bacodev@estgp.pt |
30,9 → 30,19 |
email.courseunit.announcement.subject.pt={0}: {1} (ESTG) |
email.courseunit.announcement.subject.en={0}: {1} (ESTG) |
email.courseunit.blogpost.subject.pt={0}: {1} (ESTG) |
email.courseunit.blogpost.subject.en={0}: {1} (ESTG) |
email.new.grades=true |
email.courseunit.announcements=true |
email.courseunit.blogs=true |
email.summaries=false |
email.summary.subject.pt=Sumário lançado em {0} |
email.summary.subject.en=Sumário lançado em {0} |
################################################## |
# Modules usage |
# |
49,7 → 59,7 |
module.reminders=true |
module.intranet=true |
module.profile=true |
module.sms=true |
module.sms=false |
################################################## |
# SMS |
75,12 → 85,13 |
ionline.pass=baco |
ionline.user=Baco_web |
server.estgp=http://www.estgp.pt |
estgp.encoding=ISO-8859-1 |
server.estgp.start.path=/testes/nova_web |
server.estgp=http://localhost:8180 |
#estgp.encoding=ISO-8859-1 |
server.estgp.start.path=/static |
#server.estgp=http://www.estgp.pt/testes/nova_web |
#estgp.encoding=UTF-8 |
estgp.encoding=UTF-8 |
estgp.proxy.host= |
estgp.proxy.port= |
##server.estgp=http://localhost:8080/estgweb |
server.estgweb=http://www.estgp.pt/testes/estgweb |
106,6 → 117,7 |
user.courseCoordinator=courseCoordinator |
user.courseDirector=courseDirector |
user.identifiersManagers=identifiersManager |
user.servicesPrograms=servicesPrograms |
user.role.00=all |
user.role.01=admin |
133,9 → 145,9 |
user.role.23=courseDirector |
user.role.24=identifiersManager |
user.role.25=identifiersCollectionCreator |
user.role.26=servicesPrograms |
######################################################################### |
# |
# Modules |
145,7 → 157,7 |
######################################################################### |
# Announcements |
# |
announcements.text.summary.size=250 |
announcements.text.summary.size=500 |
announcements.text.summary.size.small=100 |
announcements.max.visible=10 |
announcements.top.flash.news.timeout.miliseconds=7000 |
171,7 → 183,7 |
announcements.automatic.validation.role.5=services |
studentAssociation.auto.validation.targets=student,oldStudent,futureStudent,erasmusStudent |
studentAssociation.auto.validation.types=news,top.flash.news |
studentAssociation.auto.validation.types=news |
services.auto.validation.targets=student,oldStudent,futureStudent,erasmusStudent,teacher,teacher.eg,teacher.dg,teacher.ce |
services.auto.validation.types=news,top.flash.news,bottom.flash.news,todo |
194,7 → 206,8 |
#role images for announcements |
announcement.default.img=/imgs/rolesIcons/nd.gif |
announcement.default.img=/imgs/rolesIcons/estg.gif |
role.student.img=/imgs/rolesIcons/student.gif |
role.admin.img=/imgs/rolesIcons/estg.gif |
role.sudentAssociation.img=/imgs/rolesIcons/ae.gif |
role.administrativeCouncil.img=/imgs/rolesIcons/c_directivo.gif |
/impl/conf/template/email/courseUnitBlogPost_en.txt |
---|
New file |
0,0 → 1,22 |
# 0 : Course Unit Name |
# 1 : Title |
# 2 : Text |
# 3 : Teacher |
# |
# Course Unit Announcement |
# |
Dear Student |
A new post has been inserted in unit blog: |
{0} |
{1} |
{2} |
Best Regards {3} |
--------------------------------------------- |
Escola Superior de Tecnologia e Gestão |
Instituto Politécnico de Portalegre |
http://www.estgp.pt |
/impl/conf/template/email/courseUnitBlogPost_pt.txt |
---|
New file |
0,0 → 1,22 |
# 0 : Course Unit Name |
# 1 : Title |
# 2 : Text |
# 3 : Teacher |
# |
# Course Unit Announcement |
# |
Caro estudante |
Um novo post foi publicado no blog da unidade: |
{0} |
{1} |
{2} |
Com os melhores cumprimentos {3} |
--------------------------------------------- |
Escola Superior de Tecnologia e Gestão |
Instituto Politécnico de Portalegre |
http://www.estgp.pt |
/impl/conf/template/email/courseUnitAnnouncement_pt.txt |
---|
1,4 → 1,4 |
# 0 : Course Unit Name |
# 0 : Course Unit Name |
# 1 : Title |
# 2 : Text |
# 3 : Teacher |
7,7 → 7,7 |
# |
Caro estudante |
Um novo anuncio foi publicado na unidade: |
Um novo anúncio foi publicado na unidade: |
{0} |
{1} |
/impl/conf/template/email/summary_en.txt |
---|
New file |
0,0 → 1,17 |
#Email course unit summary |
Dear Student |
Follow the summary of {0} number {1} at day {2} |
Summary |
title: {3} |
{4} |
Best Regards |
--------------------------------------------- |
Escola Superior de Tecnologia e Gestão |
Instituto Politécnico de Portalegre |
http://www.estgp.pt |
/impl/conf/template/email/summary_pt.txt |
---|
New file |
0,0 → 1,17 |
#Email course unit summary |
Caro Aluno |
Segue o sumario da disciplina de {0} da aula {1} do dia {2} |
Sumário |
titulo: {3} |
{4} |
Com os melhores cumprimentos |
--------------------------------------------- |
Escola Superior de Tecnologia e Gestão |
Instituto Politécnico de Portalegre |
http://www.estgp.pt |
/impl/conf/template/assignement/Assignement.txt |
---|
1,7 → 1,10 |
Unidade Curricular:{0} |
Unidade Curricular:{0} |
Titulo:{1} |
Data de Entrega: {2} |
Descrição: |
{3} |
/impl/conf/berserk/sd.xml |
---|
833,6 → 833,53 |
</filterChains> |
</service> |
<service> |
<name>LoadDirectedCoordinatedCoursesForUserInSession</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.DirectedCoordinatedUnitsService</implementationClass> |
<description>Load coordinated directed courses</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>loadForUserSession</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="DirectorsCoordinators"/> |
</filterChains> |
</service> |
<service> |
<name>LoadCoursesProgramsForServices</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.DirectedCoordinatedUnitsService</implementationClass> |
<description>Load coordinated directed courses</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>loadForServices</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="ServicesOrOrganisms"/> |
</filterChains> |
</service> |
<service> |
<name>LoadCoursesImportYears</name> |
<implementationClass>pt.estgp.estgweb.services.courses.CoursesService</implementationClass> |
<description>Load import years</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>loadImportYears</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
</filterChains> |
</service> |
<service> |
<name>UpdateDirectedCoordinatedCoursesForUserInSession</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.DirectedCoordinatedUnitsService</implementationClass> |
<description>Load coordinated directed courses</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>update</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="DirectorsCoordinators"/> |
</filterChains> |
</service> |
<service> |
<name>LoadTeachedUnits</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadTeachedUnitsService</implementationClass> |
<description>Load teacher units</description> |
961,7 → 1008,7 |
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService</implementationClass> |
<description>Create a zip file with Intranet folders</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>createSystemActualYearBackup</defaultMethod> |
<defaultMethod>createSystemBackup</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
969,6 → 1016,18 |
</filterChains> |
</service> |
<service> |
<name>CreateImportYearCourseUnitWorksBackup</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService</implementationClass> |
<description>Create a zip file with Intranet folders</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>createSystemImportYearBackup</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="Admins"/> |
</filterChains> |
</service> |
<service> |
<name>CreateUserActualYearCourseUnitWorksBackup</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService</implementationClass> |
<description>Create a zip file with deliverables</description> |
980,6 → 1039,17 |
</filterChains> |
</service> |
<service> |
<name>CreateUserImportYearCourseUnitWorksBackup</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService</implementationClass> |
<description>Create a zip file with deliverables</description> |
<isTransactional>true</isTransactional> |
<defaultMethod>createImportYearBackup</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
</filterChains> |
</service> |
<service> |
<name>CreateUserAllCourseUnitWorksBackup</name> |
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitWorksBackupService</implementationClass> |
<description>Create a zip file with Intranet folders</description> |
/impl/conf/berserk/fcd.xml |
---|
35,6 → 35,20 |
<filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass> |
</filterChain> |
<filterChain> |
<name>DirectorsCoordinators</name> |
<expression>AuthenticatedUsers && (RoleUsers("courseDirector") || RoleUsers("courseCoordinator"))</expression> |
<description>Validate if a user is coordinator or director</description> |
<invocationTiming>1</invocationTiming> |
<filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass> |
</filterChain> |
<filterChain> |
<name>ServicesOrOrganisms</name> |
<expression>AuthenticatedUsers && (RoleUsers("admin") || RoleUsers("servicesPrograms") || RoleUsers("administrativeCouncil") || RoleUsers("scientificCouncil") || RoleUsers("pedagogicCouncil"))</expression> |
<description>Validate if a user is coordinator or director</description> |
<invocationTiming>1</invocationTiming> |
<filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass> |
</filterChain> |
<filterChain> |
<name>IdentifiersManager</name> |
<expression>AuthenticatedUsers && RoleUsers("identifiersManager")</expression> |
<description>Admins Control Chain</description> |
/impl/src/java/jomm/utils/StreamsUtils.java |
---|
53,6 → 53,4 |
stream.close(); |
out.close(); |
} |
} |
/impl/src/java/jomm/utils/AutoFillArrayList.java |
---|
New file |
0,0 → 1,63 |
package jomm.utils; |
import org.apache.log4j.Logger; |
import java.util.ArrayList; |
/** |
* @author Jorge Machado |
* @date 24/Out/2008 |
* @see jomm.utils |
*/ |
public class AutoFillArrayList<CLAZZ> extends ArrayList<CLAZZ> |
{ |
private static final Logger logger = Logger.getLogger(AutoFillArrayList.class); |
Class c; |
public AutoFillArrayList(Class c) |
{ |
super(); |
// this.c = c; |
for(int i=0;i<600;i++) |
{ |
try |
{ |
super.add((CLAZZ) c.newInstance()); |
} |
catch (InstantiationException e) |
{ |
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. |
} |
catch (IllegalAccessException e) |
{ |
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. |
} |
} |
} |
// public CLAZZ get(int n) |
// { |
// while(super.size()-1 < n) |
// { |
// super.add(null); |
// } |
// if(super.get(n)==null) |
// try |
// { |
// super.add(n, (CLAZZ) c.newInstance()); |
// } |
// catch (InstantiationException e) |
// { |
// logger.error(e,e); |
// } |
// catch (IllegalAccessException e) |
// { |
// logger.error(e,e); |
// } |
// return super.get(n); |
// } |
} |
/impl/src/java/jomm/utils/StringsUtils.java |
---|
115,6 → 115,8 |
return true; |
} |
public static String normalizeResourceName(String name) |
{ |
if(name == null || name.trim().length() == 0) |
184,6 → 186,7 |
public static void main(String [] args) |
{ |
System.out.println(normalizeResourceName("teste.teste monhe 2.d.zip")); |
System.out.println(cleanKeepNumbers("90.0123-212")); |
} |
264,4 → 267,5 |
} |
} |
/impl/src/java/jomm/dao/utils/HibernateUtils.java |
---|
14,17 → 14,16 |
public class HibernateUtils implements Runnable{ |
// private static Session session; |
// private static Session session; |
private static final Logger logger = Logger.getLogger(HibernateUtils.class); |
private static final SessionFactory sessionFactory; |
private static SessionFactory sessionFactory; |
static |
{ |
try |
{ |
Configuration config = new Configuration(); |
config.configure(Thread.currentThread().getContextClassLoader().getResource("pt/estgp/estgweb/hibernate.cfg.xml")); |
sessionFactory = config.buildSessionFactory(); |
createFactory(); |
// session = sessionFactory.openSession(); |
} |
catch (Throwable e) |
34,8 → 33,17 |
} |
} |
private static void createFactory() |
{ |
Configuration config = new Configuration(); |
config.configure(Thread.currentThread().getContextClassLoader().getResource("pt/estgp/estgweb/hibernate.cfg.xml")); |
sessionFactory = config.buildSessionFactory(); |
} |
public static SessionFactory getSessionFactory() |
{ |
if(sessionFactory.isClosed()) |
createFactory(); |
return sessionFactory; |
} |
51,7 → 59,7 |
// if(!examples.isOpen()) |
// examples = sessionFactory.openSession(); |
// return examples; |
return sessionFactory.getCurrentSession(); |
return getSessionFactory().getCurrentSession(); |
} |
public static void main(String [] args) throws SQLException |
/impl/src/java/jomm/dao/impl/AbstractDao.java |
---|
5,12 → 5,14 |
import jomm.dao.IDomainObjectDao; |
import jomm.dao.utils.HibernateUtils; |
import org.hibernate.*; |
import org.hibernate.proxy.HibernateProxy; |
import org.hibernate.criterion.CriteriaSpecification; |
import org.hibernate.criterion.Order; |
import org.hibernate.criterion.Projections; |
import static org.hibernate.criterion.Restrictions.eq; |
import pt.estgp.estgweb.domain.DomainObject; |
import pt.estgp.estgweb.domain.DomainSerializableObject; |
import pt.estgp.estgweb.domain.Teacher; |
import java.io.Serializable; |
import java.sql.SQLException; |
324,6 → 326,20 |
} |
/** |
* |
* @param o |
* @return |
*/ |
public CLAZZ narrow(CLAZZ o) |
{ |
if (o instanceof HibernateProxy) |
{ |
return (CLAZZ) ((HibernateProxy)o).getHibernateLazyInitializer().getImplementation(); |
} |
return o; |
} |
/** |
* Used by the base DAO classes but here for your modification Load object |
* matching the given key and return it. |
* |
492,8 → 508,8 |
} |
} |
/** |
* Remove this instance from the system cache. |
* <p/> |
682,7 → 698,7 |
/** |
* Refresh a collection of objects. |
* |
* @param objs Objects to delete |
* @param objs Objects to refreh |
*/ |
public final void refresh(Collection<CLAZZ> objs) |
{ |
699,7 → 715,26 |
throw new DaoException(e); |
} |
} |
/** |
* Refresh a collection of objects. |
* |
* @param obj Object to refreh |
*/ |
public final void refresh(CLAZZ obj) |
{ |
try |
{ |
Session session = getCurrentSession(); |
session.refresh(obj); |
} |
catch (HibernateException e) |
{ |
throw new DaoException(e); |
} |
} |
/** |
* Refresh a collection of objects. |
* |
/impl/src/java/pt/estgp/estgweb/utils/DatesUtils.java |
---|
49,6 → 49,20 |
return getFormatedImportYear(firstYearStr,secondYearStr,SIGES_importFinalFormat); |
} |
public static String getSemestre() |
{ |
MyCalendar mc = new MyCalendar(); |
int month = mc.getMonth(); |
if((month > 8 && month <=12) || (month >= 1 && month <=2)) |
{ |
return "S1"; |
} |
else |
{ |
return "S2"; |
} |
} |
public static String getImportYearIntranet() |
{ |
MyCalendar mc = new MyCalendar(); |
72,6 → 86,18 |
return getFormatedImportYear(firstYearStr,secondYearStr,SIGES_importFinalFormatIntranet); |
} |
public static String getImportYearIntranet(String importYear) |
{ |
String decadeStr = importYear.substring(0,2); |
if(importYear.substring(4,6).equals("00")) |
{ |
String decade = importYear.substring(0,2); |
int nextdecade= Integer.parseInt(decade)+1; |
decadeStr = "" + nextdecade; |
} |
return getFormatedImportYear(importYear.substring(0,4),decadeStr+importYear.substring(4,6),SIGES_importFinalFormatIntranet); |
} |
public static String getFormatedImportYear(String firstYearStr, String secondYearStr, MessageFormat finalFormat) |
{ |
String[] years = {firstYearStr,secondYearStr}; |
/impl/src/java/pt/estgp/estgweb/utils/CourseViewComparator.java |
---|
New file |
0,0 → 1,39 |
package pt.estgp.estgweb.utils; |
import jomm.utils.StringComparator; |
import pt.estgp.estgweb.domain.views.CourseView; |
/** |
* |
* @author User |
*/ |
public class CourseViewComparator implements java.util.Comparator<CourseView> |
{ |
private static CourseViewComparator instance = null; |
public static CourseViewComparator getInstance() |
{ |
if(instance == null) |
{ |
instance = new CourseViewComparator(); |
} |
return instance; |
} |
/** Creates a new instance of LongComparator */ |
private CourseViewComparator() { |
} |
public int compare(CourseView s1, CourseView s2) |
{ |
int compareResult = s2.getName().compareTo(s1.getName()); |
if(compareResult > 0) |
return -1; |
else if(compareResult < 0) |
return 1; |
return 0; |
} |
} |
/impl/src/java/pt/estgp/estgweb/Globals.java |
---|
33,6 → 33,8 |
public static final int SEARCH_BEST_FRAGMENTS_MAX_FRAGMENTS = ConfigProperties.getIntProperty("search.best.fragments.max.fragments"); |
public static final String ALL_ROLE = ConfigProperties.getProperty("user.super"); |
public static final String SERVICES_PROGRAMS_ROLE = ConfigProperties.getProperty("user.servicesPrograms"); |
public static final String ACTUAL_RELATIVE_PATH = "ACTUAL_RELATIVE_PATH"; |
public static final String ADMIN_ROLE = ConfigProperties.getProperty("user.admin"); |
public static final String SUPER_USER_ROLE = ConfigProperties.getProperty("user.super"); |
142,7 → 144,9 |
public static final boolean SMS_COURSEUNIT_ANNOUNCEMENT = ConfigProperties.getBooleanProperty("sms.courseunit.announcement"); |
public static final boolean SMS_NEW_GRADES = ConfigProperties.getBooleanProperty("sms.new.grades"); |
public static final boolean EMAIL_NEW_GRADES = ConfigProperties.getBooleanProperty("email.new.grades"); |
public static final boolean EMAIL_SUMMARIES = ConfigProperties.getBooleanProperty("email.summaries"); |
public static final boolean EMAIL_COURSEUNIT_ANNOUNCEMENTS = ConfigProperties.getBooleanProperty("email.courseunit.announcements"); |
public static final boolean EMAIL_COURSEUNIT_BLOGS = ConfigProperties.getBooleanProperty("email.courseunit.blogs"); |
public static final boolean SMS_COURSEUNIT_ANNOUNCEMENT_ONLY_PROFS = ConfigProperties.getBooleanProperty("sms.courseunit.announcement.only.profs"); |
182,10 → 186,22 |
public static final String EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_PT = "courseUnitAnnouncement_pt.txt"; |
public static final String EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_EN = "courseUnitAnnouncement_en.txt"; |
public static final String EMAIL_COURSEUNIT_BLOGPOST_SUBJECT_PT = ConfigProperties.getProperty("email.courseunit.blogpost.subject.pt"); |
public static final String EMAIL_COURSEUNIT_BLOGPOST_SUBJECT_EN = ConfigProperties.getProperty("email.courseunit.blogpost.subject.en"); |
public static final String EMAIL_COURSEUNIT_BLOGPOST_TEMPLATE_PT = "courseUnitBlogPost_pt.txt"; |
public static final String EMAIL_COURSEUNIT_BLOGPOST_TEMPLATE_EN = "courseUnitBlogPost_en.txt"; |
public static final String EMAIL_NEW_GRADES_SUBJECT_PT = ConfigProperties.getProperty("email.new.grades.subject.pt"); |
public static final String EMAIL_NEW_GRADES_SUBJECT_EN = ConfigProperties.getProperty("email.new.grades.subject.en"); |
public static final String EMAIL_SUMMARY_SUBJECT_PT = ConfigProperties.getProperty("email.summary.subject.pt"); |
public static final String EMAIL_SUMMARY_SUBJECT_EN = ConfigProperties.getProperty("email.summary.subject.en"); |
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_SUMMARY_TEMPLATE_PT = "summary_pt.txt"; |
public static final String EMAIL_SUMMARY_TEMPLATE_EN = "summary_en.txt"; |
public static final String EMAIL_GRADE_UNIT_TEMPLATE = "GradeUnit.txt"; |
} |
/impl/src/java/pt/estgp/estgweb/services/courses/CoursesCommonServices.java |
---|
8,6 → 8,8 |
import pt.estgp.estgweb.services.courseunits.CourseUnitsCommonServices; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.utils.DatesUtils; |
import org.apache.log4j.Logger; |
import java.util.*; |
96,21 → 98,36 |
coordinatorCourses = new HashSet<Course>(); |
if(directorCourses == null) |
directorCourses = new HashSet<Course>(); |
coordinatorCourses = new HashSet<Course>(coordinatorCourses); |
directorCourses = new HashSet<Course>(directorCourses); |
coordinatorCourses.removeAll(directorCourses); |
directorCourses.addAll(coordinatorCourses); |
for(Course course: directorCourses) |
{ |
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadMissingObjectivesOrProgramGivenCourse(course.getId()); |
for(CourseUnit c: courseUnits) |
int missing = DaoFactory.getCourseUnitDaoImpl().countMissingProgramGivenCourse(course.getId()); |
if(missing > 0) |
{ |
DefaultToDo defaultToDo = new DefaultToDo(c.getName(),null,c.getCourseName(), "course.courseunit.program.objectives.todo","/user/startLoadCourseUnitFromHome.do?id=" + c.getId()); |
DefaultToDo defaultToDo = new DefaultToDo(course.getName(),null,null, "course.courseunit.program.objectives.todo",""+missing,"/user/startLoadDirectedCoordinatedCoursesFromHome.do#" + course.getId()); |
todos.add(defaultToDo); |
} |
} |
} |
} |
if(userSession.getUser().hasRole(Globals.SERVICES_PROGRAMS_ROLE)) |
{ |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(DatesUtils.getImportYear()); |
for(Course course: courses) |
{ |
int missing = DaoFactory.getCourseUnitDaoImpl().countMissingProgramGivenCourse(course.getId()); |
if(missing > 0) |
{ |
DefaultToDo defaultToDo = new DefaultToDo(course.getName(),null,null, "course.courseunit.program.objectives.todo",""+missing,"/user/startLoadCoursesProgramsFromHome.do#" + course.getId()); |
todos.add(defaultToDo); |
} |
} |
}/*This method is invoked from object creation*/ |
return todos; |
}/*This method is invoked from object creation*/ |
} |
public void adviseNew(DomainObject object) |
{ |
/impl/src/java/pt/estgp/estgweb/services/courses/CoursesService.java |
---|
68,6 → 68,17 |
return null; |
} |
public List<String> loadImportYears(UserSession userSession) throws ServiceException |
{ |
List<String> importYears = DaoFactory.getCourseDaoImpl().loadImportYears(); |
List<String> imStrings = new ArrayList<String>(); |
for(String importYear: importYears) |
{ |
imStrings.add(importYear); |
} |
return imStrings; |
} |
public CourseView loadCourseByCode(String code, boolean initUnits) throws ServiceException |
{ |
Course c = DaoFactory.getCourseDaoImpl().findCourseByCode(code); |
107,7 → 118,7 |
String extension = FilesUtils.getExtension(name); |
if(c.getStudiesPlan() == null) |
{ |
String identifier = repositoryService.storeRepositoryFile(stream, contentType, extension, size, name, "course.studies.plan" + c.getName(), ResourceAccessControlEnum.publicDomain,userSession); |
String identifier = repositoryService.storeRepositoryFile(stream, contentType, extension, size, name, "course.studies.plan " + c.getName(), ResourceAccessControlEnum.publicDomain,userSession); |
c.setStudiesPlan(identifier); |
} |
else |
/impl/src/java/pt/estgp/estgweb/services/courseunits/CourseUnitsCommonServices.java |
---|
88,30 → 88,30 |
if(userSession.getUser() != null && userSession.getUser() instanceof Teacher) |
{ |
HashMap<Long,Long> doneProgramCodes = new HashMap<Long,Long>(); |
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadMissingObjectives(userSession.getUser().getId()); |
// HashMap<Long,Long> doneProgramCodes = new HashMap<Long,Long>(); |
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadMissingObjectivesOrPrograms(userSession.getUser().getId()); |
for(CourseUnit c: courseUnits) |
{ |
DefaultToDo defaultToDo = new DefaultToDo(c.getName(),null,c.getCourseName(), "courseunit.objectives.todo","/user/startLoadCourseUnitFromHome.do?id=" + c.getId()); |
DefaultToDo defaultToDo = new DefaultToDo(c.getName(),null,c.getCourseName(), "courseunit.program.objectives.todo","/user/startLoadCourseUnitFromHome.do?id=" + c.getId()); |
todos.add(defaultToDo); |
if(c.getProgramStreamId() == null || c.getProgramStreamId().length() == 0) |
{ |
doneProgramCodes.put(c.getId(),c.getId()); |
defaultToDo = new DefaultToDo(c.getName(),null,c.getCourseName(), "courseunit.program.todo","/user/startLoadCourseUnitFromHome.do?id=" + c.getId()); |
todos.add(defaultToDo); |
} |
// if(c.getProgramStreamId() == null || c.getProgramStreamId().length() == 0) |
// { |
//// doneProgramCodes.put(c.getId(),c.getId()); |
// defaultToDo = new DefaultToDo(c.getName(),null,c.getCourseName(), "courseunit.program.todo","/user/startLoadCourseUnitFromHome.do?id=" + c.getId()); |
// todos.add(defaultToDo); |
// } |
} |
courseUnits = DaoFactory.getCourseUnitDaoImpl().loadMissingPrograms(userSession.getUser().getId()); |
for(CourseUnit c: courseUnits) |
{ |
if(doneProgramCodes.get(c.getId()) == null) //is not in missing objectives units |
{ |
doneProgramCodes.put(c.getId(),c.getId()); |
DefaultToDo defaultToDo = new DefaultToDo(c.getName(),null,c.getCourseName(), "courseunit.program.todo","/user/startLoadCourseUnitFromHome.do?id=" + c.getId()); |
todos.add(defaultToDo); |
} |
} |
// courseUnits = DaoFactory.getCourseUnitDaoImpl().loadMissingPrograms(userSession.getUser().getId()); |
// for(CourseUnit c: courseUnits) |
// { |
// if(doneProgramCodes.get(c.getId()) == null) //is not in missing objectives units |
// { |
// doneProgramCodes.put(c.getId(),c.getId()); |
// DefaultToDo defaultToDo = new DefaultToDo(c.getName(),null,c.getCourseName(), "courseunit.program.todo","/user/startLoadCourseUnitFromHome.do?id=" + c.getId()); |
// todos.add(defaultToDo); |
// } |
// } |
List<CourseUnitQuestion> courseUnitQuestions = DaoFactory.getCourseUnitQuestionDaoImpl().loadMissingQuestions(userSession.getUser().getId()); |
for(CourseUnitQuestion c: courseUnitQuestions) |
/impl/src/java/pt/estgp/estgweb/services/courseunits/DirectedCoordinatedCourses.java |
---|
New file |
0,0 → 1,82 |
package pt.estgp.estgweb.services.courseunits; |
import jomm.utils.AutoFillArrayList; |
import pt.estgp.estgweb.domain.views.CourseView; |
import java.util.List; |
/** |
* @author Jorge Machado |
* @date 24/Out/2008 |
* @see pt.estgp.estgweb.services.courseunits |
*/ |
public class DirectedCoordinatedCourses |
{ |
private List<CourseView> directedCourses; |
private List<CourseView> coordinatedCourses; |
private List<CourseView> merge; |
private int updated; |
private int missing; |
public DirectedCoordinatedCourses() |
{ |
System.out.println(""); |
} |
public List<CourseView> getDirectedCourses() |
{ |
return directedCourses; |
} |
public void setDirectedCourses(List<CourseView> directedCourses) |
{ |
this.directedCourses = directedCourses; |
} |
public List<CourseView> getCoordinatedCourses() |
{ |
return coordinatedCourses; |
} |
public void setCoordinatedCourses(List<CourseView> coordinatedCourses) |
{ |
this.coordinatedCourses = coordinatedCourses; |
} |
public int getUpdated() |
{ |
return updated; |
} |
public void setUpdated(int updated) |
{ |
this.updated = updated; |
} |
public int getMissing() |
{ |
return missing; |
} |
public void setMissing(int missing) |
{ |
this.missing = missing; |
} |
public void setMerge(List<CourseView> merge) |
{ |
this.merge = merge; |
} |
public List<CourseView> getMerge() |
{ |
if(merge == null) |
merge = new AutoFillArrayList<CourseView>(CourseView.class); |
return merge; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/DirectedCoordinatedUnitsService.java |
---|
New file |
0,0 → 1,156 |
package pt.estgp.estgweb.services.courseunits; |
import pt.estgp.estgweb.domain.Course; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.views.CourseView; |
import pt.estgp.estgweb.utils.CourseViewComparator; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.List; |
/** |
* @author Jorge Machado |
* @date 2/Jun/2008 |
* @see pt.estgp.estgweb.services.courseunits |
*/ |
public class DirectedCoordinatedUnitsService implements IService |
{ |
public DirectedCoordinatedCourses loadForUserSession(String importYear, UserSession userSession) |
{ |
return loadForUser(userSession.getUser().getId(),importYear, userSession); |
} |
public DirectedCoordinatedCourses loadForUser(long teacherId, String importYear, UserSession userSession) |
{ |
if(importYear == null) |
importYear = DatesUtils.getImportYear(); |
List<Course> directorCourses = DaoFactory.getCourseDaoImpl().loadDirectorCourses(teacherId,importYear); |
List<Course> coordinatorCourses = DaoFactory.getCourseDaoImpl().loadCoordinatedCourses(teacherId,importYear); |
HashMap<Course, Boolean> map = new HashMap<Course, Boolean>(); |
DirectedCoordinatedCourses directedCoordinatedCourses = new DirectedCoordinatedCourses(); |
directedCoordinatedCourses.setCoordinatedCourses(new ArrayList<CourseView>()); |
directedCoordinatedCourses.setDirectedCourses(new ArrayList<CourseView>()); |
directedCoordinatedCourses.setMerge(new ArrayList<CourseView>()); |
for (Course c : directorCourses) |
{ |
CourseView cV = new CourseView(c, true); |
directedCoordinatedCourses.getDirectedCourses().add(cV); |
if (map.get(c) == null) |
{ |
directedCoordinatedCourses.getMerge().add(cV); |
map.put(c, true); |
} |
} |
for (Course c : coordinatorCourses) |
{ |
CourseView cV = new CourseView(c, true); |
directedCoordinatedCourses.getCoordinatedCourses().add(cV); |
if (map.get(c) == null) |
{ |
directedCoordinatedCourses.getMerge().add(cV); |
map.put(c, true); |
} |
} |
java.util.Collections.sort(directedCoordinatedCourses.getMerge(), CourseViewComparator.getInstance()); |
fill(directedCoordinatedCourses.getMerge()); |
return directedCoordinatedCourses; |
} |
public DirectedCoordinatedCourses loadForServices(String importYear, UserSession userSession) |
{ |
if(importYear == null) |
importYear = DatesUtils.getImportYear(); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAllOrderByName(importYear); |
List<CourseView> courseViews = new ArrayList<CourseView>(); |
for(Course c : courses) |
{ |
CourseView cV = new CourseView(c, true); |
courseViews.add(cV); |
} |
fill(courseViews); |
DirectedCoordinatedCourses directedCoordinatedCourses = new DirectedCoordinatedCourses(); |
directedCoordinatedCourses.setMerge(courseViews); |
return directedCoordinatedCourses; |
} |
private void fill(List<CourseView> courseViews) |
{ |
for (CourseView cV : courseViews) |
{ |
cV.setCourseUnitsWithNoProgramS1(new ArrayList<CourseUnitView>()); |
cV.setCourseUnitsWithNoProgramS2(new ArrayList<CourseUnitView>()); |
cV.setCourseUnitsWithProgramCheckedS1(new ArrayList<CourseUnitView>()); |
cV.setCourseUnitsWithProgramCheckedS2(new ArrayList<CourseUnitView>()); |
cV.setCourseUnitsWithProgramNotCheckedS1(new ArrayList<CourseUnitView>()); |
cV.setCourseUnitsWithProgramNotCheckedS2(new ArrayList<CourseUnitView>()); |
for (CourseUnitView cUV : cV.getCourseUnits()) |
{ |
if (cUV.getProgramStreamId() == null) |
if (cUV.getSemestre().equals("S1")) |
cV.getCourseUnitsWithNoProgramS1().add(cUV); |
else |
cV.getCourseUnitsWithNoProgramS2().add(cUV); |
else if (cUV.isValidProgram()) |
if (cUV.getSemestre().equals("S1")) |
cV.getCourseUnitsWithProgramCheckedS1().add(cUV); |
else |
cV.getCourseUnitsWithProgramCheckedS2().add(cUV); |
else if (cUV.getSemestre().equals("S1")) |
cV.getCourseUnitsWithProgramNotCheckedS1().add(cUV); |
else |
cV.getCourseUnitsWithProgramNotCheckedS2().add(cUV); |
} |
} |
} |
public DirectedCoordinatedCourses update(DirectedCoordinatedCourses directedCoordinatedCourses, UserSession userSession) |
{ |
int counter = 0; |
for(CourseView courseView: directedCoordinatedCourses.getMerge()) |
{ |
if(courseView.getId()>0) |
{ |
Course c = DaoFactory.getCourseDaoImpl().load(courseView.getId()); |
if(userSession.getUser().getId() == c.getCoordinator().getId()) |
{ |
counter+=updateList(courseView.getCourseUnitsWithProgramCheckedS1()); |
counter+=updateList(courseView.getCourseUnitsWithProgramCheckedS2()); |
counter+=updateList(courseView.getCourseUnitsWithProgramNotCheckedS1()); |
counter+=updateList(courseView.getCourseUnitsWithProgramNotCheckedS2()); |
} |
} |
} |
directedCoordinatedCourses.setUpdated(counter); |
return directedCoordinatedCourses; |
} |
private int updateList(List<CourseUnitView> views) |
{ |
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()) |
{ |
courseUnit.setValidProgram(courseUnitView.isValidProgram()); |
counter++; |
} |
} |
} |
} |
return counter; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitXML.java |
---|
New file |
0,0 → 1,216 |
package pt.estgp.estgweb.services.courseunits; |
import org.apache.log4j.Logger; |
import org.dom4j.Document; |
import org.dom4j.DocumentFactory; |
import org.dom4j.Element; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.utils.Dom4jUtil; |
import pt.estgp.estgweb.web.utils.DatesUtils; |
import java.io.IOException; |
import java.io.File; |
/** |
* @author Jorge Machado |
* @date 23/Out/2008 |
* @see pt.estgp.estgweb.services.data |
*/ |
public class CreateCourseUnitXML |
{ |
private static final Logger logger = Logger.getLogger(CreateCourseUnitXML.class); |
public void run(String toFile, CourseUnit courseUnit, UserSession userSession) |
{ |
Document dom = run(courseUnit,userSession); |
try |
{ |
new File(toFile).getParentFile().mkdirs(); |
Dom4jUtil.write(dom,toFile); |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
} |
} |
public Document run(CourseUnit courseUnit, UserSession userSession) |
{ |
org.dom4j.Document dom = DocumentFactory.getInstance().createDocument(); |
Element rootElement = DocumentFactory.getInstance().createElement("courseUnit"); |
dom.setRootElement(rootElement); |
rootElement.addAttribute("id", "" + courseUnit.getId()); |
rootElement.addAttribute("importYear", "" + courseUnit.getImportYear()); |
rootElement.addAttribute("institutionCode", "" + courseUnit.getInstitutionCode()); |
Element saveDate = DocumentFactory.getInstance().createElement("saveDate"); |
saveDate.setText(""+ DatesUtils.getStringFromDateForFilename(courseUnit.getSaveDate())); |
Element updateDate = DocumentFactory.getInstance().createElement("updateDate"); |
updateDate.setText(""+ DatesUtils.getStringFromDateForFilename(courseUnit.getUpdateDate())); |
Element name = DocumentFactory.getInstance().createElement("name"); |
name.setText("" + courseUnit.getName()); |
Element courseName = DocumentFactory.getInstance().createElement("courseName"); |
name.setText("" + courseUnit.getCourseName()); |
rootElement.add(saveDate); |
rootElement.add(name); |
rootElement.add(courseName); |
if(courseUnit.getObjectives() != null) |
{ |
Element objectives = DocumentFactory.getInstance().createElement("objectives"); |
objectives.setText(courseUnit.getObjectives()); |
rootElement.add(objectives); |
} |
if(courseUnit.getSummaries() != null) |
{ |
Element summaries = DocumentFactory.getInstance().createElement("summaries"); |
summaries.addAttribute("number",""+courseUnit.getSummaries().size()); |
rootElement.add(summaries); |
for(CourseUnitSummary a: courseUnit.getSummaries()) |
{ |
Element summary = DocumentFactory.getInstance().createElement("summary"); |
summaries.add(summary); |
summary.addAttribute("id",""+a.getId()); |
summary.addAttribute("number",""+a.getNumeroAula()); |
summary.addAttribute("dateAula",""+a.getDataAula()); |
summary.addAttribute("studentsPresences",""+a.getAlunosPresentes()); |
if(a.getDescricao() != null) |
{ |
Element text = DocumentFactory.getInstance().createElement("description"); |
text.setText(a.getDescricao()); |
summary.add(text); |
} |
if(a.getTitulo() != null) |
{ |
Element titulo = DocumentFactory.getInstance().createElement("title"); |
titulo.setText(a.getTitulo()); |
summary.add(titulo); |
} |
} |
} |
if(courseUnit.getTeachers() != null) |
{ |
Element teachers = DocumentFactory.getInstance().createElement("teachers"); |
teachers.addAttribute("number",""+courseUnit.getTeachers().size()); |
rootElement.add(teachers); |
for(Teacher s: courseUnit.getTeachers()) |
{ |
Element teacher = DocumentFactory.getInstance().createElement("teacher"); |
teacher.addAttribute("code",""+s.getSigesCode()); |
teacher.addAttribute("name",""+s.getName()); |
teacher.addAttribute("email",""+s.getEmail()); |
if( userSession.getUser().isSuperuserOrAdmin() || userSession.getUser() instanceof Teacher) |
{ |
teacher.addAttribute("oemail",""+s.getOutEmail()); |
teacher.addAttribute("phone",""+s.getPhonenumber()); |
teacher.addAttribute("gmail",""+s.getGmail()); |
teacher.addAttribute("msn",""+s.getMsn()); |
teacher.addAttribute("skype",""+s.getSkype()); |
} |
teachers.add(teacher); |
} |
} |
if( userSession.getUser().isSuperuserOrAdmin() || userSession.getUser() instanceof Teacher) |
{ |
if(courseUnit.getStudents() != null) |
{ |
Element students = DocumentFactory.getInstance().createElement("students"); |
students.addAttribute("number",""+courseUnit.getStudents().size()); |
rootElement.add(students); |
for(Student s: courseUnit.getStudents()) |
{ |
Element student = DocumentFactory.getInstance().createElement("student"); |
student.addAttribute("code",""+s.getSigesCode()); |
student.addAttribute("name",""+s.getName()); |
student.addAttribute("email",""+s.getEmail()); |
student.addAttribute("oemail",""+s.getOutEmail()); |
student.addAttribute("phone",""+s.getPhonenumber()); |
student.addAttribute("gmail",""+s.getGmail()); |
student.addAttribute("msn",""+s.getMsn()); |
student.addAttribute("skype",""+s.getSkype()); |
students.add(student); |
} |
} |
} |
if( userSession.getUser().isSuperuserOrAdmin() || userSession.getUser() instanceof Teacher) |
{ |
if(courseUnit.getAnnouncements() != null) |
{ |
Element announcements = DocumentFactory.getInstance().createElement("announcements"); |
announcements.addAttribute("number",""+courseUnit.getAnnouncements().size()); |
rootElement.add(announcements); |
for(Announcement a: courseUnit.getAnnouncements()) |
{ |
Element announcement = DocumentFactory.getInstance().createElement("announcement"); |
announcements.add(announcement); |
announcement.addAttribute("id",""+a.getId()); |
announcement.addAttribute("title",""+a.getTitle()); |
announcement.addAttribute("date",""+a.getSaveDate()); |
if(a.getText() != null) |
{ |
Element text = DocumentFactory.getInstance().createElement("text"); |
text.setText(a.getText()); |
announcement.add(text); |
} |
if(a.getUrl() != null) |
{ |
Element url = DocumentFactory.getInstance().createElement("url"); |
url.setText(a.getUrl()); |
announcement.add(url); |
} |
} |
} |
} |
if( userSession.getUser().isSuperuserOrAdmin() || userSession.getUser() instanceof Teacher) |
{ |
if(courseUnit.getBlogs() != null) |
{ |
Element blogs = DocumentFactory.getInstance().createElement("blogs"); |
blogs.addAttribute("number",""+courseUnit.getBlogs().size()); |
rootElement.add(blogs); |
for(Blog b: courseUnit.getBlogs()) |
{ |
Element blog = DocumentFactory.getInstance().createElement("blog"); |
blogs.add(blog); |
blog.addAttribute("id",""+b.getId()); |
blog.addAttribute("title",""+b.getTitle()); |
if(b.getDescription() != null) |
{ |
Element desc = DocumentFactory.getInstance().createElement("description"); |
desc.setText(b.getDescription()); |
blog.add(desc); |
} |
Element posts = DocumentFactory.getInstance().createElement("posts"); |
posts.addAttribute("number",""+b.getPosts().size()); |
blog.add(posts); |
if(b.getPosts() != null) |
{ |
for(BlogPost bp: b.getPosts()) |
{ |
Element post = DocumentFactory.getInstance().createElement("post"); |
posts.add(post); |
post.addAttribute("id",""+bp.getId()); |
post.addAttribute("saveDate",""+bp.getId()); |
blog.addAttribute("title",""+bp.getTitle()); |
blog.addAttribute("from",""+bp.getOwner().getName()); |
if(bp.getText() != null) |
{ |
Element descP = DocumentFactory.getInstance().createElement("description"); |
descP.setText(bp.getText()); |
post.add(descP); |
} |
} |
} |
} |
} |
} |
return dom; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitWorksBackupService.java |
---|
31,10 → 31,9 |
*/ |
/** |
* @author Jorge Machado |
* |
* |
* Created at 17/Out/2003 , 23:45:24 |
* |
* <p/> |
* <p/> |
* Created at 17/Out/2003 , 23:45:24 |
*/ |
public class CreateCourseUnitWorksBackupService implements IService |
{ |
45,96 → 44,149 |
public String createSystemActualYearBackup(String importYear, UserSession userSession) throws ServiceException |
{ |
if(importYear == null || importYear.trim().length() == 0) |
return createSystemImportYearBackup(DatesUtils.getImportYear(),userSession); |
} |
public String createSystemImportYearBackup(String importYear, UserSession userSession) throws ServiceException |
{ |
if (importYear == null || importYear.trim().length() == 0) |
importYear = DatesUtils.getImportYear(); |
String importYearIntranet = DatesUtils.getImportYearIntranet(); |
String tmpName = BytesUtils.generateHexKey(); |
String tmpName = BytesUtils.generateHexKey(); |
String tmpDir = Globals.TMP_DIR + "/" + tmpName; |
new File(tmpDir).mkdirs(); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(importYear); |
try |
{ |
for(Course c: courses) |
for (Course c : courses) |
{ |
String couseDirPath = tmpDir + "/" + StringsUtils.normalizeResourceName(c.getName()) + '.' + c.getCode(); |
try |
createCourseBackup(tmpDir,c,userSession); |
} |
FilesUtils.zipFolder(tmpDir, tmpDir + ".zip"); |
FilesUtils.delete(tmpDir); |
return tmpName + ".zip"; |
} |
catch (IOException e) |
{ |
logger.error(e, e); |
} |
return null; |
} |
public String createSystemBackup(String importYear, UserSession userSession) throws ServiceException |
{ |
String tmpName = BytesUtils.generateHexKey(); |
String tmpDir = Globals.TMP_DIR + "/" + tmpName; |
new File(tmpDir).mkdirs(); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(); |
try |
{ |
for (Course c : courses) |
{ |
createCourseBackup(tmpDir,c,userSession); |
} |
FilesUtils.zipFolder(tmpDir, tmpDir + ".zip"); |
FilesUtils.delete(tmpDir); |
return tmpName + ".zip"; |
} |
catch (IOException e) |
{ |
logger.error(e, e); |
} |
return null; |
} |
private void createCourseBackup(String tmpDir, Course c, UserSession userSession) |
{ |
String couseDirPath = tmpDir + "/" + StringsUtils.normalizeResourceName(c.getName()) + '.' + c.getCode(); |
try |
{ |
String importYearIntranet = DatesUtils.getImportYearIntranet(c.getImportYear()); |
String courseImportYearPath = couseDirPath + "/" + importYearIntranet; |
File courseImportYearDir = new File(courseImportYearPath); |
courseImportYearDir.mkdirs(); |
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadByCourse(c.getId(), c.getImportYear()); |
for (CourseUnit courseUnit : courseUnits) |
{ |
String semestre; |
if (courseUnit.getSemestre().equals("S1")) |
{ |
String courseImportYearPath = couseDirPath + "/" + importYearIntranet; |
File courseImportYearDir = new File(courseImportYearPath); |
courseImportYearDir.mkdirs(); |
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadByCourse(c.getId(),importYear); |
for(CourseUnit courseUnit: courseUnits) |
semestre = Globals.INTRANET_SEMESTRE_S1; |
} |
else |
{ |
semestre = Globals.INTRANET_SEMESTRE_S2; |
} |
String normalizedName = StringsUtils.normalizeResourceName(courseUnit.getName()); |
String unitPath = courseImportYearPath + "/" + semestre + "/" + normalizedName; |
copyProgram(courseUnit,unitPath,userSession); |
new CreateCourseUnitXML().run(unitPath+"/desc.xml",courseUnit,userSession); |
for (CourseUnitAssignement assignement : courseUnit.getAssignements()) |
{ |
String assignementDir = unitPath + "/assignement" + assignement.getId(); |
createAssignementCopy(assignement, assignementDir, userSession); |
if (!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0) |
{ |
String semestre; |
if(courseUnit.getSemestre().equals("S1")) |
for (CourseUnitDeliverable deliverable : assignement.getDeliverables()) |
{ |
semestre = Globals.INTRANET_SEMESTRE_S1; |
copyDeliverableVersions(deliverable, assignementDir, userSession); |
} |
else |
{ |
semestre = Globals.INTRANET_SEMESTRE_S2; |
} |
String normalizedName = StringsUtils.normalizeResourceName(courseUnit.getName()); |
String unitPath = courseImportYearPath + "/" + semestre + "/" + normalizedName; |
for(CourseUnitAssignement assignement : courseUnit.getAssignements()) |
{ |
String assignementDir = unitPath + "/assignement" + assignement.getId(); |
createAssignementCopy(assignement,assignementDir,userSession); |
if(!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0) |
{ |
for(CourseUnitDeliverable deliverable: assignement.getDeliverables()) |
{ |
copyDeliverableVersions(deliverable,assignementDir,userSession); |
} |
} |
} |
} |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
} |
} |
FilesUtils.zipFolder(tmpDir,tmpDir + ".zip"); |
FilesUtils.delete(tmpDir); |
return tmpName + ".zip"; |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
} |
return null; |
} |
/** |
* In case of student create a backup with student deliverables in actual year subscribed units, in case of teacher create a backup of all deliverables in actual year teached units |
* In case of student create a backup with student deliverables in actual year subscribed units, in case of teacher create a backup of all deliverables in actual year teached units |
* |
* @param userSession |
* @return |
* @throws ServiceException |
*/ |
public String createImportYearBackup(String importYear, UserSession userSession) throws ServiceException |
{ |
if(importYear == null) |
importYear = DatesUtils.getImportYear(); |
if (userSession.getUser() instanceof Teacher) |
return createLoginTeacherActualYearBackup(importYear,userSession); |
else if (userSession.getUser() instanceof Student) |
return createLoginStudentActualYearBackup(importYear,userSession); |
return null; |
} |
/** |
* In case of student create a backup with student deliverables in actual year subscribed units, in case of teacher create a backup of all deliverables in actual year teached units |
* |
* @param userSession |
* @return |
* @throws ServiceException |
*/ |
public String createActualYearBackup(UserSession userSession) throws ServiceException |
{ |
if(userSession.getUser() instanceof Teacher) |
return createLoginTeacherActualYearBackup(userSession); |
else if(userSession.getUser() instanceof Student) |
return createLoginStudentActualYearBackup(userSession); |
if (userSession.getUser() instanceof Teacher) |
return createLoginTeacherActualYearBackup(DatesUtils.getImportYear(),userSession); |
else if (userSession.getUser() instanceof Student) |
return createLoginStudentActualYearBackup(DatesUtils.getImportYear(), userSession); |
return null; |
} |
/** |
* In case of student create a backup with student deliverables subscribed units, in case of teacher create a backup of all deliverables of teached units |
* |
* In case of student create a backup with student deliverables subscribed units, in case of teacher create a backup of all deliverables of teached units |
* @param userSession |
* @return |
* @throws ServiceException |
*/ |
public String createBackup(UserSession userSession) throws ServiceException |
{ |
if(userSession.getUser() instanceof Teacher) |
if (userSession.getUser() instanceof Teacher) |
return createLoginTeacherBackup(userSession); |
else if(userSession.getUser() instanceof Student) |
else if (userSession.getUser() instanceof Student) |
return createLoginStudentBackup(userSession); |
return null; |
} |
142,97 → 194,93 |
public String createLoginStudentBackup(UserSession userSession) throws ServiceException |
{ |
Student s = (Student) userSession.getUser(); |
return createStudentBackup(s,userSession); |
return createStudentBackup(s, userSession); |
} |
public String createLoginTeacherBackup(UserSession userSession) throws ServiceException |
{ |
Teacher t = (Teacher) userSession.getUser(); |
return createTeacherBackup(t,userSession); |
return createTeacherBackup(t, userSession); |
} |
public String createLoginStudentActualYearBackup(UserSession userSession) throws ServiceException |
public String createLoginStudentActualYearBackup(String importYear,UserSession userSession) throws ServiceException |
{ |
Student s = (Student) userSession.getUser(); |
return createStudentActualYearBackup(s,userSession); |
return createStudentActualYearBackup(s,importYear, userSession); |
} |
public String createLoginTeacherActualYearBackup(UserSession userSession) throws ServiceException |
public String createLoginTeacherActualYearBackup(String importYear,UserSession userSession) throws ServiceException |
{ |
Teacher t = (Teacher) userSession.getUser(); |
return createTeacherActualYearBackup(t,userSession); |
return createTeacherActualYearBackup(t,importYear, userSession); |
} |
public String createStudentActualYearBackup(long studentId, UserSession userSession) throws ServiceException |
public String createStudentActualYearBackup(long studentId,String importYear, UserSession userSession) throws ServiceException |
{ |
Student s = DaoFactory.getStudentDaoImpl().get(studentId); |
return createStudentActualYearBackup(s,userSession); |
return createStudentActualYearBackup(s,importYear, userSession); |
} |
public String createTeacherActualYearBackup(long teacherId, UserSession userSession) throws ServiceException |
public String createTeacherActualYearBackup(long teacherId,String importYear, UserSession userSession) throws ServiceException |
{ |
Teacher t = DaoFactory.getTeacherDaoImpl().get(teacherId); |
return createTeacherActualYearBackup(t,userSession); |
return createTeacherActualYearBackup(t,importYear, userSession); |
} |
public String createStudentBackup(long studentId, UserSession userSession) throws ServiceException |
{ |
Student s = DaoFactory.getStudentDaoImpl().get(studentId); |
return createStudentBackup(s,userSession); |
return createStudentBackup(s, userSession); |
} |
public String createTeacherBackup(long teacherId, UserSession userSession) throws ServiceException |
{ |
Teacher t = DaoFactory.getTeacherDaoImpl().get(teacherId); |
return createTeacherBackup(t,userSession); |
return createTeacherBackup(t, userSession); |
} |
private String createStudentActualYearBackup(Student s, UserSession userSession) throws ServiceException |
private String createStudentActualYearBackup(Student s,String importYear, UserSession userSession) throws ServiceException |
{ |
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadSubscribedImportYearUnits(s.getId(),DatesUtils.getImportYear()); |
if(units == null || units.size() == 0) |
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadSubscribedImportYearUnits(s.getId(), importYear); |
if (units == null || units.size() == 0) |
return null; |
return createStudentBackup(units,s,userSession); |
return createStudentBackup(units, s, userSession); |
} |
private String createTeacherActualYearBackup(Teacher t, UserSession userSession) throws ServiceException |
private String createTeacherActualYearBackup(Teacher t,String importYear, UserSession userSession) throws ServiceException |
{ |
List units = DaoFactory.getCourseUnitDaoImpl().loadTeachedImportYearUnits(t.getId(),DatesUtils.getImportYear()); |
if(units == null || units.size() == 0) |
List units = DaoFactory.getCourseUnitDaoImpl().loadTeachedImportYearUnits(t.getId(), DatesUtils.getImportYear()); |
if (units == null || units.size() == 0) |
return null; |
return createTeacherBackup(units,t,userSession); |
return createTeacherBackup(units, t, userSession); |
} |
private String createStudentBackup(Student s, UserSession userSession) throws ServiceException |
{ |
List<CourseUnit> units = new ArrayList<CourseUnit>(s.getSubscribedUnits()); |
if(units == null || units.size() == 0) |
if (units == null || units.size() == 0) |
return null; |
return createStudentBackup(units,s,userSession); |
return createStudentBackup(units, s, userSession); |
} |
private String createTeacherBackup(Teacher t, UserSession userSession) throws ServiceException |
{ |
List<CourseUnit> units = new ArrayList<CourseUnit>(t.getTeachedUnits()); |
if(units == null || units.size() == 0) |
if (units == null || units.size() == 0) |
return null; |
return createTeacherBackup(units,t,userSession); |
return createTeacherBackup(units, t, userSession); |
} |
private String createStudentBackup(List<CourseUnit> courseUnits, Student s, UserSession userSession) throws ServiceException |
{ |
String tmpName = BytesUtils.generateHexKey(); |
String tmpName = BytesUtils.generateHexKey(); |
String tmpDir = Globals.TMP_DIR + "/" + tmpName; |
new File(tmpDir).mkdirs(); |
240,12 → 288,12 |
{ |
try |
{ |
for(CourseUnit courseUnit: courseUnits) |
for (CourseUnit courseUnit : courseUnits) |
{ |
String courseDirPath = tmpDir + "/" + StringsUtils.normalizeResourceName(courseUnit.getCourse().getName()) + '.' + courseUnit.getCourse().getCode(); |
String courseImportYearPath = courseDirPath + "/" + courseUnit.getImportYear(); |
String semestre; |
if(courseUnit.getSemestre().equals("S1")) |
if (courseUnit.getSemestre().equals("S1")) |
{ |
semestre = Globals.INTRANET_SEMESTRE_S1; |
} |
255,37 → 303,39 |
} |
String normalizedName = StringsUtils.normalizeResourceName(courseUnit.getName()); |
String unitPath = courseImportYearPath + "/" + semestre + "/" + normalizedName; |
for(CourseUnitAssignement assignement : courseUnit.getAssignements()) |
copyProgram(courseUnit,unitPath,userSession); |
new CreateCourseUnitXML().run(unitPath+"/desc.xml",courseUnit,userSession); |
for (CourseUnitAssignement assignement : courseUnit.getAssignements()) |
{ |
String assignementDir = unitPath + "/assignement" + assignement.getId(); |
createAssignementCopy(assignement,assignementDir,userSession); |
if(!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0) |
createAssignementCopy(assignement, assignementDir, userSession); |
if (!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0) |
{ |
CourseUnitDeliverable deliverable = DaoFactory.getCourseUnitDeliverableDaoImpl().loadDeliverable(s.getId(),assignement.getId()); |
copyDeliverableVersions(deliverable,assignementDir,userSession); |
CourseUnitDeliverable deliverable = DaoFactory.getCourseUnitDeliverableDaoImpl().loadDeliverable(s.getId(), assignement.getId()); |
if(deliverable != null) |
copyDeliverableVersions(deliverable, assignementDir, userSession); |
} |
} |
} |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
} |
FilesUtils.zipFolder(tmpDir,tmpDir + ".zip"); |
FilesUtils.zipFolder(tmpDir, tmpDir + ".zip"); |
FilesUtils.delete(tmpDir); |
return tmpName + ".zip"; |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
} |
return null; |
} |
private String createTeacherBackup(List<CourseUnit> courseUnits, Teacher t, UserSession userSession) throws ServiceException |
{ |
String tmpName = BytesUtils.generateHexKey(); |
String tmpName = BytesUtils.generateHexKey(); |
String tmpDir = Globals.TMP_DIR + "/" + tmpName; |
new File(tmpDir).mkdirs(); |
293,12 → 343,12 |
{ |
try |
{ |
for(CourseUnit courseUnit: courseUnits) |
for (CourseUnit courseUnit : courseUnits) |
{ |
String courseDirPath = tmpDir + "/" + StringsUtils.normalizeResourceName(courseUnit.getCourse().getName()) + '.' + courseUnit.getCourse().getCode(); |
String courseImportYearPath = courseDirPath + "/" + courseUnit.getImportYear(); |
String semestre; |
if(courseUnit.getSemestre().equals("S1")) |
if (courseUnit.getSemestre().equals("S1")) |
{ |
semestre = Globals.INTRANET_SEMESTRE_S1; |
} |
308,16 → 358,17 |
} |
String normalizedName = StringsUtils.normalizeResourceName(courseUnit.getName()); |
String unitPath = courseImportYearPath + "/" + semestre + "/" + normalizedName; |
for(CourseUnitAssignement assignement : courseUnit.getAssignements()) |
copyProgram(courseUnit,unitPath,userSession); |
new CreateCourseUnitXML().run(unitPath+"/desc.xml",courseUnit,userSession); |
for (CourseUnitAssignement assignement : courseUnit.getAssignements()) |
{ |
String assignementDir = unitPath + "/assignement" + assignement.getId(); |
createAssignementCopy(assignement,assignementDir,userSession); |
if(!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0) |
createAssignementCopy(assignement, assignementDir, userSession); |
if (!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0) |
{ |
for(CourseUnitDeliverable deliverable: assignement.getDeliverables()) |
for (CourseUnitDeliverable deliverable : assignement.getDeliverables()) |
{ |
copyDeliverableVersions(deliverable,assignementDir,userSession); |
copyDeliverableVersions(deliverable, assignementDir, userSession); |
} |
} |
} |
325,36 → 376,64 |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
} |
FilesUtils.zipFolder(tmpDir,tmpDir + ".zip"); |
FilesUtils.zipFolder(tmpDir, tmpDir + ".zip"); |
FilesUtils.delete(tmpDir); |
return tmpName + ".zip"; |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
} |
return null; |
} |
private void copyProgram(CourseUnit courseUnit, String toDir, UserSession userSession) |
{ |
if (courseUnit.getProgramStreamId() != null && courseUnit.getProgramStreamId().length() > 0) |
{ |
String deliverDir = toDir + "/program.zip"; |
new File(deliverDir).mkdirs(); |
List<IRepositoryFile> iRepositoryFiles = repositoryService.loadVersions(courseUnit.getProgramStreamId(), userSession); |
for (IRepositoryFile iRepositoryFile : iRepositoryFiles) |
{ |
try |
{ |
if(iRepositoryFile.getInput() != null) |
FilesUtils.copy(iRepositoryFile.getInput(), toDir + "/program." + FilesUtils.getExtension(iRepositoryFile.getName())); |
else |
logger.error("Repository File have no candidate file version, coming null inputStream:" + iRepositoryFile.getIdentifier()); |
} |
catch (IOException e) |
{ |
logger.error(e, e); |
} |
} |
} |
} |
private void copyDeliverableVersions(CourseUnitDeliverable deliverable, String toDir, UserSession userSession) |
{ |
if(deliverable.getDeliverableRepositoryStream() != null && deliverable.getDeliverableRepositoryStream().length() > 0) |
if (deliverable.getDeliverableRepositoryStream() != null && deliverable.getDeliverableRepositoryStream().length() > 0) |
{ |
String deliverDir = toDir + "/deliverable" + deliverable.getId() + "-" + deliverable.getStudent().getId() + "numero" + deliverable.getStudent().getSigesCode(); |
new File(deliverDir).mkdirs(); |
List<IRepositoryFile> iRepositoryFiles = repositoryService.loadVersions(deliverable.getDeliverableRepositoryStream(),userSession); |
for(IRepositoryFile iRepositoryFile: iRepositoryFiles) |
List<IRepositoryFile> iRepositoryFiles = repositoryService.loadVersions(deliverable.getDeliverableRepositoryStream(), userSession); |
for (IRepositoryFile iRepositoryFile : iRepositoryFiles) |
{ |
try |
{ |
FilesUtils.copy(iRepositoryFile.getInput(),deliverDir + "/version" + getResourceFileName(iRepositoryFile.getName())); |
if(iRepositoryFile.getInput() != null) |
FilesUtils.copy(iRepositoryFile.getInput(), deliverDir + "/version" + getResourceFileName(iRepositoryFile.getName())); |
else |
logger.error("Repository File have no candidate file version, coming null inputStream:" + iRepositoryFile.getIdentifier()); |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
} |
} |
} |
362,12 → 441,12 |
public String getResourceFileName(String resourceName) |
{ |
String extension = FilesUtils.getExtension( resourceName); |
if(extension != null) |
String extension = FilesUtils.getExtension(resourceName); |
if (extension != null) |
{ |
resourceName = resourceName.substring(0,resourceName.length() - extension.length()); |
resourceName = resourceName.substring(0, resourceName.length() - extension.length()); |
} |
if(extension == null) |
if (extension == null) |
extension = ".unknown"; |
return resourceName + extension; |
} |
379,17 → 458,20 |
FileWriter assignementDesc = new FileWriter(assignementDir + "/description.txt"); |
assignementDesc.write(fileContent); |
assignementDesc.close(); |
if(assignement.getRepositoryStream() != null && assignement.getRepositoryStream().length() > 0) |
if (assignement.getRepositoryStream() != null && assignement.getRepositoryStream().length() > 0) |
{ |
IRepositoryFile iRepositoryFile = repositoryService.load(assignement.getRepositoryStream(),userSession); |
FilesUtils.copy(iRepositoryFile.getInput(),assignementDir + "/" + getResourceFileName(iRepositoryFile.getName())); |
IRepositoryFile iRepositoryFile = repositoryService.load(assignement.getRepositoryStream(), userSession); |
if(iRepositoryFile.getInput() != null) |
FilesUtils.copy(iRepositoryFile.getInput(), assignementDir + "/" + getResourceFileName(iRepositoryFile.getName())); |
else |
logger.error("Repository File have no candidate file version, coming null inputStream:" + iRepositoryFile.getIdentifier()); |
} |
} |
public String buildAssignementTemplate(CourseUnitAssignement assignement) |
{ |
String assignementDir = StringsUtils.normalizeResourceName(assignement.getTitle()) + assignement.getId(); |
new File(assignementDir).mkdirs(); |
String[] args = new String[] |
{ |
assignement.getCourseUnit().getName(), |
398,16 → 480,15 |
assignement.getDescription() |
}; |
String content = TemplateUtils.getOrLoadTemplate(Globals.TEMPLATE_ASSIGNEMENT_PATH + "/Assignement.txt"); |
// Format the mail message |
// Format the mail message |
return MessageFormat.format(content, args); |
} |
public static void main(String[] args) throws ServiceException |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
new CreateCourseUnitWorksBackupService().createSystemActualYearBackup(null,null); |
new CreateCourseUnitWorksBackupService().createSystemActualYearBackup(null, null); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadCourseUnitService.java |
---|
41,7 → 41,7 |
{ |
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(id); |
if(c == null) |
return null; |
CourseUnitView cV = new CourseUnitView(c,initTeachers,initStudents,initBlog); |
60,6 → 60,16 |
{ |
List<AnnouncementView> announcementViews = loadCourseUnitAnnouncements.run(id,userSession); |
cV.setAnnouncements(announcementViews); |
List<CourseUnitSummaryView> summaryViews = new ArrayList<CourseUnitSummaryView>(); |
if(c.getSummaries() != null) |
{ |
for(CourseUnitSummary summary: c.getSummaries()) |
{ |
summaryViews.add(new CourseUnitSummaryView(summary)); |
} |
} |
cV.setSummaries(summaryViews); |
} |
return cV; |
} |
/impl/src/java/pt/estgp/estgweb/services/email/SendEmailService.java |
---|
3,10 → 3,10 |
import jomm.utils.TemplateUtils; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.web.utils.DatesUtils; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.domain.enums.LangEnum; |
import pt.estgp.estgweb.domain.CourseUnitAnnouncement; |
import pt.estgp.estgweb.domain.User; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.utils.Email; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
158,7 → 158,40 |
return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments); |
} |
public Email getCourseUnitBlogPostEmail(BlogPost post, LangEnum langEnum, String from, List<User> users) |
{ |
List<String> arguments = new ArrayList<String>(); |
arguments.add(((CourseUnitBlog)post.getBlog()).getCourseUnit().getName()); |
arguments.add(post.getTitle()); |
arguments.add(post.getText()); |
arguments.add(from); |
String subjectTxt; |
String template; |
if(langEnum == LangEnum.PORTUGUESE) |
{ |
template = Globals.EMAIL_COURSEUNIT_BLOGPOST_TEMPLATE_PT; |
subjectTxt = Globals.EMAIL_COURSEUNIT_BLOGPOST_SUBJECT_PT; |
} |
else |
{ |
template = Globals.EMAIL_COURSEUNIT_BLOGPOST_TEMPLATE_EN; |
subjectTxt = Globals.EMAIL_COURSEUNIT_BLOGPOST_SUBJECT_EN; |
} |
List<String> recipients = new ArrayList<String>(); |
for(User u: users) |
{ |
if(Email.validEmail(u.getEmail())) |
recipients.add(u.getEmail()); |
} |
String subject = java.text.MessageFormat.format(subjectTxt,new String[]{((CourseUnitBlog)post.getBlog()).getCourseUnit().getNormalizedName(),post.getTitle()}); |
return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments); |
} |
public Email getNewGradesEmail(List<String[]> grades, LangEnum langEnum, String studentEmail, String studentName) |
{ |
List<String> arguments = new ArrayList<String>(); |
192,6 → 225,38 |
return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments); |
} |
public Email getSummaryEmail(List<String> emails, CourseUnitSummary cUS, CourseUnit c, LangEnum langEnum) |
{ |
List<String> arguments = new ArrayList<String>(); |
String data = DatesUtils.getStringFromDate(cUS.getDataAula()); |
String subject; |
String template; |
if(langEnum == LangEnum.PORTUGUESE) |
{ |
template = Globals.EMAIL_SUMMARY_TEMPLATE_PT; |
subject = Globals.EMAIL_SUMMARY_SUBJECT_PT; |
} |
else |
{ |
template = Globals.EMAIL_SUMMARY_TEMPLATE_EN; |
subject = Globals.EMAIL_SUMMARY_SUBJECT_EN; |
} |
subject = TemplateUtils.formatMessageTemplate(subject,new String[]{c.getName()}); |
arguments.add(c.getName()); |
arguments.add(""+cUS.getNumeroAula()); |
arguments.add(data); |
arguments.add(cUS.getTitulo()); |
arguments.add(cUS.getDescricao()); |
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/common/impl/DefaultToDo.java |
---|
19,6 → 19,7 |
private String catKey = null; |
private String from; |
private String to; |
private String catArg0; |
public DefaultToDo(String description, String url) |
43,6 → 44,15 |
this.catKey = catKey; |
this.url = url; |
} |
public DefaultToDo(String description, String to, String from, String catKey,String catArg0, String url) |
{ |
this.description = description; |
this.to = to; |
this.from = from; |
this.catKey = catKey; |
this.url = url; |
this.catArg0 = catArg0; |
} |
public String getDescription() |
{ |
95,7 → 105,10 |
{ |
if(getFrom() == null || getFrom().length() == 0) |
{ |
return "(" + getCatKey() + ")"+ "\t" + getDescription(); |
if(catArg0 == null) |
return "(" + getCatKey() + ")"+ "\t" + getDescription(); |
else |
return "(" + getCatKey() + ")"+ "\t" + getDescription(); |
} |
else |
{ |
119,4 → 132,14 |
{ |
this.to = to; |
} |
public String getCatArg0() |
{ |
return catArg0; |
} |
public void setCatArg0(String catArg0) |
{ |
this.catArg0 = catArg0; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/common/IToDo.java |
---|
13,6 → 13,7 |
public String getUrl(); |
public String getDescription(); |
public String getCatKey(); |
public String getCatArg0(); |
public String getFrom(); |
public String getTo(); |
public String getLabel(HttpServletRequest request); |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportGradesService.java |
---|
135,11 → 135,13 |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
AbstractDao.getCurrentSession().getTransaction().rollback(); |
logMessages.addMessage(new DefaultLogMessage("import.error", e.toString(), "see log for details", LogMessageTypeEnum.ERROR)); |
logger.error(e, e); |
throw new ServiceException(e.toString(), e); |
} |
logMessages.addMessage(new DefaultLogMessage("import.teachers.terminating", LogMessageTypeEnum.INFO)); |
logger.info("terminating grades import"); |
return logMessages; |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportSumaries.java |
---|
New file |
0,0 → 1,185 |
package pt.estgp.estgweb.services.sigesimports; |
import jomm.dao.impl.AbstractDao; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.CourseUnitSummary; |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.enums.LangEnum; |
import pt.estgp.estgweb.services.email.EMAILJob; |
import pt.estgp.estgweb.services.email.SendEmailService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.jobs.JobScheduleService; |
import pt.estgp.estgweb.services.logresults.ILogMessages; |
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.ipportalegre.siges.web.services.ArrayOfAula; |
import pt.ipportalegre.siges.web.services.Aula; |
import pt.ipportalegre.siges.web.services.SiGesWEB; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import javax.xml.namespace.QName; |
import java.net.MalformedURLException; |
import java.net.URL; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.HashSet; |
import java.util.List; |
/** |
* @author Jorge Machado |
* @date 11/May/2008 |
* @time 12:51:32 |
* @see pt.estgp.estgweb |
*/ |
public class ImportSumaries implements IService |
{ |
private static final Logger logger = Logger.getLogger(ImportSumaries.class); |
private static final int MAX_COMMIT = 100; |
private List<Long> newSummaries = new ArrayList<Long>(); |
public ILogMessages run(String year) throws ServiceException |
{ |
DefaultLogMessages logMessages = new DefaultLogMessages(); |
logMessages.addMessage(new DefaultLogMessage("import.summaries", LogMessageTypeEnum.INFO, "instituicao " + Globals.SIGES_INSTITUTION_CODE)); |
logger.info("starting summaries import"); |
try |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
SiGesWEB service; |
try |
{ |
service = new SiGesWEB(new URL(Globals.SIGES_WEBSERVICE_WSDL), new QName(Globals.SIGES_WEBSERVICE_TARGET_NAMESPACE, "SiGesWEB")); |
} |
catch (MalformedURLException e) |
{ |
logMessages.addMessage(new DefaultLogMessage("import.error",e.toString(),"erro na configuracao do WEB Service", LogMessageTypeEnum.INFO)); |
logger.fatal(e, e); |
return logMessages; |
} |
int i = 0; |
List<Long> cUs = DaoFactory.getCourseUnitDaoImpl().loadIds(year,DatesUtils.getSemestre()); |
for(Long cId: cUs) |
{ |
if (i++ > MAX_COMMIT) |
{ |
i = 0; |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
} |
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().load(cId); |
logMessages.addMessage(new DefaultLogMessage("import.info","","Importing Summaries to CourseUnit: " + c.getCode() + ": course: " + c.getCourse(), LogMessageTypeEnum.INFO)); |
logger.info("Importing Summaries to CourseUnit: " + c.getCode() + ": course: " + c.getCourse()); |
int tries = 3; |
ArrayOfAula arrayOfAulas = null; |
while(tries > 0) |
{ |
try |
{ |
arrayOfAulas = service.getSiGesWEBSoap().getAulas(Globals.SIGES_INSTITUTION_CODE, year,c.getCode(),DatesUtils.getSemestre()); |
break; |
} |
catch(Throwable t) |
{ |
if(tries-- == 0) |
{ |
logger.error("Giving up of courseUnit:" + cId + " ( " + c.getName() + " ) ",t); |
break; |
} |
logger.error("WebService Fail, trying " + tries + " times sleeping a while"); |
Thread.sleep(5000); |
} |
} |
if(arrayOfAulas != null && arrayOfAulas.getAula() != null) |
{ |
HashMap<String, CourseUnitSummary> map = new HashMap<String, CourseUnitSummary>(); |
if(c.getSummaries() != null && c.getSummaries().size() > 0) |
for(CourseUnitSummary s: c.getSummaries()) |
map.put(s.getCodigoAula() + ":" + s.getCodigoSumario(),s); |
else |
c.setSummaries(new HashSet<CourseUnitSummary>()); |
for(Aula aula: arrayOfAulas.getAula()) |
{ |
CourseUnitSummary s = map.get(aula.getSumNumeroAula() + ":" + aula.getCodigoSumario()); |
if(s == null) |
{ |
s = DomainObjectFactory.createCourseUnitSummaryImpl(); |
s.setCourseUnit(c); |
c.getSummaries().add(s); |
DaoFactory.getCourseUnitSummaryDaoImpl().save(s); |
newSummaries.add(s.getId()); |
} |
s.setCodigoSumario(""+aula.getCodigoSumario().intValue()); |
s.setCodigoAula(""+aula.getSumNumeroAula().intValue()); |
s.setNumeroAula(aula.getSumNumeroAula().intValue()); |
s.setDataAula(aula.getData().toGregorianCalendar().getTime()); |
s.setTipoAula(aula.getSumTipoAula()); |
s.setCodigoSalaAula("" + aula.getAulaCodigoSalaAula().intValue()); |
s.setAlunosPresentes(aula.getSumNumeroAlunos().intValue()); |
s.setTitulo(aula.getSumTitulo()); |
s.setDescricao(aula.getSumDescricao()); |
s.setcEstado(""+aula.getSumCdEstado().intValue()); |
} |
} |
else |
logger.error("Summaries come null in unit:" + c.getCode()); |
} |
sendEmail(null); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
AbstractDao.getCurrentSession().getTransaction().rollback(); |
logMessages.addMessage(new DefaultLogMessage("import.error", e.toString(), "see log for details", LogMessageTypeEnum.ERROR)); |
throw new ServiceException(e.toString(), e); |
} |
logMessages.addMessage(new DefaultLogMessage("import.summaries.terminating", LogMessageTypeEnum.INFO)); |
logger.info("terminating summaries import"); |
return logMessages; |
} |
public static SendEmailService sendEmailService = new SendEmailService(); |
private void sendEmail(UserSession userSession) |
{ |
if(Globals.EMAIL_SUMMARIES && newSummaries.size() > 0) |
{ |
for(long id: newSummaries) |
{ |
CourseUnitSummary summary = DaoFactory.getCourseUnitSummaryDaoImpl().load(id); |
List<String> emails = DaoFactory.getCourseUnitSummaryDaoImpl().getStudentsEmails(summary.getId()); |
if(emails == null) |
logger.warn("No students emails in unit: code:" + summary.getCourseUnit().getCode() + " " + summary.getCourseUnit().getName()); |
EMAILJob emailJob = new EMAILJob(sendEmailService.getSummaryEmail(emails,summary,summary.getCourseUnit(), LangEnum.PORTUGUESE)); |
JobScheduleService.getInstance().scheduleNow(emailJob,"New Summary EMAIL from: " + summary.getCourseUnit().getName() + " aula: " +summary.getNumeroAula() ,userSession); |
} |
} |
} |
/** |
* Testar por aqui poi requer Super Role e assim e' autmatico |
* |
* @param args of main |
* @throws pt.estgp.estgweb.services.expceptions.ServiceException on error |
*/ |
public static void main(String[] args) throws ServiceException |
{ |
new ImportSumaries().run(DatesUtils.getImportYear()); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportStudentsService.java |
---|
100,9 → 100,10 |
} |
catch(Throwable e) |
{ |
logger.error(e,e); |
AbstractDao.getCurrentSession().getTransaction().rollback(); |
logMessages.addMessage(new DefaultLogMessage("import.error",e.toString(), "see log for details", LogMessageTypeEnum.ERROR)); |
logger.error(e,e); |
} |
return logMessages; |
} |
149,7 → 150,9 |
while (iter.hasNext()) |
{ |
CourseUnit courseUnit = iter.next(); |
if(((StudentImpl)student).isLocalRemovedUnit(courseUnit)) |
//In case of a comming proxy |
StudentImpl sImpl = (StudentImpl) DaoFactory.getStudentDaoImpl().narrow(student); |
if(sImpl.isLocalRemovedUnit(courseUnit)) |
iter.remove(); |
} |
185,7 → 188,6 |
public static void main(String[] args) throws ServiceException |
{ |
new ImportStudentsService().run(DatesUtils.getImportYear()); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportTeachersService.java |
---|
1,28 → 1,35 |
package pt.estgp.estgweb.services.sigesimports; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import jomm.dao.impl.AbstractDao; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
import pt.estgp.estgweb.domain.Teacher; |
import pt.estgp.estgweb.domain.TeacherImpl; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.common.CommonServicesManager; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.logresults.ILogMessages; |
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage; |
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum; |
import pt.estgp.estgweb.services.logresults.ILogMessages; |
import pt.estgp.estgweb.services.common.CommonServicesManager; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.*; |
import pt.ipportalegre.siges.web.services.*; |
import org.apache.log4j.Logger; |
import pt.ipportalegre.siges.web.services.ArrayOfDecimal; |
import pt.ipportalegre.siges.web.services.Disciplina; |
import pt.ipportalegre.siges.web.services.Docente; |
import pt.ipportalegre.siges.web.services.SiGesWEB; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.util.*; |
import javax.xml.namespace.QName; |
import java.math.BigDecimal; |
import java.net.MalformedURLException; |
import java.net.URL; |
import java.net.MalformedURLException; |
import java.util.HashSet; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Set; |
import jomm.dao.impl.AbstractDao; |
import javax.xml.namespace.QName; |
/** |
* @author Jorge Machado |
* @date 11/May/2008 |
48,7 → 55,7 |
} |
catch (MalformedURLException e) |
{ |
logMessages.addMessage(new DefaultLogMessage("import.error",e.toString(),"erro na configuracao do WEB Service", LogMessageTypeEnum.INFO)); |
logMessages.addMessage(new DefaultLogMessage("import.error", e.toString(), "erro na configuracao do WEB Service", LogMessageTypeEnum.INFO)); |
logger.fatal(e, e); |
return logMessages; |
} |
65,7 → 72,16 |
DaoFactory.getTeacherDaoImpl().save(t); |
newUser = true; |
} |
persist(d, t); |
logger.info("Importing: (" + t.getUsername() + ") " + t.getName()); |
try |
{ |
persist(d, t); |
} |
catch (Exception e) |
{ |
logger.error(e, e); |
throw e; |
} |
if (newUser) |
CommonServicesManager.getInstance().adviseNew(t); |
else |
94,68 → 110,87 |
* |
* @param d docente |
* @param t teacher |
* @throws Exception . |
*/ |
private void persist(Docente d, Teacher t) |
private void persist(Docente d, Teacher t) throws Exception |
{ |
t.setName(d.getNomeFuncionarioInt()); |
t.setEmail(d.getEmail()); |
if(d.getEmail() != null && d.getEmail().endsWith(Globals.EMAIL_LOCAL_SUFFIX)) |
try |
{ |
int atIndex = d.getEmail().indexOf("@"); |
if(atIndex > 0) |
t.setUsername(d.getEmail().substring(0,atIndex)); |
} |
t.setSigesCode(d.getCodigoFuncionario().intValue()); |
t.setAddress(d.getMorada()); |
t.setZip("" + d.getCodigoPostal().intValue()); |
t.setBi(d.getNumeroBi()); |
t.setEmployerName(d.getNomeFuncionario()); |
t.setAcademicName(d.getNomeAcademico()); |
t.setBirthDate(d.getDataNascimento().toGregorianCalendar().getTime()); |
//Desta forma as relacoes antigas sao ignoradas cria-se uma lista nova e atribui-se ao Teacher, o Hibernate faz resto e apaga as chaves estrangeiras antigas |
if (d.getDisciplinas() == null || d.getDisciplinas().getDisciplina() == null || d.getDisciplinas().getDisciplina().size() == 0) |
logger.warn("ATENTION TEACHER WITH ZERO UNITS: codigoFuncionario " + d.getCodigoFuncionario()); |
else |
{ |
Set<CourseUnit> units = new HashSet<CourseUnit>(); |
for (Disciplina disciplina : d.getDisciplinas().getDisciplina()) |
if(t.getName() == null || t.getName().length() == 0) |
t.setName(d.getNomeFuncionarioInt()); |
//Email instituicao |
t.setEmail(d.getEmail()); |
if (d.getEmail() != null && d.getEmail().endsWith(Globals.EMAIL_LOCAL_SUFFIX)) |
{ |
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(),"" + disciplina.getCodigoCurso(),"" + disciplina.getCdDuracao(),"" + disciplina.getCdLectivo()); |
int atIndex = d.getEmail().indexOf("@"); |
if (atIndex > 0) |
t.setUsername(d.getEmail().substring(0, atIndex)); |
if(courseUnit == null) |
{ |
logger.warn("Unit not found: semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + disciplina.getCodigoCurso() + " year:" + disciplina.getCdLectivo()); |
} |
else |
units.add(courseUnit); |
} |
Iterator<CourseUnit> iter = units.iterator(); |
while (iter.hasNext()) |
t.setSigesCode(d.getCodigoFuncionario().intValue()); |
if(t.getAddress() == null || t.getAddress().length() == 0) |
t.setAddress(d.getMorada()); |
if(t.getZip() == null || t.getZip().length() == 0) |
t.setZip("" + d.getCodigoPostal().intValue()); |
if(t.getBi() == null || t.getBi().length() == 0) |
t.setBi(d.getNumeroBi()); |
t.setEmployerName(d.getNomeFuncionario()); |
t.setAcademicName(d.getNomeAcademico()); |
if(t.getBirthDate() == null || t.getBirthDate().getTime() == 0) |
t.setBirthDate(d.getDataNascimento().toGregorianCalendar().getTime()); |
//Desta forma as relacoes antigas sao ignoradas cria-se uma lista nova e atribui-se ao Teacher, o Hibernate faz resto e apaga as chaves estrangeiras antigas |
if (d.getDisciplinas() == null || d.getDisciplinas().getDisciplina() == null || d.getDisciplinas().getDisciplina().size() == 0) |
logger.warn("ATENTION TEACHER WITH ZERO UNITS: codigoFuncionario " + d.getCodigoFuncionario()); |
else |
{ |
CourseUnit courseUnit = iter.next(); |
if(((TeacherImpl)t).isLocalRemovedUnit(courseUnit)) |
iter.remove(); |
} |
if(t.getTeachedUnits() != null) |
{ |
for(CourseUnit c: units) |
Set<CourseUnit> units = new HashSet<CourseUnit>(); |
for (Disciplina disciplina : d.getDisciplinas().getDisciplina()) |
{ |
boolean isIn = false; |
for(CourseUnit tc : t.getTeachedUnits()) |
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(), "" + disciplina.getCodigoCurso(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo()); |
if (courseUnit == null) |
{ |
if(tc.equals(c)) |
logger.warn("Unit not found: semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + disciplina.getCodigoCurso() + " year:" + disciplina.getCdLectivo()); |
} |
else |
units.add(courseUnit); |
} |
Iterator<CourseUnit> iter = units.iterator(); |
while (iter.hasNext()) |
{ |
CourseUnit courseUnit = iter.next(); |
//In case of a comming proxy |
TeacherImpl tImpl = (TeacherImpl) DaoFactory.getTeacherDaoImpl().narrow(t); |
if (tImpl.isLocalRemovedUnit(courseUnit)) |
iter.remove(); |
} |
if (t.getTeachedUnits() != null) |
{ |
for (CourseUnit c : units) |
{ |
boolean isIn = false; |
for (CourseUnit tc : t.getTeachedUnits()) |
{ |
isIn = true; |
break; |
if (tc.equals(c)) |
{ |
isIn = true; |
break; |
} |
} |
if (!isIn) |
t.getTeachedUnits().add(c); |
} |
if(!isIn) |
t.getTeachedUnits().add(c); |
} |
else |
t.setTeachedUnits(units); |
} |
else |
t.setTeachedUnits(units); |
} |
catch (Exception e) |
{ |
logger.error(e, e); |
throw e; |
} |
} |
/** |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportCourseService.java |
---|
48,7 → 48,7 |
HashMap<String, Disciplina> disciplinasMap = new HashMap<String, Disciplina>(); |
HashMap<String, Disciplina> disciplinasMapS1 = new HashMap<String, Disciplina>(); |
HashMap<String, Disciplina> disciplinasMapS2 = new HashMap<String, Disciplina>(); |
HashMap<Integer, Disciplina> cursosMap = new HashMap<Integer, Disciplina>(); |
HashMap<String, Disciplina> cursosMap = new HashMap<String, Disciplina>(); |
/** |
* Build Course Units Maps |
73,8 → 73,8 |
*/ |
logMessages.addMessage(new DefaultLogMessage("import.semestre.updating.courses", LogMessageTypeEnum.INFO)); |
logger.info("updating courses"); |
Set<Map.Entry<Integer, Disciplina>> set2 = cursosMap.entrySet(); |
for (Map.Entry<Integer, Disciplina> entry : set2) |
Set<Map.Entry<String, Disciplina>> set2 = cursosMap.entrySet(); |
for (Map.Entry<String, Disciplina> entry : set2) |
{ |
Disciplina d = entry.getValue(); |
CourseView c = coursesService.loadCourseByCode("" + d.getCodigoCurso().intValue(),false); |
101,11 → 101,11 |
} |
catch (Throwable e) |
{ |
logMessages.addMessage(new DefaultLogMessage("import.error",e.toString(), "see log for details", LogMessageTypeEnum.ERROR)); |
logger.error(e,e); |
logger.error(e,e); |
logMessages.addMessage(new DefaultLogMessage("import.error",e.toString(), "see log for details", LogMessageTypeEnum.ERROR)); |
} |
logMessages.addMessage(new DefaultLogMessage("import.course.terminating", LogMessageTypeEnum.INFO)); |
logger.info("terminating course import"); |
logMessages.addMessage(new DefaultLogMessage("import.course.terminating", LogMessageTypeEnum.INFO)); |
return logMessages; |
} |
114,7 → 114,7 |
String year, |
HashMap<String, Disciplina> disciplinasMap, |
HashMap<String, Disciplina> disciplinasMapSemestre, |
HashMap<Integer, Disciplina> cursosMap, |
HashMap<String, Disciplina> cursosMap, |
DefaultLogMessages logMessages) |
{ |
logMessages.addMessage(new DefaultLogMessage("import.semestre.course.units." + semestre, LogMessageTypeEnum.INFO)); |
130,8 → 130,7 |
} |
disciplinasMap.put(d.getCodigo().intValue() + ":" + d.getCodigoCurso() + ":" + semestre, d); |
disciplinasMapSemestre.put(d.getCodigo().intValue() + ":" + d.getCodigoCurso() + ":" + semestre, d); |
cursosMap.put(d.getCodigoCurso().intValue(), d); |
cursosMap.put(d.getCodigoCurso().intValue()+":"+year, d); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/urlstat/ResetRelativePathsService.java |
---|
New file |
0,0 → 1,84 |
package pt.estgp.estgweb.services.urlstat; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import org.apache.log4j.Logger; |
import org.apache.commons.httpclient.util.URIUtil; |
import org.apache.commons.httpclient.URIException; |
import org.jfree.data.time.TimeSeriesCollection; |
import org.jfree.data.time.TimeSeries; |
import org.jfree.data.time.Day; |
import org.jfree.data.time.Month; |
import org.jfree.chart.JFreeChart; |
import org.jfree.chart.ChartFactory; |
import org.jfree.chart.ChartUtilities; |
import org.jfree.chart.axis.DateAxis; |
import org.jfree.chart.plot.XYPlot; |
import javax.servlet.http.HttpServletRequest; |
import java.util.List; |
import java.util.Date; |
import java.util.ArrayList; |
import java.io.File; |
import java.io.IOException; |
import java.awt.*; |
import java.text.SimpleDateFormat; |
import java.sql.PreparedStatement; |
import java.sql.SQLException; |
import java.sql.ResultSet; |
import jomm.utils.MyCalendar; |
import jomm.utils.DatesUtils; |
import jomm.utils.MessageResources; |
import jomm.dao.impl.AbstractDao; |
import jomm.dao.utils.HibernateUtils; |
/** |
* @author Jorge Machado |
* @date 15/Mar/2008 |
* @time 6:55:38 |
* @see pt.estgp.estgweb.services.urlstat |
*/ |
public class ResetRelativePathsService implements IService |
{ |
private static final Logger logger = Logger.getLogger(ResetRelativePathsService.class); |
public static void main(String[] args) throws ServiceException, URIException, SQLException |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
PreparedStatement ps = AbstractDao.getCurrentSession().connection().prepareStatement("select relativePath from urlstat"); |
ResultSet rs = ps.executeQuery(); |
while(rs.next()) |
{ |
PreparedStatement ps1 = AbstractDao.getCurrentSession().connection().prepareStatement("update urlstat set relativePath = ? where relativePath=?"); |
String relativePath = rs.getString("relativePath"); |
String encoded=URIUtil.encodeWithinQuery(relativePath,"ISO-8859-1"); |
ps1.setString(1,encoded); |
ps1.setString(2,relativePath); |
ps1.executeUpdate(); |
ps1.close(); |
ps1 = AbstractDao.getCurrentSession().connection().prepareStatement("update urlstatday set relativePath = ? where relativePath=?"); |
ps1.setString(1,encoded); |
ps1.setString(2,relativePath); |
ps1.executeUpdate(); |
ps1.close(); |
ps1 = AbstractDao.getCurrentSession().connection().prepareStatement("update urlstatmonth set relativePath = ? where relativePath=?"); |
ps1.setString(1,encoded); |
ps1.setString(2,relativePath); |
ps1.executeUpdate(); |
ps1.close(); |
ps1 = AbstractDao.getCurrentSession().connection().prepareStatement("update urlstatyear set relativePath = ? where relativePath=?"); |
ps1.setString(1,encoded); |
ps1.setString(2,relativePath); |
ps1.executeUpdate(); |
ps1.close(); |
} |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/urlstat/ChartBuilderService.java |
---|
115,6 → 115,15 |
TimeSeriesCollection dataset = new TimeSeriesCollection(); |
for(String relativePath: relativePaths) |
{ |
try |
{ |
relativePath = URIUtil.encodeWithinQuery(relativePath,"ISO-8859-1"); |
} |
catch (URIException e) |
{ |
logger.error(e,e); |
return null; |
} |
UrlStat urlStat = DaoFactory.getUrlStatDaoImpl().loadOrNull(relativePath); |
if(urlStat != null) |
{ |
194,7 → 203,7 |
String dates = sp.format(startDate) + "_UNTIL_" + sp.format(endDate) + "_" + seriesScaleEnum.getType(); |
String path; |
if(encode) |
path = URIUtil.encodePath(relativePathName.replaceAll("/","_"),"ISO-8859-1"); |
path = URIUtil.encodeWithinQuery(relativePathName.replaceAll("/","_"),"ISO-8859-1"); |
else |
path = relativePathName.replaceAll("/","_"); |
return LINK_CHART_TMP_DIR + "/" + path + "_" + dates + ".png"; |
213,23 → 222,24 |
* @throws ServiceException |
*/ |
public static void main(String[] args) throws ServiceException |
public static void main(String[] args) throws ServiceException, URIException |
{ |
// UrlStatService.main(null); |
AbstractDao.getCurrentSession().beginTransaction(); |
List<String> relativePaths = new ArrayList<String>(); |
relativePaths.add("/public/announcements/getFlashNews.jsp?sid=0.9998549583612295"); |
// AbstractDao.getCurrentSession().beginTransaction(); |
// List<String> relativePaths = new ArrayList<String>(); |
// relativePaths.add("/public/announcements/getFlashNews.jsp?sid=0.9998549583612295"); |
System.out.println(URIUtil.decode(URIUtil.encodeWithinQuery("/public/announcements/getFlashNews.jsp?sid=0.9998549583612295&jorge=j","ISO-8859-1"))); |
// relativePaths.add("/teste2"); |
System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.weekDays)); |
System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.monthDays)); |
System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.trimestreDays)); |
System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.semestreDays)); |
System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.yearDays)); |
System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.trimestreMonths)); |
System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.semestreMonths)); |
System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.yearMonths)); |
System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.twoYearsMonths)); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
// System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.weekDays)); |
// System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.monthDays)); |
// System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.trimestreDays)); |
// System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.semestreDays)); |
// System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.yearDays)); |
// System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.trimestreMonths)); |
// System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.semestreMonths)); |
// System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.yearMonths)); |
// System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.twoYearsMonths)); |
// AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/profile/EditUserService.java |
---|
8,6 → 8,8 |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
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 org.apache.log4j.Logger; |
public class EditUserService implements IService |
18,6 → 20,21 |
public UserView run(UserView userView, String userToCreate, UserSession userSession) throws ServiceException |
{ |
// if (userView.getUsername() == null || user.getPassword() == null || user.getUsername().length() < 4 || user.getPassword().length() < 4) |
// throw new FieldException("bad.fields"); |
User u = DaoFactory.getUserDaoImpl().loadByUsername(userView.getUsername()); |
if (u != null && u.getId() != userView.getId()) |
{ |
throw new AlreadyExistsException(AlreadyExistsException.ALREADY_EXISTS_USERNAME); |
} |
u = DaoFactory.getUserDaoImpl().loadByUsername(userView.getEmail()); |
if (u != null && u.getId() != userView.getId()) |
{ |
throw new AlreadyExistsException(AlreadyExistsException.ALREADY_EXISTS_EMAIL); |
} |
User user; |
if (userView.getId() > 0) |
user = DaoFactory.getUserDaoImpl().get(userView.getSerializable()); |
/impl/src/java/pt/estgp/estgweb/services/profile/SearchUserService.java |
---|
4,8 → 4,11 |
import pt.estgp.estgweb.domain.User; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.dao.DaoUtils; |
import pt.estgp.estgweb.domain.views.UserView; |
import pt.estgp.estgweb.services.common.SearchTypeEnum; |
import org.apache.log4j.Logger; |
import org.hibernate.criterion.Criterion; |
import java.util.List; |
import java.util.ArrayList; |
16,7 → 19,8 |
public List<UserView> run(String textToSearch,String typeToSearch) |
{ |
List<User> users =DaoFactory.getUserDaoImpl().findUsers(textToSearch,typeToSearch); |
List<User> users = DaoFactory.getUserDaoImpl().findUsers(textToSearch,typeToSearch); |
if(users == null) |
return null; |
List<UserView> userViews = new ArrayList<UserView>(); |
/impl/src/java/pt/estgp/estgweb/services/profile/CurriculumService.java |
---|
66,12 → 66,15 |
{ |
r = RecordEnum.parse(recordView.getType()).createInstance(); |
r.setOwner(userSession.getUser()); |
r.setCreators(new HashSet<User>()); |
r.getCreators().add(userSession.getUser()); |
// r.setCreators(new HashSet<User>()); |
// r.getCreators().add(userSession.getUser()); |
userSession.getUser().getCreatorRecords().add(r); |
if(userSession.getUser().getCreatorRecords() == null) |
userSession.getUser().setCreatorRecords(new HashSet<Record>()); |
userSession.getUser().getCreatorRecords().add(r); |
DaoFactory.getRecordDaoImpl().save(r); |
DaoFactory.getRecordDaoImpl().refresh(r); |
System.out.println(r.getCreators().size()); |
} |
else |
r = DaoFactory.getRecordDaoImpl().get(recordView.getId()); |
/impl/src/java/pt/estgp/estgweb/services/blogs/CreateBlogPostService.java |
---|
4,13 → 4,21 |
import pt.estgp.estgweb.domain.views.BlogView; |
import pt.estgp.estgweb.domain.views.BlogPostView; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.enums.LangEnum; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.data.ImageManager; |
import pt.estgp.estgweb.services.sms.SMSJob; |
import pt.estgp.estgweb.services.jobs.JobScheduleService; |
import pt.estgp.estgweb.services.email.SendEmailService; |
import pt.estgp.estgweb.services.email.EMAILJob; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.utils.Email; |
import org.apache.log4j.Logger; |
import java.util.Date; |
import java.util.List; |
import java.util.ArrayList; |
import jomm.utils.MyCalendar; |
63,12 → 71,36 |
{ |
bPV.setStatus(true); |
} |
bPV.persistViewInObject(bP); |
bP.setOwner(userSession.getUser()); |
bP.setBlog(b); |
bP.setSaveDate(new Date()); |
DaoFactory.getBlogPostDaoImpl().save(bP); |
trySendPostEmail(bP,userSession); |
return new BlogPostView(bP); |
} |
private void trySendPostEmail(BlogPost post, UserSession userSession) |
{ |
if(post.getBlog() instanceof CourseUnitBlog && Globals.EMAIL_COURSEUNIT_BLOGS) |
{ |
CourseUnit c = ((CourseUnitBlog)post.getBlog()).getCourseUnit(); |
List<User> users = new ArrayList<User>(); |
if(c.getStudents() != null) |
users.addAll(c.getStudents()); |
if(c.getTeachers() != null) |
users.addAll(c.getTeachers()); |
sendPostEmail(post,post.getTitle(), userSession, users); |
} |
} |
private void sendPostEmail(BlogPost p, String desc, UserSession userSession, List<User> users) |
{ |
SendEmailService sendEmailService = new SendEmailService(); |
Email e = sendEmailService.getCourseUnitBlogPostEmail(p, LangEnum.PORTUGUESE,userSession.getName(),users); |
EMAILJob emailJob = new EMAILJob(e); |
JobScheduleService.getInstance().scheduleNow(emailJob,"CourseUnit BlogPost Email:" + desc,userSession); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/data/RepositoryService.java |
---|
1,10 → 1,7 |
package pt.estgp.estgweb.services.data; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
import pt.estgp.estgweb.domain.RepositoryFileImpl; |
import pt.estgp.estgweb.domain.RepositoryFileVersionImpl; |
import pt.estgp.estgweb.domain.UserSession; |
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; |
16,6 → 13,10 |
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,15 → 26,17 |
{ |
/** |
* |
* @param stream |
* @param contentType |
* @param size |
* @param name |
* @param description |
* @param stream . |
* @param contentType . |
* @param size . |
* @param name . |
* @param description . |
* @param extension . |
* @param accessControl . |
* @param userSession . |
* @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, UserSession userSession) |
{ |
RepositoryFileImpl repositoryFile = DomainObjectFactory.createRepositoryFileImpl(); |
repositoryFile.setSaveDate(new Date()); |
49,53 → 52,49 |
repositoryFileVersion.setContentType(contentType); |
repositoryFileVersion.setExtension(extension); |
RepositoryManager.store(stream,repositoryFileVersion.getId()); |
Document dom = createXMLdescription(repositoryFileVersion); |
RepositoryManager.storeDescription(dom, repositoryFileVersion.getId()); |
RepositoryManager.store(stream, repositoryFileVersion.getId()); |
return new StringBuilder().append(repositoryFile.getId()).toString(); |
} |
/** |
* |
* @param stream |
* @param contentType |
* @param size |
* @param name |
* @param description |
* @return the identifier to retrieve the document |
* @param stream . |
* @param contentType . |
* @param size . |
* @param name . |
* @param description . |
* @param identifier . |
* @param extension . |
* @param accessControl . |
*/ |
public void updateRepositoryFile(String identifier, InputStream stream, String contentType, String extension, int size, String name, String description, ResourceAccessControlEnum accessControl) |
{ |
RepositoryFileImpl repositoryFile = (RepositoryFileImpl) DaoFactory.getRepositoryFileDaoImpl().get(Long.parseLong(identifier)); |
repositoryFile.setSaveDate(new Date()); |
repositoryFile.setAccessControl(accessControl.getKey()); |
RepositoryFileVersionImpl repositoryFileVersion = createVersion(repositoryFile); |
repositoryFileVersion.setName(name); |
repositoryFileVersion.setSize(size); |
repositoryFileVersion.setDescription(description); |
repositoryFileVersion.setContentType(contentType); |
repositoryFileVersion.setExtension(extension); |
RepositoryManager.store(stream,repositoryFileVersion.getId()); |
Document dom = createXMLdescription(repositoryFileVersion); |
RepositoryManager.storeDescription(dom, repositoryFileVersion.getId()); |
RepositoryManager.store(stream, repositoryFileVersion.getId()); |
} |
/** |
* |
* @param identifier |
* @param identifier . |
* @return a view of a document |
*/ |
public RepositoryFileImpl loadView(String identifier) |
{ |
RepositoryFileImpl repositoryFile = (RepositoryFileImpl) DaoFactory.getRepositoryFileDaoImpl().get(Long.parseLong(identifier)); |
for(RepositoryFileVersionImpl version: repositoryFile.getRepositoryFileVersions()) |
for (RepositoryFileVersionImpl version : repositoryFile.getRepositoryFileVersions()) |
{ |
version.getSaveDate(); |
} |
103,11 → 102,11 |
} |
/** |
* |
* @param identifier |
* @param identifier . |
* @param userSession . |
* @return a view with an inputStream for document |
*/ |
public IRepositoryFile load(String identifier,UserSession userSession) |
public IRepositoryFile load(String identifier, UserSession userSession) |
{ |
DefaultRepositoryFile iRepositoryFile = new DefaultRepositoryFile(); |
RepositoryFileImpl repositoryFile = (RepositoryFileImpl) DaoFactory.getRepositoryFileDaoImpl().load(Long.parseLong(identifier)); |
119,15 → 118,15 |
} |
/** |
* |
* @param identifier |
* @param identifier . |
* @param userSession . |
* @return a view with an inputStream for document |
*/ |
public List<IRepositoryFile> loadVersions(String identifier,UserSession userSession) |
public List<IRepositoryFile> loadVersions(String identifier, UserSession userSession) |
{ |
RepositoryFileImpl repositoryFile = (RepositoryFileImpl) DaoFactory.getRepositoryFileDaoImpl().load(Long.parseLong(identifier)); |
List<IRepositoryFile> versions = new ArrayList<IRepositoryFile>(); |
for(RepositoryFileVersionImpl version : repositoryFile.getRepositoryFileVersions()) |
for (RepositoryFileVersionImpl version : repositoryFile.getRepositoryFileVersions()) |
{ |
DefaultRepositoryFile iRepositoryFile = new DefaultRepositoryFile(); |
iRepositoryFile.setContentType(version.getContentType()); |
141,18 → 140,141 |
/** |
* Create a new File Version |
* @param repositoryFile |
* @return |
* |
* @param repositoryFile . |
* @return . |
*/ |
private RepositoryFileVersionImpl createVersion(RepositoryFileImpl repositoryFile) |
{ |
RepositoryFileVersionImpl repositoryFileVersion = DomainObjectFactory.createRepositoryFileVersionImpl(); |
repositoryFileVersion.setRepositoryFile(repositoryFile); |
if(repositoryFile.getRepositoryFileVersions() == null) |
if (repositoryFile.getRepositoryFileVersions() == null) |
repositoryFile.setRepositoryFileVersions(new HashSet<RepositoryFileVersionImpl>()); |
repositoryFile.getRepositoryFileVersions().add(repositoryFileVersion); |
repositoryFile.setLastVersion(repositoryFileVersion); |
DaoFactory.getRepositoryFileVersionDaoImpl().save(repositoryFileVersion); |
return repositoryFileVersion; |
} |
public static Document createXMLdescription(RepositoryFileVersionImpl repositoryFile) |
{ |
org.dom4j.Document dom = DocumentFactory.getInstance().createDocument(); |
Element rootElement = DocumentFactory.getInstance().createElement("repositoryFileVersion"); |
dom.setRootElement(rootElement); |
rootElement.addAttribute("id", "" + repositoryFile.getId()); |
Element saveDate = DocumentFactory.getInstance().createElement("saveDate"); |
saveDate.setText(""+DatesUtils.getStringFromDateForFilename(repositoryFile.getSaveDate())); |
Element name = DocumentFactory.getInstance().createElement("name"); |
name.setText("" + repositoryFile.getName()); |
Element contentType = DocumentFactory.getInstance().createElement("contentType"); |
contentType.setText(""+repositoryFile.getContentType()); |
Element extension = DocumentFactory.getInstance().createElement("extension"); |
extension.setText("" + repositoryFile.getExtension()); |
Element size = DocumentFactory.getInstance().createElement("sizeKb"); |
size.setText("" + repositoryFile.getSizeKb()); |
Element description = DocumentFactory.getInstance().createElement("description"); |
description.setText(repositoryFile.getDescription()); |
rootElement.add(saveDate); |
rootElement.add(name); |
rootElement.add(contentType); |
rootElement.add(extension); |
rootElement.add(size); |
rootElement.add(description); |
//Repository File Generics |
Element repositoryFileElem = DocumentFactory.getInstance().createElement("repositoryFile"); |
rootElement.add(repositoryFileElem); |
repositoryFileElem.addAttribute("id", "" + repositoryFile.getRepositoryFile().getId()); |
Element rSaveDate = DocumentFactory.getInstance().createElement("saveDate"); |
rSaveDate.setText(""+DatesUtils.getStringFromDateForFilename(repositoryFile.getRepositoryFile().getSaveDate())); |
Element rUpdateDate = DocumentFactory.getInstance().createElement("updateDate"); |
rUpdateDate.setText(""+DatesUtils.getStringFromDateForFilename(repositoryFile.getRepositoryFile().getUpdateDate())); |
Element accessControl = DocumentFactory.getInstance().createElement("accessControl"); |
accessControl.setText(repositoryFile.getRepositoryFile().getAccessControl()); |
Element deleted = DocumentFactory.getInstance().createElement("deleted"); |
deleted.setText("" + repositoryFile.getRepositoryFile().isDeleted()); |
repositoryFileElem.add(rSaveDate); |
repositoryFileElem.add(rUpdateDate); |
repositoryFileElem.add(accessControl); |
repositoryFileElem.add(deleted); |
Element owner = DocumentFactory.getInstance().createElement("owner"); |
repositoryFileElem.add(owner); |
owner.addAttribute("id", "" + repositoryFile.getRepositoryFile().getOwner().getId()); |
if (repositoryFile.getRepositoryFile().getOwner().getName() != null) |
{ |
Element oName = DocumentFactory.getInstance().createElement("name"); |
oName.setText(repositoryFile.getRepositoryFile().getOwner().getName()); |
owner.add(oName); |
} |
if (DocumentFactory.getInstance().createElement("roles") != null) |
{ |
Element oRoles = DocumentFactory.getInstance().createElement("roles"); |
oRoles.setText(repositoryFile.getRepositoryFile().getOwner().getRoles()); |
owner.add(oRoles); |
} |
Element oClass = DocumentFactory.getInstance().createElement("class"); |
oClass.setText(repositoryFile.getRepositoryFile().getOwner().getClass().getSimpleName()); |
owner.add(oClass); |
if (repositoryFile.getRepositoryFile().getOwner() instanceof User) |
{ |
Element oUsername = DocumentFactory.getInstance().createElement("username"); |
oUsername.setText(((User) repositoryFile.getRepositoryFile().getOwner()).getUsername()); |
owner.add(oUsername); |
if (((User) repositoryFile.getRepositoryFile().getOwner()).getEmail() != null) |
{ |
Element oEmail = DocumentFactory.getInstance().createElement("email"); |
oEmail.setText(((User) repositoryFile.getRepositoryFile().getOwner()).getEmail()); |
owner.add(oEmail); |
} |
if (((User) repositoryFile.getRepositoryFile().getOwner()).getOutEmail() != null) |
{ |
Element outEmail = DocumentFactory.getInstance().createElement("outEmail"); |
outEmail.setText(((User) repositoryFile.getRepositoryFile().getOwner()).getOutEmail()); |
owner.add(outEmail); |
} |
if (((User) repositoryFile.getRepositoryFile().getOwner()).getBi() != null) |
{ |
Element biEmail = DocumentFactory.getInstance().createElement("bi"); |
biEmail.setText(((User) repositoryFile.getRepositoryFile().getOwner()).getBi()); |
owner.add(biEmail); |
} |
if (repositoryFile.getRepositoryFile().getOwner() instanceof Teacher) |
{ |
Element code = DocumentFactory.getInstance().createElement("teacherCode"); |
code.setText("" + ((Teacher) repositoryFile.getRepositoryFile().getOwner()).getSigesCode()); |
owner.add(code); |
} |
if (repositoryFile.getRepositoryFile().getOwner() instanceof Student) |
{ |
Element code = DocumentFactory.getInstance().createElement("studentCode"); |
code.setText("" + ((Student) repositoryFile.getRepositoryFile().getOwner()).getSigesCode()); |
owner.add(code); |
} |
} |
return dom; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/data/ResourceManager.java |
---|
1,12 → 1,12 |
package pt.estgp.estgweb.services.data; |
import jomm.utils.StreamsUtils; |
import org.dom4j.Document; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.utils.Dom4jUtil; |
import java.io.*; |
import jomm.utils.StreamsUtils; |
import org.apache.log4j.Logger; |
/** |
* @author Jorge Machado |
* @date 28/Mai/2008 |
15,14 → 15,25 |
public class ResourceManager |
{ |
public static final int DOCS_IN_PATH = 1000; |
public static final int DOCS_FIRST_DIR_LEN = 20; |
public static final int DOCS_IN_PATH_LEVEL1 = DOCS_IN_PATH * DOCS_IN_PATH; |
public static final int DOCS_IN_PATH_LEVEL2 = DOCS_IN_PATH * DOCS_IN_PATH * DOCS_IN_PATH; |
public static final int DOCS_FIRST_DIR_LEN = 10; |
public static void saveResource(InputStream stream, String resourcePath, long id) throws IOException |
{ |
StreamsUtils.inputStream2File(stream, new File(Globals.DATA_DIR + resourcePath + getDocumentPathById(id))); |
} |
public static void saveResource(Document dom, String resourcePath, long id) throws IOException |
{ |
new File(Globals.DATA_DIR + resourcePath + getDocumentPathById(id)+".xml").getParentFile().mkdirs(); |
Dom4jUtil.write(dom,Globals.DATA_DIR + resourcePath + getDocumentPathById(id)+".xml"); |
} |
public static InputStream getResource(String resourcePath, long id) throws FileNotFoundException |
{ |
return new FileInputStream(Globals.DATA_DIR + resourcePath + getDocumentPathById(id)); |
49,14 → 60,33 |
public static String getDocumentPathById(long id) |
{ |
char[] dir = new char[DOCS_FIRST_DIR_LEN]; |
setAllChars('0', dir); |
long dirNumber = id / DOCS_IN_PATH; |
dirNumber = dirNumber * DOCS_IN_PATH; |
String dirNumberStr = "" + dirNumber; |
copyCharsToArray(dir, dirNumberStr); |
dirNumberStr = new String(dir); |
return "/" + dirNumberStr + "/" + id; |
char[] dir0 = new char[DOCS_FIRST_DIR_LEN]; |
setAllChars('0', dir0); |
char[] dir1 = new char[DOCS_FIRST_DIR_LEN]; |
setAllChars('0', dir1); |
char[] dir2 = new char[DOCS_FIRST_DIR_LEN]; |
setAllChars('0', dir2); |
long dirNumber0 = id / DOCS_IN_PATH_LEVEL2; |
long dirNumber1 = id / DOCS_IN_PATH_LEVEL1; |
long dirNumber2 = id / DOCS_IN_PATH; |
dirNumber0 = dirNumber0 * DOCS_IN_PATH_LEVEL2; |
dirNumber1 = dirNumber1 * DOCS_IN_PATH_LEVEL1; |
dirNumber2 = dirNumber2 * DOCS_IN_PATH; |
String dirNumberStr0 = "" + dirNumber0; |
String dirNumberStr1 = "" + dirNumber1; |
String dirNumberStr2 = "" + dirNumber2; |
copyCharsToArray(dir0, dirNumberStr0); |
copyCharsToArray(dir1, dirNumberStr1); |
copyCharsToArray(dir2, dirNumberStr2); |
dirNumberStr0 = new String(dir0); |
dirNumberStr1 = new String(dir1); |
dirNumberStr2 = new String(dir2); |
return "/" + dirNumberStr0 + "/" + dirNumberStr1 + "/" + dirNumberStr2 + "/" + id; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/data/RepositoryManager.java |
---|
1,6 → 1,7 |
package pt.estgp.estgweb.services.data; |
import org.apache.log4j.Logger; |
import org.dom4j.Document; |
import pt.estgp.estgweb.domain.Image; |
import java.io.ByteArrayInputStream; |
32,6 → 33,20 |
return false; |
} |
public static boolean storeDescription(Document dom, long identifier) |
{ |
try |
{ |
ResourceManager.saveResource(dom, RESOURCE_PATH, identifier); |
return true; |
} |
catch (IOException e) |
{ |
logger.error(e,e); |
} |
return false; |
} |
public static InputStream load(long identifier) |
{ |
try |
/impl/src/java/pt/estgp/estgweb/services/data/CreateDescriptionsXML.java |
---|
New file |
0,0 → 1,34 |
package pt.estgp.estgweb.services.data; |
import jomm.dao.impl.AbstractDao; |
import pt.estgp.estgweb.domain.dao.impl.RepositoryFileDao; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.domain.RepositoryFileVersion; |
import pt.estgp.estgweb.domain.RepositoryFileVersionImpl; |
import java.util.List; |
import org.dom4j.Document; |
import org.apache.log4j.Logger; |
/** |
* @author Jorge Machado |
* @date 23/Out/2008 |
* @see pt.estgp.estgweb.services.data |
*/ |
public class CreateDescriptionsXML |
{ |
private static final Logger logger = Logger.getLogger(CreateDescriptionsXML.class); |
public static void main(String[]args) |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
List<RepositoryFileVersion> repoList = AbstractDao.getCurrentSession().createCriteria(RepositoryFileVersion.class).list(); |
for(RepositoryFileVersion repositoryFileVersion: repoList) |
{ |
logger.info("Creating description for file:" + repositoryFileVersion.getId() + ":" + repositoryFileVersion.getName()); |
Document dom = RepositoryService.createXMLdescription((RepositoryFileVersionImpl) repositoryFileVersion); |
RepositoryManager.storeDescription(dom, repositoryFileVersion.getId()); |
} |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/announcements/CreateAnnouncementService.java |
---|
131,6 → 131,8 |
logger.info("ImageSmall form announcement:" + announcementView.getId() + "do not exist!"); |
} |
} |
if(a.getOwner().getId() != userSession.getUser().getId()) |
announcementView.setChoosedOwnerRole(a.getChoosedOwnerRole()); |
announcementView.persistViewInObject(a); |
if(announcementView.getTargetRoles() == null || announcementView.getTargetRoles().size() == 0) |
a.setTargetRoles(ALL_ROLE); |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseDaoImpl.java |
---|
1,8 → 1,10 |
package pt.estgp.estgweb.domain.dao.impl; |
import static org.hibernate.criterion.Restrictions.*; |
import org.hibernate.criterion.Order; |
import org.hibernate.criterion.Criterion; |
import org.hibernate.Criteria; |
import org.hibernate.Query; |
import pt.estgp.estgweb.domain.Course; |
import pt.estgp.estgweb.domain.CourseImpl; |
import pt.estgp.estgweb.domain.CourseUnit; |
29,12 → 31,12 |
public CourseImpl findCourseByCode(String code) |
{ |
return (CourseImpl) createCriteria().add(eq("code",code)).uniqueResult(); |
return (CourseImpl) createCriteria().add(eq("code", code)).uniqueResult(); |
} |
public int countCoursesActualYear(String query, SearchTypeEnum searchType) |
{ |
Criterion c = DaoUtils.createSearchQuery(query,searchType,"name","description"); |
Criterion c = DaoUtils.createSearchQuery(query, searchType, "name", "description"); |
return createCriteria() |
.add(c) |
.add(eq("importYear", DatesUtils.getImportYear())) |
64,14 → 66,46 |
public List<Course> findAllOrderByName(String importYear) |
{ |
return createCriteria() |
.add(eq("importYear",importYear)) |
.add(eq("importYear", importYear)) |
.addOrder(Order.asc("name")) |
.list(); |
} |
public List<String> loadImportYears() |
{ |
Query q = createQuery("select distinct c.importYear from c in class " + Course.class.getName() + " order by c.importYear desc"); |
return q.list(); |
} |
public List<Course> loadAllCourses(long teacherId, String importYear) |
{ |
return |
createCriteria() |
.add(eq("importYear", importYear)) |
.list(); |
} |
public List<Course> loadCoordinatedCourses(long teacherId, String importYear) |
{ |
return |
createCriteria() |
.add(eq("coordinator.id", teacherId)) |
.add(eq("importYear", importYear)) |
.list(); |
} |
public List<Course> loadDirectorCourses(long teacherId, String importYear) |
{ |
return |
createCriteria() |
.add(eq("director.id", teacherId)) |
.add(eq("importYear", importYear)) |
.list(); |
} |
public List<Course> findAll(String importYear) |
{ |
return createCriteria().add(eq("importYear",importYear)) |
return createCriteria().add(eq("importYear", importYear)) |
.list(); |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/TeacherDaoImpl.java |
---|
3,7 → 3,9 |
import pt.estgp.estgweb.domain.Teacher; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.CourseUnitImpl; |
import pt.estgp.estgweb.domain.TeacherImpl; |
import static org.hibernate.criterion.Restrictions.*; |
import org.hibernate.exception.GenericJDBCException; |
import java.util.List; |
17,6 → 19,10 |
{ |
private TeacherDaoImpl(){} |
// protected Class getReferenceClass() { |
// return TeacherImpl.class; |
// } |
public static TeacherDaoImpl getInstance() |
{ |
if (myInstance == null) |
26,7 → 32,14 |
public Teacher loadBySigesCode(int sigesCode) |
{ |
return (Teacher) createCriteria().add(eq("sigesCode",sigesCode)).uniqueResult(); |
try |
{ |
return (Teacher) createCriteria().add(eq("sigesCode",sigesCode)).uniqueResult(); |
} |
catch(GenericJDBCException e) |
{ |
throw e; |
} |
} |
public Teacher loadByBi(String bi) |
34,7 → 47,7 |
return (Teacher) createCriteria().add(eq("bi",bi)).uniqueResult(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/UserDaoImpl.java |
---|
1,27 → 1,20 |
package pt.estgp.estgweb.domain.dao.impl; |
import jomm.dao.DaoException; |
import org.hibernate.HibernateException; |
import org.hibernate.Query; |
import org.hibernate.Hibernate; |
import org.apache.log4j.Logger; |
import org.hibernate.Criteria; |
import static org.hibernate.criterion.Restrictions.*; |
import org.hibernate.HibernateException; |
import org.hibernate.criterion.Criterion; |
import org.hibernate.criterion.SimpleExpression; |
import org.hibernate.criterion.Order; |
import org.apache.log4j.Logger; |
import java.util.List; |
import java.util.Date; |
import java.io.Serializable; |
import static org.hibernate.criterion.Restrictions.*; |
import pt.estgp.estgweb.domain.User; |
import pt.estgp.estgweb.domain.Announcement; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.dao.DaoUtils; |
import pt.estgp.estgweb.services.common.SearchTypeEnum; |
import java.io.Serializable; |
import java.util.Date; |
import java.util.List; |
/** |
* @author Jorge Machado |
* @date 28/Fev/2008 |
53,11 → 46,11 |
{ |
List list = |
createCriteria() |
.add(eq("username",username)) |
.add(eq("username", username)) |
.setMaxResults(1) |
.list(); |
if(list.size() == 0) |
if (list.size() == 0) |
return null; |
return (User) list.get(0); |
} |
66,6 → 59,7 |
throw new DaoException(e); |
} |
} |
/** |
* Used by the base DAO classes but here for your modification Load object |
* matching the given key and return it. |
78,7 → 72,7 |
try |
{ |
return (User) createCriteria() |
.add(eq("email",email)) |
.add(eq("email", email)) |
.uniqueResult(); |
} |
catch (HibernateException e) |
99,7 → 93,7 |
try |
{ |
return (User) createCriteria() |
.add(eq("id",ID)) |
.add(eq("id", ID)) |
.uniqueResult(); |
} |
catch (HibernateException e) |
121,7 → 115,7 |
try |
{ |
return (User) createCriteria() |
.add(eq("username",username)) |
.add(eq("username", username)) |
.add(eq("password", jomm.utils.BytesUtils.getDigestMD5Hex(password))) |
.uniqueResult(); |
} |
131,52 → 125,49 |
} |
} |
public List<User> loadRoleUsers (String role) |
public List<User> loadRoleUsers(String role) |
{ |
return createCriteria().add(like("roles","%" + role + "%")).addOrder(Order.asc("name")).list(); |
return createCriteria().add(like("roles", "%" + role + "%")).addOrder(Order.asc("name")).list(); |
} |
public List<User> findUsers (String textToSearch) |
public List<User> findUsers(String textToSearch) |
{ |
return findUsers(textToSearch,null); |
return findUsers(textToSearch, null); |
} |
public List<User> findUsers (String textToSearch,String typeToSearch) |
public List<User> findUsers(String textToSearch, String typeToSearch) |
{ |
Criteria criteria=null; |
if(typeToSearch!=null && typeToSearch.trim().length()!=0) |
{ |
Criteria criteria; |
if (typeToSearch != null && typeToSearch.trim().length() != 0) |
try |
{ |
criteria = createCriteria(Class.forName(typeToSearch)); |
} |
catch (ClassNotFoundException e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
return null; |
} |
} |
else |
{ |
criteria=createCriteria(); |
} |
Criterion name= or(like("name","%"+textToSearch+"%"),like("name","%"+textToSearch+"%")); |
Criterion username = or(like("username", "%" + textToSearch + "%"), like("username", "%" + textToSearch + "%")); |
Criterion email = or(like("email", "%" + textToSearch + "%"), like("email", "%" + textToSearch + "%")); |
criteria.add(or(or(name,username),email)) |
.addOrder(Order.desc("name")); |
return criteria.list(); |
criteria = createCriteria(); |
Criterion textSearch = DaoUtils.createSearchQuery(textToSearch, SearchTypeEnum.parse(typeToSearch), "name", "username"); |
Criterion text2Search = DaoUtils.createSearchQuery(textToSearch, SearchTypeEnum.parse(typeToSearch), "email"); |
Criterion fields = or(textSearch, text2Search); |
return criteria.add(fields) |
.addOrder(Order.desc("name")) |
.list(); |
} |
public Serializable save(User obj) |
{ |
try { |
try |
{ |
obj.setSaveDate(new Date()); |
return super.save(obj); |
} |
catch (HibernateException e) { |
catch (HibernateException e) |
{ |
throw new DaoException(e); |
} |
184,7 → 175,7 |
public int countUsers(String query, SearchTypeEnum searchType) |
{ |
Criterion c = DaoUtils.createSearchQuery(query,searchType,"name","username"); |
Criterion c = DaoUtils.createSearchQuery(query, searchType, "name", "username"); |
return createCriteria() |
.add(c) |
.list().size(); |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/RepositoryFileDaoImpl.java |
---|
24,7 → 24,7 |
public RepositoryFile loadByIdentifier(String identifier) |
{ |
return (RepositoryFile) createCriteria().add(eq("identifier",identifier)).uniqueResult(); |
return (RepositoryFile) createCriteria().add(eq("id",identifier)).uniqueResult(); |
} |
// public boolean hasTeacherFile(String identifier) |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java |
---|
12,6 → 12,7 |
import org.hibernate.criterion.Criterion; |
import org.hibernate.criterion.Order; |
import org.hibernate.Criteria; |
import org.hibernate.Query; |
import org.apache.log4j.Logger; |
import java.util.List; |
49,6 → 50,19 |
return createCriteria().add(eq("importYear",importYear)).add(eq("course.id", course)).list(); |
} |
public List<CourseUnit> load( String importYear, String semestre) |
{ |
return createCriteria().add(eq("importYear",importYear)).add(eq("semestre", semestre)).list(); |
} |
public List<Long> loadIds( String importYear, String semestre) |
{ |
Query q= createQuery("select c.id from c in class " + CourseUnit.class.getName() + " where c.importYear = ? and c.semestre = ?"); |
q.setString(0,importYear); |
q.setString(1,semestre); |
return q.list(); |
} |
public List<CourseUnit> loadSubscribedImportYearUnits(long studentId, String importYear) |
{ |
return createCriteria().add(eq("importYear",importYear)) |
62,7 → 76,7 |
.createAlias("students","st") |
.add(eq("st.id", studentId)).addOrder(Order.asc("name")).list(); |
} |
public List<CourseUnitImpl> loadTeachedImportYearUnits(long teacherId, String importYear) |
{ |
return createCriteria().add(eq("importYear",importYear)) |
183,6 → 197,7 |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add((or(isNull("objectives"),eq("objectives","")))) |
.createAlias("teachers", "th") |
.add(eq("semestre",DatesUtils.getSemestre())) |
.add(eq("th.id",teacherId)) |
.list(); |
} |
194,17 → 209,31 |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add((or(isNull("programStreamId"),eq("programStreamId","")))) |
.createAlias("teachers", "th") |
.add(eq("semestre",DatesUtils.getSemestre())) |
.add(eq("th.id",teacherId)) |
.list(); |
} |
public List<CourseUnit> loadMissingObjectivesOrPrograms(long teacherId) |
{ |
//todo falta a projeccao do teacher id |
return createCriteria() |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add(or(or(isNull("objectives"),eq("objectives","")),or(isNull("programStreamId"),eq("programStreamId","")))) |
.add(eq("semestre",DatesUtils.getSemestre())) |
.createAlias("teachers", "th") |
.add(eq("th.id",teacherId)) |
.list(); |
} |
public List<CourseUnit> loadMissingObjectivesGivenCourse(long courseId) |
{ |
return createCriteria() |
.createAlias("course", "c") |
.add(eq("c.id",courseId)) |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add(eq("semestre",DatesUtils.getSemestre())) |
.add((or(isNull("objectives"),eq("objectives","")))) |
.list(); |
} |
215,6 → 244,7 |
.createAlias("course", "c") |
.add(eq("c.id",courseId)) |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add(eq("semestre",DatesUtils.getSemestre())) |
.add((or(isNull("programStreamId"),eq("programStreamId","")))) |
.list(); |
} |
225,12 → 255,22 |
.createAlias("course", "c") |
.add(eq("c.id",courseId)) |
.add(eq("importYear", DatesUtils.getImportYear())) |
.add(eq("semestre",DatesUtils.getSemestre())) |
.add((or(or(isNull("objectives"),eq("objectives","")),or(isNull("programStreamId"),eq("programStreamId",""))))) |
.list(); |
} |
public int countMissingProgramGivenCourse(long courseId) |
{ |
return loadMissingProgramGivenCourse(courseId).size(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitSummaryDaoImpl.java |
---|
New file |
0,0 → 1,53 |
package pt.estgp.estgweb.domain.dao.impl; |
import java.util.List; |
import pt.estgp.estgweb.domain.Student; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.CourseUnitSummary; |
import org.hibernate.Query; |
import jomm.dao.impl.AbstractDao; |
/** |
* @author Jorge Machado |
* @date 28/Fev/2008 |
* @time 2:51:06 |
* @see pt.estgp.estgweb.domain.dao.impl |
*/ |
public class CourseUnitSummaryDaoImpl extends CourseUnitSummaryDao |
{ |
private CourseUnitSummaryDaoImpl() |
{ |
} |
public static CourseUnitSummaryDaoImpl getInstance() |
{ |
if (myInstance == null) |
myInstance = new CourseUnitSummaryDaoImpl(); |
return (CourseUnitSummaryDaoImpl) myInstance; |
} |
public List<String> getStudentsEmails(long summaryId) |
{ |
Query q = createQuery("select e.email from " |
+ Student.class.getName() + " e join e.subscribedUnits as unit join unit.summaries as s " |
+ " where " |
+ " s.id = ? " |
); |
q.setLong(0,summaryId); |
return q.list(); |
} |
public static void main(String[] args) |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
List l = new CourseUnitSummaryDaoImpl().getStudentsEmails(2); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/DaoUtils.java |
---|
21,7 → 21,7 |
c = or(like(field1, "%" + query + "%"), like(field2, "%" + query + "%")); |
else if (searchTypeEnum == SearchTypeEnum.AllWords) |
{ |
String[] fields = query.split(" "); |
String[] fields = query.trim().split(" "); |
for (String field : fields) |
{ |
if (c == null) |
32,7 → 32,7 |
} |
else |
{ |
String[] fields = query.split(" "); |
String[] fields = query.trim().split(" "); |
for (String field : fields) |
{ |
if (c == null) |
43,4 → 43,34 |
} |
return c; |
} |
public static Criterion createSearchQuery(String query, SearchTypeEnum searchTypeEnum, String field1) |
{ |
Criterion c = null; |
if (searchTypeEnum == SearchTypeEnum.ExactPhrase) |
c = like(field1, "%" + query + "%"); |
else if (searchTypeEnum == SearchTypeEnum.AllWords) |
{ |
String[] fields = query.trim().split(" "); |
for (String field : fields) |
{ |
if (c == null) |
c = like(field1, "%" + field + "%"); |
else |
c = and(c, like(field1, "%" + field + "%")); |
} |
} |
else |
{ |
String[] fields = query.trim().split(" "); |
for (String field : fields) |
{ |
if (c == null) |
c = like(field1, "%" + field + "%"); |
else |
c = or(c,like(field1, "%" + field + "%")); |
} |
} |
return c; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/DaoFactory.java |
---|
16,7 → 16,12 |
return JobDaoImpl.getInstance(); |
} |
public static CourseUnitSummaryDaoImpl getCourseUnitSummaryDaoImpl() |
{ |
return CourseUnitSummaryDaoImpl.getInstance(); |
} |
public static CourseUnitGradeDaoImpl getCourseUnitGradeDaoImpl() |
{ |
return CourseUnitGradeDaoImpl.getInstance(); |
/impl/src/java/pt/estgp/estgweb/domain/TeacherImpl.java |
---|
34,8 → 34,15 |
setScholarDegree(Globals.PROFILE_SCHOLAR_DEGREE_SUPERIOR); |
} |
public String getManagedRole() { |
return TEACHER_ROLE; |
public String getManagedRole() |
{ |
List<String> roles = new ArrayList<String>(); |
if(getDirectorCourses() != null && getDirectorCourses().size() > 0) |
roles.add(Globals.COURSE_DIRECTOR_ROLE); |
if(getCoordinatorCourses() != null && getCoordinatorCourses().size() > 0) |
roles.add(Globals.COURSE_COORDINATOR_ROLE); |
roles.add(TEACHER_ROLE); |
return RoleManager.getSerialRoles(roles); |
} |
public List<Course> getTeachedCoursesView() |
/impl/src/java/pt/estgp/estgweb/domain/UserManagedRoleImpl.java |
---|
4,11 → 4,13 |
import java.util.*; |
import pt.estgp.estgweb.utils.RoleManager; |
public abstract class UserManagedRoleImpl extends UserImpl |
{ |
public static List<CourseUnit> getUnitsSemestre(String semestre, List<CourseUnit> s1) |
public static List<CourseUnit> getUnitsSemestre(String semestre, List<CourseUnit> s1) |
{ |
if(s1 != null) |
{ |
24,12 → 26,12 |
} |
return s1; |
} |
public UserManagedRoleImpl() |
{ |
} |
/** |
* |
* @return the managed role of implementation object |
42,14 → 44,23 |
*/ |
public String getRoles() |
{ |
if(super.getRoles() == null) |
super.setRoles(getManagedRole()); |
else if(super.getRoles().indexOf(getManagedRole()) < 0) |
String managedRole = getManagedRole(); |
if(managedRole != null) |
{ |
addRole(getManagedRole()); |
if(super.getRoles() == null) |
super.setRoles(getManagedRole()); |
else |
{ |
List<String> roles = RoleManager.getRolesFromSerial(managedRole); |
for(String role:roles) |
{ |
if(super.getRoles().indexOf(role) < 0) |
{ |
addRole(getManagedRole()); |
} |
} |
} |
} |
return super.getRoles(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitSummaryImpl.java |
---|
New file |
0,0 → 1,28 |
package pt.estgp.estgweb.domain; |
import org.apache.log4j.Logger; |
import java.util.List; |
import java.util.Date; |
import java.io.Serializable; |
import pt.estgp.estgweb.domain.enums.AnnouncementStyleEnum; |
import pt.estgp.estgweb.utils.RoleManager; |
/** |
* @author Jorge Machado |
* @date 2/Mar/2008 |
* @time 10:27:25 |
* @see pt.estgp.estgweb.domain |
*/ |
public class CourseUnitSummaryImpl extends CourseUnitSummary |
{ |
private static final Logger logger = Logger.getLogger(CourseUnitSummaryImpl.class); |
public Serializable getSerializable() |
{ |
return getId(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitSummaryView.java |
---|
New file |
0,0 → 1,90 |
package pt.estgp.estgweb.domain.views; |
import pt.estgp.estgweb.domain.CourseUnitSummary; |
import pt.estgp.estgweb.web.utils.DatesUtils; |
import java.io.Serializable; |
/** |
* @author Jorge Machado |
* @date 2/Mar/2008 |
* @time 19:34:49 |
* @see pt.estgp.estgweb.domain.views |
*/ |
public class CourseUnitSummaryView extends DomainObjectView |
{ |
private CourseUnitSummary summary; |
private long id; |
private String title; |
private String description; |
private int number; |
private String date; |
private int students; |
public CourseUnitSummaryView(CourseUnitSummary summary) |
{ |
super(summary); |
init(summary); |
} |
public void init(CourseUnitSummary summary) |
{ |
this.summary = summary; |
this.id = summary.getId(); |
this.title = summary.getTitulo(); |
this.description = summary.getDescricao(); |
this.date = DatesUtils.getStringFromDate(summary.getDataAula()); |
this.number = summary.getNumeroAula(); |
this.students = summary.getAlunosPresentes(); |
} |
// public void persistViewInObject(Announcement announcement) |
// { |
// } |
public Class getReferenceClass() |
{ |
return CourseUnitSummary.class; |
} |
public Serializable getSerializable() |
{ |
return id; |
} |
public long getId() |
{ |
return id; |
} |
public String getTitle() |
{ |
return title; |
} |
public String getDescription() |
{ |
return description; |
} |
public int getNumber() |
{ |
return number; |
} |
public String getDate() |
{ |
return date; |
} |
public int getStudents() |
{ |
return students; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/RecordView.java |
---|
36,6 → 36,7 |
private String copyright; |
private String identifier; |
private String repositoryStream; |
private String creatorsStr; |
private List<UserView> creators = new ArrayList<UserView>(); |
private List<UserView> contributors = new ArrayList<UserView>(); |
private RepositoryFileImpl repositoryFile; |
91,6 → 92,8 |
this.copyright = record.getCopyright(); |
this.identifier = record.getIdentifier(); |
this.repositoryStream = record.getRepositoryStream(); |
this.creators = UserView.getViews(new ArrayList<User>(record.getCreators())); |
this.contributors = UserView.getViews(new ArrayList<User>(record.getContributors())); |
if(repositoryStream != null) |
120,7 → 123,8 |
r.setDescripion(description); |
r.setPublisher(publisher); |
r.setIdentifier(identifier); |
r.setCreators(UserView.loadUsers(creators)); |
if(creators != null && creators.size() > 0) |
r.setCreators(UserView.loadUsers(creators)); |
r.setContributors(UserView.loadUsers(contributors)); |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/BlogView.java |
---|
10,6 → 10,7 |
import java.util.List; |
import jomm.dao.impl.AbstractDao; |
import jomm.utils.StringsUtils; |
/** |
* @author Jorge Machado |
243,6 → 244,10 |
{ |
return title; |
} |
public String getFormatedaaTitle() |
{ |
return StringsUtils.getEscapeHtmlText(title); |
} |
public void setTitle(String title) |
{ |
254,6 → 259,11 |
return description; |
} |
public String getFormatedDescription() |
{ |
return StringsUtils.getFormatedText(description); |
} |
public void setDescription(String description) |
{ |
this.description = description; |
/impl/src/java/pt/estgp/estgweb/domain/views/BlogPostView.java |
---|
1,6 → 1,7 |
package pt.estgp.estgweb.domain.views; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.utils.RoleManager; |
import org.apache.log4j.Logger; |
8,6 → 9,8 |
import java.util.List; |
import java.io.Serializable; |
import jomm.utils.StringsUtils; |
/** |
* @author Jorge Machado |
* @date 2/Mar/2008 |
26,6 → 29,9 |
private String text; |
private Image image; |
private GenericUser owner; |
private String ownerUsername; |
private String ownerName; |
private String ownerEmail; |
private boolean status; |
private BlogPost blogPost; |
private long blogId; |
45,6 → 51,9 |
this.status = blogPost.isStatus(); |
this.id = blogPost.getId(); |
this.owner = blogPost.getOwner(); |
ownerUsername = owner.getUsername(); |
ownerName = owner.getName(); |
ownerEmail = owner.getEmail(); |
this.blogId = blogPost.getBlog().getId(); |
this.internal = blogPost.getBlog().isInternal(); |
} |
114,6 → 123,11 |
return title; |
} |
public String getFormatedTitle() |
{ |
return StringsUtils.getEscapeHtmlText(title); |
} |
public void setTitle(String title) |
{ |
this.title = title; |
124,6 → 138,11 |
return text; |
} |
public String getFormatedText() |
{ |
return StringsUtils.getFormatedText(text); |
} |
public void setText(String text) |
{ |
this.text = text; |
176,20 → 195,19 |
public String getOwnerEmail() |
{ |
if (owner instanceof User) |
return ((User) owner).getEmail(); |
else |
return null; |
return ownerEmail; |
} |
public String getOwnerUsername() |
{ |
if (owner instanceof User) |
return ((User) owner).getUsername(); |
else |
return null; |
return ownerUsername; |
} |
public String getOwnerName() |
{ |
return ownerName; |
} |
public boolean isInternal() |
{ |
return internal; |
/impl/src/java/pt/estgp/estgweb/domain/views/AnnouncementView.java |
---|
14,6 → 14,8 |
import org.apache.log4j.Logger; |
import jomm.utils.StringsUtils; |
import javax.servlet.http.HttpServletRequest; |
/** |
* @author Jorge Machado |
* @date 2/Mar/2008 |
46,6 → 48,9 |
private boolean status = true; |
private boolean internal; |
private GenericUser owner; |
private String ownerUsername; |
private String ownerName; |
private String ownerEmail; |
private String style; |
private String internalUrlServer; |
private String internalUrlPath; |
70,8 → 75,6 |
} |
public void init(Announcement announcement) |
{ |
this.announcement = announcement; |
this.title = announcement.getTitle(); |
this.text = announcement.getText(); |
81,8 → 84,8 |
this.bigImageId = announcement.getBigImage().getId(); |
if(announcement.getSmallImage() != null) |
this.smallImageId = announcement.getSmallImage().getId(); |
this.url =announcement.getUrl(); |
this.type =announcement.getType(); |
this.url = announcement.getUrl(); |
this.type = announcement.getType(); |
this.targetRoles = RoleManager.getRolesFromSerial(announcement.getTargetRoles()); |
this.status=announcement.isStatus(); |
this.id = announcement.getId(); |
91,6 → 94,9 |
this.expireDate = announcement.getExpireDate(); |
this.choosedOwnerRole = announcement.getChoosedOwnerRole(); |
this.owner = announcement.getOwner(); |
this.ownerUsername = owner.getUsername(); |
this.ownerName = owner.getName(); |
this.ownerEmail = owner.getEmail(); |
this.internalUrlServer = announcement.getInternalUrlServer(); |
this.internalUrlPath = announcement.getInternalUrlPath(); |
this.style = announcement.getStyle(); |
130,7 → 136,7 |
((CourseUnitAnnouncement)announcement).setCourseUnitInternal(courseUnitInternal); |
} |
} |
public boolean isCourseUnitInternal() |
{ |
return courseUnitInternal; |
308,6 → 314,14 |
return url; |
} |
public String getUrl(HttpServletRequest request) { |
if(url != null && url.startsWith("/")) |
return request.getContextPath() + url; |
else |
return url; |
} |
public void setUrl(String url) { |
this.url = url; |
} |
357,8 → 371,10 |
return StringsUtils.getFormatedText(text); |
} |
public Boolean getHaveAllText() |
public Boolean getTextBiggerThenPermited() |
{ |
if(getInternalUrlPath() != null && getInternalUrlPath().trim().length()>0) |
return false; |
if(getType().equals("top.flash.news")) |
{ |
return getText().length() > TEXT_SUMMARY_SIZE; |
416,10 → 432,17 |
public String getOwnerUsername() |
{ |
if (owner instanceof User) |
return ((User) owner).getUsername(); |
else |
return null; |
return ownerUsername; |
} |
public String getOwnerName() |
{ |
return ownerName; |
} |
public String getOwnerEmail() |
{ |
return ownerEmail; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitAssignementView.java |
---|
229,9 → 229,11 |
this.courseUnitDeliverableView = courseUnitDeliverableView; |
} |
private static final long milisecondsof24Hours=24*60*60*1000; |
public boolean isActive() |
{ |
return courseUnitAssignement.getDeliverDate() != null && courseUnitAssignement.getDeliverDate().getTime() >= System.currentTimeMillis(); |
return courseUnitAssignement.getDeliverDate() != null && courseUnitAssignement.getDeliverDate().getTime() + milisecondsof24Hours >= System.currentTimeMillis(); |
} |
263,7 → 265,7 |
userSession.getUser() != null && |
((UserImpl) userSession.getUser()).isInCourseUnit(courseUnitId) && |
!deliverType.equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && |
(lateDelivers || courseUnitAssignement.getDeliverDate().getTime() >= System.currentTimeMillis()); |
(lateDelivers || courseUnitAssignement.getDeliverDate().getTime() + milisecondsof24Hours >= System.currentTimeMillis()); |
} |
public boolean isLateDeliver() |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitDeliverableView.java |
---|
148,8 → 148,10 |
this.deliverDateStr = deliverDateStr; |
} |
private static final long milisecondsof24Hours=24*60*60*1000; |
public boolean isLateDeliver() |
{ |
return getDeliverDate().getTime() > courseUnitAssignementView.getDeliverDateDate().getTime(); |
return getDeliverDate().getTime() > milisecondsof24Hours + courseUnitAssignementView.getDeliverDateDate().getTime(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java |
---|
37,6 → 37,7 |
private String pathIntranet; |
private String normalizedName; |
private List<AnnouncementView> announcements; |
private List<CourseUnitSummaryView> summaries; |
private CourseUnit courseUnit; |
private Set<UserView> teachers; |
44,6 → 45,8 |
private String objectives; |
private String programStreamId; |
private boolean validProgram; |
private UserView validatorUser; |
private int programSize; |
private String extension; |
private List<CourseUnitAssignementView> courseUnitAssignements; |
68,29 → 71,35 |
public CourseUnitView(CourseUnit courseUnit, boolean initTeachers, boolean initStudents ) |
{ |
super(courseUnit); |
init(courseUnit, initTeachers, initStudents,false); |
init(courseUnit, initTeachers, initStudents,false,false); |
} |
public CourseUnitView(CourseUnit courseUnit, boolean initTeachers, boolean initStudents, boolean initBlog ) |
{ |
super(courseUnit); |
init(courseUnit, initTeachers, initStudents, initBlog); |
init(courseUnit, initTeachers, initStudents, initBlog,false); |
} |
public CourseUnitView(CourseUnit courseUnit, boolean initTeachers, boolean initStudents, boolean initBlog, boolean validatorPerson ) |
{ |
super(courseUnit); |
init(courseUnit, initTeachers, initStudents, initBlog, validatorPerson); |
} |
public CourseUnitView(CourseUnit courseUnit) |
{ |
super(courseUnit); |
init(courseUnit, false,false,false); |
init(courseUnit, false,false,false,false); |
} |
public CourseUnitView(CourseUnit courseUnit, BlogView b) |
{ |
super(courseUnit); |
this.blog = b; |
init(courseUnit, false,false,false); |
init(courseUnit, false,false,false,false); |
} |
private void init(CourseUnit courseUnit, boolean initTeachers, boolean initStudents, boolean initBlog) |
private void init(CourseUnit courseUnit, boolean initTeachers, boolean initStudents, boolean initBlog, boolean validatorUser) |
{ |
this.pathIntranet = courseUnit.getPathIntranet(); |
this.normalizedName = courseUnit.getNormalizedName(); |
103,7 → 112,16 |
this.courseCode = courseUnit.getCourseCode(); |
this.objectives = courseUnit.getObjectives(); |
if(courseUnit.getProgramStreamId() != null) |
{ |
programStreamId = courseUnit.getProgramStreamId(); |
validProgram = courseUnit.isValidProgram(); |
if(validatorUser) |
{ |
if(courseUnit.getValidatorUser() != null) |
this.validatorUser = new UserView(courseUnit.getValidatorUser()); |
} |
} |
// if(courseUnit.getBlog() != null) |
// this.blog = new BlogView(courseUnit.getBlog()); |
this.id = courseUnit.getId(); |
133,6 → 151,7 |
{ |
courseId = courseUnit.getCourse().getId(); |
} |
} |
public long getCourseId() |
293,6 → 312,11 |
public String getSemestre() |
{ |
if(semestre == null) |
{ |
logger.error("Unit" + getId() + " " + getName() + "" + " - " + getCourseName() + " " + getImportYear() + " with no SEMESTRE SET, returning S1"); |
return "S1"; |
} |
return semestre; |
} |
412,5 → 436,54 |
} |
public boolean isValidProgram() |
{ |
return validProgram; |
} |
public void setValidProgram(boolean validProgram) |
{ |
this.validProgram = validProgram; |
} |
public UserView getValidatorUser() |
{ |
return validatorUser; |
} |
public void setValidatorUser(UserView validatorUser) |
{ |
this.validatorUser = validatorUser; |
} |
public void setSummaries(List<CourseUnitSummaryView> summaries) |
{ |
this.summaries = summaries; |
} |
public List<CourseUnitSummaryView> getSummaries() |
{ |
return summaries; |
} |
public String getTeachersSnipet() |
{ |
StringBuilder strBuilder = new StringBuilder(); |
if(teachers != null && teachers.size() > 0) |
{ |
for(UserView userView: teachers) |
{ |
strBuilder |
.append(" <a href=\"mailto:") |
.append(userView.getEmail()) |
.append("\">") |
.append(userView.getName()) |
.append("</a>") |
.append(" "); |
} |
} |
return strBuilder.toString(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/views/CourseView.java |
---|
10,6 → 10,8 |
import java.util.ArrayList; |
import java.io.Serializable; |
import jomm.utils.AutoFillArrayList; |
/** |
* @author Jorge Machado |
* @date 2/Mar/2008 |
31,6 → 33,12 |
private UserView coordinator; |
private UserView director; |
private List<CourseUnitView> courseUnits; |
private List<CourseUnitView> courseUnitsWithNoProgramS1; |
private List<CourseUnitView> courseUnitsWithProgramCheckedS1; |
private List<CourseUnitView> courseUnitsWithProgramNotCheckedS1; |
private List<CourseUnitView> courseUnitsWithNoProgramS2; |
private List<CourseUnitView> courseUnitsWithProgramCheckedS2; |
private List<CourseUnitView> courseUnitsWithProgramNotCheckedS2; |
private String studiesPlanStreamId; |
private RepositoryFileImpl studiesPlan; |
private String htmlResult; |
98,7 → 106,7 |
courseUnits = new ArrayList<CourseUnitView>(); |
for(CourseUnit c: course.getCourseUnits()) |
{ |
CourseUnitView cUV = new CourseUnitView(c); |
CourseUnitView cUV = new CourseUnitView(c,true,false,false,false); |
courseUnits.add(cUV); |
} |
} |
334,4 → 342,75 |
{ |
this.externalSitePath = externalSitePath; |
} |
public List<CourseUnitView> getCourseUnitsWithNoProgramS1() |
{ |
return courseUnitsWithNoProgramS1; |
} |
public void setCourseUnitsWithNoProgramS1(List<CourseUnitView> courseUnitsWithNoProgramS1) |
{ |
this.courseUnitsWithNoProgramS1 = courseUnitsWithNoProgramS1; |
} |
public List<CourseUnitView> getCourseUnitsWithProgramCheckedS1() |
{ |
if(courseUnitsWithProgramCheckedS1==null) |
courseUnitsWithProgramCheckedS1 = new AutoFillArrayList<CourseUnitView>(CourseUnitView.class); |
return courseUnitsWithProgramCheckedS1; |
} |
public void setCourseUnitsWithProgramCheckedS1(List<CourseUnitView> courseUnitsWithProgramCheckedS1) |
{ |
this.courseUnitsWithProgramCheckedS1 = courseUnitsWithProgramCheckedS1; |
} |
public List<CourseUnitView> getCourseUnitsWithProgramNotCheckedS1() |
{ |
if(courseUnitsWithProgramNotCheckedS1==null) |
courseUnitsWithProgramNotCheckedS1 = new AutoFillArrayList<CourseUnitView>(CourseUnitView.class); |
return courseUnitsWithProgramNotCheckedS1; |
} |
public void setCourseUnitsWithProgramNotCheckedS1(List<CourseUnitView> courseUnitsWithProgramNotCheckedS1) |
{ |
this.courseUnitsWithProgramNotCheckedS1 = courseUnitsWithProgramNotCheckedS1; |
} |
public List<CourseUnitView> getCourseUnitsWithNoProgramS2() |
{ |
return courseUnitsWithNoProgramS2; |
} |
public void setCourseUnitsWithNoProgramS2(List<CourseUnitView> courseUnitsWithNoProgramS2) |
{ |
this.courseUnitsWithNoProgramS2 = courseUnitsWithNoProgramS2; |
} |
public List<CourseUnitView> getCourseUnitsWithProgramCheckedS2() |
{ |
if(courseUnitsWithProgramCheckedS2==null) |
courseUnitsWithProgramCheckedS2 = new AutoFillArrayList<CourseUnitView>(CourseUnitView.class); |
return courseUnitsWithProgramCheckedS2; |
} |
public void setCourseUnitsWithProgramCheckedS2(List<CourseUnitView> courseUnitsWithProgramCheckedS2) |
{ |
this.courseUnitsWithProgramCheckedS2 = courseUnitsWithProgramCheckedS2; |
} |
public List<CourseUnitView> getCourseUnitsWithProgramNotCheckedS2() |
{ |
if(courseUnitsWithProgramNotCheckedS2==null) |
courseUnitsWithProgramNotCheckedS2 = new AutoFillArrayList<CourseUnitView>(CourseUnitView.class); |
return courseUnitsWithProgramNotCheckedS2; |
} |
public void setCourseUnitsWithProgramNotCheckedS2(List<CourseUnitView> courseUnitsWithProgramNotCheckedS2) |
{ |
this.courseUnitsWithProgramNotCheckedS2 = courseUnitsWithProgramNotCheckedS2; |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/UrlStatImpl.java |
---|
1,5 → 1,9 |
package pt.estgp.estgweb.domain; |
import org.apache.commons.httpclient.util.URIUtil; |
import org.apache.commons.httpclient.URIException; |
import org.apache.log4j.Logger; |
import java.io.Serializable; |
import java.util.HashSet; |
import java.util.Date; |
12,6 → 16,7 |
*/ |
public class UrlStatImpl extends UrlStat |
{ |
private static final Logger logger = Logger.getLogger(UrlStatImpl.class); |
public UrlStatImpl() |
{ |
34,7 → 39,14 |
public String getName() |
{ |
if(super.getName() == null) |
return getRelativePath(); |
try |
{ |
return URIUtil.decode(getRelativePath()); |
} |
catch (URIException e) |
{ |
logger.error(e,e); |
} |
return super.getName(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/DomainObjectFactory.java |
---|
66,6 → 66,11 |
return new CourseUnitAnnouncementImpl(); |
} |
public static CourseUnitSummaryImpl createCourseUnitSummaryImpl() |
{ |
return new CourseUnitSummaryImpl(); |
} |
public static CourseImpl createCourseImpl() |
{ |
return new CourseImpl(); |
/impl/src/java/pt/estgp/estgweb/domain/GenericUserImpl.java |
---|
97,6 → 97,4 |
{ |
return isSuperuser() || isAdmin(); |
} |
public abstract String getUsername(); |
} |
/impl/src/java/pt/estgp/estgweb/web/tags/CanNotAddContentTag.java |
---|
New file |
0,0 → 1,80 |
package pt.estgp.estgweb.web.tags; |
import org.apache.log4j.Logger; |
import org.apache.struts.util.RequestUtils; |
import javax.servlet.jsp.tagext.BodyTagSupport; |
import javax.servlet.jsp.JspException; |
import javax.servlet.jsp.JspWriter; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.domain.IAddContents; |
public class CanNotAddContentTag extends BodyTagSupport |
{ |
private static final Logger logger = Logger.getLogger(CanNotAddContentTag.class); |
private String name; |
private String property; |
public String getName() |
{ |
return name; |
} |
public void setName(String name) |
{ |
this.name = name; |
} |
public String getProperty() |
{ |
return property; |
} |
public void setProperty(String property) |
{ |
this.property = property; |
} |
public int doStartTag() throws JspException |
{ |
if (!go()) |
{ |
return EVAL_BODY_TAG; |
} |
else |
return SKIP_BODY; |
} |
public boolean go() throws JspException |
{ |
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(pt.estgp.estgweb.Globals.USER_SESSION_KEY); |
IAddContents iAddContents = (IAddContents) RequestUtils.lookup(pageContext, name, property, null); |
return iAddContents != null && userSession.getUser() != null && (iAddContents.canAddContent(userSession.getUser())); |
} |
public int doEndTag() throws JspException |
{ |
if (go()) |
{ |
String toPage = bodyContent.getString().trim(); |
JspWriter writer = pageContext.getOut(); |
try |
{ |
writer.write(toPage); |
} |
catch (Exception e) |
{ |
logger.error(e, e); |
throw new JspException(e); |
} |
} |
// Continue processing this page |
return EVAL_PAGE; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/tags/PageUrlStatTag.java |
---|
51,7 → 51,7 |
if(attributes == null) |
attributes = ""; |
String url = "<a " + attributes + " href=\"" + hrequest.getContextPath() + "/urlstat/startUrlStat.do?relativePaths[0].value=" + URIUtil.encodePath(relativePath,"ISO-8859-1") + "\">"; |
String url = "<a " + attributes + " href=\"" + hrequest.getContextPath() + "/urlstat/startUrlStat.do?relativePaths[0].value=" + URIUtil.encodeWithinQuery(relativePath,"ISO-8859-1") + "\">"; |
String endUrl = "</a>"; |
String toPage = bodyContent.getString().trim(); |
JspWriter writer = pageContext.getOut(); |
77,5 → 77,10 |
return EVAL_PAGE; |
} |
public static void main(String[] args) |
{ |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/tags/RealOwnerTag.java |
---|
New file |
0,0 → 1,99 |
package pt.estgp.estgweb.web.tags; |
import org.apache.log4j.Logger; |
import org.apache.struts.util.RequestUtils; |
import javax.servlet.jsp.tagext.BodyTagSupport; |
import javax.servlet.jsp.JspException; |
import javax.servlet.jsp.JspWriter; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.domain.IOwned; |
import pt.estgp.estgweb.Globals; |
public class RealOwnerTag extends BodyTagSupport |
{ |
private static final Logger logger = Logger.getLogger(RealOwnerTag.class); |
private String name; |
private String property; |
private String valid; |
public String getName() |
{ |
return name; |
} |
public void setName(String name) |
{ |
this.name = name; |
} |
public String getProperty() |
{ |
return property; |
} |
public void setProperty(String property) |
{ |
this.property = property; |
} |
public String getValid() |
{ |
return valid; |
} |
public void setValid(String valid) |
{ |
this.valid = valid; |
} |
public int doStartTag() throws JspException |
{ |
if (go()) |
{ |
return EVAL_BODY_TAG; |
} |
else |
return SKIP_BODY; |
} |
public boolean go() throws JspException |
{ |
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY); |
IOwned owned = (IOwned) RequestUtils.lookup(pageContext, name, property, null); |
return owned.getOwner() == null || userSession.getUser() != null && (owned.getOwner().getId() == userSession.getUser().getId()); |
} |
public int doEndTag() throws JspException |
{ |
if(go()) |
{ |
String toPage = bodyContent.getString().trim(); |
JspWriter writer = pageContext.getOut(); |
try |
{ |
writer.write(toPage); |
} |
catch (Exception e) |
{ |
logger.error(e, e); |
throw new JspException(e); |
} |
} |
// Continue processing this page |
return EVAL_PAGE; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/WebProxy.java |
---|
40,12 → 40,17 |
String server = (String) request.getAttribute("server"); |
String useOutputStream = (String) request.getAttribute("useOutputStream"); |
String encoding = (String) request.getAttribute("encoding"); |
String proxyHost = (String) request.getAttribute("proxy.host"); |
String proxyPort = (String) request.getAttribute("proxy.port"); |
logger.info("server:" + server); |
logger.info("path:" + path); |
logger.info("proxyHost:" + proxyHost); |
logger.info("proxyPort:" + proxyPort); |
if(path != null) |
{ |
try |
{ |
URL url = new URL(server + URIUtil.encodePath(path,"ISO-8859-1")); |
URLConnection con = url.openConnection(); |
/impl/src/java/pt/estgp/estgweb/web/LayoutController.java |
---|
65,6 → 65,11 |
request.setAttribute("path", path); |
request.setAttribute("server", server); |
String proxyHost = ConfigProperties.getProperty(serverParameter + ".proxy.host"); |
String proxyPort = ConfigProperties.getProperty(serverParameter + ".proxy.port"); |
request.setAttribute("proxy.host",proxyHost); |
request.setAttribute("proxy.port",proxyPort); |
try |
{ |
// URL url = new URL(server + path); |
/impl/src/java/pt/estgp/estgweb/web/form/profile/ProfileForm.java |
---|
153,6 → 153,14 |
public ActionErrors validate(org.apache.struts.action.ActionMapping actionMapping, javax.servlet.http.HttpServletRequest httpServletRequest) |
{ |
ActionErrors errors = new ActionErrors(); |
if(userView.getUsername() == null || userView.getUsername().length() == 0) |
{ |
addMessageWithKeys(errors, httpServletRequest, "errors.required","username"); |
} |
if(userView.getEmail() == null || userView.getEmail().length() == 0) |
{ |
addMessageWithKeys(errors, httpServletRequest, "errors.required","email"); |
} |
if (userView.getPop3password().length() > 0 && !userView.getPop3password().equals(userView.getPop3passwordAgain())) |
addMessage(errors, httpServletRequest, "errors.diferent.passwords.pop"); |
else |
/impl/src/java/pt/estgp/estgweb/web/form/courses/CourseForm.java |
---|
1,9 → 1,9 |
package pt.estgp.estgweb.web.form.courses; |
import pt.estgp.estgweb.web.form.ApplicationForm; |
import pt.estgp.estgweb.web.form.commons.TeachersForm; |
import pt.estgp.estgweb.domain.views.CourseView; |
import pt.estgp.estgweb.utils.DatesUtils; |
import pt.estgp.estgweb.services.courseunits.DirectedCoordinatedCourses; |
import java.util.List; |
18,6 → 18,8 |
{ |
private CourseView courseView; |
private FormFile studiesPlan; |
private DirectedCoordinatedCourses directedCoordinatedCourses = new DirectedCoordinatedCourses(); |
private String importYear; |
public CourseForm() |
30,6 → 32,26 |
return courseView; |
} |
public DirectedCoordinatedCourses getDirectedCoordinatedCourses() |
{ |
return directedCoordinatedCourses; |
} |
public void setDirectedCoordinatedCourses(DirectedCoordinatedCourses directedCoordinatedCourses) |
{ |
this.directedCoordinatedCourses = directedCoordinatedCourses; |
} |
public String getImportYear() |
{ |
return importYear; |
} |
public void setImportYear(String importYear) |
{ |
this.importYear = importYear; |
} |
public void setCourseView(CourseView courseView) |
{ |
this.courseView = courseView; |
/impl/src/java/pt/estgp/estgweb/web/controllers/profile/ProfileController.java |
---|
11,6 → 11,7 |
import pt.estgp.estgweb.domain.views.UserView; |
import pt.estgp.estgweb.domain.views.RecordView; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.services.expceptions.AlreadyExistsException; |
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException; |
50,8 → 51,14 |
ActionErrors errors = profileForm.validate(mapping, request); |
if (!errors.isEmpty()) |
{ |
UserView uV = loadUser(profileForm.getUserView().getId(), request, response); |
profileForm.getUserView().setPasswordLocal(uV.isPasswordLocal()); |
if(profileForm.getUserView().getId() > 0) |
{ |
UserView uV = loadUser(profileForm.getUserView().getId(), request, response); |
profileForm.getUserView().setPasswordLocal(uV.isPasswordLocal()); |
UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request, response); |
uV.setUserRoles((List<String>) userSession.get(TARGET_ROLES_KEY)); |
profileForm.setSelectedRoles(uV.getUserRoles()); |
} |
saveMessages(request, errors); |
return mapping.getInputForward(); |
} |
63,7 → 70,20 |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"object"}; |
Object[] args = new Object[]{userView, profileForm.getTypeClass()}; |
userView = (UserView) sm.execute(RequestUtils.getRequester(request, response), "SubmitUser", args, names); |
try |
{ |
userView = (UserView) sm.execute(RequestUtils.getRequester(request, response), "SubmitUser", args, names); |
} |
catch (AlreadyExistsException e) |
{ |
if(profileForm.getUserView().getId() > 0) |
{ |
UserView uV = loadUser(profileForm.getUserView().getId(), request, response); |
profileForm.getUserView().setPasswordLocal(uV.isPasswordLocal()); |
} |
addErrorWithKeys(request,"user.exists",e.getMessage()); |
return mapping.getInputForward(); |
} |
profileForm.setUserView(userView); |
if (userSession.getUser().getId() == userView.getId()) |
{ |
177,6 → 197,7 |
throw e; |
} |
} |
public ActionForward home(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
188,7 → 209,7 |
ProfileForm pF = (ProfileForm) form; |
UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request, response); |
long userToLoad; |
if(pF.getUserView().getId() > 0) |
if (pF.getUserView().getId() > 0) |
userToLoad = pF.getUserView().getId(); |
else |
userToLoad = userSession.getUser().getId(); |
206,10 → 227,11 |
throw e; |
} |
} |
public ActionForward grades(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try |
217,7 → 239,7 |
ProfileForm pF = (ProfileForm) form; |
UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request, response); |
long userToLoad; |
if(pF.getUserView().getId() > 0) |
if (pF.getUserView().getId() > 0) |
userToLoad = pF.getUserView().getId(); |
else |
userToLoad = userSession.getUser().getId(); |
238,9 → 260,9 |
public ActionForward homeCode(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try |
306,6 → 328,7 |
UserView uV = (UserView) sm.execute(RequestUtils.getRequester(request, response), "LoadUserWithRecordsById", args, names); |
return uV; |
} |
private UserView loadUserWithGrades(long id, HttpServletRequest request, HttpServletResponse response) throws Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
314,6 → 337,7 |
UserView uV = (UserView) sm.execute(RequestUtils.getRequester(request, response), "LoadUserWithGradesById", args, names); |
return uV; |
} |
public UserView loadUserWithRecordsCode(int code, HttpServletRequest request, HttpServletResponse response) throws Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
335,7 → 359,7 |
ProfileForm profileForm = new ProfileForm(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{fromRequest.getTextToSearch(),fromRequest.getTypeToSearch()}; |
Object[] args = new Object[]{fromRequest.getTextToSearch(), fromRequest.getTypeToSearch()}; |
List<UserView> uVs = (List<UserView>) sm.execute(RequestUtils.getRequester(request, response), "SearchUser", args, names); |
profileForm.setUsersFind(uVs); |
request.setAttribute("ProfileForm", profileForm); |
357,7 → 381,7 |
} |
public ActionForward delete(ActionMapping mapping, |
ActionForm form , |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
368,33 → 392,33 |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{new Long(request.getParameter("id"))}; |
Boolean status= (Boolean) sm.execute(RequestUtils.getRequester(request, response),"DeleteUser",args,names); |
if(status) |
Boolean status = (Boolean) sm.execute(RequestUtils.getRequester(request, response), "DeleteUser", args, names); |
if (status) |
{ |
addMessage(request,"user.deleted.sucess"); |
addMessage(request, "user.deleted.sucess"); |
return mapping.findForward("success"); |
} |
else |
{ |
addMessage(request,"user.deleted.fail"); |
addMessage(request, "user.deleted.fail"); |
return mapping.findForward("success"); |
} |
} |
catch(FilterChainFailedException e) |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
throw e; |
} |
} |
public ActionForward createRecord(ActionMapping mapping, |
ActionForm form , |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try |
404,36 → 428,42 |
String[] names = new String[]{"object"}; |
Object[] args; |
if(profileForm.getUploadFile() != null) |
args = new Object[]{profileForm.getRecordView(),profileForm.getUploadFile().getInputStream(),profileForm.getUploadFile().getFileName(),profileForm.getUploadFile().getContentType(),profileForm.getUploadFile().getFileSize()}; |
if (profileForm.getUploadFile() != null) |
args = new Object[]{profileForm.getRecordView(), profileForm.getUploadFile().getInputStream(), profileForm.getUploadFile().getFileName(), profileForm.getUploadFile().getContentType(), profileForm.getUploadFile().getFileSize()}; |
else |
args = new Object[]{profileForm.getRecordView(),null,null,null,0}; |
args = new Object[]{profileForm.getRecordView(), null, null, null, 0}; |
boolean newRecord = false; |
if(profileForm.getRecordView().getId() <= 0) |
newRecord = true; |
UserView userView; |
if(profileForm.getRecordView().getId() > 0) |
userView = (UserView) sm.execute(RequestUtils.getRequester(request, response),"EditUserProfileRecord",args,names); |
else |
userView = (UserView) sm.execute(RequestUtils.getRequester(request, response),"CreateUserProfileRecord",args,names); |
if (profileForm.getRecordView().getId() > 0) |
userView = (UserView) sm.execute(RequestUtils.getRequester(request, response), "EditUserProfileRecord", args, names); |
else |
userView = (UserView) sm.execute(RequestUtils.getRequester(request, response), "CreateUserProfileRecord", args, names); |
addMessage(request,"profile.record.add.sucess",profileForm.getRecordView().getTitle()); |
if(newRecord) |
addMessage(request, "profile.record.add.sucess", profileForm.getRecordView().getTitle()); |
else |
addMessage(request, "profile.record.updated.sucess", profileForm.getRecordView().getTitle()); |
profileForm.setUserView(userView); |
return mapping.findForward("home"); |
} |
catch(FilterChainFailedException e) |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
throw e; |
} |
} |
public ActionForward deleteRecord(ActionMapping mapping, |
ActionForm form , |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try |
442,28 → 472,28 |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args; |
args = new Object[]{profileForm.getRecordView().getId()}; |
args = new Object[]{profileForm.getRecordView().getId()}; |
UserView userView = (UserView) sm.execute(RequestUtils.getRequester(request, response),"DeleteUserProfileRecord",args,names); |
addMessage(request,"profile.record.deleted.sucess"); |
UserView userView = (UserView) sm.execute(RequestUtils.getRequester(request, response), "DeleteUserProfileRecord", args, names); |
addMessage(request, "profile.record.deleted.sucess"); |
profileForm.setUserView(userView); |
return mapping.findForward("home"); |
} |
catch(FilterChainFailedException e) |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
throw e; |
} |
} |
public ActionForward loadEditRecord(ActionMapping mapping, |
ActionForm form , |
HttpServletRequest request, |
HttpServletResponse response) |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try |
472,22 → 502,22 |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args; |
args = new Object[]{profileForm.getRecordView().getId()}; |
args = new Object[]{profileForm.getRecordView().getId()}; |
RecordView recordView = (RecordView) sm.execute(RequestUtils.getRequester(request, response),"LoadEditUserProfileRecord",args,names); |
RecordView recordView = (RecordView) sm.execute(RequestUtils.getRequester(request, response), "LoadEditUserProfileRecord", args, names); |
UserView uV = recordView.getOwnerUserView(); |
addMessage(request,"profile.record.deleted.sucess"); |
// addMessage(request, "profile.record.deleted.sucess"); |
profileForm.setUserView(uV); |
profileForm.setRecordView(recordView); |
return mapping.findForward("curriculum"); |
} |
catch(FilterChainFailedException e) |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
throw e; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/controllers/courses/CoursesController.java |
---|
11,6 → 11,7 |
import pt.estgp.estgweb.filters.exceptions.NotFoundException; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.services.common.ISearchResults; |
import pt.estgp.estgweb.services.courseunits.DirectedCoordinatedCourses; |
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException; |
175,4 → 176,102 |
return mapping.findForward("error500"); |
} |
} |
public ActionForward loadCoursesPrograms(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
CourseForm cF = (CourseForm) form; |
String importYear = cF.getImportYear(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"importYear"}; |
Object[] args = new String[]{importYear}; |
DirectedCoordinatedCourses directedCoordinatedCourses = (DirectedCoordinatedCourses) sm.execute(RequestUtils.getRequester(request, response), "LoadCoursesProgramsForServices", args, names); |
cF.setDirectedCoordinatedCourses(directedCoordinatedCourses); |
return mapping.findForward("load.courses.programs"); |
} |
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 loadDirectedCoordininatedCourses(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
CourseForm cF = (CourseForm) form; |
String importYear = cF.getImportYear(); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"importYear"}; |
Object[] args = new String[]{importYear}; |
DirectedCoordinatedCourses directedCoordinatedCourses = (DirectedCoordinatedCourses) sm.execute(RequestUtils.getRequester(request, response), "LoadDirectedCoordinatedCoursesForUserInSession", args, names); |
cF.setDirectedCoordinatedCourses(directedCoordinatedCourses); |
return mapping.findForward("load.directed.coordinated.courses"); |
} |
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 updateDirectedCoordininatedCourses(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
try |
{ |
CourseForm cF = (CourseForm) form; |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"directedCoordinatedCourses"}; |
Object[] args = new Object[]{cF.getDirectedCoordinatedCourses()}; |
DirectedCoordinatedCourses directedCoordinatedCourses = (DirectedCoordinatedCourses) sm.execute(RequestUtils.getRequester(request, response), "UpdateDirectedCoordinatedCoursesForUserInSession", args, names); |
cF.setDirectedCoordinatedCourses(directedCoordinatedCourses); |
addMessage(request,"course.directed.coordinated.courses.updated.success",""+directedCoordinatedCourses.getUpdated()); |
return mapping.findForward("confirm.courses.programs"); |
} |
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"); |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsAdminController.java |
---|
61,7 → 61,7 |
} |
} |
public ActionForward createCourseUnitWorksBackup(ActionMapping mapping, |
public ActionForward createAllCourseUnitWorksBackup(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
92,6 → 92,37 |
} |
} |
public ActionForward createImportYearCourseUnitWorksBackup(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
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"); |
} |
} |
public ActionForward createOrUpdateAdmin(ActionMapping mapping, |
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsController.java |
---|
50,6 → 50,7 |
private static final Logger logger = Logger.getLogger(CourseUnitsController.class); |
private ActionForward createBackup(String service, |
Object[] args, |
ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
60,7 → 61,6 |
{ |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{}; |
String tmpFile = (String) sm.execute(RequestUtils.getRequester(request, response), service, args, names); |
request.getRequestDispatcher("/tmpStream/" + tmpFile).forward(request,response); |
return null; |
85,7 → 85,8 |
HttpServletResponse response) |
throws ServletException |
{ |
return createBackup("CreateUserAllCourseUnitWorksBackup",mapping,form,request,response); |
String[] args = new String[]{}; |
return createBackup("CreateUserAllCourseUnitWorksBackup",args,mapping,form,request,response); |
} |
public ActionForward createUserCourseUnitActualYearWorksBackup(ActionMapping mapping, |
94,7 → 95,9 |
HttpServletResponse response) |
throws ServletException |
{ |
return createBackup("CreateUserActualYearCourseUnitWorksBackup",mapping,form,request,response); |
String importYear = request.getParameter("importYear"); |
String[] args = new String[]{importYear}; |
return createBackup("CreateUserImportYearCourseUnitWorksBackup",args,mapping,form,request,response); |
} |
private ActionForward loadCourseUnitAndForward(CourseUnitsForm cUF, long id, boolean initTeachers, boolean initStudents, ActionMapping mapping, HttpServletRequest request, HttpServletResponse response) |
/impl/src/java/pt/estgp/estgweb/web/controllers/announcements/AnnouncementsController.java |
---|
54,7 → 54,7 |
AnnouncementsForm announcementForm = (AnnouncementsForm) form; |
AnnouncementView view = announcementForm.getAnnouncementView(); |
String finalUrl = ""; |
if (announcementForm.getUrl() != null && !announcementForm.getUrl().equals("")) |
if (announcementForm.getUrl() != null && announcementForm.getUrl().length() > 0) |
{ |
finalUrl = announcementForm.getUrlProtocol() + announcementForm.getUrl(); |
view.setUrl(finalUrl); |
139,6 → 139,20 |
announcementsForm.setStartDate(DatesUtils.getStringFromDate(aV.getStartDate())); |
announcementsForm.setExpireDate(DatesUtils.getStringFromDate(aV.getExpireDate())); |
announcementsForm.setSelectedRoles(aV.getTargetRoles()); |
if(aV.getUrl() != null) |
{ |
int indexProtocol = aV.getUrl().indexOf("://"); |
if(indexProtocol > 0) |
{ |
announcementsForm.setUrl(aV.getUrl().substring(indexProtocol+3)); |
announcementsForm.setUrlProtocol(aV.getUrl().substring(0,indexProtocol+3)); |
} |
else |
{ |
announcementsForm.setUrlProtocol(""); |
announcementsForm.setUrl(aV.getUrl()); |
} |
} |
sess.put(TARGET_ROLES_KEY, (Serializable) aV.getTargetRoles()); |
sess.serialize(request,response); |
return mapping.getInputForward(); |
233,6 → 247,8 |
{ |
try |
{ |
AnnouncementsForm announcementForm = (AnnouncementsForm) form; |
String id = request.getParameter("id"); |
AnnouncementView announcementView = load(request,response,Long.parseLong(id)); |
request.setAttribute("Announcement", announcementView); |
/impl/src/java/pt/estgp/estgweb/web/filters/UrlStatFilter.java |
---|
1,6 → 1,7 |
package pt.estgp.estgweb.web.filters; |
import org.apache.log4j.Logger; |
import org.apache.commons.httpclient.util.URIUtil; |
import javax.servlet.*; |
import javax.servlet.http.HttpServletRequest; |
140,6 → 141,9 |
} |
} |
logger.info("accessing " + relativePath); |
relativePath = URIUtil.encodeWithinQuery(relativePath,"ISO-8859-1"); |
logger.info("coded to " + relativePath); |
IntegerContainer count = urlStat.get(relativePath); |
if (count == null) |
/impl/src/java/pt/estgp/estgweb/web/RepositoryStream.java |
---|
12,6 → 12,7 |
import jomm.dao.impl.AbstractDao; |
import jomm.utils.StreamsUtils; |
import jomm.utils.StringsUtils; |
import pt.estgp.estgweb.domain.Image; |
import pt.estgp.estgweb.domain.views.CourseUnitView; |
import pt.estgp.estgweb.domain.dao.impl.ImageDaoImpl; |
69,7 → 70,7 |
} |
response.setContentLength(iRepositoryFile.getSize()); |
response.setContentType(iRepositoryFile.getContentType()); |
response.setHeader("Content-disposition","filename=" + iRepositoryFile.getName()); |
response.setHeader("Content-disposition","inline; filename=" + iRepositoryFile.getName()); |
StreamsUtils.inputStream2OutputStream(iRepositoryFile.getInput(),response.getOutputStream()); |
} |
catch(FilterChainFailedException fail) |
/impl/src/doc/deploy.doc |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/impl/src/doc/estgweb.eap |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/impl/src/doc/Concurso.ppt |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/impl/src/updates/db/update1.sql |
---|
New file |
0,0 → 1,9 |
ALTER TABLE courseunit ENGINE = myisam; |
ALTER TABLE `courseunit` ADD COLUMN `validatorUser` BIGINT(20) UNSIGNED AFTER `course`, ADD COLUMN `validProgram` BIT(1) DEFAULT 0 AFTER `validatorUser`, ADD INDEX `validatorUserIndex`(`validatorUser`); |
ALTER TABLE `courseunit` ADD CONSTRAINT `FK_validatorUser` FOREIGN KEY `FK_validatorUser` (`validatorUser`) |
REFERENCES `user` (`id`) |
ON DELETE SET NULL |
ON UPDATE SET NULL; |
update courseunit set validProgram = 0; |
ALTER TABLE courseunit ENGINE = ndb; |
/impl/src/updates/db/update2.sql |
---|
New file |
0,0 → 1,23 |
DROP TABLE IF EXISTS `courseunitsummary`; |
CREATE TABLE `courseunitsummary` ( |
`id` bigint(20) NOT NULL auto_increment, |
`discrimitator` varchar(255) NOT NULL, |
`updateDate` datetime NOT NULL, |
`saveDate` datetime default NULL, |
`dataAula` datetime default NULL, |
`tipoAula` varchar(255) default NULL, |
`codigoAula` varchar(255) default NULL, |
`codigoSumario` varchar(255) default NULL, |
`codigoSalaAula` varchar(255) default NULL, |
`alunosPresentes` int(11) default NULL, |
`numeroAula` int(11) default NULL, |
`titulo` varchar(255) default NULL, |
`descricao` text, |
`cEstado` varchar(255) default NULL, |
`courseUnit` bigint(20) default NULL, |
PRIMARY KEY (`id`), |
KEY `tituloIndex` (`titulo`), |
KEY `FK4B6262A7DF034EA4` (`courseUnit`), |
CONSTRAINT `FK4B6262A7DF034EA4` FOREIGN KEY (`courseUnit`) REFERENCES `courseunit` (`id`) |
) ENGINE=ndbcluster DEFAULT CHARSET=latin1; |
/impl/src/hbm/pt/estgp/estgweb/domain/GenericUser.hbm.xml |
---|
14,7 → 14,9 |
<timestamp name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="superuser" type="boolean"/> |
<property name="username" type="string" unique="true" length="50" index="usernameIndex"/> |
<property name="name" type="string" index="nameIndex"/> |
<property name="email" type="string" index="emailIndex"/> |
<property name="roles" type="string" index="rolesIndex"/> |
<many-to-one name="image" column="image" class="pt.estgp.estgweb.domain.Image" lazy="no-proxy" outer-join="false" cascade="all"/> |
<subclass name="pt.estgp.estgweb.domain.GenericUserImpl"> |
28,12 → 30,10 |
</subclass> |
<subclass name="pt.estgp.estgweb.domain.User"> |
<meta attribute="scope-class">public abstract</meta> |
<property name="username" type="string" unique="true" length="50" index="usernameIndex"/> |
<property name="password" type="string"/> |
<property name="address" type="text"/> |
<property name="zip" type="string"/> |
<property name="country" type="string"/> |
<property name="email" type="string" index="emailIndex"/> |
<property name="outEmail" type="string"/> |
<property name="phonenumber" type="string"/> |
<property name="sex" type="string"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/Course.hbm.xml |
---|
31,7 → 31,7 |
<key column="course_id"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUserAssociation"/> |
</set> |
<set name="courseUnits" order-by="courseYear asc" lazy="true"> |
<set name="courseUnits" order-by="name asc" lazy="true"> |
<key column="course"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUnit"/> |
</set> |
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml |
---|
25,7 → 25,9 |
<property name="normalizedName" type="string" /> |
<property name="objectives" type="text"/> |
<property name="programStreamId" type="string" index="programStreamIdIndex" /> |
<property name="validProgram" type="boolean" index="validProgramIndex"/> |
<property name="status" type="boolean" index="statusIndex" /> |
<many-to-one name="validatorUser" class="pt.estgp.estgweb.domain.Teacher" lazy="false" outer-join="true"/> |
<many-to-one name="course" class="pt.estgp.estgweb.domain.Course" lazy="false" outer-join="true"/> |
<set name="blogs" cascade="delete" lazy="true" order-by="saveDate asc"> |
<key column="courseUnit"/> |
51,6 → 53,10 |
<key column="courseUnit"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitAssignement"/> |
</set> |
<set name="summaries" cascade="delete" lazy="true" order-by="dataAula desc"> |
<key column="courseUnit"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitSummary"/> |
</set> |
<subclass name="pt.estgp.estgweb.domain.CourseUnitImpl" discriminator-value="CourseUnitImpl"/> |
</class> |
132,6 → 138,29 |
<subclass name="pt.estgp.estgweb.domain.CourseUnitGradeImpl" discriminator-value="CourseUnitGradeImpl"/> |
</class> |
<class name="pt.estgp.estgweb.domain.CourseUnitSummary" table="courseunitsummary" abstract="true"> |
<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta> |
<meta attribute="scope-class">public abstract</meta> |
<id name="id" type="long"> |
<generator class="native"/> |
</id> |
<discriminator column="discrimitator"/> |
<timestamp name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="dataAula" type="timestamp"/> |
<property name="tipoAula" type="string"/> |
<property name="codigoAula" type="string"/> |
<property name="codigoSumario" type="string"/> |
<property name="codigoSalaAula" type="string"/> |
<property name="alunosPresentes" type="int"/> |
<property name="numeroAula" type="int"/> |
<property name="titulo" type="string" index="tituloIndex"/> |
<property name="descricao" type="text"/> |
<property name="cEstado" type="string"/> |
<many-to-one name="courseUnit" class="pt.estgp.estgweb.domain.CourseUnit" lazy="false" outer-join="true"/> |
<subclass name="pt.estgp.estgweb.domain.CourseUnitSummaryImpl" discriminator-value="CourseUnitSummaryImpl"/> |
</class> |
<!--<class name="pt.estgp.estgweb.domain.CourseUnit" table="courseunitassignement" abstract="true">--> |
<!--<meta attribute="extends">pt.estgp.estgweb.domain.DomainSerializableObject</meta>--> |
<!--<meta attribute="scope-class">public abstract</meta>--> |
/impl/src/web/imgs/rolesIcons/student.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/impl/src/web/imgs/topFundoTijolo.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+ application/octet-stream |
/impl/src/web/admin/profile/profileCurriculum.jsp |
---|
33,15 → 33,20 |
<bean:message key="profile.record.type"/> |
</th> |
<td> |
<html:select property="recordView.type"> |
<html:option value="RecordThesisImpl" key="profile.RecordThesisImpl"/> |
<html:option value="RecordPaperImpl" key="profile.RecordPaperImpl"/> |
<%--todo Falta Artigo de Opinião e falta meter artigo cientifico, revista, conferencia, workshop--%> |
<html:option value="RecordJobImpl" key="profile.RecordJobImpl"/> |
<html:option value="RecordEventOrganizationImpl" key="profile.RecordEventOrganizationImpl"/> |
<html:option value="RecordProjectImpl" key="profile.RecordProjectImpl"/> |
<html:option value="RecordOtherImpl" key="profile.RecordOtherImpl"/> |
</html:select> |
<logic:greaterThan value="0" name="ProfileForm" property="recordView.id"> |
<bean:message key="profile.${ProfileForm.recordView.type}"/> |
</logic:greaterThan> |
<logic:lessEqual value="0" name="ProfileForm" property="recordView.id"> |
<html:select property="recordView.type"> |
<html:option value="RecordThesisImpl" key="profile.RecordThesisImpl"/> |
<html:option value="RecordPaperImpl" key="profile.RecordPaperImpl"/> |
<%--todo Falta Artigo de Opinião e falta meter artigo cientifico, revista, conferencia, workshop--%> |
<html:option value="RecordJobImpl" key="profile.RecordJobImpl"/> |
<html:option value="RecordEventOrganizationImpl" key="profile.RecordEventOrganizationImpl"/> |
<html:option value="RecordProjectImpl" key="profile.RecordProjectImpl"/> |
<html:option value="RecordOtherImpl" key="profile.RecordOtherImpl"/> |
</html:select> |
</logic:lessEqual> |
</td> |
</tr> |
<tr> |
98,7 → 103,12 |
</tr> |
<tr> |
<th> |
<bean:message key="profile.record.publisher"/> |
<logic:equal value="RecordPaperImpl" name="ProfileForm" property="recordView.type"> |
<bean:message key="profile.record.publisher.paper"/> |
</logic:equal> |
<logic:notEqual value="RecordPaperImpl" name="ProfileForm" property="recordView.type"> |
<bean:message key="profile.record.publisher.all"/> |
</logic:notEqual> |
</th> |
<td> |
<html:text styleClass="text" property="recordView.publisher"/> |
/impl/src/web/admin/profile/profilePersonalData.jsp |
---|
10,6 → 10,7 |
<div id="contentPane"> |
<jomm:messages/> |
<html:errors/> |
<%--<jsp:useBean id="ProfileForm" class="pt.estgp.estgweb.web.form.profile.ProfileForm"/>--%> |
136,7 → 137,7 |
<bean:message key="profile.scholar.degree"/> |
</th> |
<td> |
<html:select property="userView.academicDegree"> |
<html:select property="userView.scholarDegree"> |
<html:option value="less"><bean:message key="profile.scholar.degree.less"/></html:option> |
<html:option value="9"><bean:message key="profile.scholar.degree.9"/></html:option> |
<html:option value="12"><bean:message key="profile.scholar.degree.12"/></html:option> |
/impl/src/web/admin/announcements/submitAnnouncement.jsp |
---|
91,25 → 91,29 |
</html:select> |
</td> |
</tr> |
<logic:present name="UserSession" property="user"> |
<logic:notEmpty name="UserSession" property="user.ownerRoles"> |
<tr> |
<th> |
<bean:message key="announcement.sendAnnouncementLike"/> |
</th> |
<td> |
<html:select property="announcementView.choosedOwnerRole"> |
<logic:iterate id="item" name="UserSession" property="user.ownerRoles"> |
<jomm:option itemName="item" comparableObjectName="AnnouncementsForm" |
comparableObjectProperty="announcementView.choosedOwnerRole"> |
<bean:message key="user.role.${item}"/> |
</jomm:option> |
</logic:iterate> |
</html:select> |
</td> |
</tr> |
</logic:notEmpty> |
<baco:isRealOwner name="AnnouncementsForm" property="announcementView"> |
<logic:notEmpty name="UserSession" property="user.ownerRoles"> |
<tr> |
<th> |
<bean:message key="announcement.sendAnnouncementLike"/> |
</th> |
<td> |
<html:select property="announcementView.choosedOwnerRole"> |
<logic:iterate id="item" name="UserSession" property="user.ownerRoles"> |
<jomm:option itemName="item" comparableObjectName="AnnouncementsForm" |
comparableObjectProperty="announcementView.choosedOwnerRole"> |
<bean:message key="user.role.${item}"/> |
</jomm:option> |
</logic:iterate> |
</html:select> |
</td> |
</tr> |
</logic:notEmpty> |
</baco:isRealOwner> |
</logic:present> |
<tr> |
<th> |
<bean:message key="announcement.target.roles"/> |
307,6 → 311,7 |
<html:option value="http://">Http://</html:option> |
<html:option value="ftp://">ftp://</html:option> |
<html:option value="https://">Https://</html:option> |
<html:option value="">Relativo ao Baco (exemplo: /blog/bugs</html:option> |
</html:select> |
<html:text property="url" maxlength="250"/> |
</td> |
318,7 → 323,7 |
<bean:message key="announcement.internalLinkAnnouncement"/> |
</th> |
<td> |
<html:select property="announcementView.internalUrlServer"> |
<html:select property="announcementView.internalUrlInclude"> |
<html:option value="true"> |
<bean:message key="announcement.internal.url.include.yes"/> |
</html:option> |
/impl/src/web/css/style.css |
---|
1,4 → 1,4 |
/*********** Site Struture *************/ |
/*********** Site Struture *************/ |
BODY *, .contentPortal, .contentPortal p, .contentPortal li, div { |
FONT-FAMILY: "bitstream vera sans", Verdana, Arial, Helvetica, sans-serif; |
FONT-SIZE: 11px; |
566,7 → 566,7 |
.portalAnnouncementTitle |
{ |
white-space:nowrap; |
/*white-space:nowrap;*/ |
} |
.portalAnnouncementTitle a { |
color: #000000; |
580,6 → 580,11 |
color: #4d4d4d; |
} |
.portalAnnouncementText, .portalAnnouncementTitle { |
/*table-layout: fixed;*/ |
width: 180px; |
} |
/* todo FABIO |
todo Left Manus???? ao pe de portalMenus isto esta uma confusao*/ |
.navleftMenu { |
/impl/src/web/errors/503.jsp |
---|
New file |
0,0 → 1,10 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<% |
response.sendError(500); |
%> |
<h3 class="statusWARNING"><bean:message key="error.503"/></h3> |
/impl/src/web/layout/header.jsp |
---|
6,7 → 6,7 |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<table width="100%"> |
<table width="100%" style="background-image:url(<%=request.getContextPath()%>/imgs/topFundoTijolo.jpg)"> |
<tr> |
<td> |
/impl/src/web/public/profile/recordViews.jsp |
---|
52,7 → 52,14 |
</logic:present> |
<logic:present name="recordView" property="publisher"> |
<tr> |
<th><bean:message key="profile.record.publisher"/></th> |
<th> |
<logic:equal value="RecordPaperImpl" name="recordView" property="type"> |
<bean:message key="profile.record.publisher.paper"/> |
</logic:equal> |
<logic:notEqual value="RecordPaperImpl" name="ProfileForm" property="recordView.type"> |
<bean:message key="profile.record.publisher"/> |
</logic:notEqual> |
</th> |
<td>${recordView.publisher}</td> |
</tr> |
</logic:present> |
/impl/src/web/public/index.jsp |
---|
76,7 → 76,7 |
</p> |
</logic:empty> |
<logic:notEmpty name="item" property="url"> |
<logic:equal value="false" name="item" property="haveAllText"> |
<logic:equal value="false" name="item" property="textBiggerThenPermited"> |
<h2> |
<html:link href="${item.url}">${item.title}</html:link> |
</h2> |
84,7 → 84,7 |
<html:link href="${item.url}">${item.textSummarySmall}</html:link> |
</p> |
</logic:equal> |
<logic:equal value="true" name="item" property="haveAllText"> |
<logic:equal value="true" name="item" property="textBiggerThenPermited"> |
<h2> |
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load">${item.title}</html:link> |
</h2> |
136,7 → 136,7 |
</p> |
</logic:empty> |
<logic:notEmpty name="item" property="url"> |
<logic:equal value="false" name="item" property="haveAllText"> |
<logic:equal value="false" name="item" property="textBiggerThenPermited"> |
<h2> |
<html:link href="${item.url}">${item.title}</html:link> |
</h2> |
144,7 → 144,7 |
<html:link href="${item.url}">${item.textSummarySmall}</html:link> |
</p> |
</logic:equal> |
<logic:equal value="true" name="item" property="haveAllText"> |
<logic:equal value="true" name="item" property="textBiggerThenPermited"> |
<h2> |
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load">${item.title}</html:link> |
</h2> |
/impl/src/web/public/blogs/blog.jsp |
---|
30,7 → 30,7 |
<div class="seccao"> |
<div class="postHeader"> |
<h1> |
<bean:write name="BlogView" property="title"/> |
${BlogView.formatedaaTitle} |
</h1> |
<baco:canManage name="BlogView"> |
64,7 → 64,7 |
%> |
</td> |
<td valign="top"> |
${BlogView.description} |
${BlogView.formatedDescription} |
</td> |
</tr> |
</table> |
75,8 → 75,17 |
<baco:canAddContent name="BlogView"> |
<a href="<%=request.getContextPath()%>${user}/startAddPost${fromAction}.do?id=<%=BlogView.getId()%>"><bean:message key="blog.add.post"/></a> |
</baco:canAddContent> |
<%--<baco:canNotAddContent name="BlogView">--%> |
<%--<baco:isAuthenticated>--%> |
<%--<bean:message key="blog.add.post.cant.add"/>--%> |
<%--</baco:isAuthenticated>--%> |
<%--<baco:isNotAuthenticated>--%> |
<%--<bean:message key="blog.add.post.cant.add.login"/>--%> |
<%--</baco:isNotAuthenticated>--%> |
<%--</baco:canNotAddContent>--%> |
</div> |
</div> |
<baco:canAddContent name="BlogView"> |
<logic:present name="BlogPostView"> |
<html:form action="${user}/blogsController${fromAction}${from}" enctype="multipart/form-data"> |
137,7 → 146,8 |
<baco:canLoad name="post"> |
<tr> |
<td colspan="2" class="title"> |
<a name="post${post.id}"></a>${post.title} |
<a name="post${post.id}"></a> |
<h3>${post.formatedTitle}</h3> |
<baco:canManage name="post"> |
<a onclick="return confirm('${confirmDeletePost}')" href="<%=request.getContextPath()%>${user}/startDeletePost${fromAction}.do?id=${post.id}&blogId=${BlogView.id}"><bean:message key="blog.delete.post"/></a> |
<baco:canManage name="BlogView"> |
161,7 → 171,7 |
</tr> |
<tr> |
<td valign="top"> |
${post.text} |
${post.formatedText} |
</td> |
<td valign="top"> |
<% |
179,7 → 189,7 |
</tr> |
<tr> |
<td colspan="2" class="pFooter"> |
Posted by: ${post.ownerUsername} AT ${post.formatedSaveDate} |
Posted by: (${post.ownerUsername}) ${post.ownerName} [AT] ${post.formatedSaveDate} |
</td> |
</tr> |
</baco:canLoad> |
/impl/src/web/public/announcements/announcementsPortalLeft.jsp |
---|
80,7 → 80,7 |
</logic:empty> |
<logic:notEmpty name="item" property="url"> |
<% |
if (!item.getHaveAllText()) |
if (!item.getTextBiggerThenPermited()) |
{ |
%> |
<div class="portalAnnouncementTitle"> |
/impl/src/web/public/announcements/getFlashNews.jsp |
---|
31,7 → 31,7 |
<h2><a href="<%=request.getContextPath()%>/loadAnnouncement.do?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getTitle()%></a></h2> |
<p><a href="<%=request.getContextPath()%>/loadAnnouncement.do?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getTextSummary()%></a></p> |
<%} |
else if(!announcementView.getHaveAllText()) |
else if (!announcementView.getTextBiggerThenPermited()) |
{%> |
<h2><a href="<%=announcementView.getUrl()%>"><%=announcementView.getTitle()%></a></h2> |
<p><a href="<%=announcementView.getUrl()%>"><%=announcementView.getText()%></a></p> |
/impl/src/web/public/announcements/loadAnnouncement.jsp |
---|
3,6 → 3,7 |
<%@ page import="pt.estgp.estgweb.domain.enums.AnnouncementStyleEnum" %> |
<%@ page import="pt.estgp.estgweb.web.UserSessionProxy" %> |
<%@ page import="jomm.utils.MessageResources" %> |
<%@ page import="pt.estgp.estgweb.web.WebProxy" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
12,8 → 13,23 |
<jsp:useBean id="Announcement" type="pt.estgp.estgweb.domain.views.AnnouncementView" scope="request"/> |
<% UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request, response);%> |
<table class="seccao"> |
<tr><td> |
<h2>${Announcement.title} |
<tr> |
<td> |
<h2> |
<% |
if(Announcement.getUrl() != null && Announcement.getUrl().length()>0) |
{ |
%> |
<a href="<%=Announcement.getUrl(request)%>">${Announcement.title}</a> |
<% |
} |
else |
{ |
%> |
${Announcement.title} |
<% |
} |
%> |
<baco:canManage name="Announcement"> |
<!--valid="false">--> |
<% |
66,31 → 82,49 |
<% |
if (Announcement.getBigImage() != null) |
{ |
if(Announcement.getUrl() != null && Announcement.getUrl().length()>0) |
{ |
%> |
<img align="<%=align%>" alt="<%=Announcement.getTitle()%>" |
src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getBigImage().getId()%>"> |
<a href="<%=Announcement.getUrl(request)%>"> |
<img border="0" alt="<%=Announcement.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getSmallImage().getId()%>"> |
</a> |
<% |
} |
else |
{ |
%> |
<img border="0" alt="<%=Announcement.getTitle()%>" |
src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getSmallImage().getId()%>"> |
<% |
} |
} |
else if (Announcement.getSmallImage() != null) |
{ |
if(Announcement.getUrl() != null && Announcement.getUrl().length()>0) |
{ |
%> |
<img align="<%=align%>" alt="<%=Announcement.getTitle()%>" |
src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getSmallImage().getId()%>"> |
<a href="<%=Announcement.getUrl(request)%>"> |
<img border="0" alt="<%=Announcement.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getSmallImage().getId()%>"> |
</a> |
<% |
} |
else |
{ |
%> |
<img border="0" alt="<%=Announcement.getTitle()%>" |
src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getSmallImage().getId()%>"> |
<% |
} |
} |
%> |
</div> |
${Announcement.formatedText} |
<% |
if (Announcement.getUrl() != null) |
{ |
%> |
>> <html:link href="${Announcement.url}">Ver +</html:link> |
<% |
}%> |
<logic:notEmpty name="Announcement" property="url"> |
>> <html:link href="${Announcement.url}">${Announcement.url}</html:link> |
</logic:notEmpty> |
<div class="pFooter"> |
Posted by: ${Announcement.ownerUsername} AT ${Announcement.formatedSaveDate} |
Posted by: (${Announcement.ownerUsername}) ${Announcement.ownerName} [AT] ${Announcement.formatedSaveDate} |
</div> |
</p> |
<% |
105,31 → 139,55 |
<% |
if (Announcement.getBigImage() != null) |
{ |
if(Announcement.getUrl() != null && Announcement.getUrl().length()>0) |
{ |
%> |
<img alt="<%=Announcement.getTitle()%>" |
src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getBigImage().getId()%>"> |
<a href="<%=Announcement.getUrl(request)%>"> |
<img border="0" alt="<%=Announcement.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getBigImage().getId()%>"> |
</a> |
<% |
} |
else |
{ |
%> |
<img border="0" alt="<%=Announcement.getTitle()%>" |
src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getBigImage().getId()%>"> |
<% |
} |
} |
else if (Announcement.getSmallImage() != null) |
{ |
if(Announcement.getUrl() != null && Announcement.getUrl().length()>0) |
{ |
%> |
<img alt="<%=Announcement.getTitle()%>" |
src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getSmallImage().getId()%>"> |
<a href="<%=Announcement.getUrl(request)%>"> |
<img border="0" alt="<%=Announcement.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getSmallImage().getId()%>"> |
</a> |
<% |
} |
else |
{ |
%> |
<img border="0" alt="<%=Announcement.getTitle()%>" |
src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getSmallImage().getId()%>"> |
<% |
} |
} |
%> |
</div> |
</td> |
</tr> |
<tr> |
<td>${Announcement.formatedText}</td> |
<td valign="<%=valign%>" >${Announcement.formatedText}</td> |
</tr> |
<logic:notEmpty name="Announcement" property="url"> |
<tr> |
<td> >> <html:link href="${Announcement.url}">${Announcement.url}</html:link></td> |
</tr> |
</logic:notEmpty> |
<tr> |
<td class="pFooter"> |
Posted by: ${Announcement.ownerUsername} AT ${Announcement.formatedSaveDate} |
Posted by: (${Announcement.ownerUsername}) ${Announcement.ownerName} [AT] ${Announcement.formatedSaveDate} |
</td> |
</tr> |
</table> |
145,29 → 203,54 |
<% |
if (Announcement.getBigImage() != null) |
{ |
if(Announcement.getUrl() != null && Announcement.getUrl().length()>0) |
{ |
%> |
<img alt="<%=Announcement.getTitle()%>" |
src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getBigImage().getId()%>"> |
<a href="<%=Announcement.getUrl(request)%>"> |
<img border="0" alt="<%=Announcement.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getBigImage().getId()%>"> |
</a> |
<% |
} |
else |
{ |
%> |
<img border="0" alt="<%=Announcement.getTitle()%>" |
src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getBigImage().getId()%>"> |
<% |
} |
} |
else if (Announcement.getSmallImage() != null) |
{ |
if(Announcement.getUrl() != null && Announcement.getUrl().length()>0) |
{ |
%> |
<img alt="<%=Announcement.getTitle()%>" |
src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getSmallImage().getId()%>"> |
<a href="<%=Announcement.getUrl(request)%>"> |
<img border="0" alt="<%=Announcement.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getSmallImage().getId()%>"> |
</a> |
<% |
} |
else |
{ |
%> |
<img border="0" alt="<%=Announcement.getTitle()%>" |
src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getSmallImage().getId()%>"> |
<% |
} |
} |
%> |
</div> |
</td> |
<td>${Announcement.formatedText}</td> |
<td valign="<%=valign%>">${Announcement.formatedText}</td> |
</tr> |
<logic:notEmpty name="Announcement" property="url"> |
<tr> |
<td colspan="2"> >> <html:link href="${Announcement.url}">${Announcement.url}</html:link></td> |
</tr> |
</logic:notEmpty> |
<tr> |
<td colspan="2" class="pFooter"> |
Posted by: ${Announcement.ownerUsername} AT ${Announcement.formatedSaveDate} |
Posted by: (${Announcement.ownerUsername}) ${Announcement.ownerName} [AT] ${Announcement.formatedSaveDate} |
</td> |
</tr> |
</table> |
178,38 → 261,98 |
%> |
<table> |
<tr> |
<td>${Announcement.formatedText}</td> |
<td valign="<%=valign%>">${Announcement.formatedText}</td> |
<td valign="<%=valign%>"> |
<div class="imageAnnouncement"> |
<% |
if (Announcement.getBigImage() != null) |
{ |
if(Announcement.getUrl() != null && Announcement.getUrl().length()>0) |
{ |
%> |
<img alt="<%=Announcement.getTitle()%>" |
<a href="${Announcement.url}"> |
<img border="0" alt="<%=Announcement.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getBigImage().getId()%>"> |
</a> |
<% |
} |
else |
{ |
%> |
<img border="0" alt="<%=Announcement.getTitle()%>" |
src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getBigImage().getId()%>"> |
<% |
} |
} |
else if (Announcement.getSmallImage() != null) |
{ |
if(Announcement.getUrl() != null && Announcement.getUrl().length()>0) |
{ |
%> |
<img alt="<%=Announcement.getTitle()%>" |
<a href="<%=Announcement.getUrl(request)%>"> |
<img border="0" alt="<%=Announcement.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getSmallImage().getId()%>"> |
</a> |
<% |
} |
else |
{ |
%> |
<img border="0" alt="<%=Announcement.getTitle()%>" |
src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getSmallImage().getId()%>"> |
<% |
} |
} |
%> |
</div> |
</td> |
</tr> |
<logic:notEmpty name="Announcement" property="url"> |
<tr> |
<td colspan="2"> >> <html:link href="${Announcement.url}">${Announcement.url}</html:link></td> |
</tr> |
</logic:notEmpty> |
<tr> |
<td colspan="2" class="pFooter"> |
Posted by: ${Announcement.ownerUsername} AT ${Announcement.formatedSaveDate} |
Posted by: (${Announcement.ownerUsername}) ${Announcement.ownerName} [AT] ${Announcement.formatedSaveDate} |
</td> |
</tr> |
</table> |
<% |
} |
%> |
</td></tr></table> |
</td> |
</tr> |
<tr> |
<td> |
<logic:notEmpty name="Announcement" property="internalUrlPath"> |
<logic:notEmpty name="Announcement" property="internalUrlServer"> |
<logic:equal name="Announcement" property="internalUrlInclude" value="true"> |
<% |
WebProxy.processHttpRequestService(out, Announcement.getInternalUrlServer(), Announcement.getInternalUrlPath()); |
%> |
</logic:equal> |
<logic:notEqual name="Announcement" property="internalUrlInclude" value="true"> |
<% |
if(Announcement.getInternalUrlPath().startsWith("/")) |
{ |
%> |
<a href="<%=request.getContextPath()%>/proxy/layout1/${Announcement.internalUrlServer}${Announcement.internalUrlPath}"><bean:message key="search.see.more.content"/></a> |
<% |
} |
else |
{ |
%> |
<a href="<%=request.getContextPath()%>/proxy/layout1/${Announcement.internalUrlServer}/${Announcement.internalUrlPath}"><bean:message key="search.see.more.content"/></a> |
<% |
} |
%> |
</logic:notEqual> |
</logic:notEmpty> |
</logic:notEmpty> |
</td> |
</tr> |
</table> |
/impl/src/web/public/announcements/announcements.jsp |
---|
29,7 → 29,7 |
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load">${item.title}</html:link> |
</logic:empty> |
<logic:notEmpty name="item" property="url"> |
<%if(!item.getHaveAllText()) |
<%if (!item.getTextBiggerThenPermited()) |
{%> |
<html:link href="${item.url}">${item.title}</html:link> |
<%} |
/impl/src/web/public/announcements/announcementsPortalRight.jsp |
---|
77,7 → 77,7 |
</logic:empty> |
<logic:notEmpty name="item" property="url"> |
<% |
if (!item.getHaveAllText()) |
if (!item.getTextBiggerThenPermited()) |
{ |
%> |
<div class="portalAnnouncementTitle"> |
/impl/src/web/public/announcements/loadTodoAnnouncement.jsp |
---|
42,5 → 42,10 |
</td> |
<td valign="top">${Announcement.formatedText}</td> |
</tr> |
<logic:notEmpty name="Announcement" property="url"> |
<tr> |
<td colspan="2"> >> <html:link href="${Announcement.url}">${Announcement.url}</html:link></td> |
</tr> |
</logic:notEmpty> |
</table> |
</div> |
/impl/src/web/user/courses/topnavDirectedCoordinatedCourses.jsp |
---|
New file |
0,0 → 1,12 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="java.util.*"%> |
<%@ page import="jomm.web.utils.NavPlace" %> |
<%@ page import="jomm.web.utils.NavPlaceServer" %> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace(null, "course.directed.coordinated.courses"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/courses/directedCoordinatedCourses.jsp |
---|
New file |
0,0 → 1,190 |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %> |
<%@ page import="pt.estgp.estgweb.domain.views.CourseView" %> |
<%@ page import="java.util.List" %> |
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<jsp:useBean id="CourseForm" type="pt.estgp.estgweb.web.form.courses.CourseForm" scope="request"/> |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/> |
<jomm:messages/> |
<html:errors/> |
<% |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{}; |
List<String> importYears = (List<String>) sm.execute(RequestUtils.getRequester(request, response), "LoadCoursesImportYears", args, names); |
request.setAttribute("importYears", importYears); |
request.setAttribute("fromDispatch",request.getParameter("fromDispatch")); |
String fromAction = ""; |
String from = "?fromDispatch="+request.getParameter("fromDispatch");; |
String user = ""; |
if (request.getParameter("from") != null) |
{ |
user = "/user"; |
fromAction = "From" + request.getParameter("from"); |
from = "?from=" + request.getParameter("from") + "&fromDispatch="+request.getParameter("fromDispatch"); |
} |
request.setAttribute("from", from); |
request.setAttribute("user", user); |
request.setAttribute("fromAction", fromAction); |
boolean canChange=false; |
%> |
<html:form action="${user}/courseController${fromAction}${from}" enctype="multipart/form-data"> |
<input type="hidden" name="dispatch" value="updateDirectedCoordininatedCourses"> |
<input type="hidden" name="fromDispatch" value="${fromDispatch}"/> |
<div class="seccao"> |
<h2><bean:message key="course.directed.coordinated"/> </h2> |
<p> |
<bean:message key="course.program.courses.choose.year"/> |
<html:select property="importYear" onchange="set(this.form,'${fromDispatch}');this.form.submit()"> |
<logic:iterate id="importYear" name="importYears"> |
<html:option value="${importYear}"/> |
</logic:iterate> |
</html:select> |
</p> |
<div class="seccao"> |
<ul> |
<nested:iterate id="courseView" property="directedCoordinatedCourses.merge" type="pt.estgp.estgweb.domain.views.CourseView"> |
<li> |
<a name="${courseView.id}"></a> |
<nested:hidden property="id"/> |
<h3>(${courseView.code}) ${courseView.name}</h3> |
<ul> |
<li><h3><bean:message key="courseunit.semestre"/> 1</h3> |
<ul> |
<logic:notEmpty name="courseView" property="courseUnitsWithNoProgramS1"> |
<li><h3 class="statusERROR"><bean:message key="course.units.no.program"/></h3> |
<ul> |
<nested:iterate id="courseUnitView" property="courseUnitsWithNoProgramS1" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<li> |
(${courseUnitView.code}) ${courseUnitView.name} - ${courseUnitView.teachersSnipet} |
</li> |
</nested:iterate> |
</ul> |
</li> |
</logic:notEmpty> |
<logic:notEmpty name="courseView" property="courseUnitsWithProgramNotCheckedS1"> |
<%--<html:hidden property="courseUnitsWithProgramNotCheckedS1size"/>--%> |
<li><h3 class="statusWARNING"><bean:message key="course.units.with.program.not.checked"/></h3> |
<ul> |
<nested:iterate id="courseUnitView" property="courseUnitsWithProgramNotCheckedS1" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<li> |
<logic:equal value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<% |
canChange=true; |
%> |
<nested:hidden property="programStreamId"/> |
<nested:hidden property="id"/> |
<nested:checkbox property="validProgram"/> |
</logic:equal> |
(${courseUnitView.code}) <a href="<%=request.getContextPath()%>/repositoryStream/${courseUnitView.programStreamId}">${courseUnitView.name}</a> - ${courseUnitView.teachersSnipet} |
</li> |
</nested:iterate> |
</ul> |
</li> |
</logic:notEmpty> |
<logic:notEmpty name="courseView" property="courseUnitsWithProgramCheckedS1"> |
<%--<html:hidden property="courseUnitsWithProgramCheckedS1size"/>--%> |
<li><h3 class="statusOK"><bean:message key="course.units.with.program.checked"/></h3> |
<ul> |
<nested:iterate id="courseUnitView" property="courseUnitsWithProgramCheckedS1" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<li> |
<logic:equal value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<nested:hidden property="programStreamId"/> |
<nested:hidden property="id"/> |
<nested:checkbox property="validProgram"/> |
</logic:equal> |
(${courseUnitView.code}) <a href="<%=request.getContextPath()%>/repositoryStream/${courseUnitView.programStreamId}">${courseUnitView.name}</a> - ${courseUnitView.teachersSnipet} |
</li> |
</nested:iterate> |
</ul> |
</li> |
</logic:notEmpty> |
</ul> |
</li> |
<li><h3><bean:message key="courseunit.semestre"/> 2</h3> |
<ul> |
<logic:notEmpty name="courseView" property="courseUnitsWithNoProgramS2"> |
<li><h3 class="statusERROR"><bean:message key="course.units.no.program"/></h3> |
<ul> |
<nested:iterate id="courseUnitView" property="courseUnitsWithNoProgramS2" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<li> |
(${courseUnitView.code}) ${courseUnitView.name} - ${courseUnitView.teachersSnipet} |
</li> |
</nested:iterate> |
</ul> |
</li> |
</logic:notEmpty> |
<logic:notEmpty name="courseView" property="courseUnitsWithProgramNotCheckedS2"> |
<%--<html:hidden property="courseUnitsWithProgramNotCheckedS2size"/>--%> |
<li><h3 class="statusWARNING"><bean:message key="course.units.with.program.not.checked"/></h3> |
<ul> |
<nested:iterate id="courseUnitView" property="courseUnitsWithProgramNotCheckedS2" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<li> |
<logic:equal value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<nested:hidden property="programStreamId"/> |
<nested:hidden property="id"/> |
<nested:checkbox property="validProgram"/> |
</logic:equal> |
(${courseUnitView.code}) ${courseUnitView.name} - ${courseUnitView.teachersSnipet} |
</li> |
</nested:iterate> |
</ul> |
</li> |
</logic:notEmpty> |
<logic:notEmpty name="courseView" property="courseUnitsWithProgramCheckedS2"> |
<%--<html:hidden property="courseUnitsWithProgramCheckedS2size"/>--%> |
<li><h3 class="statusOK"><bean:message key="course.units.with.program.checked"/></h3> |
<ul> |
<nested:iterate id="courseUnitView" property="courseUnitsWithProgramCheckedS2" type="pt.estgp.estgweb.domain.views.CourseUnitView"> |
<li> |
<logic:equal value="${courseView.coordinator.id}" name="UserSession" property="user.id"> |
<nested:hidden property="programStreamId"/> |
<nested:hidden property="id"/> |
<nested:checkbox property="validProgram"/> |
</logic:equal> |
(${courseUnitView.code}) ${courseUnitView.name} - ${courseUnitView.teachersSnipet} |
</li> |
</nested:iterate> |
</ul> |
</li> |
</logic:notEmpty> |
</ul> |
</li> |
</ul> |
</li> |
</nested:iterate> |
</ul> |
</div> |
</div> |
<% |
if(canChange) |
{ |
%> |
<table> |
<tr class="buttons"> |
<td colspan="2"> |
<input type="submit" value="<bean:message key="confirm"/>"/> |
</td> |
</tr> |
</table> |
<% |
} |
%> |
</html:form> |
/impl/src/web/user/courseunits/courseunitworks.jsp |
---|
83,7 → 83,7 |
<bean:message key="courseunit.description"/> |
</th> |
<td> |
<html:textarea styleClass="textarea" property="courseUnitAssignementView.formatedDescription"/> |
<html:textarea styleClass="textarea" property="courseUnitAssignementView.description"/> |
</td> |
</tr> |
<tr> |
215,9 → 215,14 |
request.setAttribute("confirmDelete", confirmDelete); |
%> |
<td> |
<html:link onclick="return confirm('${confirmDelete}')" action="/user/startDeleteCourseUnitWorksFromHome?courseUnitAssignementView.id=${work.id}"> |
<bean:message key="delete"/> |
</html:link> |
<logic:equal value="0" name="work" property="delivers"> |
<html:link onclick="return confirm('${confirmDelete}')" action="/user/startDeleteCourseUnitWorksFromHome?courseUnitAssignementView.id=${work.id}"> |
<bean:message key="delete"/> |
</html:link> |
</logic:equal> |
<logic:notEqual value="0" name="work" property="delivers"> |
<%--<bean:message key="delete"/>--%> |
</logic:notEqual> |
</td> |
</baco:canManage> |
<baco:isStudentOfCourseUnit courseUnitId="${CourseUnitView.id}"> |
276,7 → 281,7 |
</tr> |
<tr id="assignement${work.id}" style="<%=Globals.HIDDEN%>"> |
<td colspan="${colspanAssignement}"> |
${work.description} |
${work.formatedDescription} |
</td> |
</tr> |
</logic:iterate> |
/impl/src/web/user/courseunits/courseunitassignement.jsp |
---|
67,7 → 67,7 |
<bean:message key="courseunit.description"/> |
</th> |
<td> |
<bean:write name="CourseUnitAssignementView" property="description"/> |
${CourseUnitAssignementView.formatedDescription} |
</td> |
</tr> |
<tr> |
124,7 → 124,7 |
<bean:message key="courseunit.assignement.deliver.time.ok"/> |
</td> |
</logic:notEqual> |
<td>${deliverable.student.code}</td> |
<td align="right">${deliverable.student.code}</td> |
<td>${deliverable.student.name}</td> |
<td><a target="_blank" href="<%=request.getContextPath()%>/repositoryStream/${deliverable.fileStreamId}"><bean:message key="courseunit.assignement.deliver.version"/> (${deliverable.deliverDateStr})</a></td> |
<td> |
/impl/src/web/user/courseunits/courseunit.jsp |
---|
51,11 → 51,16 |
</p> |
<p> |
<baco:canManage name="CourseUnitView"> |
<html:file property="programFile"/> |
<logic:equal value="false" name="CourseUnitView" property="validProgram"> |
<html:file property="programFile"/> |
</logic:equal> |
</baco:canManage> |
<logic:present name="CourseUnitView" property="programStreamId"> |
<a href="<%=request.getContextPath()%>/repositoryStream/${CourseUnitView.programStreamId}"><bean:message key="courseunit.programfilepath"/></a> (${CourseUnitView.programSize} Kb) |
</logic:present> |
(<logic:equal value="true" name="CourseUnitView" property="validProgram"> |
<bean:message key="courseunit.programfile.valid"/> |
</logic:equal>) |
<logic:notPresent name="CourseUnitView" property="programStreamId"> |
<bean:message key="courseunit.programfilepath.not.available"/> |
</logic:notPresent> |
94,7 → 99,7 |
</tr> |
<baco:isAuthenticated> |
<tr> |
<td colspan="2" class="seccao"> |
<td class="seccao" valign="top"> |
<h2><bean:message key="module.Announcements"/></h2> |
<logic:notEmpty name="CourseUnitView" property="announcements"> |
<div class="listCircleWhite"> |
113,6 → 118,25 |
<p><bean:message key="announcement.zero.placed"/></p> |
</logic:empty> |
</td> |
<td class="seccao" valign="top"> |
<h2><bean:message key="courseunit.summaries"/></h2> |
<logic:notEmpty name="CourseUnitView" property="summaries"> |
<div class="listCircleWhite"> |
<ul> |
<logic:iterate id="summary" name="CourseUnitView" property="summaries" type="pt.estgp.estgweb.domain.views.CourseUnitSummaryView"> |
<li> |
<h3>(${summary.date}) - ${summary.title}</h3> |
<p>${summary.description}</p> |
<p class="pFooterSeccao">${summary.students} <bean:message key="courseunit.summary.present.students"/> </p> |
</li> |
</logic:iterate> |
</ul> |
</div> |
</logic:notEmpty> |
<logic:empty name="CourseUnitView" property="summaries"> |
<p><bean:message key="courseunit.summaries.zero.placed"/></p> |
</logic:empty> |
</td> |
</tr> |
</baco:isAuthenticated> |
</table> |
/impl/src/web/user/courseunits/submitAnnouncement.jsp |
---|
43,7 → 43,7 |
<html:hidden property="announcementView.courseUnitView.name"/> |
<input type="hidden" name="expireDate" value="<%=calendar.getWebDateString()%>"/> |
<html:hidden property="announcementView.courseUnitView.courseName"/> |
<html:hidden property="targetRolesStr" value="student"/> |
<html:hidden property="targetRolesStr" value="all"/> |
<baco:hasRole role="student"> |
<html:hidden property="announcementView.choosedOwnerRole" value="student"/> |
</baco:hasRole> |
/impl/src/web/user/home/student.jsp |
---|
75,28 → 75,7 |
<jsp:include page="/user/home/todos.jsp"/> |
</baco:isModuleOn> |
</td> |
<td class="column"> |
<div class="block"> |
<p>Ficheiros Úteis</p> |
<ul> |
<li> |
<a href="#">Modelo de comunicação interna</a> |
</li> |
<li> |
<a href="#">Justificação de Presença</a> |
</li> |
<li> |
<a href="#">Justificação de Faltas</a> |
</li> |
<li> |
<a href="#">Modelo de Bolsa</a> |
</li> |
<li> |
<a href="#">Modelo de Bolsa</a> |
</li> |
</ul> |
</div> |
</td> |
</tr> |
</tbody> |
</table> |
/impl/src/web/user/home/todos.jsp |
---|
103,10 → 103,15 |
<a href="<%=request.getContextPath() + todo.getUrl()%>"> |
<font class="<%=styleClass%>"> |
<% |
if(todo.getCatKey() != null) |
if(todo.getCatArg0() == null && todo.getCatKey() != null) |
{ |
out.print(MessageResources.getMessage(request,todo.getCatKey()) + ":"); |
} |
else if(todo.getCatArg0() != null && todo.getCatKey() != null) |
{ |
out.print(MessageResources.getMessage(request,todo.getCatKey(),todo.getCatArg0()) + ":"); |
} |
%> |
<%=todo.getLabelInsideCat(request)%> |
</font> |
/impl/src/web/user/home/teacher.jsp |
---|
73,28 → 73,6 |
<jsp:include page="/user/home/todos.jsp"/> |
</baco:isModuleOn> |
</td> |
<td class="column"> |
<div class="block"> |
<p>Ficheiros Úteis</p> |
<ul> |
<li> |
<a href="#">Modelo de comunicação interna</a> |
</li> |
<li> |
<a href="#">Justificação de Presença</a> |
</li> |
<li> |
<a href="#">Justificação de Faltas</a> |
</li> |
<li> |
<a href="#">Modelo de Bolsa</a> |
</li> |
<li> |
<a href="#">Modelo de Bolsa</a> |
</li> |
</ul> |
</div> |
</td> |
</tr> |
</tbody> |
</table> |
/impl/src/web/user/home/user.jsp |
---|
16,28 → 16,6 |
<jsp:include page="/user/home/todos.jsp"/> |
</baco:isModuleOn> |
</td> |
<td class="column"> |
<div class="block"> |
<p>Ficheiros Úteis</p> |
<ul> |
<li> |
<a href="#">Modelo de comunicação interna</a> |
</li> |
<li> |
<a href="#">Justificação de Presença</a> |
</li> |
<li> |
<a href="#">Justificação de Faltas</a> |
</li> |
<li> |
<a href="#">Modelo de Bolsa</a> |
</li> |
<li> |
<a href="#">Modelo de Bolsa</a> |
</li> |
</ul> |
</div> |
</td> |
</tr> |
</tbody> |
</table> |
/impl/src/web/user/serviceZone/topnavCoursesPrograms.jsp |
---|
New file |
0,0 → 1,12 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="java.util.*"%> |
<%@ page import="jomm.web.utils.NavPlace" %> |
<%@ page import="jomm.web.utils.NavPlaceServer" %> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startServiceZone.do", "intranet.separator.service.zone.back"); |
topNav.addNavPlace(null, "course.program.courses"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/serviceZone/topnavDirectedCoordinatedCourses.jsp |
---|
New file |
0,0 → 1,12 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="java.util.*"%> |
<%@ page import="jomm.web.utils.NavPlace" %> |
<%@ page import="jomm.web.utils.NavPlaceServer" %> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.service.zone.back"); |
topNav.addNavPlace(null, "course.directed.coordinated.courses"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
/impl/src/web/user/serviceZone/serviceZone.jsp |
---|
7,6 → 7,7 |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %> |
<%@ page import="java.util.List" %> |
<%@ page import="pt.estgp.estgweb.Globals" %> |
<%@ page import="pt.estgp.estgweb.domain.CourseUnitAnnouncement" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
76,7 → 77,7 |
</li> |
</baco:isModuleOn> |
<baco:isModuleOn module="todos"> |
<baco:hasRole role="admin,super,services,administrativeCouncil,courseCoordinator,courseDirector,scientificCouncil,pedagogicCouncil"> |
<baco:hasRole role="admin,all,services,administrativeCouncil,courseCoordinator,courseDirector,scientificCouncil,pedagogicCouncil"> |
<li> |
<html:link action="/user/startSubmitTodoAnnouncementFromServiceZone"> |
<bean:message key="submit.todo.announcement"/> |
117,10 → 118,12 |
</baco:isAdmin> |
<baco:isModuleOn module="courseunits"> |
<baco:isAdmin> |
<baco:hasRole role="admin,all,services,administrativeCouncil,courseCoordinator,courseDirector,scientificCouncil,pedagogicCouncil"> |
<li> |
<bean:message key="courses"/> |
<ul> |
<baco:isAdmin> |
<li> |
<html:link action="/user/startNewCourseFromServiceZone"> |
<bean:message key="course.new"/> |
141,33 → 144,52 |
<bean:message key="courseunit.search"/> |
</html:link> |
</li> |
</baco:isAdmin> |
<%--<li>--%> |
<%--<html:link action="/user/startFindCourseUnitAdminFromServiceZone">--%> |
<%--<bean:message key="courseunit.program.archive"/>--%> |
<%--</html:link>--%> |
<%--</li>--%> |
<li> |
<baco:hasRole role="admin,all,servicesPrograms,administrativeCouncil,scientificCouncil,pedagogicCouncil"> |
<html:link action="/user/startLoadCoursesProgramsFromServiceZone"> |
<bean:message key="course.program.courses"/> |
</html:link> |
</baco:hasRole> |
</li> |
<li> |
<baco:hasRole role="courseCoordinator,courseDirector"> |
<html:link action="/user/startLoadDirectedCoordinatedCoursesFromServiceZone"> |
<bean:message key="course.program.coordinated.directed.courses"/> |
</html:link> |
</baco:hasRole> |
</li> |
</ul> |
</li> |
</baco:isAdmin> |
</baco:hasRole> |
<li> |
<bean:message key="backups"/> |
<ul> |
<baco:isAdmin> |
<li> |
<html:link target="_blank" action="/user/courseUnitControllerAdminFromServiceZone?dispatch=createCourseUnitWorksBackup"> |
<html:link action="/user/courseUnitControllerAdminFromServiceZone?dispatch=createAllCourseUnitWorksBackup"> |
<bean:message key="courseunits.backups"/> |
</html:link> |
</li> |
<li> |
<html:link action="/user/courseUnitControllerAdminFromServiceZone?dispatch=createImportYearCourseUnitWorksBackup"> |
<bean:message key="courseunits.backups.actual.year"/> |
</html:link> |
</li> |
</baco:isAdmin> |
<baco:hasRole role="student,teacher"> |
<li> |
<html:link target="_blank" action="/user/courseUnitControllerAdminFromServiceZone?dispatch=createUserAllCourseUnitWorksBackup"> |
<html:link action="/user/courseUnitControllerAdminFromServiceZone?dispatch=createUserAllCourseUnitWorksBackup"> |
<bean:message key="courseunits.all.backup"/> |
</html:link> |
</li> |
<li> |
<html:link target="_blank" action="/user/courseUnitControllerAdminFromServiceZone?dispatch=createUserCourseUnitActualYearWorksBackup"> |
<html:link action="/user/courseUnitControllerAdminFromServiceZone?dispatch=createUserCourseUnitActualYearWorksBackup"> |
<bean:message key="courseunits.actual.year.backup"/> |
</html:link> |
</li> |
234,8 → 256,18 |
%> |
<tr> |
<td> |
<a href="<%=request.getContextPath()%>/user/startLoadAnnouncementFromServiceZone.do?id=<%=a.getId()%>"><%=a.getTitle()%> |
</a></td> |
<a href="<%=request.getContextPath()%>/user/startLoadAnnouncementFromServiceZone.do?id=<%=a.getId()%>"><%=a.getTitle()%></a> |
<% |
if (a.getCourseUnitView() != null) |
{ |
%> |
(<%=a.getCourseUnitView().getName()%>) |
<% |
} |
%> |
</td> |
<td> |
<% |
String message; |
/impl/build.xml |
---|
97,6 → 97,12 |
config="file://${basedir}/${dist.dir}/estgweb.xml" |
username="${tomcat.username}" password="${tomcat.password}" /> |
</target> |
<target name="tomcat.deployContextOnly" depends=""> |
<echo message="${tomcat.manager}"/> |
<tomcat.install url="${tomcat.manager}" path="${tomcat.context.path.install}" |
config="file://${basedir}/${dist.dir}/estgweb.xml" |
username="${tomcat.username}" password="${tomcat.password}" /> |
</target> |
<target name="tomcat.redeployContext" depends="tomcat.undeploy,build.war" > |
<echo message="${tomcat.manager}"/> |
<tomcat.install url="${tomcat.manager}" path="${tomcat.context.path.install}" |
146,7 → 152,7 |
<antcall target="createConfigurationFiles"/> |
</target> |
<target name="compile" depends="initDirs" description="Compile All"> |
<javac encoding="UTF-8" source="1.5" target="1.5" destdir="${build.dir.classes}" debug="true" optimize="true" fork="true" deprecation="true" verbose="true" failonerror="true"> |
<javac encoding="UTF-8" source="1.5" target="1.5" destdir="${build.dir.classes}" debug="true" optimize="true" fork="true" failonerror="true"> |
<src path="${src.dir}"/> |
<src path="${gen.dir.java}"/> |
<classpath refid="pathToToolsLib"/> |
332,15 → 338,15 |
<mkdir dir="${build.dir.intranet.setup.folders.file}"/> |
<copy overwrite="true" todir="${build.dir.intranet.setup.folders.file}" file="${intranet.setup.folders.file.src}"/> |
<java classname="${scripts.buider.class}" classpath="${build.dir.classes}"> |
<arg value="${basedir}${file.separator}..${file.separator}common"/> |
<arg value="${basedir}${file.separator}build${file.separator}ant${file.separator}classes"/> |
<arg value="${build.dir.scripts}"/> |
<arg value="${scripts.target.libs.file}"/> |
</java> |
<copy overwrite="true" todir="${build.dir.scripts}"> |
<fileset dir="${src.scripts}" includes="*.*"/> |
</copy> |
<!--<java classname="${scripts.buider.class}" classpath="${build.dir.classes}">--> |
<!--<arg value="${basedir}${file.separator}..${file.separator}common"/>--> |
<!--<arg value="${basedir}${file.separator}build${file.separator}ant${file.separator}classes"/>--> |
<!--<arg value="${build.dir.scripts}"/>--> |
<!--<arg value="${scripts.target.libs.file}"/>--> |
<!--</java>--> |
<!--<copy overwrite="true" todir="${build.dir.scripts}">--> |
<!--<fileset dir="${src.scripts}" includes="*.*"/>--> |
<!--</copy>--> |
</target> |
378,9 → 384,9 |
<replacefilter token="@log.file@" value="${log.file}"/> |
<replacefilter token="@log.level@" value="${log.level}"/> |
</replace> |
<replace file="${build.dir.scripts}/${scripts.setenv.file}"> |
<!--<replace file="${build.dir.scripts}/${scripts.setenv.file}"> |
<replacefilter token="@tomcat.home@" value="${tomcat.home}"/> |
</replace> |
</replace>--> |
<replace file="${jdbc.properties.build}/${jdbc.properties.filename}"> |
<replacefilter token="@database.username@" value="${database.username}"/> |
<replacefilter token="@database.password@" value="${database.password}"/> |
497,5 → 503,12 |
<!--<java classname="mitra.oaiharvest.harvest.HarvestEngine" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/>--> |
<!--<java classname="mitra.oaiharvest.index.IndexEngine" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/>--> |
<!--</target>--> |
<target name="util.task.createRepositoryXML"> |
<java classname="pt.estgp.estgweb.services.data.CreateDescriptionsXML" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
<target name="util.task.reset.urlsstats"> |
<java classname="pt.estgp.estgweb.services.urlstat.ResetRelativePathsService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
</project> |