Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1040 → Rev 1070

/impl/importRoutines.xml
61,7 → 61,9
 
<!-- PONTUAIS -->
<target name="grades">
<java classname="pt.estgp.estgweb.services.sigesimports.ImportGradesService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/>
<java classname="pt.estgp.estgweb.services.sigesimports.ImportGradesService" classpath="${build.dir.classes}" classpathref="pathToToolsLib">
<arg value="201415"/>
</java>
</target>
 
<target name="setAreas">
/impl/conf/language/MessageResources.properties
160,6 → 160,7
fail.authenticate=O nome de utilizador ou a palavra passe estão errados. Por favor tente de novo.
dontexist.authenticate=O utilizador já existe na rede interna mas ainda não está disponivel no sistema BACO, por favor dirija-se ao Centro Informático.
 
top.separators=Separadores Públicos
#palavras comuns
courseunit=Unidade Curricular
grade=Nota
474,20 → 475,75
user.role.courseValidateProgramTGI=Comissão de Curso de TGI
user.role.courseValidateProgramRU=Comissão de Curso de RU
 
configuration.grades=Configuração Pautas
configuration=Configurações
configuration.directories=Configuração de Directórios
configuration.directory=Directório
directories.leaf.not.found=Nó não encontrado com o id {0}
 
directories.removed.leaf=Nó {0} removido com sucesso. Necessita de gravar as alterações para tornar a operação definitiva.
directories.add.leaf=Nó {0} adicionado com sucesso. Necessita de gravar as alterações para tornar a operação definitiva.
 
directories.remove.ask=Têm a certeza que pretende eliminar este nó -> {0}?
directories.add.right=Direito adicionado com sucesso, por favor atribua as permissões desejadas
directories.remove.right=Direito removido com sucesso ({0},{1},{2})
 
directories.add.group=Grupo Adicionado cm sucesso, atribua um descritivo
directories.remove.group=Grupo removido cm sucesso
directories.refresh=Refrescar Página
 
 
directories.confirm.save=Tem a certeza que deseja SALVAR as alterações?
directories.confirm.cancel=Tem a certeza que deseja CANCELAR as alterações?
 
directories.save=Salvar as Alterações
directories.cancel=Cancelar e reverter
directories.canceled=Operação cancelada
directories.saved=Operação salva com sucesso
 
 
##TAREFAS AGENDADAS
 
configuration.tasks=Tarefas Agendadas
configuration.task=Tarefa Agendada
configuration.task.weekly=Semanalmente
configuration.task.monthly=Mensalmente
configuration.task.dally=Diariamente
configuration.task.hour=Hora
configuration.task.minute=Minuto
configuration.task.second=Segundo
configuration.task.weekday=Dia da semana
configuration.task.monthday=Dia do Mês
configuration.task.now=Agendar para correr agora
 
configuration.task.records=Registos de Tarefas Agendadas
configuration.task.log=Ficheiro de Registo
configuration.task.progress=Progresso
 
configuration.task.PENDING=Hora
configuration.task.STARTED=Iniciada
configuration.task.FINISHED=Terminada
configuration.task.FAILED=Falhada
configuration.task.UNKNOWN_ERROR=Terminada com erro desconhecido
 
targetService.pt.estgp.estgweb.services.sigesimports.ImportTeachersService=Importação de Professores
targetService.pt.estgp.estgweb.services.sigesimports.ImportStudentsService=Importação de Alunos
targetService.pt.estgp.estgweb.services.sigesimports.ImportSummariesJson=Importação de Sumários
targetService.pt.estgp.estgweb.services.sigesimports.ImportGradesService=Importação de Notas
targetService.pt.estgp.estgweb.services.sigesimports.ImportCourseService=Importação de Cursos
targetService.pt.estgp.estgweb.services.sigesimports.SincronizeLastYearCourseUnitProgramsService=Clonagem de Fichas Curriculares
 
weekday.Mon=Segundas
weekday.Tue=Terças
weekday.Wed=Quartas
weekday.Thu=Quintas
weekday.Fri=Sextas
weekday.Sat=Sabados
weekday.Sun=Domingos
 
monthday.day=ao dia
weekday.day=às
day.time=às
 
 
 
509,3 → 565,21
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/impl/conf/language/MessageResourcesCourseUnits.properties
6,6 → 6,7
module.CourseUnits=Unidades Curriculares
course={0} &gt
courseunit={0}
course.unit=Unidade Curricular
 
course.nav.without.arrow={0}
courseunit.security.not.implemented=N\u00e3o implementado por raz\u00f5es de seguran\u00e7a
/impl/conf/WEB-INF/struts/struts-configuration.xml
New file
0,0 → 1,73
<?xml version="1.0" encoding="UTF-8"?>
 
<!--<!DOCTYPE struts-config PUBLIC-->
<!--"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"-->
<!--"http://struts.apache.org/dtds/struts-config_1_3.dtd">-->
 
<struts-config>
<form-beans>
<form-bean type="pt.estgp.estgweb.web.form.configuration.ConfigurationGradesForm" name="ConfigurationGradesForm"/>
<form-bean type="pt.estgp.estgweb.web.form.configuration.DirectoriesForm" name="DirectoriesForm"/>
<form-bean type="pt.estgp.estgweb.web.form.configuration.SchedulleTasksForm" name="SchedulleTasksForm"/>
</form-beans>
 
<global-exceptions>
 
</global-exceptions>
 
<global-forwards>
 
</global-forwards>
<action-mappings>
 
 
 
<action path="/user/configurationGrades" forward="page.configuration.grades"/>
 
<action path="/user/grades"
type="pt.estgp.estgweb.web.controllers.configuration.GradesController"
name="ConfigurationGradesForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.separators.serviceZone">
 
<forward name="save" path="page.separators.serviceZone"/>
<forward name="grades" path="page.configuration.grades"/>
</action>
 
 
<action path="/user/configurationDirectories" forward="page.configuration.directories"/>
<action path="/user/configurationDirectory" forward="page.configuration.directory"/>
 
<action path="/user/configurationDir"
type="pt.estgp.estgweb.web.controllers.configuration.DirectoriesController"
name="DirectoriesForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.separators.serviceZone">
 
<forward name="save" path="page.separators.serviceZone"/>
<forward name="directory" path="page.configuration.directory"/>
<forward name="directories" path="page.configuration.directories"/>
</action>
 
 
<action path="/user/configurationSchedulleTasks" forward="page.configuration.tasks"/>
 
<action path="/user/configurationTasks"
type="pt.estgp.estgweb.web.controllers.configuration.SchedulerTasksController"
name="SchedulleTasksForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.separators.serviceZone">
 
<forward name="save" path="page.separators.serviceZone"/>
<forward name="tasks" path="page.configuration.tasks"/>
<forward name="task" path="page.configuration.task"/>
</action>
 
</action-mappings>
</struts-config>
Property changes:
Added: svn:executable
+ *
/impl/conf/WEB-INF/struts/tiles-configuration.xml
New file
0,0 → 1,41
<?xml version="1.0" encoding="UTF-8" ?>
 
<!--<!DOCTYPE tiles-definitions PUBLIC-->
<!--"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"-->
<!--"http://struts.apache.org/dtds/tiles-config_1_1.dtd">-->
 
<tiles-definitions>
 
<definition name="page.configuration.grades" extends="page.separators.serviceZone">
<put name="title" value="Configuração Notas"/>
<put name="topnav" value="/user/serviceZone/topnavConfigurationGrades.jsp"/>
<put name="body" value="/admin/configuration/grades.jsp"/>
</definition>
 
 
<definition name="page.configuration.directories" extends="page.separators.serviceZone">
<put name="title" value="Configuração Directorios"/>
<put name="topnav" value="/user/serviceZone/topnavConfigurationDirectories.jsp"/>
<put name="body" value="/admin/configuration/directories.jsp"/>
</definition>
 
<definition name="page.configuration.directory" extends="page.separators.serviceZone">
<put name="title" value="Directório"/>
<put name="topnav" value="/user/serviceZone/topnavConfigurationDirectory.jsp"/>
<put name="body" value="/admin/configuration/directory.jsp"/>
</definition>
 
<definition name="page.configuration.tasks" extends="page.separators.serviceZone">
<put name="title" value="Tarefas Agendadas"/>
<put name="topnav" value="/user/serviceZone/topnavConfigurationTasks.jsp"/>
<put name="body" value="/admin/configuration/tasks.jsp"/>
</definition>
 
<definition name="page.configuration.task" extends="page.separators.serviceZone">
<put name="title" value="Tarefa Agendada"/>
<put name="topnav" value="/user/serviceZone/topnavConfigurationTask.jsp"/>
<put name="body" value="/admin/configuration/task.jsp"/>
</definition>
 
</tiles-definitions>
Property changes:
Added: svn:executable
+ *
/impl/conf/WEB-INF/struts/struts-default.xml
210,7 → 210,8
/WEB-INF/struts/tiles-srusource.xml,
/WEB-INF/struts/tiles-survey.xml,
/WEB-INF/struts/tiles-processes.xml,
/WEB-INF/struts/tiles-comunicationfolder.xml"/> <!-- Duarte Santos -->
/WEB-INF/struts/tiles-comunicationfolder.xml,
/WEB-INF/struts/tiles-configuration.xml"/> <!-- Duarte Santos -->
</plug-in>
 
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
/impl/conf/WEB-INF/web.xml
165,7 → 165,8
/WEB-INF/struts/struts-srusource.xml,
/WEB-INF/struts/struts-survey.xml, <!-- Duarte Santos -->
/WEB-INF/struts/struts-comunicationfolder.xml,
/WEB-INF/struts/struts-processes.xml
/WEB-INF/struts/struts-processes.xml,
/WEB-INF/struts/struts-configuration.xml
</param-value>
</init-param>
<init-param>
/impl/conf/app.properties
10,6 → 10,7
user.session.timeout.minutes=60
site.url=@site.url@
 
#USAR APENAS ESTES DOIS EMAILS NAO DA PARA MAIS
admin.email=ci@estgp.pt
admin.email.2=jmachado@estgp.pt
 
55,7 → 56,7
email.courseunit.blogpost.subject.pt={0}: {1} (ESTG)
email.courseunit.blogpost.subject.en={0}: {1} (ESTG)
 
email.new.grades=true
email.new.grades=false
email.courseunit.announcements=true
email.courseunit.blogs=true
 
126,6 → 127,8
server.ionline.start.path=
ionline.pass=baco
ionline.user=Baco_web
ionline.use.default.credentials.to.updates.and.deletes=false
ionline.use.default.credentials.to.read=false
##ESTA CONFIGURACAO ESTA FUNCIONAL
## Ver nos Ficheiros FtpService metodo run
## Ver LayoutController
137,14 → 140,15
## Todos o sistema de ficheiros tem codigo espalhado das classes FTPServer e FTPClient
## Para se conseguir isolar o sistema deste código tem de se fazer um nivel de abstracao
## e remover todos o código de FTPServer e FTPClient
ionline.use.default.credentials.to.updates.and.deletes=false
 
server.grupos=ftp://ftppublic:ftppublic@w2.estgp.pt
 
server.grupos=ftp://w2.estgp.pt
server.grupos.start.path=/grupos
grupos.pass=ftppublic
grupos.user=ftppublic
grupos.use.default.credentials.to.read=true
grupos.use.default.credentials.to.updates.and.deletes=false
 
 
server.estgp.start.path=
server.estgp=http://localhost:9090/static
estgp.encoding=UTF-8
/impl/conf/template/email/GradeUnit.txt
3,4 → 3,4
# 0: Unidade
# 1: Nota
##################################################
{0}:{1};
{0} {1} {2} {3}
/impl/conf/directories/futureStudent.xml
1,82 → 1,87
<?xml version="1.0" encoding="UTF-8"?>
<directory label="Futuros Alunos" place="home" layout="layout0" layoutRoot="layoutPortal" targetRole="futureStudent" id="futureStudent" menuKey="menu.futuroAlunos" style="style1.xsl" xmlns="http://www.estgp.pt/baco/directory/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.estgp.pt/baco/directory/directory.xsd">
 
<directory label="Futuros Alunos" place="home" layout="layout0" layoutRoot="layoutPortal" targetRole="futureStudent" id="futureStudent" menuKey="menu.futuroAlunos" style="style1.xsl" xmlns="http://www.estgp.pt/baco/directory/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.estgp.pt/baco/directory/ directory.xsd">
<groupsDeclaration>
<group>1</group>
<group>2</group>
<group>
<name>1</name>
<description>1</description>
</group>
<group>
<name>2</name>
<description>2</description>
</group>
</groupsDeclaration>
<node label="A ESTG" id="ESTG" group="1">
<leaf absolute="false" url="/pagina.php?nome_id=MensagemDirector" proxy="conteudos" id="estgDirector" label="Mensagem do Director"></leaf>
<leaf absolute="false" url="/public/portal/estgComoChegarEstg.html" proxy="estgp" id="estgChegar" label="Como Chegar à ESTG"></leaf>
<leaf absolute="false" url="/public/portal/estgPassado.html" proxy="estgp" id="estgPassado" label="O nosso Passado"></leaf>
<leaf absolute="false" url="/public/portal/estgPresente.html" proxy="estgp" id="estgPresente" label="O Presente"></leaf>
<leaf absolute="false" url="/public/portal/estgEdificio.html" proxy="estgp" id="estgCidade" label="O Edifício"></leaf>
<leaf absolute="false" url="/public/portal/estgMissao.html" proxy="estgp" id="estgMissao" label="Missao"></leaf>
<leaf absolute="false" url="/public/portal/estgFotos.html" proxy="estgp" id="estgFotos" label="Fotografias"></leaf>
</node>
<node label="Serviços on-line" id="servicosOnLine" group="1">
<leaf absolute="true" url="http://mail.estgp.pt/exchange/" proxy="estgp" id="servWebmail" label="Webmail"></leaf>
<leaf absolute="false" url="/public/portal/servicosEduroam.html" proxy="estgp" id="servEduroam" label="Eduroam"></leaf>
<leaf absolute="false" url="/public/portal/servicosSecretaria.html" proxy="estgp" id="servSecretaria" label="Secretaria"></leaf>
<leaf absolute="true" url="http://netpa.ipportalegre.pt/" proxy="estgp" id="servAcademicosOnline" label="Académicos online"></leaf>
<leaf absolute="false" url="/public/portal/servicosGabineteComunicacao.html" proxy="estgp" id="servGabinetedeComunicacao" label="Gabinete de Comunicação"></leaf>
<leaf absolute="false" url="/public/portal/servicosRegie.html" proxy="estgp" id="servRegie" label="Régie"></leaf>
<leaf absolute="false" url="/public/portal/servicosCentroInformatico.html" proxy="estgp" id="servCentroInformatico" label="Centro Informático"></leaf>
</node>
<node label="Contactos" id="contactos" group="2">
<leaf absolute="false" url="/public/portal/contactosGeraisEstg.html" proxy="estgp" id="contGerais" label="Gerais ESTG"></leaf>
<leaf absolute="false" url="/public/portal/contactosDepartamentos.html" proxy="estgp" id="contDep" label="Departamentos"></leaf>
<leaf absolute="false" url="/public/portal/contactosSecretaria.html" proxy="estgp" id="contSecretaria" label="Secretaria"></leaf>
<leaf absolute="false" url="/public/portal/contactosCentroInformatico.html" proxy="estgp" id="contCentroInformatico" label="Centro Informático"></leaf>
<leaf absolute="false" url="/public/portal/contactosGabineteComunicacao.html" proxy="estgp" id="contGabinetedeComunicacao" label="Gabinete de Comunicação"></leaf>
</node>
<node label="Biblioteca" id="biblioteca" group="1">
<leaf absolute="false" url="/public/portal/servicosBibliotecaApresentacao.html" proxy="estgp" id="servBiblioteca" label="Apresentação"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaServicos.html" proxy="estgp" id="servBibliotecaServ" label="Serviços"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaColeccoes.html" proxy="estgp" id="servBibliotecaColeccoes" label="Colecções"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaPublico.html" proxy="estgp" id="servBibliotecaPublico" label="Público"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaCatalogos.html" proxy="estgp" id="servBibliotecaCatalogos" label="Catálogos"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaRegulamento.html" proxy="estgp" id="servBiblioteRegulamento" label="Regulamento"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaContactos.html" proxy="estgp" id="servBibliotecaContactos" label="Contactos e Horários"></leaf>
</node>
<node label="PALV Erasmus" id="PALVErasmus" group="2">
<leaf absolute="false" url="/public/portal/PALVErasmusAlunosEstrangeirosESTG.html" proxy="estgp" id="PALVErasmusAlunosEstrangeiros" label="Os Alunos Estrangeiros na ESTG"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusAlunosESTGEstrangeiro.html" proxy="estgp" id="PALVErasmusEstrangeiroAlunos" label="Os Alunos da ESTG no Estrangeiro"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusObjectivos.html" proxy="estgp" id="PALVErasmusObjectivos" label="Objectivos"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusPaises.html" proxy="estgp" id="PALVErasmusPaises" label="Países Participantes"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusProgramaErasmus.html" proxy="estgp" id="PALVErasmusProgramaErasmus" label="Programa Sectorial - Erasmus"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusActividadesElegiveis.html" proxy="estgp" id="PALVErasmusActividadesElegiveis" label="Actividades Elegiveis"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusMobilidadeEstudantes.html" proxy="estgp" id="PALVErasmusMobilidadeEstudantes" label="Mobilidade Estudantes"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusParceirosESTG.html" proxy="estgp" id="PALVErasmusParceiros" label="Parceiros"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusFormularioEstudantes.html" proxy="estgp" id="PALVErasmusFomularioEstudantes" label="Formulários Estudantes"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusContactos.html" proxy="estgp" id="PALVErasmusContactos" label="Contactos"></leaf>
</node>
<node label="Orgãos de Gestão" id="OrgaosGestao" group="1">
<leaf absolute="false" url="/public/portal/orgaoDirector.html" proxy="estgp" id="orgaosDirector" label="Director"></leaf>
<leaf node="true" label="A ESTG" id="ESTG" group="1">
<leaf node="false" absolute="false" url="/pagina.php?nome_id=MensagemDirector" proxy="conteudos" id="estgDirector" label="Mensagem do Director"></leaf>
<leaf node="false" absolute="false" url="/public/portal/estgComoChegarEstg.html" proxy="estgp" id="estgChegar" label="Como Chegar à ESTG"></leaf>
<leaf node="false" absolute="false" url="/public/portal/estgPassado.html" proxy="estgp" id="estgPassado" label="O nosso Passado"></leaf>
<leaf node="false" absolute="false" url="/public/portal/estgPresente.html" proxy="estgp" id="estgPresente" label="O Presente"></leaf>
<leaf node="false" absolute="false" url="/public/portal/estgEdificio.html" proxy="estgp" id="estgCidade" label="O Edifício"></leaf>
<leaf node="false" absolute="false" url="/public/portal/estgMissao.html" proxy="estgp" id="estgMissao" label="Missao"></leaf>
<leaf node="false" absolute="false" url="/public/portal/estgFotos.html" proxy="estgp" id="estgFotos" label="Fotografias"></leaf>
</leaf>
<leaf node="true" label="Serviços on-line" id="servicosOnLine" group="1">
<leaf node="false" absolute="true" url="http://mail.estgp.pt/exchange/" proxy="estgp" id="servWebmail" label="Webmail"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosEduroam.html" proxy="estgp" id="servEduroam" label="Eduroam"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosSecretaria.html" proxy="estgp" id="servSecretaria" label="Secretaria"></leaf>
<leaf node="false" absolute="true" url="http://netpa.ipportalegre.pt/" proxy="estgp" id="servAcademicosOnline" label="Académicos online"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosGabineteComunicacao.html" proxy="estgp" id="servGabinetedeComunicacao" label="Gabinete de Comunicação"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosRegie.html" proxy="estgp" id="servRegie" label="Régie"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosCentroInformatico.html" proxy="estgp" id="servCentroInformatico" label="Centro Informático"></leaf>
</leaf>
<leaf node="true" label="Contactos" id="contactos" group="2">
<leaf node="false" absolute="false" url="/public/portal/contactosGeraisEstg.html" proxy="estgp" id="contGerais" label="Gerais ESTG"></leaf>
<leaf node="false" absolute="false" url="/public/portal/contactosDepartamentos.html" proxy="estgp" id="contDep" label="Departamentos"></leaf>
<leaf node="false" absolute="false" url="/public/portal/contactosSecretaria.html" proxy="estgp" id="contSecretaria" label="Secretaria"></leaf>
<leaf node="false" absolute="false" url="/public/portal/contactosCentroInformatico.html" proxy="estgp" id="contCentroInformatico" label="Centro Informático"></leaf>
<leaf node="false" absolute="false" url="/public/portal/contactosGabineteComunicacao.html" proxy="estgp" id="contGabinetedeComunicacao" label="Gabinete de Comunicação"></leaf>
</leaf>
<leaf node="true" label="Biblioteca" id="biblioteca" group="1">
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaApresentacao.html" proxy="estgp" id="servBiblioteca" label="Apresentação"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaServicos.html" proxy="estgp" id="servBibliotecaServ" label="Serviços"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaColeccoes.html" proxy="estgp" id="servBibliotecaColeccoes" label="Colecções"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaPublico.html" proxy="estgp" id="servBibliotecaPublico" label="Público"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaCatalogos.html" proxy="estgp" id="servBibliotecaCatalogos" label="Catálogos"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaRegulamento.html" proxy="estgp" id="servBiblioteRegulamento" label="Regulamento"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaContactos.html" proxy="estgp" id="servBibliotecaContactos" label="Contactos e Horários"></leaf>
</leaf>
<leaf node="true" label="PALV Erasmus" id="PALVErasmus" group="2">
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusAlunosEstrangeirosESTG.html" proxy="estgp" id="PALVErasmusAlunosEstrangeiros" label="Os Alunos Estrangeiros na ESTG"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusAlunosESTGEstrangeiro.html" proxy="estgp" id="PALVErasmusEstrangeiroAlunos" label="Os Alunos da ESTG no Estrangeiro"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusObjectivos.html" proxy="estgp" id="PALVErasmusObjectivos" label="Objectivos"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusPaises.html" proxy="estgp" id="PALVErasmusPaises" label="Países Participantes"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusProgramaErasmus.html" proxy="estgp" id="PALVErasmusProgramaErasmus" label="Programa Sectorial - Erasmus"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusActividadesElegiveis.html" proxy="estgp" id="PALVErasmusActividadesElegiveis" label="Actividades Elegiveis"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusMobilidadeEstudantes.html" proxy="estgp" id="PALVErasmusMobilidadeEstudantes" label="Mobilidade Estudantes"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusParceirosESTG.html" proxy="estgp" id="PALVErasmusParceiros" label="Parceiros"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusFormularioEstudantes.html" proxy="estgp" id="PALVErasmusFomularioEstudantes" label="Formulários Estudantes"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusContactos.html" proxy="estgp" id="PALVErasmusContactos" label="Contactos"></leaf>
</leaf>
<leaf node="true" label="Orgãos de Gestão" id="OrgaosGestao" group="1">
<leaf node="false" absolute="false" url="/public/portal/orgaoDirector.html" proxy="estgp" id="orgaosDirector" label="Director"></leaf>
 
<leaf absolute="false" url="/public/portal/orgaosConselhoTecnicoCientifico.html" proxy="estgp" id="orgaosConselhoTecnicoCientifico" label="Conselho Técnico Científico"></leaf>
<leaf absolute="false" url="/Conselho.Tecnico.Cientifico.Externo" proxy="grupos" id="pastaConselhoTecnicoCientificoExterna" label=" -----> Documentação CTC" remoteExtensionRoot="true" style="true" layout="true" />
<leaf absolute="false" url="/public/portal/orgaosConselhoPedagogico.html" proxy="estgp" id="orgaosConselhoPedagogico" label="Conselho Pedagógico"></leaf>
<leaf absolute="false" url="/Conselho.Pedagogico.Externo" proxy="grupos" id="pastaConselhoPegagogicoExterna" label=" -----> Documentação CP" remoteExtensionRoot="true" style="true" layout="true" />
<leaf absolute="false" url="/public/portal/orgaosConselhoRepresentantes.html" proxy="estgp" id="orgaosConselhoRepresentantes" label="Conselho Representantes"></leaf>
<leaf absolute="false" url="/Conselho.Representantes.Externo" proxy="grupos" id="pastaConselhoRepresentantesExterna" label=" -----> Documentação CR" remoteExtensionRoot="true" style="true" layout="true" />
<leaf node="false" absolute="false" url="/public/portal/orgaosConselhoTecnicoCientifico.html" proxy="estgp" id="orgaosConselhoTecnicoCientifico" label="Conselho Técnico Científico"></leaf>
<leaf node="false" absolute="false" url="/Conselho.Tecnico.Cientifico.Externo" proxy="grupos" id="pastaConselhoTecnicoCientificoExterna" label=" -----> Documentação CTC" remoteExtensionRoot="true" style="true" layout="true" />
<leaf node="false" absolute="false" url="/public/portal/orgaosConselhoPedagogico.html" proxy="estgp" id="orgaosConselhoPedagogico" label="Conselho Pedagógico"></leaf>
<leaf node="false" absolute="false" url="/Conselho.Pedagogico.Externo" proxy="grupos" id="pastaConselhoPegagogicoExterna" label=" -----> Documentação CP" remoteExtensionRoot="true" style="true" layout="true" />
<leaf node="false" absolute="false" url="/public/portal/orgaosConselhoRepresentantes.html" proxy="estgp" id="orgaosConselhoRepresentantes" label="Conselho Representantes"></leaf>
<leaf node="false" absolute="false" url="/Conselho.Representantes.Externo" proxy="grupos" id="pastaConselhoRepresentantesExterna" label=" -----> Documentação CR" remoteExtensionRoot="true" style="true" layout="true" />
 
 
<leaf absolute="false" url="/public/portal/orgaosConselhoGestao.html" proxy="estgp" id="orgaosConselhogestao" label="Conselho de Gestão"></leaf>
<leaf absolute="false" url="/public/portal/orgaosConselhoInterdepartamental.html" proxy="estgp" id="orgaosConselhoDepartamental" label="Conselho Departamental"></leaf>
</node>
<node label="Informação Académica" id="infoAcademica" group="2">
<leaf absolute="true" url="http://baco.estgp.pt/dir/student/infoAcademica/infoAcadCalendarioEscolar/public/portal/CL20102011.pdf" proxy="estgp" id="infoAcadCalendarioEscolar" label="Calendário Escolar"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/courses.do?type=L" proxy="estgp" id="infoAcadLicenciaturas" label="Licenciaturas"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/courses.do?type=M" proxy="estgp" id="infoAcadMestrados" label="Mestrados"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/courses.do?type=P" proxy="estgp" id="infoAcadPgraduacoes" label="Pós-Graduações"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/courses.do?type=E" proxy="estgp" id="infoAcadCET" label="CET"></leaf>
</node>
<node label="O IPP" id="IPP" group="2">
<leaf absolute="true" url="http://www.ipportalegre.pt/" proxy="estgp" id="ippIPP" label="IPP Serviços Centrais"></leaf>
<leaf absolute="true" url="http://www.esep.pt/" proxy="estgp" id="ippESEP" label="Esc. Sup. de Educação"></leaf>
<leaf absolute="true" url="http://www.esaelvas.pt/" proxy="estgp" id="ippESAE" label="Esc. Sup. Agrária"></leaf>
<leaf absolute="true" url="http://www.essp.pt/" proxy="estgp" id="ippESSP" label="Esc. Sup. de Saúde"></leaf>
<leaf absolute="true" url="http://www.ipportalegre.pt/sas/" proxy="estgp" id="ippSAS" label="Serviços de Acção Social"></leaf>
</node>
<leaf node="false" absolute="false" url="/public/portal/orgaosConselhoGestao.html" proxy="estgp" id="orgaosConselhogestao" label="Conselho de Gestão"></leaf>
<leaf node="false" absolute="false" url="/public/portal/orgaosConselhoInterdepartamental.html" proxy="estgp" id="orgaosConselhoDepartamental" label="Conselho Departamental"></leaf>
</leaf>
<leaf node="true" label="Informação Académica" id="infoAcademica" group="2">
<leaf node="false" absolute="true" url="http://baco.estgp.pt/dir/student/infoAcademica/infoAcadCalendarioEscolar/public/portal/CL20102011.pdf" proxy="estgp" id="infoAcadCalendarioEscolar" label="Calendário Escolar"></leaf>
<leaf node="false" absolute="true" url="http://baco.estgp.pt/courses.do?type=L" proxy="estgp" id="infoAcadLicenciaturas" label="Licenciaturas"></leaf>
<leaf node="false" absolute="true" url="http://baco.estgp.pt/courses.do?type=M" proxy="estgp" id="infoAcadMestrados" label="Mestrados"></leaf>
<leaf node="false" absolute="true" url="http://baco.estgp.pt/courses.do?type=P" proxy="estgp" id="infoAcadPgraduacoes" label="Pós-Graduações"></leaf>
<leaf node="false" absolute="true" url="http://baco.estgp.pt/courses.do?type=E" proxy="estgp" id="infoAcadCET" label="CET"></leaf>
</leaf>
<leaf node="true" label="O IPP" id="IPP" group="2">
<leaf node="false" absolute="true" url="http://www.ipportalegre.pt/" proxy="estgp" id="ippIPP" label="IPP Serviços Centrais"></leaf>
<leaf node="false" absolute="true" url="http://www.esep.pt/" proxy="estgp" id="ippESEP" label="Esc. Sup. de Educação"></leaf>
<leaf node="false" absolute="true" url="http://www.esaelvas.pt/" proxy="estgp" id="ippESAE" label="Esc. Sup. Agrária"></leaf>
<leaf node="false" absolute="true" url="http://www.essp.pt/" proxy="estgp" id="ippESSP" label="Esc. Sup. de Saúde"></leaf>
<leaf node="false" absolute="true" url="http://www.ipportalegre.pt/sas/" proxy="estgp" id="ippSAS" label="Serviços de Acção Social"></leaf>
</leaf>
</directory>
/impl/conf/directories/directory.xsd
1,6 → 1,8
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2008 rel. 2 sp2 (http://www.altova.com) by Jorge Machado (Escola Superior de tecnologia e Gestao, Portalegre) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.estgp.pt/baco/directory/" targetNamespace="http://www.estgp.pt/baco/directory/" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.estgp.pt/baco/directory/"
xmlns:xsl="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.estgp.pt/baco/directory/"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="directory">
<xs:annotation>
<xs:documentation>This schema is to define information structured directories</xs:documentation>
8,14 → 10,13
<xs:complexType>
<xs:sequence>
<xs:element name="groupsDeclaration" type="groupDeclarationT" minOccurs="0"/>
<xs:choice maxOccurs="unbounded">
<xs:element name="node" type="nodeT"/>
<xs:element name="leaf" type="leafT"/>
</xs:choice>
<xs:element name="leaf" type="leafT" maxOccurs="unbounded"/>
<xs:element name="rights" type="rightsT" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="label" use="required"/>
<xs:attribute name="label_en" use="optional"/>
<xs:attribute name="label_es" use="optional"/>
<xs:attribute name="place" use="required"/>
<xs:attribute name="style" use="required"/>
<xs:attribute name="layout" use="required"/>
30,13 → 31,12
</xs:annotation>
<xs:sequence>
<xs:element name="groupsDeclaration" type="groupDeclarationT" minOccurs="0"/>
<xs:choice maxOccurs="unbounded">
<xs:element name="node" type="nodeT"/>
<xs:element name="leaf" type="leafT"/>
</xs:choice>
<xs:element name="leaf" type="leafT" maxOccurs="unbounded"/>
<xs:element name="rights" type="rightsT" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="label" use="required"/>
<xs:attribute name="label" use="required"/>
<xs:attribute name="label_en" use="optional"/>
<xs:attribute name="label_es" use="optional"/>
<xs:attribute name="group" use="optional">
<xs:annotation>
<xs:documentation>Grouping purposes in styling</xs:documentation>
65,18 → 65,19
<xs:documentation>A leaf is an URL for an external or internal WEB site</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>A leaf can be a root of some diferent system like FTP server Directory</xs:documentation>
</xs:annotation>
<xs:element name="node" type="nodeT"/>
<xs:element name="leaf" type="leafT"/>
</xs:choice>
<xs:annotation>
<xs:documentation>A leaf can be a root of some diferent system like FTP server Directory</xs:documentation>
</xs:annotation>
<xs:element name="groupsDeclaration" type="groupDeclarationT" minOccurs="0"/>
<xs:element name="leaf" type="leafT" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="rights" type="rightsT" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="url" type="xs:string" use="required"/>
<xs:attribute name="node" type="xs:boolean" use="optional"/>
<xs:attribute name="url" type="xs:string" use="optional"/>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="label" use="required"/>
<xs:attribute name="label_en" use="optional"/>
<xs:attribute name="label_es" use="optional"/>
<xs:attribute name="xml" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>False by default</xs:documentation>
93,7 → 94,7
When style=false and layout=false external file will be directly writed in TopWindow</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="absolute" type="xs:boolean" use="required">
<xs:attribute name="absolute" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>follow parameter will be evaluated only If this parameter is set to false</xs:documentation>
</xs:annotation>
139,11 → 140,36
</xs:restriction>
</xs:simpleType>
</xs:attribute>
 
<!-- NODE ATTRIBUTES -->
<xs:attribute name="showNav" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>Show link to this node in navigation menus, true by default</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" use="optional">
<xs:annotation>
<xs:documentation>Type of node, by default HTTP link</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="ftp"/>
<xs:enumeration value="http"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="groupDeclarationT">
<xs:sequence>
<xs:element name="group" maxOccurs="unbounded"/>
<xs:element name="group" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="description" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="rightsT">
151,24 → 177,34
<xs:documentation>Rights define who is authorized to enter in a node</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="role" type="rightT1"/>
<xs:element name="user" type="rightT1"/>
</xs:choice>
 
<xs:element name="right" maxOccurs="unbounded">
<xs:complexType >
<xs:annotation>
<xs:documentation>A right T1 can be to permit or restrict</xs:documentation>
</xs:annotation>
<xs:attribute name="target" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="user"/>
<xs:enumeration value="role"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="permit"/>
<xs:enumeration value="restrict"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="name" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
 
<xs:element name="internal" type="xs:boolean" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="rightT1" mixed="true">
<xs:annotation>
<xs:documentation>A right T1 can be to permit or restrict</xs:documentation>
</xs:annotation>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="permit"/>
<xs:enumeration value="restrict"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
 
</xs:schema>
/impl/conf/directories/styleMapaDir.xsl
13,11 → 13,11
<td>ULR</td>
<td width="20%">NOTAS</td>
</tr>
<xsl:for-each select="//d:node">
<xsl:for-each select="//d:leaf[@node='true']">
<tr>
<td colspan="4" style="background-color:#aaaaaa"><xsl:value-of select="@label"/></td>
</tr>
<xsl:for-each select="./d:leaf">
<xsl:for-each select="./d:leaf[@node='false']">
<tr>
<td><xsl:text>-&gt;</xsl:text><xsl:value-of select="@label"/></td>
<td>
/impl/conf/directories/utilsIntranet.xml
1,22 → 1,23
<?xml version="1.0" encoding="UTF-8"?>
<directory place="intranetUtils" label="Utilitários" layout="layoutIntranetUtils" layoutRoot="layoutIntranetUtils" targetRole="student" id="utilsIntranet" menuKey="intranet.separator.utils" style="styleIntranet.xsl" xmlns="http://www.estgp.pt/baco/directory/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.estgp.pt/baco/directory/ directory.xsd">
<leaf absolute="false" label="Home Utilitários" layout="true" proxy="estgp" id="utils" url="/intranet/escola/utils.html"/>
<leaf absolute="false" label="Secretaria" layout="true" proxy="estgp" id="secretaria" url="/intranet/escola/secretaria.html">
<leaf absolute="false" label="Documentos de Apoio" layout="true" proxy="estgp" id="documentosApoio" url="/intranet/escola/secretaria/documentosApoio.html"/>
<leaf absolute="false" label="Formulários [alunos]" layout="true" proxy="estgp" id="Forms.Alunos" url="/intranet/escola/secretaria/formulariosAlunos.html"/>
<leaf absolute="false" label="Legislação" layout="true" proxy="estgp" id="legislacao" url="/intranet/escola/secretaria/legislacao.html"/>
<leaf label="Folhas de Presenças" id="Folhas.Presencas" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Intranet/Escola/Secretaria/Folhas.Presencas"/>
<leaf label="Projetos-AA,CA,GE,MKT" id="Projectos.Finais" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Intranet/Escola/Secretaria/Projectos.Finais"/>
<leaf label="Atas" id="Actas" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Actas"/>
<leaf node="false" absolute="false" label="Home Utilitários" layout="true" proxy="estgp" id="utils" url="/intranet/escola/utils.html"/>
<leaf node="false" absolute="false" label="Secretaria" layout="true" proxy="estgp" id="secretaria" url="/intranet/escola/secretaria.html">
<leaf node="false" absolute="false" label="Documentos de Apoio" layout="true" proxy="estgp" id="documentosApoio" url="/intranet/escola/secretaria/documentosApoio.html"/>
<leaf node="false" absolute="false" label="Formulários [alunos]" layout="true" proxy="estgp" id="Forms.Alunos" url="/intranet/escola/secretaria/formulariosAlunos.html"/>
<leaf node="false" absolute="false" label="Legislação" layout="true" proxy="estgp" id="legislacao" url="/intranet/escola/secretaria/legislacao.html"/>
<leaf node="false" label="Folhas de Presenças" id="Folhas.Presencas" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Intranet/Escola/Secretaria/Folhas.Presencas"/>
<leaf node="false" label="Projetos-AA,CA,GE,MKT" id="Projectos.Finais" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Intranet/Escola/Secretaria/Projectos.Finais"/>
<leaf node="false" label="Atas" id="Actas" absolute="false" remoteExtensionRoot="true" style="true" proxy="ionline" layout="true" url="/Actas"/>
</leaf>
<leaf absolute="false" label="Horários" layout="true" proxy="estgp" id="horarios" url="/intranet/escola/horarios.html">
<leaf absolute="false" label="Horários de CET" layout="true" proxy="estgp" id="horariosCet" url="/intranet/escola/horarios_cets.html"/>
<leaf absolute="false" label="Horários de Licenciaturas" layout="true" proxy="estgp" id="horariosLicenciaturas" url="/intranet/escola/horarios_licenciaturas.html"/>
<leaf absolute="false" label="Horários de Mestrados" layout="true" proxy="estgp" id="horariosMestrados" url="/intranet/escola/horarios_mestrados.html"/>
<leaf absolute="false" label="Horários de Docentes" layout="true" proxy="estgp" id="horariosDocentes" url="/intranet/escola/horarios_Docentes.html"/>
<leaf absolute="false" label="Horários de Salas" layout="true" proxy="estgp" id="horariosSalas" url="/intranet/escola/horarios_salas.html"/>
<leaf node="false" absolute="false" label="Horários" layout="true" proxy="estgp" id="horarios" url="/intranet/escola/horarios.html">
<leaf node="false" absolute="false" label="Horários de CTeSP" layout="true" proxy="estgp" id="horariosCTeSP" url="/intranet/escola/horarios_ctesp.html"/>
<leaf node="false" absolute="false" label="Horários de CET" layout="true" proxy="estgp" id="horariosCet" url="/intranet/escola/horarios_cets.html"/>
<leaf node="false" absolute="false" label="Horários de Licenciaturas" layout="true" proxy="estgp" id="horariosLicenciaturas" url="/intranet/escola/horarios_licenciaturas.html"/>
<leaf node="false" absolute="false" label="Horários de Mestrados" layout="true" proxy="estgp" id="horariosMestrados" url="/intranet/escola/horarios_mestrados.html"/>
<leaf node="false" absolute="false" label="Horários de Docentes" layout="true" proxy="estgp" id="horariosDocentes" url="/intranet/escola/horarios_Docentes.html"/>
<leaf node="false" absolute="false" label="Horários de Salas" layout="true" proxy="estgp" id="horariosSalas" url="/intranet/escola/horarios_salas.html"/>
</leaf>
<leaf label="Calendário Escolar" id="calEscolar" absolute="false" url="/public/portal/CL20102011.pdf" layout="false" proxy="estgp"/>
<leaf absolute="false" label="Calendário de Exames" layout="true" proxy="estgp" id="exames" url="/intranet/escola/Exames.html"/>
<leaf absolute="false" label="Centro Informático" layout="true" proxy="estgp" id="ci" url="/intranet/escola/ci.html"/>
<leaf node="false" label="Calendário Escolar" id="calEscolar" absolute="false" url="/public/portal/CL20102011.pdf" layout="false" proxy="estgp"/>
<leaf node="false" absolute="false" label="Calendário de Exames" layout="true" proxy="estgp" id="exames" url="/intranet/escola/Exames.html"/>
<leaf node="false" absolute="false" label="Centro Informático" layout="true" proxy="estgp" id="ci" url="/intranet/escola/ci.html"/>
</directory>
/impl/conf/directories/student.xml
1,77 → 1,93
<?xml version="1.0" encoding="UTF-8"?>
<directory label="Alunos" place="home" layout="layout0" layoutRoot="layoutPortal" targetRole="student" id="student" menuKey="menu.alunos" style="style1.xsl" xmlns="http://www.estgp.pt/baco/directory/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.estgp.pt/baco/directory/ directory.xsd">
<groupsDeclaration>
<group>1</group>
<group>2</group>
</groupsDeclaration>
<node label="Serviços on-line" id="servicosOnLine" group="1">
<leaf absolute="true" url="http://baco.estgp.pt/layout/webmailRedirect.jsp" proxy="estgp" id="servWebmail" label="Webmail"></leaf>
<leaf absolute="false" url="/public/portal/servicosEduroam.html" proxy="estgp" id="servEduroam" label="Eduroam"></leaf>
<leaf absolute="false" url="/public/portal/servicosSecretaria.html" proxy="estgp" id="servSecretaria" label="Secretaria"></leaf>
<leaf absolute="true" url="http://netpa.ipportalegre.pt/" proxy="estgp" id="servAcademicosOnline" label="Académicos online"></leaf>
<leaf absolute="false" url="/public/portal/servicosGabineteComunicacao.html" proxy="estgp" id="servGabinetedeComunicacao" label="Gabinete de Comunicação"></leaf>
<leaf absolute="false" url="/public/portal/servicosRegie.html" proxy="estgp" id="servRegie" label="Régie"></leaf>
<leaf absolute="false" url="/public/portal/servicosCentroInformatico.html" proxy="estgp" id="servCentroInformatico" label="Centro informático"></leaf>
</node>
<node label="Contactos" id="contactos" group="2">
<leaf absolute="false" url="/public/portal/contactosGeraisEstg.html" proxy="estgp" id="contGerais" label="Gerais ESTG"></leaf>
<leaf absolute="false" url="/public/portal/contactosDepartamentos.html" proxy="estgp" id="contDep" label="Departamentos"></leaf>
<leaf absolute="false" url="/public/portal/contactosSecretaria.html" proxy="estgp" id="contSecretaria" label="Secretaria"></leaf>
<leaf absolute="false" url="/public/portal/contactosCentroInformatico.html" proxy="estgp" id="contCentroInformatico" label="Centro Informático"></leaf>
<leaf absolute="false" url="/public/portal/contactosGabineteComunicacao.html" proxy="estgp" id="contGabinetedeComunicacao" label="Gabinete de Comunicação"></leaf>
</node>
<node label="Biblioteca" id="biblioteca" group="1">
<leaf absolute="false" url="/public/portal/servicosBibliotecaApresentacao.html" proxy="estgp" id="servBiblioteca" label="Apresentação"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaServicos.html" proxy="estgp" id="servBibliotecaServ" label="Serviços"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaColeccoes.html" proxy="estgp" id="servBibliotecaColeccoes" label="Coleções"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaPublico.html" proxy="estgp" id="servBibliotecaPublico" label="Público"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaCatalogos.html" proxy="estgp" id="servBibliotecaCatalogos" label="Catálogos"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaRegulamento.html" proxy="estgp" id="servBiblioteRegulamento" label="Regulamento"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaContactos.html" proxy="estgp" id="servBibliotecaContactos" label="Contatos e Horários"></leaf>
</node>
<node label="PALV Erasmus" id="PALVErasmus" group="2">
<leaf absolute="false" url="/public/portal/PALVErasmusAlunosEstrangeirosESTG.html" proxy="estgp" id="PALVErasmusAlunosEstrangeiros" label="Os Alunos Estrangeiros na ESTG"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusAlunosESTGEstrangeiro.html" proxy="estgp" id="PALVErasmusEstrangeiroAlunos" label="Os Alunos da ESTG no Estrangeiro"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusObjectivos.html" proxy="estgp" id="PALVErasmusObjectivos" label="Objectivos"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusPaises.html" proxy="estgp" id="PALVErasmusPaises" label="Países Participantes"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusProgramaErasmus.html" proxy="estgp" id="PALVErasmusProgramaErasmus" label="Programa Setorial - Erasmus"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusActividadesElegiveis.html" proxy="estgp" id="PALVErasmusActividadesElegiveis" label="Atividades Elegiveis"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusMobilidadeEstudantes.html" proxy="estgp" id="PALVErasmusMobilidadeEstudantes" label="Mobilidade Estudantes"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusParceirosESTG.html" proxy="estgp" id="PALVErasmusParceiros" label="Parceiros"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusFormularioEstudantes.html" proxy="estgp" id="PALVErasmusFomularioEstudantes" label="Formulários Estudantes"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusContactos.html" proxy="estgp" id="PALVErasmusContactos" label="Contactos"></leaf>
</node>
<node label="Orgãos de Gestão" id="OrgaosGestao" group="1">
<leaf absolute="false" url="/public/portal/orgaoDirector.html" proxy="estgp" id="orgaosDirector" label="Diretor"></leaf>
<groupsDeclaration>
<group>
<name>1</name>
<description>1</description>
</group>
<group>
<name>2</name>
<description>2</description>
</group>
</groupsDeclaration>
<leaf node="true" label="Serviços on-line" id="servicosOnLine" group="1">
<leaf node="false" absolute="true" url="http://baco.estgp.pt/layout/webmailRedirect.jsp" proxy="estgp" id="servWebmail" label="Webmail"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosEduroam.html" proxy="estgp" id="servEduroam" label="Eduroam"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosSecretaria.html" proxy="estgp" id="servSecretaria" label="Secretaria"></leaf>
<leaf node="false" absolute="true" url="http://netpa.ipportalegre.pt/" proxy="estgp" id="servAcademicosOnline" label="Académicos online"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosGabineteComunicacao.html" proxy="estgp" id="servGabinetedeComunicacao" label="Gabinete de Comunicação"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosRegie.html" proxy="estgp" id="servRegie" label="Régie"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosCentroInformatico.html" proxy="estgp" id="servCentroInformatico" label="Centro informático"></leaf>
</leaf>
<leaf node="true" label="Contactos" id="contactos" group="2">
<leaf node="false" absolute="false" url="/public/portal/contactosGeraisEstg.html" proxy="estgp" id="contGerais" label="Gerais ESTG"></leaf>
<leaf node="false" absolute="false" url="/public/portal/contactosDepartamentos.html" proxy="estgp" id="contDep" label="Departamentos"></leaf>
<leaf node="false" absolute="false" url="/public/portal/contactosSecretaria.html" proxy="estgp" id="contSecretaria" label="Secretaria"></leaf>
<leaf node="false" absolute="false" url="/public/portal/contactosCentroInformatico.html" proxy="estgp" id="contCentroInformatico" label="Centro Informático"></leaf>
<leaf node="false" absolute="false" url="/public/portal/contactosGabineteComunicacao.html" proxy="estgp" id="contGabinetedeComunicacao" label="Gabinete de Comunicação"></leaf>
</leaf>
<leaf node="true" label="Biblioteca" id="biblioteca" group="1">
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaApresentacao.html" proxy="estgp" id="servBiblioteca" label="Apresentação"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaServicos.html" proxy="estgp" id="servBibliotecaServ" label="Serviços"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaColeccoes.html" proxy="estgp" id="servBibliotecaColeccoes" label="Coleções"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaPublico.html" proxy="estgp" id="servBibliotecaPublico" label="Público"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaCatalogos.html" proxy="estgp" id="servBibliotecaCatalogos" label="Catálogos"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaRegulamento.html" proxy="estgp" id="servBiblioteRegulamento" label="Regulamento"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaContactos.html" proxy="estgp" id="servBibliotecaContactos" label="Contatos e Horários"></leaf>
</leaf>
<leaf node="true" label="PALV Erasmus" id="PALVErasmus" group="2">
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusAlunosEstrangeirosESTG.html" proxy="estgp" id="PALVErasmusAlunosEstrangeiros" label="Os Alunos Estrangeiros na ESTG"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusAlunosESTGEstrangeiro.html" proxy="estgp" id="PALVErasmusEstrangeiroAlunos" label="Os Alunos da ESTG no Estrangeiro"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusObjectivos.html" proxy="estgp" id="PALVErasmusObjectivos" label="Objectivos"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusPaises.html" proxy="estgp" id="PALVErasmusPaises" label="Países Participantes"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusProgramaErasmus.html" proxy="estgp" id="PALVErasmusProgramaErasmus" label="Programa Setorial - Erasmus"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusActividadesElegiveis.html" proxy="estgp" id="PALVErasmusActividadesElegiveis" label="Atividades Elegiveis"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusMobilidadeEstudantes.html" proxy="estgp" id="PALVErasmusMobilidadeEstudantes" label="Mobilidade Estudantes"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusParceirosESTG.html" proxy="estgp" id="PALVErasmusParceiros" label="Parceiros"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusFormularioEstudantes.html" proxy="estgp" id="PALVErasmusFomularioEstudantes" label="Formulários Estudantes"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusContactos.html" proxy="estgp" id="PALVErasmusContactos" label="Contactos"></leaf>
</leaf>
<leaf node="true" label="Orgãos de Gestão" id="OrgaosGestao" group="1">
<leaf node="false" absolute="false" url="/public/portal/orgaoDirector.html" proxy="estgp" id="orgaosDirector" label="Diretor"></leaf>
 
<leaf absolute="false" url="/public/portal/orgaosConselhoTecnicoCientifico.html" proxy="estgp" id="orgaosConselhoTecnicoCientifico" label="Conselho Técnico Científico"></leaf>
<leaf absolute="false" url="/Conselho.Tecnico.Cientifico.Externo" proxy="grupos" id="pastaConselhoTecnicoCientificoExterna" label=" -----> Documentação CTC" remoteExtensionRoot="true" style="true" layout="true" />
<leaf absolute="false" url="/public/portal/orgaosConselhoPedagogico.html" proxy="estgp" id="orgaosConselhoPedagogico" label="Conselho Pedagógico"></leaf>
<leaf absolute="false" url="/Conselho.Pedagogico.Externo" proxy="grupos" id="pastaConselhoPegagogicoExterna" label=" -----> Documentação CP" remoteExtensionRoot="true" style="true" layout="true" />
<leaf absolute="false" url="/public/portal/orgaosConselhoRepresentantes.html" proxy="estgp" id="orgaosConselhoRepresentantes" label="Conselho Representantes"></leaf>
<leaf absolute="false" url="/Conselho.Representantes.Externo" proxy="grupos" id="pastaConselhoRepresentantesExterna" label=" -----> Documentação CR" remoteExtensionRoot="true" style="true" layout="true" />
<leaf node="false" absolute="false" url="/public/portal/orgaosConselhoTecnicoCientifico.html" proxy="estgp" id="orgaosConselhoTecnicoCientifico" label="Conselho Técnico Científico"></leaf>
<leaf node="false" absolute="false" url="/Conselho.Tecnico.Cientifico.Externo" proxy="grupos" id="pastaConselhoTecnicoCientificoExterna" label=" -----> Documentação CTC" remoteExtensionRoot="true" style="true" layout="true" />
<leaf node="false" absolute="false" url="/public/portal/orgaosConselhoPedagogico.html" proxy="estgp" id="orgaosConselhoPedagogico" label="Conselho Pedagógico"></leaf>
<leaf node="false" absolute="false" url="/Conselho.Pedagogico.Externo" proxy="grupos" id="pastaConselhoPegagogicoExterna" label=" -----> Documentação CP" remoteExtensionRoot="true" style="true" layout="true" />
<leaf node="false" absolute="false" url="/public/portal/orgaosConselhoRepresentantes.html" proxy="estgp" id="orgaosConselhoRepresentantes" label="Conselho Representantes"></leaf>
<leaf node="false" absolute="false" url="/Conselho.Representantes.Externo" proxy="grupos" id="pastaConselhoRepresentantesExterna" label=" -----> Documentação CR" remoteExtensionRoot="true" style="true" layout="true" />
 
<leaf absolute="false" url="/public/portal/orgaosConselhoGestao.html" proxy="estgp" id="orgaosConselhogestao" label="Conselho de Gestão"></leaf>
<leaf absolute="false" url="/public/portal/orgaosConselhoInterdepartamental.html" proxy="estgp" id="orgaosConselhoDepartamental" label="Conselho Interdepartamental"></leaf>
</node>
<leaf node="false" absolute="false" url="/public/portal/orgaosConselhoGestao.html" proxy="estgp" id="orgaosConselhogestao" label="Conselho de Gestão"></leaf>
<leaf node="false" absolute="false" url="/public/portal/orgaosConselhoInterdepartamental.html" proxy="estgp" id="orgaosConselhoDepartamental" label="Conselho Interdepartamental"></leaf>
<rights>
<right target="role" type="restrict" name="student"/>
<internal>true</internal>
</rights>
</leaf>
<node label="Informação Académica" id="infoAcademica" group="2">
<leaf absolute="false" url="/public/portal/CL20102011.pdf" proxy="estgp" id="infoAcadCalendarioEscolar" label="Calendário Escolar"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/courses.do?type=L" proxy="estgp" id="infoAcadLicenciaturas" label="Licenciaturas"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/courses.do?type=M" proxy="estgp" id="infoAcadMestrados" label="Mestrados"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/courses.do?type=P" proxy="estgp" id="infoAcadPgraduacoes" label="Pós-Graduações"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/courses.do?type=E" proxy="estgp" id="infoAcadCET" label="CET"></leaf>
</node>
<node label="O IPP" id="IPP" group="1">
<leaf absolute="true" url="http://www.ipportalegre.pt/" proxy="estgp" id="ippIPP" label="IPP Serviços Centrais"></leaf>
<leaf absolute="true" url="http://www.esep.pt/" proxy="estgp" id="ippESEP" label="Esc. Sup. de Educação"></leaf>
<leaf absolute="true" url="http://www.esaelvas.pt/" proxy="estgp" id="ippESAE" label="Esc. Sup. Agrária"></leaf>
<leaf absolute="true" url="http://www.essp.pt/" proxy="estgp" id="ippESSP" label="Esc. Sup. de Saúde"></leaf>
<leaf absolute="true" url="http://www.ipportalegre.pt/sas/" proxy="estgp" id="ippSAS" label="Serviços de Acção Social"></leaf>
</node>
<node label="Departamentos" id="departamentos" group="2">
<leaf absolute="false" url="/public/departamentos/depTD.html" proxy="estgp" id="depTD" label="Departamento de TD"></leaf>
<leaf absolute="false" url="/public/departamentos/depCESH.html" proxy="estgp" id="depCESH" label="Departamento de CESH"></leaf>
</node>
<leaf node="true" label="Informação Académica" id="infoAcademica" group="2">
<leaf node="false" absolute="false" url="/public/portal/CL20102011.pdf" proxy="estgp" id="infoAcadCalendarioEscolar" label="Calendário Escolar"></leaf>
<leaf node="false" absolute="true" url="http://baco.estgp.pt/courses.do?type=L" proxy="estgp" id="infoAcadLicenciaturas" label="Licenciaturas"></leaf>
<leaf node="false" absolute="true" url="http://baco.estgp.pt/courses.do?type=M" proxy="estgp" id="infoAcadMestrados" label="Mestrados"></leaf>
<leaf node="false" absolute="true" url="http://baco.estgp.pt/courses.do?type=P" proxy="estgp" id="infoAcadPgraduacoes" label="Pós-Graduações"></leaf>
<leaf node="false" absolute="true" url="http://baco.estgp.pt/courses.do?type=E" proxy="estgp" id="infoAcadCET" label="CET"></leaf>
<rights>
<right target="user" type="restrict" name="jmachado"/>
</rights>
</leaf>
<leaf node="true" label="O IPP" id="IPP" group="1">
<leaf node="false" absolute="true" url="http://www.ipportalegre.pt/" proxy="estgp" id="ippIPP" label="IPP Serviços Centrais"></leaf>
<leaf node="false" absolute="true" url="http://www.esep.pt/" proxy="estgp" id="ippESEP" label="Esc. Sup. de Educação"></leaf>
<leaf node="false" absolute="true" url="http://www.esaelvas.pt/" proxy="estgp" id="ippESAE" label="Esc. Sup. Agrária"></leaf>
<leaf node="false" absolute="true" url="http://www.essp.pt/" proxy="estgp" id="ippESSP" label="Esc. Sup. de Saúde"></leaf>
<leaf node="false" absolute="true" url="http://www.ipportalegre.pt/sas/" proxy="estgp" id="ippSAS" label="Serviços de Acção Social"></leaf>
</leaf>
<leaf node="true" label="Departamentos" id="departamentos" group="2">
<leaf node="false" absolute="false" url="/public/departamentos/depTD.html" proxy="estgp" id="depTD" label="Departamento de TD"></leaf>
<leaf node="false" absolute="false" url="/public/departamentos/depCESH.html" proxy="estgp" id="depCESH" label="Departamento de CESH"></leaf>
</leaf>
<rights>
<right target="role" type="permit" name="admin"/>
<right target="role" type="restrict" name="student"/>
</rights>
</directory>
/impl/conf/directories/utils.xsl
11,7 → 11,7
</a>
</xsl:template>
<xsl:template match="d:node" mode="link">
<xsl:template match="d:leaf[@node='true']" mode="link">
<a>
<xsl:attribute name="href">
<xsl:choose>
26,14 → 26,14
<xsl:apply-templates select="." mode="label"/>
</a>
</xsl:template>
<xsl:template match="d:leaf" mode="link">
<xsl:template match="d:leaf[@node='false']" mode="link">
<a>
<xsl:attribute name="href">
<xsl:choose>
<xsl:when test="string(@absolute)='true'">
<xsl:value-of select="@url"/>
</xsl:when>
<xsl:when test="@idPrefixSize"><xsl:value-of select="$dirStartPath"/><xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="substring(@id,@idPrefixSize+1)"/></xsl:when>
<xsl:when test="@idPrefixSize"><xsl:value-of select="$dirStartPath"/><xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="substring(@id,@idPrefixSize+1)"/></xsl:when>
<xsl:when test="@remoteExtensionRoot='true'"><xsl:value-of select="$dirStartPath"/><xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="@id"/></xsl:when>
<xsl:otherwise><xsl:value-of select="$dirStartPath"/><xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="@id"/><xsl:value-of select="@url"/></xsl:otherwise>
</xsl:choose>
41,12 → 41,24
<xsl:apply-templates select="." mode="label"/>
</a>
</xsl:template>
 
<!--
- A variavel de ambiente dirStartPath é o contextPath + /dir
- Os templates linkparent tem por objectivo escrever toda a hierarquia de ID's até ao elemento directory
- Todos os nós que trazem o atributo idPrefixSize significa que foram extendidos a partir de um FTP
não são orginais do XML do directório
- por exemplo para o id gerado FTP_4_DTP será
um elemento representativo de uma pasta DTP, o id é unico porque 4 é a profundidade onde ele
está logo o par 4 + DTP é único supostamente a menos que alguém vá criar uma pasta com este nome
o que é quase impossivel
substring(@id,@idPrefixSize+1) este código com o id de exemplo vai originar DTP no link
 
-->
<xsl:template match="d:directory" mode="linkParent">/<xsl:value-of select="@id"/></xsl:template>
<xsl:template match="d:node" mode="linkParent">
<xsl:template match="d:leaf[@node='true']" mode="linkParent">
<xsl:choose>
<xsl:when test="@idPrefixSize"><xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="substring(@id,@idPrefixSize+1)"/></xsl:when>
<xsl:otherwise><xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="@id"/></xsl:otherwise>
55,11 → 67,11
 
 
<xsl:template match="d:leaf" mode="linkParent">
<xsl:template match="d:leaf[@node='false']" mode="linkParent">
<xsl:apply-templates select=".." mode="linkParent"/>/<xsl:value-of select="@id"/>
</xsl:template>
<xsl:template match="d:leaf" mode="bodyContent">
<xsl:template match="d:leaf[@node='false']" mode="bodyContent">
<xsl:choose>
<xsl:when test="string(@xml) = 'true'">
<xsl:variable name="bodyDoc" select="document($includeXML)"/>
74,10 → 86,10
<xsl:template match="d:directory" mode="label">
<xsl:value-of select="@label"/>
</xsl:template>
<xsl:template match="d:node" mode="label">
<xsl:template match="d:leaf[@node='true']" mode="label">
<xsl:value-of select="@label"/>
</xsl:template>
<xsl:template match="d:leaf" mode="label">
<xsl:template match="d:leaf[@node='false']" mode="label">
<xsl:value-of select="@label"/>
</xsl:template>
/impl/conf/directories/style1.xsl
247,7 → 247,7
<xsl:apply-templates select="." mode="childs"/>
</xsl:template>
 
<xsl:template match="d:node" mode="root">
<xsl:template match="d:leaf[@node='true']" mode="root">
<xsl:apply-templates select="." mode="topNav"/>
<table cellpadding="0" cellspacing="0" width="100%" border="0">
<tr>
267,11 → 267,11
<table class="columnTable">
<tr>
<td class="column">
<xsl:if test="d:leaf">
<xsl:if test="d:leaf[@node='false']">
<div class="block links">
<p><xsl:call-template name="leafsBlockLabel"/></p>
<ul>
<xsl:for-each select="d:leaf">
<xsl:for-each select="d:leaf[@node='false']">
<li>
<xsl:apply-templates select="." mode="link"/>
</li>
280,13 → 280,13
</div>
</xsl:if>
</td>
<xsl:if test="d:node">
<xsl:if test="d:leaf[@node='true']">
<xsl:choose>
<xsl:when test="d:groupsDeclaration">
<xsl:for-each select="d:groupsDeclaration/d:group">
<xsl:when test="d:groupsDeclaration/d:group/d:name">
<xsl:for-each select="d:groupsDeclaration/d:group/d:name">
<tr>
<xsl:variable name="group" select="."/>
<xsl:for-each select="../../d:node[@group=$group]">
<xsl:for-each select="../../../d:leaf[@node='true' and @group=$group]">
<td class="column">
<xsl:apply-templates select="." mode="block"/>
</td>
295,7 → 295,7
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="d:node">
<xsl:for-each select="d:leaf[@node='true']">
<td class="column">
<xsl:apply-templates select="." mode="block"/>
</td>
307,15 → 307,15
</table>
</xsl:template>
<xsl:template match="d:node" mode="childs">
<xsl:template match="d:leaf[@node='true']" mode="childs">
<table class="columnTable">
<tr>
<td class="column">
<xsl:if test="d:leaf">
<xsl:if test="d:leaf[@node='false']">
<div class="block links">
<p><xsl:call-template name="leafsBlockLabel"/></p>
<ul>
<xsl:for-each select="d:leaf">
<xsl:for-each select="d:leaf[@node='false']">
<li>
<xsl:apply-templates select="." mode="link"/>
</li>
324,13 → 324,13
</div>
</xsl:if>
</td>
<xsl:if test="d:node">
<xsl:if test="d:leaf[@node='true']">
<xsl:choose>
<xsl:when test="d:groupsDeclaration">
<xsl:for-each select="d:groupsDeclaration/d:group">
<xsl:when test="d:groupsDeclaration/d:group/d:name">
<xsl:for-each select="d:groupsDeclaration/d:group/d:name">
<tr>
<xsl:variable name="group" select="."/>
<xsl:for-each select="../../d:node[@group=$group]">
<xsl:for-each select="../../../d:leaf[@node='true' and @group=$group]">
<td class="column">
<xsl:apply-templates select="." mode="block"/>
</td>
339,7 → 339,7
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="d:node">
<xsl:for-each select="d:leaf[@node='true']">
<td class="column">
<xsl:apply-templates select="." mode="block"/>
</td>
351,16 → 351,16
</table>
</xsl:template>
<xsl:template match="d:node" mode="block">
<xsl:template match="d:leaf[@node='true']" mode="block">
<div class="block">
<p><xsl:apply-templates select="." mode="link"/></p>
<ul>
<xsl:for-each select="d:leaf">
<xsl:for-each select="d:leaf[@node='false']">
<li>
<xsl:apply-templates select="." mode="link"/>
</li>
</xsl:for-each>
<xsl:for-each select="d:node">
<xsl:for-each select="d:leaf[@node='true']">
<li>
<xsl:apply-templates select="." mode="link"/>
</li>
373,7 → 373,7
| Página de Apresentação de uma Folha no Corpo da Página
===========================================================
-->
<xsl:template match="d:leaf" mode="root">
<xsl:template match="d:leaf[@node='false']" mode="root">
<xsl:apply-templates select="." mode="topNav"/>
<table id="bigTable" cellspacing="0" cellpadding="0">
<tr>
417,12 → 417,12
Tamanho
</th>
</tr>
<xsl:apply-templates select="./d:leaf[@ftpDirectory='true']" mode="ftpLine"/>
<xsl:apply-templates select="./d:leaf[@ftpDirectory='false']" mode="ftpLine"/>
<xsl:apply-templates select="./d:leaf[@node='false' and @ftpDirectory='true']" mode="ftpLine"/>
<xsl:apply-templates select="./d:leaf[@node='false' and @ftpDirectory='false']" mode="ftpLine"/>
</table>
</div>
</xsl:template>
<xsl:template match="d:leaf" mode="ftpLine">
<xsl:template match="d:leaf[@node='false']" mode="ftpLine">
<xsl:choose>
<xsl:when test="./@ftpDirectory='true'">
<tr class="dir">
451,7 → 451,7
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="d:leaf" mode="mime">
<xsl:template match="d:leaf[@node='false']" mode="mime">
<img>
<xsl:attribute name="alt"><xsl:value-of select="."/></xsl:attribute>
<xsl:attribute name="src">
490,7 → 490,7
-->
 
<xsl:template match="d:leaf" mode="topNav">
<xsl:template match="d:leaf[@node='false']" mode="topNav">
<div id="topnav">
<ul>
<xsl:apply-templates select=".." mode="navBack"/>
502,7 → 502,7
</div>
</xsl:template>
 
<xsl:template match="d:node" mode="topNav">
<xsl:template match="d:leaf[@node='true']" mode="topNav">
<div id="topnav">
<ul>
<xsl:apply-templates select=".." mode="navBack"/>
529,7 → 529,7
</div>-->
</xsl:template>
<xsl:template match="d:leaf" mode="topNavRemote">
<xsl:template match="d:leaf[@node='false']" mode="topNavRemote">
<div id="topnav">
<ul>
<li class="navPlace">
538,7 → 538,7
</div>
</xsl:template>
<xsl:template match="d:node" mode="topNavRemote">
<xsl:template match="d:leaf[@node='true']" mode="topNavRemote">
<div id="topnav">
<ul>
<xsl:apply-templates select=".." mode="navBackRemote"/>
561,7 → 561,7
</li>
</xsl:template>
<xsl:template match="d:node" mode="navBack">
<xsl:template match="d:leaf[@node='true']" mode="navBack">
<xsl:apply-templates select=".." mode="navBack"/>
<li class="navPlace">
570,7 → 570,7
</li>
</xsl:template>
<xsl:template match="d:leaf" mode="navBack">
<xsl:template match="d:leaf[@node='false']" mode="navBack">
<xsl:apply-templates select=".." mode="navBack"/>
<li class="navPlace">
579,12 → 579,12
</li>
</xsl:template>
<xsl:template match="d:leaf" mode="navBackRemote">
<xsl:template match="d:leaf[@node='false']" mode="navBackRemote">
<li class="navPlace">
<xsl:apply-templates select="." mode="link"/>
</li>
</xsl:template>
<xsl:template match="d:node" mode="navBackRemote">
<xsl:template match="d:leaf[@node='true']" mode="navBackRemote">
<xsl:apply-templates select=".." mode="navBackRemote"/>
<li class="navPlace">
&gt;
597,15 → 597,15
| Barra de Navegação Lateral Esquerda
===========================================================
-->
<xsl:template match="d:node" mode="latNav">
<xsl:if test="./d:leaf or ./d:node">
<xsl:template match="d:leaf[@node='true']" mode="latNav">
<!--<xsl:if test="./d:leaf or ./d:node">-->
<div class="linkMenuBlock">
<div class="linkMenuBlockTitle"><xsl:apply-templates select="." mode="label"/></div>
<div class="linkLeftMenu">
<div class="listClean">
<ul id="portalMenu">
<xsl:for-each select="./d:node">
<xsl:for-each select="./d:leaf[@node='true']">
<xsl:choose>
<xsl:when test="@id = $ACTUAL">
<li class="navPlace selected">
619,24 → 619,24
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:for-each select="./d:leaf">
<xsl:for-each select="./d:leaf[@node='false']">
<li class="navPlace">...<xsl:apply-templates select="." mode="link"/></li>
</xsl:for-each>
</ul>
</div>
</div>
</div>
</xsl:if>
<!--</xsl:if>-->
</xsl:template>
<xsl:template match="d:leaf" mode="latNav">
<xsl:if test="./d:leaf or ./d:node">
<xsl:template match="d:leaf[@node='false']" mode="latNav">
<!--<xsl:if test="./d:leaf or ./d:node">-->
<div class="linkMenuBlock">
<div class="linkMenuBlockTitle"><xsl:apply-templates select="." mode="label"/></div>
<div class="linkLeftMenu">
<div class="listClean">
<ul id="portalMenu">
<xsl:for-each select="./d:node">
<xsl:for-each select="./d:leaf[@node='true']">
<xsl:choose>
<xsl:when test="@id = $ACTUAL">
<li class="navPlace selected">
650,24 → 650,24
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:for-each select="./d:leaf">
<xsl:for-each select="./d:leaf[@node='false']">
<li class="navPlace">...<xsl:apply-templates select="." mode="link"/></li>
</xsl:for-each>
</ul>
</div>
</div>
</div>
</xsl:if>
<!--</xsl:if>-->
</xsl:template>
<xsl:template match="d:directory" mode="latNav">
<xsl:if test="./d:leaf or ./d:node">
<!--<xsl:if test="./d:leaf or ./d:node">-->
<div class="linkMenuBlock">
<div class="linkMenuBlockTitle"><xsl:apply-templates select="." mode="label"/></div>
<div class="linkLeftMenu">
<div class="listClean">
<ul id="portalMenu">
<xsl:for-each select="./d:node">
<xsl:for-each select="./d:leaf[@node='true']">
<xsl:choose>
<xsl:when test="@id = $ACTUAL">
<li class="navPlace selected">
681,14 → 681,14
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:for-each select="./d:leaf">
<xsl:for-each select="./d:leaf[@node='false']">
<li class="navPlace"><xsl:call-template name="linkPrefix"/><xsl:apply-templates select="." mode="link"/></li>
</xsl:for-each>
</ul>
</div>
</div>
</div>
</xsl:if>
<!--</xsl:if>-->
</xsl:template>
<xsl:template name="linkPrefix">
701,9 → 701,9
-->
<xsl:template name="treeRoot">
<xsl:if test="/d:directory/d:node">
<xsl:if test="/d:directory/d:leaf[@node='true']">
<ul>
<xsl:for-each select="/d:directory/d:node">
<xsl:for-each select="/d:directory/d:leaf[@node='true']">
<li>
<xsl:apply-templates select="." mode="treeLoop"/>
</li>
712,20 → 712,20
</xsl:if>
</xsl:template>
<xsl:template match="d:node" mode="treeLoop">
<xsl:template match="d:leaf[@node='true']" mode="treeLoop">
<div>
<xsl:if test="$ACTUAL=@id">
<xsl:attribute name="style">background-color:yellow</xsl:attribute>
</xsl:if>
<p><xsl:value-of select="@label"/></p>
<xsl:if test="./d:leaf">
<xsl:for-each select="./d:leaf">
<xsl:if test="./d:leaf[@node='false']">
<xsl:for-each select="./d:leaf[@node='false']">
<xsl:apply-templates select="." mode="tree"/>
</xsl:for-each>
</xsl:if>
<xsl:if test="./d:node">
<xsl:if test="./d:leaf[@node='true']">
<ul>
<xsl:for-each select="./d:node">
<xsl:for-each select="./d:leaf[@node='true']">
<li>
<xsl:apply-templates select="." mode="treeLoop"/>
</li>
735,7 → 735,7
</div>
</xsl:template>
<xsl:template match="d:leaf" mode="tree">
<xsl:template match="d:leaf[@node='false']" mode="tree">
<div>
<xsl:if test="$ACTUAL=@id">
<xsl:attribute name="style">background-color:yellow</xsl:attribute>
/impl/conf/directories/topMenus.xml
New file
0,0 → 1,50
<?xml version="1.0" encoding="UTF-8"?>
<directory id="topMenus" label="Menus de Top" place="home" layout="" layoutRoot="" targetRole="" menuKey="" style="topMenus.xsl" xmlns="http://www.estgp.pt/baco/directory/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.estgp.pt/baco/directory/ directory.xsd">
<leaf node="true" label="Apresentação" id="app">
<leaf node="false" id="msgDir" label="Mensagem do Director" absolute="false" url="/dir/futureStudent/ESTG/estgDirector/public/portal/estgMensagemDirector.html" proxy="local"/>
<leaf node="false" id="missao" label="A ESTG e a sua missão" absolute="false" url="/dir/futureStudent/ESTG/estgMissao/public/portal/estgMissao.html" proxy="local"/>
<leaf node="false" id="historia" label="História" absolute="false" url="/dir/futureStudent/ESTG/estgPassado/public/portal/estgPassado.html" proxy="local"/>
<leaf node="false" id="localizacao" label="Localização" absolute="false" url="/dir/futureStudent/ESTG/estgChegar/public/portal/estgComoChegarEstg.html" proxy="local"/>
<leaf node="false" id="fotos" label="A ESTG em Fotografias" absolute="false" url="/dir/futureStudent/ESTG/estgFotos/public/portal/estgFotos.html" proxy="local"/>
</leaf>
 
<leaf node="true" label="Organização" id="org">
<leaf node="false" id="director" label="Director" absolute="false" url="/dir/student/OrgaosGestao/orgaosDirector/public/portal/orgaoDirector.html" proxy="local"/>
<leaf node="false" id="ctc" label="Conselho Tecnico Cientifico" absolute="false" url="/dir/student/OrgaosGestao/orgaosConselhoTecnicoCientifico/public/portal/orgaosConselhoTecnicoCientifico.html" proxy="local"/>
<leaf node="false" id="cr" label="Conselho de Representantes" absolute="false" url="/dir/student/OrgaosGestao/orgaosConselhoRepresentantes/public/portal/orgaosConselhoRepresentantes.html" proxy="local"/>
<leaf node="false" id="cp" label="Conselho Pedagógico" absolute="false" url="/dir/student/OrgaosGestao/orgaosConselhoPedagogico/public/portal/orgaosConselhoPedagogico.html" proxy="local"/>
<leaf node="false" id="cg" label="Conselho de Gestão" absolute="false" url="/dir/student/OrgaosGestao/orgaosConselhogestao/public/portal/orgaosConselhoGestao.html" proxy="local"/>
<leaf node="false" id="cint" label="Conselho Interdepartamental" absolute="false" url="/dir/teacher/OrgaosGestao/orgaosConselhoInterdepartamental/public/portal/orgaosConselhoInterdepartamental.html" proxy="local"/>
</leaf>
 
<leaf node="true" label="Departamentos" id="departamentos">
<leaf node="false" id="dtd" label="Tecnologia e Design" absolute="false" url="/dir/student/departamentos/depTD/public/departamentos/depTD.html" proxy="local"/>
<leaf node="false" id="cesh" label="Ciencias Empresariais Sociais e Humanas" absolute="false" url="/dir/student/departamentos/depTD/public/departamentos/depCESH.html" proxy="local"/>
</leaf>
 
<leaf node="true" label="Ensino" id="ensino">
<leaf node="false" id="lecenciaturas" label="Licenciaturas" absolute="false" url="/courses?type=L" proxy="local"/>
<leaf node="false" id="mestrados" label="Mestrados" absolute="false" url="/courses?type=M" proxy="local"/>
<leaf node="false" id="accurtadur" label="Acções de Formação de Curta Duração" absolute="false" url="/courses?type=C" proxy="local"/>
<leaf node="false" id="cet" label="CET" absolute="false" url="/courses?type=E" proxy="local"/>
<leaf node="false" id="favanc" label="Formações Avançadas" absolute="false" url="/courses?type=A" proxy="local"/>
<leaf node="false" id="pgrad" label="Pós Graduação" absolute="false" url="/courses?type=P" proxy="local"/>
<leaf node="false" id="tesp" label="TeSP" absolute="false" url="/courses?type=T" proxy="local"/>
</leaf>
 
<leaf node="true" label="I&amp;D" id="ied">
<leaf node="false" id="poliempreende" label="Poliempreende" absolute="true" url="http://www.ipportalegre.pt/poliempreende/" proxy="local"/>
<leaf node="false" id="alimentsaud" label="Alimentação Saudável" absolute="true" url="http://alimentacaosaudavel.ipportalegre.pt" proxy="local"/>
<leaf node="false" id="c3i" label="C3i" absolute="true" url="http://www.c3i.ipportalegre.pt/" proxy="local"/>
</leaf>
 
<leaf node="false" id="contactos" label="Contactos" absolute="false" url="/dir/student/contactos/contGerais/public/portal/contactosGeraisEstg.html" proxy="local"/>
 
<leaf node="true" label="O Politécnico" id="politecnico">
<leaf node="false" id="ipp" label="Instituto Politécnico de Portalegre" absolute="true" url="http://www.ipportalegre.pt/" proxy="local"/>
<leaf node="false" id="esep" label="E. S. Educação" absolute="true" url="http://www.esep.pt/" proxy="local"/>
<leaf node="false" id="esae" label="E. S. Agrária de Elvas" absolute="true" url="http://www.esaelvas.pt/" proxy="local"/>
<leaf node="false" id="essp" label="E. S. Saúde" absolute="true" url="http://www.essp.pt/" proxy="local"/>
<leaf node="false" id="sas" label="SAS" absolute="true" url="http://www.ipportalegre.pt/sas/" proxy="local"/>
</leaf>
</directory>
/impl/conf/directories/styleIntranet.xsl
12,7 → 12,7
</xsl:template>
 
 
<xsl:template match="d:leaf" mode="topNav">
<xsl:template match="d:leaf[@node='false']" mode="topNav">
<xsl:if test="not(local-name(..) = 'directory')">
<div id="topnav">
<ul>
26,7 → 26,7
</xsl:if>
</xsl:template>
 
<xsl:template match="d:node" mode="topNav">
<xsl:template match="d:leaf[@node='true']" mode="topNav">
<xsl:if test="not(local-name(..) = 'directory')">
<div id="topnav">
<ul>
48,7 → 48,7
</xsl:template>
<xsl:template match="d:leaf" mode="topNavRemote">
<xsl:template match="d:leaf[@node='false']" mode="topNavRemote">
<div id="topnav">
<ul>
<li class="navPlace">
57,7 → 57,7
</div>
</xsl:template>
<xsl:template match="d:node" mode="topNavRemote">
<xsl:template match="d:leaf[@node='true']" mode="topNavRemote">
<div id="topnav">
<ul>
<xsl:apply-templates select=".." mode="navBackRemote"/>
80,7 → 80,7
</li>
</xsl:template>
<xsl:template match="d:node" mode="navBack">
<xsl:template match="d:leaf[@node='true']" mode="navBack">
<xsl:if test="not(local-name(..) = 'directory')">
<xsl:apply-templates select=".." mode="navBack"/>
</xsl:if>
94,7 → 94,7
</li>
</xsl:template>
<xsl:template match="d:leaf" mode="navBack">
<xsl:template match="d:leaf[@node='false']" mode="navBack">
<xsl:if test="not(local-name(..) = 'directory')">
<xsl:apply-templates select=".." mode="navBack"/>
</xsl:if>
107,12 → 107,12
</li>
</xsl:template>
<xsl:template match="d:leaf" mode="navBackRemote">
<xsl:template match="d:leaf[@node='false']" mode="navBackRemote">
<li class="navPlace">
<xsl:apply-templates select="." mode="link"/>
</li>
</xsl:template>
<xsl:template match="d:node" mode="navBackRemote">
<xsl:template match="d:leaf[@node='true']" mode="navBackRemote">
<xsl:apply-templates select=".." mode="navBackRemote"/>
<li class="navPlace">
&gt;
125,15 → 125,15
| Barra de Navegação Lateral Esquerda
===========================================================
-->
<xsl:template match="d:node" mode="latNav">
<xsl:if test="./d:leaf or ./d:node">
<xsl:template match="d:leaf[@node='true']" mode="latNav">
<!--<xsl:if test="./d:leaf or ./d:node">-->
<div class="linkMenuBlock">
<div class="linkMenuBlockTitle"><xsl:apply-templates select="." mode="label"/></div>
<div class="linkLeftMenu">
<div class="listClean">
<ul id="portalMenu">
<xsl:for-each select="./d:node">
<xsl:for-each select="./d:leaf[@node='true']">
<xsl:choose>
<xsl:when test="@id = $ACTUAL">
<li class="navPlace selected">
147,24 → 147,24
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:for-each select="./d:leaf">
<xsl:for-each select="./d:leaf[@node='false']">
<li class="navPlace">...<xsl:apply-templates select="." mode="link"/></li>
</xsl:for-each>
</ul>
</div>
</div>
</div>
</xsl:if>
<!--</xsl:if>-->
</xsl:template>
<xsl:template match="d:leaf" mode="latNav">
<xsl:if test="./d:leaf or ./d:node">
<xsl:template match="d:leaf[@node='false']" mode="latNav">
<!--<xsl:if test="./d:leaf or ./d:node">-->
<div class="linkMenuBlock">
<div class="linkMenuBlockTitle"><xsl:apply-templates select="." mode="label"/></div>
<div class="linkLeftMenu">
<div class="listClean">
<ul id="portalMenu">
<xsl:for-each select="./d:node">
<xsl:for-each select="./d:leaf[@node='true']">
<xsl:choose>
<xsl:when test="@id = $ACTUAL">
<li class="navPlace selected">
178,14 → 178,14
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
<xsl:for-each select="./d:leaf">
<xsl:for-each select="./d:leaf[@node='false']">
<li class="navPlace"><xsl:apply-templates select="." mode="link"/></li>
</xsl:for-each>
</ul>
</div>
</div>
</div>
</xsl:if>
<!--</xsl:if>-->
</xsl:template>
 
 
/impl/conf/directories/teacher.xml
1,74 → 1,80
<?xml version="1.0" encoding="UTF-8"?>
<directory label="Docentes" place="home" layout="layout0" layoutRoot="layoutPortal" targetRole="teacher" id="teacher" menuKey="menu.docentes" style="style1.xsl" xmlns="http://www.estgp.pt/baco/directory/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.estgp.pt/baco/directory/ directory.xsd">
<groupsDeclaration>
<group>1</group>
<group>2</group>
</groupsDeclaration>
<node label="Serviços on-line" id="servicosOnLine" group="1">
<leaf absolute="true" url="http://baco.estgp.pt/layout/webmailRedirect.jsp" proxy="estgp" id="servWebmail" label="Webmail"></leaf>
<leaf absolute="false" url="/public/portal/servicosEduroam.html" proxy="estgp" id="servEduroam" label="Eduroam"></leaf>
<leaf absolute="false" url="/public/portal/servicosSecretaria.html" proxy="estgp" id="servSecretaria" label="Secretaria"></leaf>
<leaf absolute="true" url="http://netpa.ipportalegre.pt/" proxy="estgp" id="servAcademicosOnline" label="Académicos online"></leaf>
<leaf absolute="false" url="/public/portal/servicosGabineteComunicacao.html" proxy="estgp" id="servGabinetedeComunicacao" label="Gabinete de Comunicação"></leaf>
<leaf absolute="true" url="http://assiduidade.ipportalegre.pt/mymillenium/" proxy="estgp" id="servPortalAssiduidade" label="Portal de Assiduidade"></leaf>
<leaf absolute="true" url="http://sisgor.ipportalegre.pt/" proxy="estgp" id="servSisgom" label="Sisgor Ocorrências"></leaf>
<leaf absolute="true" url="https://www.siadap.gov.pt/" proxy="estgp" id="siadap" label="Siadap"></leaf>
</node>
<node label="Contactos" id="contactos" group="2">
<leaf absolute="false" url="/public/portal/contactosGeraisEstg.html" proxy="estgp" id="contGerais" label="Gerais ESTG"></leaf>
<leaf absolute="false" url="/public/portal/contactosDepartamentos.html" proxy="estgp" id="contDep" label="Departamentos"></leaf>
<leaf absolute="false" url="/public/portal/contactosSecretaria.html" proxy="estgp" id="contSecretaria" label="Secretaria"></leaf>
<leaf absolute="false" url="/public/portal/contactosCentroInformatico.html" proxy="estgp" id="contCentroInformatico" label="Centro Informático"></leaf>
<leaf absolute="false" url="/public/portal/contactosGabineteComunicacao.html" proxy="estgp" id="contGabinetedeComunicacao" label="Gabinete de Comunicação"></leaf>
</node>
<node label="Biblioteca" id="biblioteca" group="1">
<leaf absolute="false" url="/public/portal/servicosBibliotecaApresentacao.html" proxy="estgp" id="servBiblioteca" label="Apresentação"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaServicos.html" proxy="estgp" id="servBibliotecaServ" label="Serviços"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaColeccoes.html" proxy="estgp" id="servBibliotecaColeccoes" label="Coleções"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaPublico.html" proxy="estgp" id="servBibliotecaPublico" label="Público"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaCatalogos.html" proxy="estgp" id="servBibliotecaCatalogos" label="Catálogos"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaRegulamento.html" proxy="estgp" id="servBiblioteRegulamento" label="Regulamento"></leaf>
<leaf absolute="false" url="/public/portal/servicosBibliotecaContactos.html" proxy="estgp" id="servBibliotecaContactos" label="Contactos e Horários"></leaf>
</node>
<node label="PALV Erasmus" id="PALVErasmus" group="2">
<leaf absolute="false" url="/public/portal/PALVErasmusDocentesEstrangeirosESTG.html" proxy="estgp" id="PALVErasmusDocentesEstrangeiros" label="Os Docentes Estrangeiros na ESTG"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusDocentesESTGEstrangeiro.html" proxy="estgp" id="PALVErasmusEstrangeiroDocentes" label="Os Docentes da ESTG no Estrangeiro"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusObjectivos.html" proxy="estgp" id="PALVErasmusObjectivos" label="Objectivos"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusPaises.html" proxy="estgp" id="PALVErasmusPaises" label="Países Participantes"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusProgramaErasmus.html" proxy="estgp" id="PALVErasmusProgramaErasmus" label="Programa Setorial - Erasmus"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusActividadesElegiveis.html" proxy="estgp" id="PALVErasmusActividadesElegiveis" label="Atividades Elegiveis"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusMobilidadeEstudantes.html" proxy="estgp" id="PALVErasmusMobilidadeEstudantes" label="Mobilidade Estudantes"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusParceirosESTG.html" proxy="estgp" id="PALVErasmusParceiros" label="Parceiros"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusFormularioDocentes.html" proxy="estgp" id="PALVErasmusFomularioDocentes" label="Formulários Docentes"></leaf>
<leaf absolute="false" url="/public/portal/PALVErasmusContactos.html" proxy="estgp" id="PALVErasmusContactos" label="Contactos"></leaf>
</node>
<node label="Orgãos de Gestão" id="OrgaosGestao" group="1">
<leaf absolute="false" url="/public/portal/orgaoDirector.html" proxy="estgp" id="orgaosDirector" label="Director"></leaf>
<leaf absolute="false" url="/public/portal/orgaosConselhoTecnicoCientifico.html" proxy="estgp" id="orgaosConselhoTecnicoCientifico" label="Conselho Técnico Científico"></leaf>
<leaf absolute="false" url="/Conselho.Tecnico.Cientifico.Externo" proxy="grupos" id="pastaConselhoTecnicoCientificoExterna" label=" -----> Documentação CTC" remoteExtensionRoot="true" style="true" layout="true" />
<leaf absolute="false" url="/public/portal/orgaosConselhoPedagogico.html" proxy="estgp" id="orgaosConselhoPedagogico" label="Conselho Pedagógico"></leaf>
<leaf absolute="false" url="/Conselho.Pedagogico.Externo" proxy="grupos" id="pastaConselhoPegagogicoExterna" label=" -----> Documentação CP" remoteExtensionRoot="true" style="true" layout="true" />
<leaf absolute="false" url="/public/portal/orgaosConselhoRepresentantes.html" proxy="estgp" id="orgaosConselhoRepresentantes" label="Conselho Representantes"></leaf>
<leaf absolute="false" url="/Conselho.Representantes.Externo" proxy="grupos" id="pastaConselhoRepresentantesExterna" label=" -----> Documentação CR" remoteExtensionRoot="true" style="true" layout="true" />
<leaf absolute="false" url="/public/portal/orgaosConselhoGestao.html" proxy="estgp" id="orgaosConselhogestao" label="Conselho de Gestão"></leaf>
<leaf absolute="false" url="/public/portal/orgaosConselhoInterdepartamental.html" proxy="estgp" id="orgaosConselhoInterdepartamental" label="Conselho Interdepartamental"></leaf>
</node>
<node label="Informação Académica" id="infoAcademica" group="2">
<leaf absolute="true" url="http://baco.estgp.pt/dir/student/infoAcademica/infoAcadCalendarioEscolar/public/portal/CL20102011.pdf" proxy="estgp" id="infoAcadCalendarioEscolar" label="Calendário Escolar"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/courses.do?type=L" proxy="estgp" id="infoAcadLicenciaturas" label="Licenciaturas"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/courses.do?type=M" proxy="estgp" id="infoAcadMestrados" label="Mestrados"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/courses.do?type=P" proxy="estgp" id="infoAcadPgraduacoes" label="Pós-Graduações"></leaf>
<leaf absolute="true" url="http://baco.estgp.pt/courses.do?type=E" proxy="estgp" id="infoAcadCET" label="CET"></leaf>
</node>
<node label="O IPP" id="IPP" group="1">
<leaf absolute="true" url="http://www.ipportalegre.pt/" proxy="estgp" id="ippIPP" label="IPP Serviços Centrais"></leaf>
<leaf absolute="true" url="http://www.esep.pt/" proxy="estgp" id="ippESEP" label="Esc. Sup. de Educação"></leaf>
<leaf absolute="true" url="http://www.esaelvas.pt/" proxy="estgp" id="ippESAE" label="Esc. Sup. Agrária"></leaf>
<leaf absolute="true" url="http://www.essp.pt/" proxy="estgp" id="ippESSP" label="Esc. Sup. de Saúde"></leaf>
<leaf absolute="true" url="http://www.ipportalegre.pt/sas/" proxy="estgp" id="ippSAS" label="Serviços de Ação Social"></leaf>
</node>
<node label="Departamentos" id="departamentos" group="2">
<leaf absolute="false" url="/public/departamentos/depTD.html" proxy="estgp" id="depTD" label="Departamento de TD"></leaf>
<leaf absolute="false" url="/public/departamentos/depCESH.html" proxy="estgp" id="depCESH" label="Departamento de CESH"></leaf>
</node>
<groupsDeclaration>
<group>
<name>1</name>
<description>1</description>
</group>
<group>
<name>2</name>
<description>2</description>
</group>
</groupsDeclaration>
<leaf node="true" label="Serviços on-line" id="servicosOnLine" group="1">
<leaf node="false" absolute="true" url="http://baco.estgp.pt/layout/webmailRedirect.jsp" proxy="estgp" id="servWebmail" label="Webmail"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosEduroam.html" proxy="estgp" id="servEduroam" label="Eduroam"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosSecretaria.html" proxy="estgp" id="servSecretaria" label="Secretaria"></leaf>
<leaf node="false" absolute="true" url="http://netpa.ipportalegre.pt/" proxy="estgp" id="servAcademicosOnline" label="Académicos online"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosGabineteComunicacao.html" proxy="estgp" id="servGabinetedeComunicacao" label="Gabinete de Comunicação"></leaf>
<leaf node="false" absolute="true" url="http://assiduidade.ipportalegre.pt/mymillenium/" proxy="estgp" id="servPortalAssiduidade" label="Portal de Assiduidade"></leaf>
<leaf node="false" absolute="true" url="http://sisgor.ipportalegre.pt/" proxy="estgp" id="servSisgom" label="Sisgor Ocorrências"></leaf>
<leaf node="false" absolute="true" url="https://www.siadap.gov.pt/" proxy="estgp" id="siadap" label="Siadap"></leaf>
</leaf>
<leaf node="true" label="Contactos" id="contactos" group="2">
<leaf node="false" absolute="false" url="/public/portal/contactosGeraisEstg.html" proxy="estgp" id="contGerais" label="Gerais ESTG"></leaf>
<leaf node="false" absolute="false" url="/public/portal/contactosDepartamentos.html" proxy="estgp" id="contDep" label="Departamentos"></leaf>
<leaf node="false" absolute="false" url="/public/portal/contactosSecretaria.html" proxy="estgp" id="contSecretaria" label="Secretaria"></leaf>
<leaf node="false" absolute="false" url="/public/portal/contactosCentroInformatico.html" proxy="estgp" id="contCentroInformatico" label="Centro Informático"></leaf>
<leaf node="false" absolute="false" url="/public/portal/contactosGabineteComunicacao.html" proxy="estgp" id="contGabinetedeComunicacao" label="Gabinete de Comunicação"></leaf>
</leaf>
<leaf node="true" label="Biblioteca" id="biblioteca" group="1">
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaApresentacao.html" proxy="estgp" id="servBiblioteca" label="Apresentação"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaServicos.html" proxy="estgp" id="servBibliotecaServ" label="Serviços"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaColeccoes.html" proxy="estgp" id="servBibliotecaColeccoes" label="Coleções"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaPublico.html" proxy="estgp" id="servBibliotecaPublico" label="Público"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaCatalogos.html" proxy="estgp" id="servBibliotecaCatalogos" label="Catálogos"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaRegulamento.html" proxy="estgp" id="servBiblioteRegulamento" label="Regulamento"></leaf>
<leaf node="false" absolute="false" url="/public/portal/servicosBibliotecaContactos.html" proxy="estgp" id="servBibliotecaContactos" label="Contactos e Horários"></leaf>
</leaf>
<leaf node="true" label="PALV Erasmus" id="PALVErasmus" group="2">
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusDocentesEstrangeirosESTG.html" proxy="estgp" id="PALVErasmusDocentesEstrangeiros" label="Os Docentes Estrangeiros na ESTG"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusDocentesESTGEstrangeiro.html" proxy="estgp" id="PALVErasmusEstrangeiroDocentes" label="Os Docentes da ESTG no Estrangeiro"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusObjectivos.html" proxy="estgp" id="PALVErasmusObjectivos" label="Objectivos"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusPaises.html" proxy="estgp" id="PALVErasmusPaises" label="Países Participantes"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusProgramaErasmus.html" proxy="estgp" id="PALVErasmusProgramaErasmus" label="Programa Setorial - Erasmus"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusActividadesElegiveis.html" proxy="estgp" id="PALVErasmusActividadesElegiveis" label="Atividades Elegiveis"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusMobilidadeEstudantes.html" proxy="estgp" id="PALVErasmusMobilidadeEstudantes" label="Mobilidade Estudantes"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusParceirosESTG.html" proxy="estgp" id="PALVErasmusParceiros" label="Parceiros"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusFormularioDocentes.html" proxy="estgp" id="PALVErasmusFomularioDocentes" label="Formulários Docentes"></leaf>
<leaf node="false" absolute="false" url="/public/portal/PALVErasmusContactos.html" proxy="estgp" id="PALVErasmusContactos" label="Contactos"></leaf>
</leaf>
<leaf node="true" label="Orgãos de Gestão" id="OrgaosGestao" group="1">
<leaf node="false" absolute="false" url="/public/portal/orgaoDirector.html" proxy="estgp" id="orgaosDirector" label="Director"></leaf>
<leaf node="false" absolute="false" url="/public/portal/orgaosConselhoTecnicoCientifico.html" proxy="estgp" id="orgaosConselhoTecnicoCientifico" label="Conselho Técnico Científico"></leaf>
<leaf node="false" absolute="false" url="/Conselho.Tecnico.Cientifico.Externo" proxy="grupos" id="pastaConselhoTecnicoCientificoExterna" label=" -----> Documentação CTC" remoteExtensionRoot="true" style="true" layout="true" />
<leaf node="false" absolute="false" url="/public/portal/orgaosConselhoPedagogico.html" proxy="estgp" id="orgaosConselhoPedagogico" label="Conselho Pedagógico"></leaf>
<leaf node="false" absolute="false" url="/Conselho.Pedagogico.Externo" proxy="grupos" id="pastaConselhoPegagogicoExterna" label=" -----> Documentação CP" remoteExtensionRoot="true" style="true" layout="true" />
<leaf node="false" absolute="false" url="/public/portal/orgaosConselhoRepresentantes.html" proxy="estgp" id="orgaosConselhoRepresentantes" label="Conselho Representantes"></leaf>
<leaf node="false" absolute="false" url="/Conselho.Representantes.Externo" proxy="grupos" id="pastaConselhoRepresentantesExterna" label=" -----> Documentação CR" remoteExtensionRoot="true" style="true" layout="true" />
<leaf node="false" absolute="false" url="/public/portal/orgaosConselhoGestao.html" proxy="estgp" id="orgaosConselhogestao" label="Conselho de Gestão"></leaf>
<leaf node="false" absolute="false" url="/public/portal/orgaosConselhoInterdepartamental.html" proxy="estgp" id="orgaosConselhoInterdepartamental" label="Conselho Interdepartamental"></leaf>
</leaf>
<leaf node="true" label="Informação Académica" id="infoAcademica" group="2">
<leaf node="false" absolute="true" url="http://baco.estgp.pt/dir/student/infoAcademica/infoAcadCalendarioEscolar/public/portal/CL20102011.pdf" proxy="estgp" id="infoAcadCalendarioEscolar" label="Calendário Escolar"></leaf>
<leaf node="false" absolute="true" url="http://baco.estgp.pt/courses.do?type=L" proxy="estgp" id="infoAcadLicenciaturas" label="Licenciaturas"></leaf>
<leaf node="false" absolute="true" url="http://baco.estgp.pt/courses.do?type=M" proxy="estgp" id="infoAcadMestrados" label="Mestrados"></leaf>
<leaf node="false" absolute="true" url="http://baco.estgp.pt/courses.do?type=P" proxy="estgp" id="infoAcadPgraduacoes" label="Pós-Graduações"></leaf>
<leaf node="false" absolute="true" url="http://baco.estgp.pt/courses.do?type=E" proxy="estgp" id="infoAcadCET" label="CET"></leaf>
</leaf>
<leaf node="true" label="O IPP" id="IPP" group="1">
<leaf node="false" absolute="true" url="http://www.ipportalegre.pt/" proxy="estgp" id="ippIPP" label="IPP Serviços Centrais"></leaf>
<leaf node="false" absolute="true" url="http://www.esep.pt/" proxy="estgp" id="ippESEP" label="Esc. Sup. de Educação"></leaf>
<leaf node="false" absolute="true" url="http://www.esaelvas.pt/" proxy="estgp" id="ippESAE" label="Esc. Sup. Agrária"></leaf>
<leaf node="false" absolute="true" url="http://www.essp.pt/" proxy="estgp" id="ippESSP" label="Esc. Sup. de Saúde"></leaf>
<leaf node="false" absolute="true" url="http://www.ipportalegre.pt/sas/" proxy="estgp" id="ippSAS" label="Serviços de Ação Social"></leaf>
</leaf>
<leaf node="true" label="Departamentos" id="departamentos" group="2">
<leaf node="false" absolute="false" url="/public/departamentos/depTD.html" proxy="estgp" id="depTD" label="Departamento de TD"></leaf>
<leaf node="false" absolute="false" url="/public/departamentos/depCESH.html" proxy="estgp" id="depCESH" label="Departamento de CESH"></leaf>
</leaf>
</directory>
/impl/conf/directories/directoryBeforeConfiguration.xsd
New file
0,0 → 1,180
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2008 rel. 2 sp2 (http://www.altova.com) by Jorge Machado (Escola Superior de tecnologia e Gestao, Portalegre) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.estgp.pt/baco/directory/" targetNamespace="http://www.estgp.pt/baco/directory/" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="directory">
<xs:annotation>
<xs:documentation>This schema is to define information structured directories</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="groupsDeclaration" type="groupDeclarationT" minOccurs="0"/>
<xs:choice maxOccurs="unbounded">
<xs:element name="node" type="nodeT"/>
<xs:element name="leaf" type="leafT"/>
</xs:choice>
<xs:element name="rights" type="rightsT" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="label" use="required"/>
<xs:attribute name="label_en" use="optional"/>
<xs:attribute name="label_es" use="optional"/>
<xs:attribute name="place" use="required"/>
<xs:attribute name="style" use="required"/>
<xs:attribute name="layout" use="required"/>
<xs:attribute name="layoutRoot" use="required"/>
<xs:attribute name="targetRole" use="required"/>
<xs:attribute name="menuKey" use="required"/>
</xs:complexType>
</xs:element>
<xs:complexType name="nodeT">
<xs:annotation>
<xs:documentation>A node is a directory internal object, it has a label and an identifier and can have children nodes and/or leafs</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="groupsDeclaration" type="groupDeclarationT" minOccurs="0"/>
<xs:choice maxOccurs="unbounded">
<xs:element name="node" type="nodeT"/>
<xs:element name="leaf" type="leafT"/>
</xs:choice>
<xs:element name="rights" type="rightsT" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="label" use="required"/>
<xs:attribute name="label_en" use="optional"/>
<xs:attribute name="label_es" use="optional"/>
<xs:attribute name="group" use="optional">
<xs:annotation>
<xs:documentation>Grouping purposes in styling</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="showNav" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>Show link to this node in navigation menus, true by default</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="type" use="optional">
<xs:annotation>
<xs:documentation>Type of node, by default HTTP link</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="ftp"/>
<xs:enumeration value="http"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="id" type="xs:ID" use="required"/>
</xs:complexType>
<xs:complexType name="leafT">
<xs:annotation>
<xs:documentation>A leaf is an URL for an external or internal WEB site</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>A leaf can be a root of some diferent system like FTP server Directory</xs:documentation>
</xs:annotation>
<xs:element name="node" type="nodeT"/>
<xs:element name="leaf" type="leafT"/>
</xs:choice>
<xs:element name="rights" type="rightsT" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="url" type="xs:string" use="required"/>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="label" use="required"/>
<xs:attribute name="label_en" use="optional"/>
<xs:attribute name="label_es" use="optional"/>
<xs:attribute name="xml" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>False by default</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="layout" type="xs:boolean">
<xs:annotation>
<xs:documentation>True by default, define if a source is to be included in layout or opened in all window</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="style" type="xs:boolean">
<xs:annotation>
<xs:documentation>True by default, define if a source is to be styled by the XSLT.
When style=false and layout=false external file will be directly writed in TopWindow</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="absolute" type="xs:boolean" use="required">
<xs:annotation>
<xs:documentation>follow parameter will be evaluated only If this parameter is set to false</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="proxy" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Only consider a proxy if it is here defined</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="group" use="optional">
<xs:annotation>
<xs:documentation>Grouping purposes in styling</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="remoteExtensionRoot" type="xs:boolean" use="optional"/>
<!--
The next attributes are filled by system BACO when remoteExtensionPoint is reached
-->
<xs:attribute name="ftpDirectory" type="xs:boolean"/>
<xs:attribute name="size" use="optional">
<xs:annotation>
<xs:documentation>Size of content in Kb</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="mimeType" use="optional">
<xs:annotation>
<xs:documentation>Mime Type of content in Kb</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="lastModification" use="optional">
<xs:annotation>
<xs:documentation>Last Modification of content in Kb</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="visualization" use="optional">
<xs:annotation>
<xs:documentation>Type of node, by default HTTP link</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="filesystem"/>
<xs:enumeration value="normal"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="groupDeclarationT">
<xs:sequence>
<xs:element name="group" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="rightsT">
<xs:annotation>
<xs:documentation>Rights define who is authorized to enter in a node</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="role" type="rightT1"/>
<xs:element name="user" type="rightT1"/>
</xs:choice>
<xs:element name="internal" type="xs:boolean" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="rightT1" mixed="true">
<xs:annotation>
<xs:documentation>A right T1 can be to permit or restrict</xs:documentation>
</xs:annotation>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="permit"/>
<xs:enumeration value="restrict"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:schema>
Property changes:
Added: svn:executable
+ *
/impl/conf/directories/editados/teacher.xml
1,4 → 1,4
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<directory label="Docentes" place="home" layout="layout0" layoutRoot="layoutPortal" targetRole="teacher" id="teacher" menuKey="menu.docentes" style="style1.xsl" xmlns="http://www.estgp.pt/baco/directory/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.estgp.pt/baco/directory/ directory.xsd">
<groupsDeclaration>
<group>1</group>
/impl/conf/berserk/sd.xml
2085,5 → 2085,58
</service>
 
 
<!--DIRECTORIES-->
 
<service>
<name>LoadDirectoryService</name>
<implementationClass>pt.estgp.estgweb.services.directories.DirectoryService</implementationClass>
<description>Loads a Directory</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadDirectory</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="ServicesOrAdmin"/>
</filterChains>
</service>
 
<service>
<name>LoadDirectoryServiceXml</name>
<implementationClass>pt.estgp.estgweb.services.directories.DirectoryService</implementationClass>
<description>Loads a Directory</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadDirectoryXml</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
 
<service>
<name>LoadDirectoryServiceHtml</name>
<implementationClass>pt.estgp.estgweb.services.directories.DirectoryService</implementationClass>
<description>Loads a Directory and style it with XSL</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadDirectoryHtml</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
 
<service>
<name>SaveDirectoryService</name>
<implementationClass>pt.estgp.estgweb.services.directories.DirectoryService</implementationClass>
<description>Save a Directory Object</description>
<isTransactional>true</isTransactional>
<defaultMethod>saveDirectory</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Admins"/>
</filterChains>
</service>
 
 
 
</serviceDefinitions>
/impl/conf/berserk/fcd.xml
49,6 → 49,13
<filterClass>pt.estgp.estgweb.filters.chains.AdminControlFilter</filterClass>
</filterChain>
<filterChain>
<name>ServicesOrAdmin</name>
<expression>AuthenticatedUsers &amp;&amp; (RoleUsers("admin") || RoleUsers("services"))</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 &amp;&amp; RoleUsers("identifiersManager")</expression>
<description>Admins Control Chain</description>
/impl/src/java/jomm/dao/impl/AbstractDao.java
13,9 → 13,7
import pt.estgp.estgweb.domain.DomainSerializableObject;
 
import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.*;
 
import static org.hibernate.criterion.Restrictions.eq;
 
258,6 → 256,8
}
}
 
 
 
/**
* Returns results as a page.
* <p/>
903,4 → 903,38
 
return criteria;
}
 
/**
* return deleted objects
* @param incompleteList
* @param persistentList
* @param comparator
* @return
*/
public List<CLAZZ> deleteMissing(Collection<CLAZZ> incompleteList, Collection<CLAZZ> persistentList,Comparator<CLAZZ> comparator)
{
List<CLAZZ> deletedObjects = new ArrayList<CLAZZ>();
//Remover apagados
Iterator<CLAZZ> iterPersistentObjects = persistentList.iterator();
while(iterPersistentObjects.hasNext())
{
CLAZZ persisitentObj = iterPersistentObjects.next();
boolean found = false;
for(CLAZZ incompleteListObj: incompleteList)
{
if(comparator.compare(incompleteListObj,persisitentObj)==0)
{
found = true;
break;
}
}
if(!found)
{
iterPersistentObjects.remove();
deletedObjects.add(persisitentObj);
delete(persisitentObj);
}
}
return deletedObjects;
}
}
/impl/src/java/jomm/web/ftp/impl/FtpFile.java
189,7 → 189,8
IFile iFile;
if (path.endsWith("/"))
iFile = new FtpFile(ftpFile, server + URIUtil.encodePath(path +ftpFile.getName(),"ISO-8859-1"), path);
else iFile = new FtpFile(ftpFile, server + URIUtil.encodePath(path + "/" + ftpFile.getName(),"ISO-8859-1"), path);
else
iFile = new FtpFile(ftpFile, server + URIUtil.encodePath(path + "/" + ftpFile.getName(),"ISO-8859-1"), path);
iFiles.add(iFile);
}
return iFiles;
/impl/src/java/pt/estgp/estgweb/utils/Dom4jUtil.java
256,7 → 256,7
 
private static Transformer getTransformerFromSystem(String xsltFile) throws TransformerConfigurationException, IOException
{
Templates tpl= templates.get(xsltFile);
Templates tpl = templates.get(xsltFile);
if (tpl==null)
{
String path = Globals.CLASSES_ABSOLUTE_PATH + xsltFile;
/impl/src/java/pt/estgp/estgweb/utils/DynamicArrayList.java
New file
0,0 → 1,70
package pt.estgp.estgweb.utils;
 
import java.util.ArrayList;
 
/**
* Created by jorgemachado on 16/11/15.
*/
public class DynamicArrayList<E> extends ArrayList<E>
{
Class referenceClass;
public DynamicArrayList(Class clazz)
{
this.referenceClass = clazz;
}
 
 
@Override
public E get(int i) {
if(i >= size())
{
while(i >= size())
{
try {
super.add((E)referenceClass.newInstance());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
return super.get(i);
}
 
@Override
public void add(int i, E obj) {
if(i >= size())
{
while(i >= size())
{
try {
super.add((E)referenceClass.newInstance());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
super.add(i,obj);
}
 
@Override
public E set(int i, E obj) {
if(i >= size())
{
while(i >= size())
{
try {
super.add((E)referenceClass.newInstance());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
return super.set(i,obj);
}
}
/impl/src/java/pt/estgp/estgweb/Globals.java
1,12 → 1,8
package pt.estgp.estgweb;
 
import pt.estgp.estgweb.domain.DirectoryImpl;
import pt.estgp.estgweb.services.directories.DirectoryService;
import pt.estgp.estgweb.utils.ConfigProperties;
 
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
* @author Jorge Machado
28,6 → 24,7
CLASSES_ABSOLUTE_PATH = CLASSES_ABSOLUTE_PATH.substring(0,CLASSES_ABSOLUTE_PATH.length()-1);
}
 
/*
//place, List
public static Map<String,List<DirectoryImpl>> DIRECTORIES = new HashMap<String,List<DirectoryImpl>>();
 
47,9 → 44,9
return directories;
}
}
*/
 
 
 
public static final String ROLE_PROCESSES_ADMIN = "processes.admin";
public static final String INTRANET_IMPRESSAO_SERVICO_API = ConfigProperties.getProperty("impressao.servicos.api");
public static final boolean INTRANET_IMPRESSAO_SERVICO_AUTH = ConfigProperties.getBooleanProperty("impressao.servicos.auth");
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportGradesService.java
45,11 → 45,39
public ILogMessages run(String year) throws ServiceException
{
DefaultLogMessages logMessages = new DefaultLogMessages();
logMessages.addMessage(new DefaultLogMessage("import.grades", LogMessageTypeEnum.INFO, "instituicao " + DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()));
logger.info("starting grades import");
logMessages.addMessage(new DefaultLogMessage("import.grades", LogMessageTypeEnum.INFO, "instituicao " + DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode() + " ano : " + year));
logger.info("starting grades import " + year);
 
try
{
AbstractDao.getCurrentSession().beginTransaction();
logger.info("Loading Epocas de avaliacao");
List<ConfigurationGradesEpocaAvaliacao> epocas = DaoFactory.getConfigurationGradesEpocaAvaliacaoDaoImpl().findAll();
if(epocas == null || epocas.size() == 0)
{
logMessages.addMessage(new DefaultLogMessage("import.grades",LogMessageTypeEnum.WARNING,"Sem Epocas de Avaliacao, por favor adicione as epocas ao sistema"));
logger.warn("Sem Epocas de Avaliacao, por favor adicione as epocas ao sistema");
return logMessages;
}
List<ConfigurationGradesStatusEpoca> statusEpocas = DaoFactory.getConfigurationGradesStatusEpocaDaoImpl().findAll();
if(statusEpocas == null || statusEpocas.size() == 0)
{
logMessages.addMessage(new DefaultLogMessage("import.grades",LogMessageTypeEnum.WARNING,"Sem Status de epocas de avaliacao, por favor adicione as epocas ao sistema"));
logger.warn("Sem Status de epocas de avaliacao, por favor adicione as epocas ao sistema");
return logMessages;
}
HashMap<String,String> mapaEpocasAvaliacao = new HashMap<String, String>();
for(ConfigurationGradesEpocaAvaliacao epoca: epocas)
{
mapaEpocasAvaliacao.put(epoca.getCodigoEpoca() + "-" + epoca.getCodigoMomento(), epoca.getDescricao());
}
 
HashMap<String,String> mapaStatusEpocas = new HashMap<String, String>();
for(ConfigurationGradesStatusEpoca statusEpoca: statusEpocas)
{
mapaStatusEpocas.put(statusEpoca.getStatus(), statusEpoca.getDescricao());
}
 
//AbstractDao.getCurrentSession().beginTransaction();
String WSDL = DaoFactory.getConfigurationDaoImpl().getSigesWebServicesWsdl();
SiGesWEB service;
try
74,6 → 102,16
AbstractDao.getCurrentSession().beginTransaction();
}
 
/**
* n.codigo_aluno = getDecimal("CD_ALUNO",aReader); ----- OK
n.codigo_curso = getDecimal("CD_CURSO", aReader); ----- OK
n.codigo_disciplina = getDecimal("CD_DISCIP", aReader);- OK
n.nota = getDecimal("NR_AVALIA", aReader); ---------- OK
n.data_avaliacao = getDateTime("DT_AVALIA", aReader); - OK
n.status_epoca = getDecimal("CD_STA_EPO", aReader); -- OK
n.cd_duracao = getString("CD_DURACAO",aReader); - ------ OK
*/
 
int codAluno = nota.getCodigoAluno().intValue();
int codUnidade = nota.getCodigoDisciplina().intValue();
int codCurso = nota.getCodigoCurso().intValue();
81,18 → 119,23
int valor = nota.getNota().intValue();
int statusEpoca = nota.getStatusEpoca().intValue();
Date data = nota.getDataAvaliacao().toGregorianCalendar().getTime();
int momento = nota.getMomentoAvaliacao().intValue();
int epoca = nota.getEpocaAvaliacao().intValue();
//boolean eFinal = nota.get
 
String descricaoEpoca = mapaEpocasAvaliacao.get(epoca + "-" + momento);
String descricaoStatusEpoca = mapaStatusEpocas.get(""+statusEpoca) == null ? ""+statusEpoca : mapaStatusEpocas.get(statusEpoca+"");
 
Student s = DaoFactory.getStudentDaoImpl().loadBySigesCode(codAluno);
 
if(s != null)
if(descricaoEpoca!= null && s != null)
{
CourseUnit courseUnit;
try{
courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUniqueSubscribed("" + codUnidade, year, "" + codCurso,s.getId(),cdDuracao);
if(courseUnit != null)
{
CourseUnitGrade grade = DaoFactory.getCourseUnitGradeDaoImpl().find(courseUnit.getId(),s.getId());
CourseUnitGrade grade = DaoFactory.getCourseUnitGradeDaoImpl().find(courseUnit.getId(),s.getId(),""+momento,""+epoca);
if(grade == null)
{
grade = DomainObjectFactory.createCourseUnitGradeImpl();
100,8 → 143,14
grade.setCourseUnit(courseUnit);
grade.setNormalizedCourseUnitName(courseUnit.getNormalizedName());
grade.setImportYear(year);
grade.setCodigoEpoca("" + epoca);
grade.setCodigoMomento("" + momento);
grade.setDescEpoca(descricaoEpoca);
grade.setStatusEpoca(statusEpoca);
grade.setDescStatusEpoca(descricaoStatusEpoca);
DaoFactory.getCourseUnitGradeDaoImpl().save(grade);
if(grade.getGrade() > 0)
 
if(grade.getGrade() >= 0)
addGrade(grade);
}
if(grade.getGrade() != valor || grade.getStatusEpoca() != statusEpoca || (grade.getPublishDate() != null && grade.getPublishDate().getTime() != data.getTime()))
109,14 → 158,16
grade.setPublishDate(data);
grade.setGrade(valor);
grade.setStatusEpoca(statusEpoca);
if(grade.getGrade() > 0)
grade.setDescStatusEpoca(descricaoStatusEpoca);
if(grade.getGrade() >= 0)
addGrade(grade);
}
 
}
else
{
logMessages.addMessage(new DefaultLogMessage("import.warning","","CourseUnit: " + codUnidade + ": course: " + codCurso + " does not exist or is not subscribed by student: " + codAluno + " with id:" + s.getId(), LogMessageTypeEnum.WARNING));
logger.warn("CourseUnit: " + codUnidade + ": course: " + codCurso + " does not exist");
logMessages.addMessage(new DefaultLogMessage("import.warning","","CourseUnit: " + codUnidade + " course: " + codCurso + " student: " + s.getSigesCode() + " semestre: " + cdDuracao + " year: " + year + " does not exist", LogMessageTypeEnum.WARNING));
logger.warn("CourseUnit: " + codUnidade + " course: " + codCurso + " student: " + s.getSigesCode() + " semestre: " + cdDuracao + " year: " + year + " does not exist");
}
}catch(Exception e)
{
126,20 → 177,28
}
else
{
logMessages.addMessage(new DefaultLogMessage("import.warning","","Student: " + codAluno + " does not exist", LogMessageTypeEnum.WARNING));
logger.warn("Student: " + codAluno + " does not exist");
if(descricaoEpoca == null)
{
logger.info(epoca + "-" + momento + " nao esta catalogada para atribuicao de nota");
logMessages.addMessage(new DefaultLogMessage("import.warning","",epoca + "-" + momento + " nao esta catalogada para atribuicao de nota", LogMessageTypeEnum.WARNING));
}else
{
logMessages.addMessage(new DefaultLogMessage("import.warning","","Student: " + codAluno + " does not exist", LogMessageTypeEnum.WARNING));
logger.warn("Student: " + codAluno + " does not exist");
}
 
}
 
}
sendSms(null);
sendEmail(null);
AbstractDao.getCurrentSession().getTransaction().commit();
//AbstractDao.getCurrentSession().getTransaction().commit();
}
catch (Throwable e)
{
logger.error(e, e);
 
AbstractDao.getCurrentSession().getTransaction().rollback();
//AbstractDao.getCurrentSession().getTransaction().rollback();
logMessages.addMessage(new DefaultLogMessage("import.error", e.toString(), "see log for details", LogMessageTypeEnum.ERROR));
throw new ServiceException(e.toString(), e);
}
189,6 → 248,7
 
private void sendEmail(UserSession userSession)
{
 
if(Globals.EMAIL_NEW_GRADES && newGrades.size() > 0)
{
Set<Map.Entry<Long,List<Long>>> set = newGrades.entrySet();
202,7 → 262,7
for(long gradeId: studentGrades)
{
CourseUnitGrade grade = DaoFactory.getCourseUnitGradeDaoImpl().get(gradeId);
String[] gradeArray = new String[] {grade.getNormalizedCourseUnitName(),""+grade.getGrade()};
String[] gradeArray = new String[] {grade.getNormalizedCourseUnitName(),""+grade.getGrade(),grade.getDescEpoca()};
gradesArray.add(gradeArray);
}
EMAILJob emailJob = new EMAILJob(sendEmailService.getNewGradesEmail(gradesArray, LangEnum.PORTUGUESE,s.getEmail(),s.getName()));
222,7 → 282,9
String year = DaoFactory.getConfigurationDaoImpl().getImportsDefaultImportYearCreateTransaction();;
if(args != null && args.length > 0)
year = args[0];
AbstractDao.getCurrentSession().beginTransaction();
new ImportGradesService().run(year);
AbstractDao.getCurrentSession().getTransaction().commit();
}
 
 
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportSumaries.java
89,7 → 89,7
//comentario de teste
try
{
arrayOfAulas = service.getSiGesWEBSoap().getAulas(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year,c.getCode(),DatesUtils.getSemestre());
arrayOfAulas = service.getSiGesWEBSoap().getAulas(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year,c.getCode(),DatesUtils.getSemestre(),null);
break;
}
catch(Throwable t)
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportStudentsService.java
65,6 → 65,8
studentsChangeBI = 0;
unitsAddedToStudents = 0;
 
String activeImportYear = DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear();
 
String msgS = "STARTING STUDENTS IMPORT SERVICE FOR YEAR: " + year;
serviceLogInfo(msgS);
logger.info(msgS);
148,7 → 150,7
DaoFactory.getStudentDaoImpl().save(s);
newUser = true;
}
persist(alunoSiges, s, newUser,year);
persist(alunoSiges, s, newUser,year,activeImportYear);
//Advising CommonsServicesManager before change password
 
if (newUser)
256,6 → 258,7
}
 
 
 
/**
* Nao esta testado
* jm
263,7 → 266,7
* @param alunoSiges Aluno
* @param student Student
*/
private void persist(Aluno alunoSiges, Student student, boolean newUser, String year)
private void persist(Aluno alunoSiges, Student student, boolean newUser, String year, String activeImportYear)
{
if(newUser)
{
311,6 → 314,35
 
}
 
if(alunoSiges.getHistoricos() == null || alunoSiges.getHistoricos().getAlunoHistorico() == null || alunoSiges.getHistoricos().getAlunoHistorico().size() == 0)
{
student.setPropinasEmDia(false);
serviceLogWarn("ATENTION Estudante sem historico de Matriculas para aferir propinas: codigo " + alunoSiges.getCodigo());
logger.warn("ATENTION Estudante sem historico de Matriculas para aferir propinas: codigo " + alunoSiges.getCodigo());
}
else
{
student.setPropinasEmDia(false);
student.setPropinasEmDiaYear(activeImportYear);
 
for(AlunoHistorico hist: alunoSiges.getHistoricos().getAlunoHistorico())
{
if(hist.getCodigoLectivo()!=null && hist.getCodigoLectivo().equals(activeImportYear))
{
if(hist.getPropinaEmDia().equalsIgnoreCase("s"))
{
student.setPropinasEmDia(true);
student.setPropinasEmDiaYear(activeImportYear);
}
break;
}
}
if(!student.isPropinasEmDia())
{
serviceLogWarn("ATENTION Estudante sem propina em dia: codigo " + alunoSiges.getCodigo());
logger.warn("ATENTION Estudante sem propina em dia: codigo " + alunoSiges.getCodigo());
}
}
/*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 (alunoSiges.getDisciplinasInscrito() == null || alunoSiges.getDisciplinasInscrito().getDisciplina() == null || alunoSiges.getDisciplinasInscrito().getDisciplina().size() == 0)
{
453,10 → 485,11
public static final String JOB_importYear_KEY = "JOB_importYear_KEY";
 
@Override
protected void runJobServiceTask() throws Throwable {
protected ILogMessages runJobServiceTask() throws Throwable {
 
String importYear = (String) getParametersMap().get(JOB_importYear_KEY).getObject();
run(importYear);
String importYear = getParametersMap().get(JOB_importYear_KEY).getObject();
ILogMessages messages = run(importYear);
return messages;
 
}
 
/impl/src/java/pt/estgp/estgweb/services/sigesimports/LoadSumariesToPDF.java
67,7 → 67,7
}
AbstractDao.getCurrentSession().beginTransaction();
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(courseUnitId);
ArrayOfAula arrayOfAulas = service.getSiGesWEBSoap().getAulas(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), c.getImportYear(),c.getCode(),c.getSemestre());
ArrayOfAula arrayOfAulas = service.getSiGesWEBSoap().getAulas(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), c.getImportYear(),c.getCode(),c.getSemestre(),c.getCourse().getCode());
 
if(arrayOfAulas != null && arrayOfAulas.getAula() != null)
{
139,7 → 139,7
//comentario de teste
try
{
arrayOfAulas = service.getSiGesWEBSoap().getAulas(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year,c.getCode(),DatesUtils.getSemestre());
arrayOfAulas = service.getSiGesWEBSoap().getAulas(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year,c.getCode(),DatesUtils.getSemestre(),c.getCourse().getCode());
break;
}
catch(Throwable t)
/impl/src/java/pt/estgp/estgweb/services/sigesimports/SincronizeLastYearCourseUnitProgramsService.java
80,8 → 80,10
serviceLogInfo(logMessages.getLastMessage());
 
int i = 0;
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadYear(year);
for (CourseUnit cu: units)
List<Long> units = DaoFactory.getCourseUnitDaoImpl().loadIds(year);
//List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadYear(year);
for (Long cuId: units)
// for (CourseUnit cu: units)
{
 
SaveCourseUnitProgram service = new SaveCourseUnitProgram();
96,6 → 98,7
AbstractDao.getCurrentSession().beginTransaction();
serviceLogInfo("Commiting database");
}
CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(cuId);
if(cu.getCourseUnitProgram() == null || !cloneOnlyNews)
{
 
183,6 → 186,7
 
//cu.setValidProgram(true);
}
setProgress(100);
logger.info("######################################");
serviceLogInfo("######################################");
logger.info("######################################");
263,7 → 267,6
logger.info("terminating programs sincronization");
serviceLogInfo("terminating programs sincronization");
logMessages.addMessage(new DefaultLogMessage("courseunitprograms.sincronization.terminating", LogMessageTypeEnum.INFO));
setProgress(100);
return logMessages;
}
 
399,13 → 402,16
* @throws Throwable
*/
@Override
protected void runJobServiceTask() throws Throwable
protected ILogMessages runJobServiceTask() throws Throwable
{
String importYear = (String) getParametersMap().get(JOB_importYear_KEY).getObject();
Boolean cloneOnlyNews = (Boolean) getParametersMap().get(JOB_cloneOnlyNews_KEY).getObject();
Boolean generateAllPdfs = (Boolean) getParametersMap().get(JOB_generateAllPdfs_KEY).getObject();
Boolean validate = (Boolean) getParametersMap().get(JOB_validate_KEY).getObject();
run(importYear,cloneOnlyNews,generateAllPdfs,validate);
String importYear = getParametersMap().get(JOB_importYear_KEY).getObject();
String cloneOnlyNewsStr = getParametersMap().get(JOB_cloneOnlyNews_KEY).getObject();
String generateAllPdfsStr = getParametersMap().get(JOB_generateAllPdfs_KEY).getObject();
String validateStr = getParametersMap().get(JOB_validate_KEY).getObject();
boolean cloneOnlyNews = cloneOnlyNewsStr != null && Boolean.parseBoolean(cloneOnlyNewsStr);
boolean generateAllPdfs = generateAllPdfsStr != null && Boolean.parseBoolean(generateAllPdfsStr);
boolean validate = validateStr != null && Boolean.parseBoolean(validateStr);
return run(importYear,cloneOnlyNews,generateAllPdfs,validate);
}
 
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportTeachersService.java
572,11 → 572,10
}
 
@Override
protected void runJobServiceTask() throws Throwable {
protected ILogMessages runJobServiceTask() throws Throwable {
 
String importYear = (String) getParametersMap().get(JOB_importYear_KEY).getObject();
run(importYear);
 
String importYear = getParametersMap().get(JOB_importYear_KEY).getObject();
return run(importYear);
}
 
public static final String JOB_importYear_KEY = "JOB_importYear_KEY";
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportCourseService.java
271,10 → 271,11
public static final String JOB_importYear_KEY = "JOB_importYear_KEY";
 
@Override
protected void runJobServiceTask() throws Throwable {
protected ILogMessages runJobServiceTask() throws Throwable {
 
String importYear = (String) getParametersMap().get(JOB_importYear_KEY).getObject();
run(importYear);
String importYear = getParametersMap().get(JOB_importYear_KEY).getObject();
ILogMessages messages = run(importYear);
return messages;
 
}
 
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportSumariesJson.java
132,7 → 132,7
//comentario de teste
try
{
arrayOfAulas = service.getSiGesWEBSoap().getAulas(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year,c.getCode(),semestre);
arrayOfAulas = service.getSiGesWEBSoap().getAulas(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year,c.getCode(),semestre,c.getCourse().getCode());
break;
}
catch(Throwable t)
386,14 → 386,15
public static final String JOB_sendEmail_KEY = "JOB_sendEmail_KEY";
 
@Override
protected void runJobServiceTask() throws Throwable {
protected ILogMessages runJobServiceTask() throws Throwable {
 
String importYear = (String) getParametersMap().get(JOB_importYear_KEY).getObject();
String semestre = (String) getParametersMap().get(JOB_semestre_KEY).getObject();
Boolean sendIonline = (Boolean) getParametersMap().get(JOB_sendIonline_KEY).getObject();
Boolean sendEmail = (Boolean) getParametersMap().get(JOB_sendEmail_KEY).getObject();
run(importYear,semestre,sendIonline,sendEmail);
 
String importYear = getParametersMap().get(JOB_importYear_KEY).getObject();
String semestre = getParametersMap().get(JOB_semestre_KEY).getObject();
String sendIonlineStr = getParametersMap().get(JOB_sendIonline_KEY).getObject();
String sendEmailStr = getParametersMap().get(JOB_sendEmail_KEY).getObject();
boolean sendIonline = sendIonlineStr != null && Boolean.parseBoolean(sendIonlineStr);
boolean sendEmail = sendEmailStr != null && Boolean.parseBoolean(sendEmailStr);
return run(importYear,semestre,sendIonline,sendEmail);
}
 
}
/impl/src/java/pt/estgp/estgweb/services/ftpservices/FtpService.java
69,13 → 69,13
{
 
}
else if(passwordCode != null)
else
{
logger.info("using saved password");
password = DesUtils.getInstance().decrypt(passwordCode);
//System.out.println("SAVEDPASS:" + password);
}
else if(userSession.getUser().getPop3password() != null && userSession.getUser().getPop3password().length() > 0)
/*else if(userSession.getUser().getPop3password() != null && userSession.getUser().getPop3password().length() > 0)
{
logger.info("trying pop 3 password");
password = DesUtils.getInstance().decrypt(userSession.getUser().getPop3password());
84,7 → 84,7
{
logger.info("trying last used login password");
password = DesUtils.getInstance().decrypt(userSession.getUser().getPassword());
}
}*/
username = ftpRequestForm.getUsername();
if(username == null || username.trim().length() == 0)
username = userSession.getUsername();
/impl/src/java/pt/estgp/estgweb/services/jobs/JobScheduleService.java
106,7 → 106,8
public static void main(String[] args) throws SQLException
{
AbstractDao.getCurrentSession().beginTransaction();
scheduleImportStudents();
 
scheduleSincronizePrograms();
AbstractDao.getCurrentSession().getTransaction().commit();
}
 
130,10 → 131,10
param2.setDescription("desc2");
param3.setDescription("desc3");
param4.setDescription("desc4");
param1.setObject(new Boolean(false));
param2.setObject(new Boolean(true));
param1.setObject("false");
param2.setObject("true");
param3.setObject("201415");
param4.setObject(new Boolean(true));
param4.setObject("true");
Set<JobServiceTaskSchedulerParameter> params = new HashSet<JobServiceTaskSchedulerParameter>();
params.add(param1);
params.add(param2);
142,7 → 143,7
jobServiceTaskScheduler.setServiceTaskSchedulerParameters(params);
 
jobServiceTaskScheduler.setDaily(true);
jobServiceTaskScheduler.setMonthday(GregorianCalendar.NOVEMBER);
jobServiceTaskScheduler.setMonthday(1);
jobServiceTaskScheduler.setWeekday(GregorianCalendar.MONDAY);
jobServiceTaskScheduler.setHour(01);
jobServiceTaskScheduler.setMinute(0);
183,8 → 184,8
param4.setDescription("desc4");
param1.setObject("201415");
param2.setObject("S1");
param3.setObject(new Boolean(false));
param4.setObject(new Boolean(false));
param3.setObject("false");
param4.setObject("false");
Set<JobServiceTaskSchedulerParameter> params = new HashSet<JobServiceTaskSchedulerParameter>();
params.add(param1);
params.add(param2);
193,7 → 194,7
jobServiceTaskScheduler.setServiceTaskSchedulerParameters(params);
 
jobServiceTaskScheduler.setDaily(true);
jobServiceTaskScheduler.setMonthday(GregorianCalendar.NOVEMBER);
jobServiceTaskScheduler.setMonthday(1);
jobServiceTaskScheduler.setWeekday(GregorianCalendar.MONDAY);
jobServiceTaskScheduler.setHour(01);
jobServiceTaskScheduler.setMinute(0);
225,8 → 226,8
params.add(param1);
jobServiceTaskScheduler.setServiceTaskSchedulerParameters(params);
 
jobServiceTaskScheduler.setDaily(true);
jobServiceTaskScheduler.setMonthday(GregorianCalendar.NOVEMBER);
jobServiceTaskScheduler.setMonthly(true);
jobServiceTaskScheduler.setMonthday(1);
jobServiceTaskScheduler.setWeekday(GregorianCalendar.MONDAY);
jobServiceTaskScheduler.setHour(01);
jobServiceTaskScheduler.setMinute(0);
293,7 → 294,7
params.add(param1);
jobServiceTaskScheduler.setServiceTaskSchedulerParameters(params);
 
jobServiceTaskScheduler.setDaily(true);
jobServiceTaskScheduler.setWeekly(true);
jobServiceTaskScheduler.setMonthday(GregorianCalendar.NOVEMBER);
jobServiceTaskScheduler.setWeekday(GregorianCalendar.MONDAY);
jobServiceTaskScheduler.setHour(01);
/impl/src/java/pt/estgp/estgweb/services/jobs/ServiceJob.java
7,6 → 7,7
import pt.estgp.estgweb.domain.JobServiceTask;
import pt.estgp.estgweb.domain.JobServiceTaskImpl;
import pt.estgp.estgweb.domain.JobServiceTaskParameter;
import pt.estgp.estgweb.services.logresults.ILogMessages;
 
import java.io.IOException;
import java.util.*;
99,8 → 100,13
jobServiceTask.setServiceLastUpdateDate(new Date());
try {
//call the implementation of service this will update serviceLog and progress
runJobServiceTask();
jobServiceTask.setStatusEnum(JobServiceTaskImpl.JobStatus.FINISHED);
ILogMessages messages = runJobServiceTask();
if(messages.hasErrors())
jobServiceTask.setStatusEnum(JobServiceTaskImpl.JobStatus.FINISHED_ERRORS);
else if(messages.hasWarnings())
jobServiceTask.setStatusEnum(JobServiceTaskImpl.JobStatus.FINISHED_WARNINGS);
else
jobServiceTask.setStatusEnum(JobServiceTaskImpl.JobStatus.FINISHED);
jobServiceTask.setServiceLastUpdateDate(new Date());
jobServiceTask.setServiceFinishDate(new Date());
serviceLog.info("FINISHING SERVICE");
125,5 → 131,5
public void serviceLogFatal(String str, Throwable e){ if(jobServiceTask != null) serviceLog.fatal(str,e);}
 
//Implemented in SubService to run the Job
protected abstract void runJobServiceTask() throws Throwable;
protected abstract ILogMessages runJobServiceTask() throws Throwable;
}
/impl/src/java/pt/estgp/estgweb/services/jobs/JobDeamon.java
109,9 → 109,7
{
logger.info("Schedulling one job " + schedule.getTargetService() + " to run");
JobServiceTaskImpl jobServiceTask = DomainObjectFactory.createJobServiceTaskImpl();
DaoFactory.getJobServiceTaskDaoImpl().save(jobServiceTask);
jobServiceTask.setStartDate(new Date());
DaoFactory.getJobServiceTaskDaoImpl().flush();
jobServiceTask.setTargetService(schedule.getTargetService());
jobServiceTask.setCreatedBy(schedule.getCreatedBy());
jobServiceTask.setExecuted(false);
122,6 → 120,7
jobServiceTask.setRequestStop(false);
jobServiceTask.setOwner(schedule.getCreatedBy());
jobServiceTask.setJobHandler(new SerializableNullJobHandler());
DaoFactory.getJobServiceTaskDaoImpl().save(jobServiceTask);
try {
String filePath = Class.forName(schedule.getTargetService()).getSimpleName() + "-" + DatesUtils.getFormatedFileSystem(new Date());
jobServiceTask.setLogFilePath( filePath + ".log");
140,10 → 139,10
paramJob.setJobServiceTask(jobServiceTask);
DaoFactory.getJobServiceTaskParameterDaoImpl().save(paramJob);
}
DaoFactory.getJobServiceTaskParameterDaoImpl().flush();
jobServiceTask.setServiceTaskParameters(paramsJob);
DaoFactory.getJobServiceTaskDaoImpl().saveOrUpdate(jobServiceTask);
 
//DaoFactory.getJobServiceTaskDaoImpl().saveOrUpdate(jobServiceTask);
 
//a last schedule date e a hora a que foi marcado para correr a ultima vez
//a partir do momento que e' agendado o trabalho ele vai correr portanto
//e' esta a hora que se considera para a corrida
/impl/src/java/pt/estgp/estgweb/services/logresults/impl/DefaultLogMessages.java
3,6 → 3,7
import pt.estgp.estgweb.domain.CourseUnitSummary;
import pt.estgp.estgweb.services.logresults.ILogMessages;
import pt.estgp.estgweb.services.logresults.ILogMessage;
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum;
 
import java.util.List;
import java.util.ArrayList;
40,6 → 41,26
return summaries;
}
 
@Override
public boolean hasErrors() {
if(logMessages == null)
return false;
for(ILogMessage m:logMessages)
if(m.getType() == LogMessageTypeEnum.ERROR || m.getType() == LogMessageTypeEnum.FATAL)
return true;
return false;
}
 
@Override
public boolean hasWarnings() {
if(logMessages == null)
return false;
for(ILogMessage m:logMessages)
if(m.getType() == LogMessageTypeEnum.WARNING)
return true;
return false;
}
 
public void setSummaries(List<CourseUnitSummary> summaries) {
this.summaries = summaries;
}
/impl/src/java/pt/estgp/estgweb/services/logresults/ILogMessages.java
13,4 → 13,6
{
public List<ILogMessage> getLogMessages();
List<CourseUnitSummary> getSummaries();
public boolean hasErrors();
public boolean hasWarnings();
}
/impl/src/java/pt/estgp/estgweb/services/directories/DirectoryService.java
3,23 → 3,35
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import pt.estgp.estgweb.domain.DirectoryImpl;
import pt.estgp.estgweb.domain.ConfigurationDirectoryImpl;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.filters.exceptions.NotFoundException;
import pt.estgp.estgweb.services.directories.xsd.Directory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.utils.Dom4jUtil;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import java.io.File;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
 
/**
* @author Jorge Machado
*/
public class DirectoryService
public class DirectoryService implements IService
{
 
private static final Logger logger = Logger.getLogger(DirectoryService.class);
 
 
/*
public List<DirectoryImpl> loadDirectories(String classesPath, String place)
{
List<DirectoryImpl> directories = new ArrayList<DirectoryImpl>();
68,4 → 80,159
}
return directories;
}
*/
 
public Directory loadDirectory(String identifier, UserSession sess)
{
Directory directory = null;
ConfigurationDirectoryImpl dir = DaoFactory.getConfigurationDirectoryDaoImpl().loadDirectory(identifier);
JAXBContext jc;
if(dir == null)
{
try
{
jc = JAXBContext.newInstance(Directory.class);
 
Unmarshaller unmarshaller = jc.createUnmarshaller();
directory = (Directory) unmarshaller.unmarshal(DirectoryService.class.getResourceAsStream("/pt/estgp/estgweb/directories/" + identifier + ".xml"));
 
dir = DomainObjectFactory.createConfigurationDirectoryImpl();
dir.setDescricao("");
dir.setIdDir(identifier);
 
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter sw = new StringWriter();
marshaller.marshal(directory, sw);
 
dir.setXml(sw.toString());
DaoFactory.getConfigurationDirectoryDaoImpl().save(dir);
return directory;
} catch (JAXBException e) {
logger.error(e,e);
}
}
else
{
try
{
jc = JAXBContext.newInstance(Directory.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
StringReader r = new StringReader(dir.getXml());
directory = (Directory) unmarshaller.unmarshal(r);
return directory;
} catch (JAXBException e) {
logger.error(e,e);
}
}
 
return directory;
}
 
public String loadDirectoryXml(String identifier, UserSession sess)
{
ConfigurationDirectoryImpl dir = DaoFactory.getConfigurationDirectoryDaoImpl().loadDirectory(identifier);
JAXBContext jc;
if(dir == null)
{
try
{
jc = JAXBContext.newInstance(Directory.class);
 
Unmarshaller unmarshaller = jc.createUnmarshaller();
Directory directory = (Directory) unmarshaller.unmarshal(DirectoryService.class.getResourceAsStream("/pt/estgp/estgweb/directories/" + identifier + ".xml"));
 
dir = DomainObjectFactory.createConfigurationDirectoryImpl();
dir.setDescricao("");
dir.setIdDir(identifier);
 
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter sw = new StringWriter();
marshaller.marshal(directory, sw);
 
dir.setXml(sw.toString());
DaoFactory.getConfigurationDirectoryDaoImpl().save(dir);
return sw.toString();
} catch (JAXBException e) {
logger.error(e,e);
}
}
else
{
return dir.getXml();
}
return null;
}
 
private static Map<String,String> cachedHtml = new HashMap<String, String>();
 
private static synchronized String getOrAddOrRemove(String id,String html,boolean remove)
{
if(remove)
cachedHtml.remove(id);
else if(html != null)
cachedHtml.put(id,html);
else
return cachedHtml.get(id);
return null;
}
public String loadDirectoryHtml(String identifier, Map<String,Object> parameters, UserSession sess) throws ServiceException {
String html = getOrAddOrRemove(identifier,null,false);
if(html != null)
return html;
 
String xml = loadDirectoryXml(identifier,sess);
try
{
JAXBContext jc = JAXBContext.newInstance(Directory.class);
 
Unmarshaller unmarshaller = jc.createUnmarshaller();
Directory directory = (Directory) unmarshaller.unmarshal(DirectoryService.class.getResourceAsStream("/pt/estgp/estgweb/directories/" + identifier + ".xml"));
 
Document dom = Dom4jUtil.parse(xml);
html = Dom4jUtil.styleDocument(dom,"/pt/estgp/estgweb/directories/" + directory.getStyle(), parameters);
getOrAddOrRemove(identifier,html,false);
} catch (JAXBException e) {
logger.error(e,e);
throw new ServiceException("Cant load Menu");
} catch (DocumentException e) {
logger.error(e, e);
throw new ServiceException("Cant load Menu");
} catch (Exception e) {
logger.error(e, e);
throw new ServiceException("Cant load Menu");
}
return html;
}
 
 
public void saveDirectory(Directory directory,UserSession sess) throws NotFoundException, ServiceException {
ConfigurationDirectoryImpl dir = DaoFactory.getConfigurationDirectoryDaoImpl().loadDirectory(directory.getId());
if(dir != null)
{
JAXBContext jc = null;
try {
jc = JAXBContext.newInstance(Directory.class);
 
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter sw = new StringWriter();
marshaller.marshal(directory, sw);
 
dir.setXml(sw.toString());
getOrAddOrRemove(directory.getId(),null,true);
}
catch (JAXBException e)
{
logger.error(e,e);
throw new ServiceException(e.toString(),e);
}
}
else
{
throw new NotFoundException("Directory does not exist with that ID " + directory.getId());
}
 
}
}
/impl/src/java/pt/estgp/estgweb/services/directories/xsd/RightImpl.java
New file
0,0 → 1,7
package pt.estgp.estgweb.services.directories.xsd;
 
/**
* Created by jorgemachado on 16/11/15.
*/
public class RightImpl extends RightsT.Right {
}
/impl/src/java/pt/estgp/estgweb/services/directories/xsd/TestDynamicLists.java
New file
0,0 → 1,43
package pt.estgp.estgweb.services.directories.xsd;
 
import junit.framework.TestCase;
 
/**
* Created by jorgemachado on 16/11/15.
*/
public class TestDynamicLists extends TestCase
{
public void testLists()
{
 
Directory d = new DirectoryImpl();
d.getGroupsDeclaration().getGroup().get(0).setName("teste");
d.getGroupsDeclaration().getGroup().get(1).setName("teste");
d.getRights().getRight().get(0).setName("teste");
d.getRights().getRight().get(1).setName("teste");
d.getLeaf().get(0).setAbsolute(true);
d.getLeaf().get(1).setAbsolute(true);
d.getLeaf().get(2).setAbsolute(true);
 
d.getLeaf().get(2).getLeaf().get(3).setAbsolute(true);
d.getLeaf().get(2).getLeaf().get(2).setAbsolute(false);
d.getLeaf().get(2).getLeaf().get(1).setAbsolute(true);
d.getLeaf().get(2).getLeaf().get(0).setAbsolute(false);
 
assertTrue(d.getGroupsDeclaration().getGroup().size() == 2);
assertTrue(d.getRights().getRight().size() == 2);
assertTrue(d.getLeaf().size() == 3);
 
 
 
assertTrue(d.getLeaf().get(2).getLeaf().get(0).getAbsolute() == false);
assertTrue(d.getLeaf().get(2).getLeaf().get(1).getAbsolute() == true);
assertTrue(d.getLeaf().get(2).getLeaf().get(2).getAbsolute() == false);
assertTrue(d.getLeaf().get(2).getLeaf().get(3).getAbsolute() == true);
 
d.getLeaf().get(3).getRights().getRight().get(0).setName("teste55");
 
assertEquals(d.getLeaf().get(3).getRights().getRight().get(0).getName(), "teste55");
 
}
}
/impl/src/java/pt/estgp/estgweb/services/directories/xsd/DirectoryImpl.java
New file
0,0 → 1,32
package pt.estgp.estgweb.services.directories.xsd;
 
import pt.estgp.estgweb.utils.DynamicArrayList;
 
/**
* Created by jorgemachado on 16/11/15.
*/
public class DirectoryImpl extends Directory
{
public DirectoryImpl()
{
super();
setRights(new RightsTImpl());
setGroupsDeclaration(new GroupsDeclarationTImpl());
leaf = new DynamicArrayList<LeafT>(LeafTImpl.class);
}
 
public boolean isGroupDeclarationEmpty()
{
return groupsDeclaration == null || groupsDeclaration.getGroup() == null || groupsDeclaration.getGroup().size() == 0;
}
 
public boolean isRightsEmpty()
{
return rights == null || rights.getRight() == null || rights.getRight().size() == 0;
}
 
public boolean isLeafEmpty()
{
return leaf == null || leaf.size() == 0;
}
}
/impl/src/java/pt/estgp/estgweb/services/directories/xsd/RightsTImpl.java
New file
0,0 → 1,22
package pt.estgp.estgweb.services.directories.xsd;
 
import pt.estgp.estgweb.utils.DynamicArrayList;
 
/**
* Created by jorgemachado on 16/11/15.
*/
public class RightsTImpl extends RightsT {
 
public RightsTImpl()
{
super();
right = new DynamicArrayList<Right>(RightImpl.class);
 
}
 
 
public boolean isRightEmpty()
{
return right == null || right.size() == 0;
}
}
/impl/src/java/pt/estgp/estgweb/services/directories/xsd/GroupsDeclarationTImpl.java
New file
0,0 → 1,20
package pt.estgp.estgweb.services.directories.xsd;
 
import pt.estgp.estgweb.utils.DynamicArrayList;
 
/**
* Created by jorgemachado on 16/11/15.
*/
public class GroupsDeclarationTImpl extends GroupDeclarationT
{
public GroupsDeclarationTImpl()
{
super();
group = new DynamicArrayList<Group>(GroupImpl.class);
}
 
public boolean isGroupEmpty()
{
return group == null || group.size() == 0;
}
}
/impl/src/java/pt/estgp/estgweb/services/directories/xsd/LeafTImpl.java
New file
0,0 → 1,89
package pt.estgp.estgweb.services.directories.xsd;
 
import pt.estgp.estgweb.utils.DynamicArrayList;
 
import java.util.Iterator;
import java.util.List;
 
/**
* Created by jorgemachado on 16/11/15.
*/
public class LeafTImpl extends LeafT
{
public LeafTImpl()
{
super();
setRights(new RightsTImpl());
setGroupsDeclaration(new GroupsDeclarationTImpl());
leaf = new DynamicArrayList<LeafT>(LeafTImpl.class);
}
 
public boolean isGroupDeclarationEmpty()
{
return groupsDeclaration == null || groupsDeclaration.getGroup() == null || groupsDeclaration.getGroup().size() == 0;
}
 
public boolean isRightsEmpty()
{
return rights == null || rights.getRight() == null || rights.getRight().size() == 0;
}
 
public boolean isLeafEmpty()
{
return leaf == null || leaf.size() == 0;
}
 
public static LeafT findLeaf(Directory d,String id)
{
return findLeafT(d.getLeaf(),id);
}
 
public static LeafT removeLeaf(Directory d,String id)
{
return removeLeafT(d.getLeaf(), id);
}
 
public static LeafT removeLeaf(LeafT l,String id)
{
return removeLeafT(l.getLeaf(), id);
}
public static LeafT findLeaf(LeafT l,String id)
{
return findLeafT(l.getLeaf(),id);
}
 
private static LeafT findLeafT(List<LeafT> leafs,String id)
{
if(leafs == null || leafs.size() == 0)
return null;
for(LeafT l: leafs)
{
if(l.getId().equals(id))
return l;
LeafT inside = findLeafT(l.getLeaf(),id);
if(inside != null)
return inside;
}
return null;
}
 
private static LeafT removeLeafT(List<LeafT> leafs,String id)
{
if(leafs == null || leafs.size() == 0)
return null;
Iterator<LeafT> iter = leafs.iterator();
while(iter.hasNext())
{
LeafT l = iter.next();
if(l.getId().equals(id))
{
iter.remove();
return l;
}
LeafT inside = removeLeafT(l.getLeaf(),id);
if(inside != null)
return inside;
}
return null;
}
}
/impl/src/java/pt/estgp/estgweb/services/directories/xsd/GroupImpl.java
New file
0,0 → 1,9
package pt.estgp.estgweb.services.directories.xsd;
 
/**
* Created by jorgemachado on 16/11/15.
*/
public class GroupImpl extends GroupDeclarationT.Group
{
 
}
/impl/src/java/pt/estgp/estgweb/services/announcements/CreateAnnouncementService.java
91,6 → 91,7
List<User> usersToConsume = new ArrayList<User>();
for(User u: users)
usersToConsume.add(u);
logger.info("Scheduling mail jobs to " + usersToConsume.size() + " recipients");
while(usersToConsume.size() > 0)
{
Iterator<User> iter = usersToConsume.iterator();
/impl/src/java/pt/estgp/estgweb/domain/ConfigurationGradesStatusEpocaImpl.java
New file
0,0 → 1,27
package pt.estgp.estgweb.domain;
 
import java.io.Serializable;
import java.util.Date;
 
/**
* Created by jorgemachado on 02/11/15.
*/
public class ConfigurationGradesStatusEpocaImpl extends ConfigurationGradesStatusEpoca {
 
public ConfigurationGradesStatusEpocaImpl()
{
}
@Override
public Serializable getSerializable() {
return getId();
}
 
public static ConfigurationGradesStatusEpocaImpl create(String status, String descricao)
{
ConfigurationGradesStatusEpocaImpl obj = DomainObjectFactory.createConfigurationGradesStatusEpocaImpl();
obj.setStatus(status);
obj.setDescricao(descricao);
obj.setSaveDate(new Date());
return obj;
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/JobServiceTaskSchedulerView.java
New file
0,0 → 1,130
package pt.estgp.estgweb.domain.views;
 
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.JobServiceTaskScheduler;
import pt.estgp.estgweb.domain.JobServiceTaskSchedulerImpl;
import pt.estgp.estgweb.domain.JobServiceTaskSchedulerParameter;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.utils.DynamicArrayList;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
 
/**
* @author Jorge Machado
* @date 2/Mar/2008
* @time 19:34:49
* @see pt.estgp.estgweb.domain.views
*/
public class JobServiceTaskSchedulerView extends DomainObjectView
{
 
private static Logger logger = Logger.getLogger(JobServiceTaskSchedulerView.class);
 
 
JobServiceTaskSchedulerImpl jobServiceTaskScheduler;
List<JobServiceTaskSchedulerParameter> parameters;
 
@Override
public Class getReferenceClass() {
return JobServiceTaskScheduler.class;
}
 
@Override
public Serializable getSerializable()
{
return jobServiceTaskScheduler.getId();
}
 
public JobServiceTaskSchedulerView()
{
 
}
 
public JobServiceTaskSchedulerView(JobServiceTaskSchedulerImpl jobServiceTaskScheduler)
{
super(jobServiceTaskScheduler);
init(jobServiceTaskScheduler);
}
public void init(JobServiceTaskSchedulerImpl jobServiceTaskScheduler)
{
parameters = new ArrayList<JobServiceTaskSchedulerParameter>();
 
if(jobServiceTaskScheduler.getServiceTaskSchedulerParameters() != null)
{
parameters.addAll(jobServiceTaskScheduler.getServiceTaskSchedulerParameters());
}
 
}
 
public void persistViewInObject(JobServiceTaskScheduler jobServiceTaskScheduler)
{
jobServiceTaskScheduler.setDescription(this.jobServiceTaskScheduler.getDescription());
jobServiceTaskScheduler.setTargetService(this.jobServiceTaskScheduler.getTargetService());
jobServiceTaskScheduler.setWeekly(this.jobServiceTaskScheduler.isWeekly());
jobServiceTaskScheduler.setWeekday(this.jobServiceTaskScheduler.getWeekday());
jobServiceTaskScheduler.setDaily(this.jobServiceTaskScheduler.isDaily());
jobServiceTaskScheduler.setHour(this.jobServiceTaskScheduler.getHour());
jobServiceTaskScheduler.setMinute(this.jobServiceTaskScheduler.getMinute());
jobServiceTaskScheduler.setSecond(this.jobServiceTaskScheduler.getSecond());
jobServiceTaskScheduler.setMonthly(this.jobServiceTaskScheduler.isMonthly());
jobServiceTaskScheduler.setMonthday(this.jobServiceTaskScheduler.getMonthday());
jobServiceTaskScheduler.setNow(this.jobServiceTaskScheduler.isNow());
 
//Remover apagados
List<JobServiceTaskSchedulerParameter> deleted = DaoFactory.getJobServiceTaskSchedulerParameterDaoImpl()
.deleteMissing(
this.parameters,
jobServiceTaskScheduler.getServiceTaskSchedulerParameters(),
new Comparator<JobServiceTaskSchedulerParameter>()
{
@Override
public int compare(JobServiceTaskSchedulerParameter j1, JobServiceTaskSchedulerParameter j2) {
return (int) (j1.getId() - j2.getId());
}
});
for(JobServiceTaskSchedulerParameter d: deleted)
d.setJobServiceTaskScheduler(null);
 
for(JobServiceTaskSchedulerParameter newParam: parameters)
{
if(newParam.getId() <= 0)
{
newParam.setJobServiceTaskScheduler(jobServiceTaskScheduler);
jobServiceTaskScheduler.getServiceTaskSchedulerParameters().add(newParam);
newParam.setSaveDate(new Date());
DaoFactory.getJobServiceTaskSchedulerParameterDaoImpl().save(newParam);
}
else
{
JobServiceTaskSchedulerParameter persistentParam = DaoFactory.getJobServiceTaskSchedulerParameterDaoImpl().load(newParam.getId());
persistentParam.setDescription(newParam.getDescription());
persistentParam.setName(newParam.getName());
persistentParam.setObject(newParam.getObject());
}
}
}
 
public JobServiceTaskSchedulerImpl getJobServiceTaskScheduler() {
return jobServiceTaskScheduler;
}
 
public void setJobServiceTaskScheduler(JobServiceTaskSchedulerImpl jobServiceTaskScheduler) {
this.jobServiceTaskScheduler = jobServiceTaskScheduler;
}
 
public List<JobServiceTaskSchedulerParameter> getParameters() {
if(parameters == null)
parameters = new DynamicArrayList<JobServiceTaskSchedulerParameter>(JobServiceTaskSchedulerParameter.class);
return parameters;
}
 
public void setParameters(List<JobServiceTaskSchedulerParameter> parameters) {
this.parameters = parameters;
}
 
 
}
Property changes:
Added: svn:executable
+ *
/impl/src/java/pt/estgp/estgweb/domain/views/ConfigurationGradesView.java
New file
0,0 → 1,64
package pt.estgp.estgweb.domain.views;
 
import pt.estgp.estgweb.domain.*;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
 
/**
* Created by jorgemachado on 12/11/15.
*/
public class ConfigurationGradesView extends DomainObjectView {
 
long id;
List<ConfigurationGradesStatusEpoca> statusEpocas;
List<ConfigurationGradesEpocaAvaliacao> epocasAvaliacao;
 
@Override
public Class getReferenceClass() {
return ConfigurationGrades.class;
}
 
@Override
public Serializable getSerializable() {
return id;
}
 
public void init(ConfigurationGrades configurationGrades)
{
this.id = configurationGrades.getId();
statusEpocas = new ArrayList<ConfigurationGradesStatusEpoca>(configurationGrades.getStatusEpoca());
epocasAvaliacao = new ArrayList<ConfigurationGradesEpocaAvaliacao>(configurationGrades.getEpocasAvaliacao());
}
 
 
public long getId() {
return id;
}
 
public void setId(long id) {
this.id = id;
}
 
public List<ConfigurationGradesStatusEpoca> getStatusEpocas() {
return statusEpocas;
}
 
public void setStatusEpocas(List<ConfigurationGradesStatusEpoca> statusEpocas) {
this.statusEpocas = statusEpocas;
}
 
public List<ConfigurationGradesEpocaAvaliacao> getEpocasAvaliacao() {
return epocasAvaliacao;
}
 
public void setEpocasAvaliacao(List<ConfigurationGradesEpocaAvaliacao> epocasAvaliacao) {
this.epocasAvaliacao = epocasAvaliacao;
}
 
public void persist(ConfigurationGrades grades)
{
 
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitGradeView.java
1,15 → 1,12
package pt.estgp.estgweb.domain.views;
 
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.CourseUnitGrade;
import pt.estgp.estgweb.domain.CourseUnitGradeImpl;
import pt.estgp.estgweb.services.courseunits.LoadCourseUnitAnnouncements;
import org.apache.log4j.Logger;
 
import java.util.List;
import java.util.Set;
import java.util.HashSet;
import java.io.Serializable;
import java.util.Date;
import java.io.Serializable;
 
/**
* @author Jorge Machado
31,6 → 28,8
private int statusEpoca;
private UserView student;
private Date publishDate;
private String descEpoca;
private String descStatusEpoca;
 
private CourseUnitGrade courseUnitGrade;
 
57,6 → 56,8
grade = courseUnitGrade.getGrade();
statusEpoca = courseUnitGrade.getStatusEpoca();
publishDate = courseUnitGrade.getPublishDate();
descEpoca = courseUnitGrade.getDescEpoca();
descStatusEpoca = courseUnitGrade.getDescStatusEpoca();
}
 
 
126,4 → 127,20
return df.format(publishDate);
return "";
}
 
public String getDescEpoca() {
return descEpoca;
}
 
public void setDescEpoca(String descEpoca) {
this.descEpoca = descEpoca;
}
 
public String getDescStatusEpoca() {
return descStatusEpoca;
}
 
public void setDescStatusEpoca(String descStatusEpoca) {
this.descStatusEpoca = descStatusEpoca;
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/UserView.java
1,18 → 1,17
package pt.estgp.estgweb.domain.views;
 
import jomm.utils.BytesUtils;
import jomm.utils.DesUtils;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.enums.RecordEnum;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.utils.RoleManager;
import pt.estgp.estgweb.Globals;
 
import java.io.Serializable;
import java.util.*;
 
import jomm.utils.DesUtils;
import jomm.utils.BytesUtils;
 
/**
* @author Jorge Machado
* @date 2/Mar/2008
73,6 → 72,8
 
private List<CourseUnitView> responsableCourseUnits;
 
private boolean propinasEmDia = false;
 
public UserView()
{}
 
122,6 → 123,7
{
mainArea = ((Student)user).getMainArea();
code = ((Student)user).getSigesCode();
propinasEmDia = ((Student)user).isPropinasEmDia();
}
}
 
718,7 → 720,15
this.deleted = deleted;
}
 
// public List<Course> getCourses()
public boolean isPropinasEmDia() {
return propinasEmDia;
}
 
public void setPropinasEmDia(boolean propinasEmDia) {
this.propinasEmDia = propinasEmDia;
}
 
// public List<Course> getCourses()
// {
// if(courses == null)
// {
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java
507,7 → 507,7
else
{
CourseUnitSummaryView view = new CourseUnitSummaryView(sum);
if(view.getNumber() < 0 && view.getOriginalDate().getTime() < System.currentTimeMillis())
if(view.getNumber() < 0 && view.getOriginalDate().getTime() + 48*60*60*1000 < System.currentTimeMillis())
{
//System.out.println(view.getNumber() + " " + view.getDate() + " " + view.getOriginalDate());
lateSummaries++;
/impl/src/java/pt/estgp/estgweb/domain/DomainObjectFactory.java
337,4 → 337,24
{
return new JobServiceTaskSchedulerParameterImpl();
}
 
public static ConfigurationGradesImpl createConfigurationGradesImpl()
{
return new ConfigurationGradesImpl();
}
 
public static ConfigurationGradesStatusEpocaImpl createConfigurationGradesStatusEpocaImpl()
{
return new ConfigurationGradesStatusEpocaImpl();
}
 
public static ConfigurationGradesEpocaAvaliacaoImpl createConfigurationGradesEpocaAvaliacaoImpl()
{
return new ConfigurationGradesEpocaAvaliacaoImpl();
}
 
public static ConfigurationDirectoryImpl createConfigurationDirectoryImpl()
{
return new ConfigurationDirectoryImpl();
}
}
/impl/src/java/pt/estgp/estgweb/domain/JobServiceTaskImpl.java
43,6 → 43,8
PENDING,
STARTED,
FINISHED,
FINISHED_ERRORS,
FINISHED_WARNINGS,
FAILED,
UNKNOWN_ERROR;
 
/impl/src/java/pt/estgp/estgweb/domain/ConfigurationDirectoryImpl.java
New file
0,0 → 1,26
package pt.estgp.estgweb.domain;
 
import org.apache.log4j.Logger;
 
import java.io.Serializable;
 
/**
* Created by IntelliJ IDEA.
* User: Filipe Matos
* Date: 4/Abr/2013
* Time: 17:02:06
* To change this template use File | Settings | File Templates.
*/
public class ConfigurationDirectoryImpl extends ConfigurationDirectory
{
private static final Logger logger = Logger.getLogger(ConfigurationDirectoryImpl.class);
 
 
@Override
public Serializable getSerializable() {
return getId();
}
}
 
 
 
Property changes:
Added: svn:executable
+ *
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/ConfigurationGradesStatusEpocaDaoImpl.java
New file
0,0 → 1,21
package pt.estgp.estgweb.domain.dao.impl;
 
/**
* @author Jorge Machado
* @date 28/Fev/2008
* @time 2:51:06
* @see pt.estgp.estgweb.domain.dao.impl
*/
public class ConfigurationGradesStatusEpocaDaoImpl extends ConfigurationGradesStatusEpocaDao
{
public static ConfigurationGradesStatusEpocaDaoImpl getInstance()
{
if (myInstance == null)
myInstance = new ConfigurationGradesStatusEpocaDaoImpl();
return (ConfigurationGradesStatusEpocaDaoImpl) myInstance;
}
 
 
 
 
}
Property changes:
Added: svn:executable
+ *
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/ConfigurationGradesEpocaAvaliacaoDaoImpl.java
New file
0,0 → 1,23
package pt.estgp.estgweb.domain.dao.impl;
 
/**
* @author Jorge Machado
* @date 28/Fev/2008
* @time 2:51:06
* @see pt.estgp.estgweb.domain.dao.impl
*/
public class ConfigurationGradesEpocaAvaliacaoDaoImpl extends ConfigurationGradesEpocaAvaliacaoDao
{
public static ConfigurationGradesEpocaAvaliacaoDaoImpl getInstance()
{
if (myInstance == null)
myInstance = new ConfigurationGradesEpocaAvaliacaoDaoImpl();
return (ConfigurationGradesEpocaAvaliacaoDaoImpl) myInstance;
}
 
 
 
 
 
 
}
Property changes:
Added: svn:executable
+ *
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/ConfigurationDaoImpl.java
1,7 → 1,8
package pt.estgp.estgweb.domain.dao.impl;
 
import pt.estgp.estgweb.domain.Configuration;
import pt.estgp.estgweb.domain.ConfigurationImpl;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.utils.StringsUtils;
 
import java.util.Date;
import java.util.List;
27,6 → 28,7
public Configuration load()
{
List<Configuration> configs = createCriteria().list();
Configuration config = null;
if(configs.size() == 0)
{
Configuration configuration = new ConfigurationImpl();
37,9 → 39,24
configuration.setSaveDate(new Date());
configuration.setSigesInstitutionCode(1);
save(configuration);
return configuration;
config = configuration;
}
return configs.get(0);
else
config = configs.get(0);
 
if(config.getConfigurationGrades() == null)
{
//init by default with ESTG values
ConfigurationGradesImpl grades = DomainObjectFactory.createConfigurationGradesImpl();
grades.create();
for(ConfigurationGradesEpocaAvaliacao epoca: grades.getEpocasAvaliacao())
DaoFactory.getConfigurationGradesEpocaAvaliacaoDaoImpl().save(epoca);
for(ConfigurationGradesStatusEpoca status: grades.getStatusEpoca())
DaoFactory.getConfigurationGradesStatusEpocaDaoImpl().save(status);
DaoFactory.getConfigurationGradesDaoImpl().save(grades);
config.setConfigurationGrades(grades);
}
return config;
}
 
public void updateInterfaceImportYearCreateTransaction(String importYear)
105,6 → 122,15
return load().getCourseUnitEvaluationActiveYear();
}
 
public List<String> getCourseUnitEvaluationActiveDegrees()
{
String degrees = load().getCourseUnitEvaluationActiveDegrees();
if(degrees == null || degrees.trim().length() == 0)
return null;
List<String> degreesList = StringsUtils.getStringsFromSerial(degrees,";");
return degreesList;
}
 
public String getCourseUnitEvaluationActiveYearCreateTransaction()
{
getCurrentSession().beginTransaction();
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseDaoImpl.java
133,18 → 133,44
{
Criteria c = createCriteria();
 
/* c.setProjection(Projections.projectionList()
.add(Projections.distinct(Projections.id())));*/
c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
c.createAlias("courseUnits","cu");
if (importYear != null && importYear.length() > 0)
c.add(eq("cu.importYear", importYear));
 
String query = "select distinct c from c in class Course join c.courseUnits cu where ";
String logic = " ";
if (importYear != null && importYear.length() > 0)
{
query += logic + "cu.importYear = :importYear ";
logic = " and ";
}
if (area != null && area.length() > 0)
c.add(eq("area", area));
{
query += logic + "c.area = :area ";
logic = " and ";
}
if (type != null && type.length() > 0)
c.add(eq("degree", type));
return c.addOrder(Order.asc("name"))
.list();
{
query += logic + "c.degree = :degree ";
logic = " and ";
}
query += " order by c.name asc";
 
Query q = getCurrentSession().createQuery(query);
if (importYear != null && importYear.length() > 0)
{
q.setString("importYear",importYear);
}
if (area != null && area.length() > 0)
{
q.setString("area",area);
}
if (type != null && type.length() > 0)
{
q.setString("degree",type);
}
/* c.setProjection(Projections.projectionList()
.add(Projections.distinct(Projections.id())));*/
return q.list();
}
 
 
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/ConfigurationDirectoryDaoImpl.java
New file
0,0 → 1,46
package pt.estgp.estgweb.domain.dao.impl;
 
import jomm.dao.impl.AbstractDao;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.ConfigurationDirectoryImpl;
 
import java.util.List;
 
import static org.hibernate.criterion.Restrictions.eq;
 
/**
* Created by IntelliJ IDEA.
* User: Filipe Matos
* Date: 18/Jul/2013
* Time: 19:37:29
* To change this template use File | Settings | File Templates.
*/
public class ConfigurationDirectoryDaoImpl extends AbstractDao<ConfigurationDirectoryImpl>{
 
private static final Logger logger = Logger.getLogger(ConfigurationDirectoryDaoImpl.class);
 
protected static ConfigurationDirectoryDaoImpl myInstance = null;
public static ConfigurationDirectoryDaoImpl getInstance() {
if (myInstance == null || !(myInstance instanceof ConfigurationDirectoryDaoImpl))
myInstance = new ConfigurationDirectoryDaoImpl();
return (ConfigurationDirectoryDaoImpl) myInstance;
}
 
@Override
protected Class getReferenceClass() {
return ConfigurationDirectoryImpl.class;
}
 
public ConfigurationDirectoryImpl loadDirectory(String identifier)
{
List<ConfigurationDirectoryImpl> dirs = createCriteria().add(eq("idDir", identifier)).list();
if(dirs != null && dirs.size() > 0)
{
return dirs.get(0);
}
else
{
return null;
}
}
}
Property changes:
Added: svn:executable
+ *
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/ConfigurationGradesDaoImpl.java
New file
0,0 → 1,21
package pt.estgp.estgweb.domain.dao.impl;
 
/**
* @author Jorge Machado
* @date 28/Fev/2008
* @time 2:51:06
* @see pt.estgp.estgweb.domain.dao.impl
*/
public class ConfigurationGradesDaoImpl extends ConfigurationGradesDao
{
public static ConfigurationGradesDaoImpl getInstance()
{
if (myInstance == null)
myInstance = new ConfigurationGradesDaoImpl();
return (ConfigurationGradesDaoImpl) myInstance;
}
 
 
 
 
}
Property changes:
Added: svn:executable
+ *
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java
492,8 → 492,10
public List<CourseMissingValidationEvaluation> loadMissingEvaluationValidate(UserSession userSession)
{
String activeYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear();
if(activeYear == null)
List<String> activeDegrees = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveDegrees();
if(activeYear == null || activeDegrees == null || activeDegrees.size() == 0)
return new ArrayList<CourseMissingValidationEvaluation>();
 
List<CourseMissingValidationEvaluation> result = new ArrayList<CourseMissingValidationEvaluation>();
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll();
for(Course course: courses)
518,28 → 520,49
 
public List<CourseUnit> loadMissingEvaluationValidateGivenCourse(long courseId)
{
if(DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear()==null)
List<String> activeDegrees = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveDegrees();
String activeYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear();
if(activeDegrees == null || activeYear==null || activeDegrees.size() == 0)
return new ArrayList<CourseUnit>();
 
Criterion degreesCrit = getCourseUnitActiveDegreeCriterion(activeDegrees);
 
return createCriteria()
.createAlias("course", "c")
.createAlias("courseUnitEvaluation", "ce")
.add(eq("c.id", courseId))
.add(eq("importYear", DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear()))
//.add(ge("importYear", "201415"))//FirstYear where there was configurations
.add(eq("importYear", activeYear))
.add(degreesCrit)
.add((eq("ce.closed", false)))
.add((eq("ce.teacherComplete", true)))
.list();
}
 
private Criterion getCourseUnitActiveDegreeCriterion(List<String> activeDegres)
{
Criterion degreesCrit = null;
for(String degree: activeDegres)
{
if(degreesCrit == null)
degreesCrit = eq("c.degree",degree);
else
degreesCrit = or(degreesCrit,eq("c.degree",degree));
}
return degreesCrit;
}
 
public List<CourseUnit> loadTeacherUnitsMissingEvaluation(UserSession userSession)
{
String activeYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear();
if(activeYear == null)
List<String> activeDegrees = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveDegrees();
if(activeYear == null || activeDegrees == null || activeDegrees.size() == 0)
return new ArrayList<CourseUnit>();
 
Criterion degreesCrit = getCourseUnitActiveDegreeCriterion(activeDegrees);
 
List<CourseUnit> nulls =
createCriteria()
.createAlias("course", "c")
.createAlias("teachers","t")
.add(eq("importYear", DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear()))
//.add(not(eq("importYear", DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear())))
547,11 → 570,13
//.add(isNull("courseUnitEvaluation"))
//todo novo testar
.add(eq("t.id", userSession.getUser().getId()))
.add(degreesCrit)
.add(isNull("courseUnitEvaluation"))
.list();
 
List<CourseUnit> teacherCompleteFalse =
createCriteria()
.createAlias("course", "c")
.createAlias("courseUnitEvaluation", "ce")
.createAlias("teachers","t")
.add(eq("t.id", userSession.getUser().getId()))
560,6 → 585,7
//.add(ge("importYear", "201415" ))
//.add(isNull("courseUnitEvaluation"))
//todo novo testar
.add(degreesCrit)
.add(eq("ce.teacherComplete",false))
.list();
teacherCompleteFalse.addAll(nulls);
570,8 → 596,10
public List<CourseMissingValidationEvaluation> loadMissingEvaluation(UserSession userSession)
{
String activeYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear();
if(activeYear == null)
List<String> activeDegrees = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveDegrees();
if(activeYear == null || activeDegrees == null || activeDegrees.size() == 0)
return new ArrayList<CourseMissingValidationEvaluation>();
 
List<CourseMissingValidationEvaluation> result = new ArrayList<CourseMissingValidationEvaluation>();
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll();
for(Course course: courses)
593,18 → 621,21
 
public List<CourseUnit> loadMissingEvaluation(long courseId)
{
if(DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear()==null)
 
String activeYear = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear();
List<String> activeDegrees = DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveDegrees();
if(activeYear == null || activeDegrees == null || activeDegrees.size() == 0)
return new ArrayList<CourseUnit>();
 
 
Criterion degreesCrit = getCourseUnitActiveDegreeCriterion(activeDegrees);
 
List<CourseUnit> nulls =
createCriteria()
.createAlias("course", "c")
.add(eq("c.id", courseId))
.add(eq("importYear", DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear()))
//.add(not(eq("importYear", DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear())))
//.add(ge("importYear", "201415" ))
//.add(isNull("courseUnitEvaluation"))
//todo novo testar
.add(eq("importYear", activeYear))
.add(degreesCrit)
.add(isNull("courseUnitEvaluation"))
.list();
 
613,11 → 644,8
.createAlias("course", "c")
.createAlias("courseUnitEvaluation", "ce")
.add(eq("c.id", courseId))
.add(eq("importYear", DaoFactory.getConfigurationDaoImpl().getCourseUnitEvaluationActiveYear()))
//.add(not(eq("importYear", DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear())))
//.add(ge("importYear", "201415" ))
//.add(isNull("courseUnitEvaluation"))
//todo novo testar
.add(degreesCrit)
.add(eq("importYear", activeYear))
.add(eq("ce.teacherComplete", false))
.list();
teacherCompleteFalse.addAll(nulls);
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitGradeDaoImpl.java
1,19 → 1,9
package pt.estgp.estgweb.domain.dao.impl;
 
import pt.estgp.estgweb.domain.BlogImpl;
import pt.estgp.estgweb.domain.Blog;
import pt.estgp.estgweb.domain.CourseUnitGrade;
import pt.estgp.estgweb.domain.dao.DaoUtils;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
 
import java.util.List;
import java.util.ArrayList;
import static org.hibernate.criterion.Restrictions.eq;
 
import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import static org.hibernate.criterion.Restrictions.*;
 
/**
* @author Jorge Machado
* @date 28/Fev/2008
40,5 → 30,14
.uniqueResult();
}
 
public CourseUnitGrade find(long courseUnitId, long studentId, String momento,String epoca)
{
return (CourseUnitGrade) createCriteria().add(eq("student.id",studentId))
.add(eq("courseUnit.id",courseUnitId))
.add(eq("codigoMomento",momento))
.add(eq("codigoEpoca",epoca))
.uniqueResult();
}
 
 
}
/impl/src/java/pt/estgp/estgweb/domain/dao/DaoFactory.java
327,5 → 327,22
return ConfigurationDaoImpl.getInstance();
}
 
public static ConfigurationGradesDaoImpl getConfigurationGradesDaoImpl() {
return ConfigurationGradesDaoImpl.getInstance();
}
 
public static ConfigurationGradesEpocaAvaliacaoDaoImpl getConfigurationGradesEpocaAvaliacaoDaoImpl() {
return ConfigurationGradesEpocaAvaliacaoDaoImpl.getInstance();
}
 
public static ConfigurationGradesStatusEpocaDaoImpl getConfigurationGradesStatusEpocaDaoImpl() {
return ConfigurationGradesStatusEpocaDaoImpl.getInstance();
}
 
public static ConfigurationDirectoryDaoImpl getConfigurationDirectoryDaoImpl() {
return ConfigurationDirectoryDaoImpl.getInstance();
}
 
 
 
}
/impl/src/java/pt/estgp/estgweb/domain/ConfigurationGradesEpocaAvaliacaoImpl.java
New file
0,0 → 1,29
package pt.estgp.estgweb.domain;
 
import java.io.Serializable;
import java.util.Date;
 
/**
* Created by jorgemachado on 02/11/15.
*/
public class ConfigurationGradesEpocaAvaliacaoImpl extends ConfigurationGradesEpocaAvaliacao {
 
public ConfigurationGradesEpocaAvaliacaoImpl()
{
}
@Override
public Serializable getSerializable() {
return getId();
}
 
public static ConfigurationGradesEpocaAvaliacao create(String epoca, String momento, String descricao)
{
ConfigurationGradesEpocaAvaliacao obj = DomainObjectFactory.createConfigurationGradesEpocaAvaliacaoImpl();
obj.setCodigoMomento(momento);
obj.setCodigoEpoca(epoca);
obj.setDescricao(descricao);
obj.setSaveDate(new Date());
return obj;
}
 
}
/impl/src/java/pt/estgp/estgweb/domain/JobServiceTaskSchedulerImpl.java
16,4 → 16,41
public Serializable getSerializable() {
return getId();
}
 
public String getWeekDayMsgKey()
{
String dayOfTheWeek = "";
int i = getWeekday();
if(i == 2){
dayOfTheWeek = "Mon";
} else if (i==3){
dayOfTheWeek = "Tue";
} else if (i==4){
dayOfTheWeek = "Wed";
} else if (i==5){
dayOfTheWeek = "Thu";
} else if (i==6){
dayOfTheWeek = "Fri";
} else if (i==7){
dayOfTheWeek = "Sat";
} else if (i==1){
dayOfTheWeek = "Sun";
}
return dayOfTheWeek;
}
 
public String getTypeMsgKey()
{
if(isDaily())
return "dally";
else if(isMonthly())
return "monthly";
else if(isWeekly())
return "weekly";
else if(isNow())
return "now";
else
return "unknown";
}
 
}
/impl/src/java/pt/estgp/estgweb/domain/ConfigurationGradesImpl.java
New file
0,0 → 1,68
package pt.estgp.estgweb.domain;
 
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
 
/**
* Created by jorgemachado on 02/11/15.
*/
public class ConfigurationGradesImpl extends ConfigurationGrades {
 
public ConfigurationGradesImpl()
{
}
@Override
public Serializable getSerializable() {
return getId();
}
 
 
 
public void create()
{
Set<ConfigurationGradesEpocaAvaliacao> epocas = new HashSet<ConfigurationGradesEpocaAvaliacao>();
epocas.add(ConfigurationGradesEpocaAvaliacaoImpl.create("3", "99", "Época de Recurso"));
epocas.add(ConfigurationGradesEpocaAvaliacaoImpl.create("4", "99", "Exame de Melhoria"));
epocas.add(ConfigurationGradesEpocaAvaliacaoImpl.create("5", "99", "Época Especial"));
epocas.add(ConfigurationGradesEpocaAvaliacaoImpl.create("14", "99", "2ª Oportunidade - Bolonha (ESTG)"));
epocas.add(ConfigurationGradesEpocaAvaliacaoImpl.create("6", "99", "Equivalência"));
epocas.add(ConfigurationGradesEpocaAvaliacaoImpl.create("7", "99", "Estatutos Especiais/Dirigente Associativo (ESTG)"));
epocas.add(ConfigurationGradesEpocaAvaliacaoImpl.create("12", "99", "Equivalência Vasco da Gama (ESTG)"));
epocas.add(ConfigurationGradesEpocaAvaliacaoImpl.create("13", "99", "Atleta de Alta Competição (ESTG)"));
epocas.add(ConfigurationGradesEpocaAvaliacaoImpl.create("20", "99", "Época Normal (ESTG)"));
epocas.add(ConfigurationGradesEpocaAvaliacaoImpl.create("22", "99", "Equivalência Erasmus (ESTG)"));
epocas.add(ConfigurationGradesEpocaAvaliacaoImpl.create("36", "99", "Época de Recurso (ESTG)"));
epocas.add(ConfigurationGradesEpocaAvaliacaoImpl.create("37", "99", "Época de Melhoria (ESTG)"));
epocas.add(ConfigurationGradesEpocaAvaliacaoImpl.create("38", "99", "Época Especial (ESTG)"));
setEpocasAvaliacao(epocas);
 
Set<ConfigurationGradesStatusEpoca> status = new HashSet<ConfigurationGradesStatusEpoca>();
status.add(ConfigurationGradesStatusEpocaImpl.create("1","Inscrito"));
status.add(ConfigurationGradesStatusEpocaImpl.create("2","Avaliado"));
status.add(ConfigurationGradesStatusEpocaImpl.create("19","A Terminar Posteriormente 6 A pagamento"));
status.add(ConfigurationGradesStatusEpocaImpl.create("5","Anulou"));
status.add(ConfigurationGradesStatusEpocaImpl.create("7","Faltou"));
status.add(ConfigurationGradesStatusEpocaImpl.create("8","Desistiu"));
status.add(ConfigurationGradesStatusEpocaImpl.create("9","Dispensado"));
status.add(ConfigurationGradesStatusEpocaImpl.create("3","Aprovado"));
status.add(ConfigurationGradesStatusEpocaImpl.create("4","Reprovado"));
status.add(ConfigurationGradesStatusEpocaImpl.create("10","Admitido a Exame"));
status.add(ConfigurationGradesStatusEpocaImpl.create("11","Não Admitido"));
status.add(ConfigurationGradesStatusEpocaImpl.create("12","Sem avaliação"));
status.add(ConfigurationGradesStatusEpocaImpl.create("13","Insc. Pendente"));
status.add(ConfigurationGradesStatusEpocaImpl.create("14","Sem elementos de avaliação"));
status.add(ConfigurationGradesStatusEpocaImpl.create("15","Reprovado por faltas"));
status.add(ConfigurationGradesStatusEpocaImpl.create("16","Não atingiu a nota minima"));
status.add(ConfigurationGradesStatusEpocaImpl.create("18","Aguarda Equivalência"));
status.add(ConfigurationGradesStatusEpocaImpl.create("17","Não cumpriu critérios de avaliação"));
status.add(ConfigurationGradesStatusEpocaImpl.create("20","Prova anulada"));
status.add(ConfigurationGradesStatusEpocaImpl.create("21","Não atingiu todas as competências da unidade"));
status.add(ConfigurationGradesStatusEpocaImpl.create("22","Sem Nota Lançada"));
status.add(ConfigurationGradesStatusEpocaImpl.create("23","Frequentou"));
status.add(ConfigurationGradesStatusEpocaImpl.create("24","Melhoria não Atribuida"));
setStatusEpoca(status);
}
 
 
}
/impl/src/java/pt/estgp/estgweb/web/DirWebProxy.java
1,5 → 1,6
package pt.estgp.estgweb.web;
 
import jomm.utils.DesUtils;
import jomm.web.ftp.FileType;
import jomm.web.ftp.IFile;
import jomm.web.ftp.impl.FtpFile;
12,6 → 13,8
import org.dom4j.DocumentException;
import org.dom4j.Element;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.services.ftpservices.FtpService;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.Dom4jUtil;
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
169,7 → 172,12
{
endPath = path.substring(startPath.length());
}
path = startPath + leafUrl + endPath;
if(leafUrl.endsWith("/") && endPath.startsWith("/"))
{
path = startPath + leafUrl.substring(0,leafUrl.length()-1) + endPath;
}
else
path = startPath + leafUrl + endPath;
}
if(!extendDiretoryDocument(request, response, path, proxyKey, server, startPath + leafUrl, directoryDocument))
return;
220,6 → 228,22
{
String user = ConfigProperties.getProperty(serverStr + ".user");
String pass = ConfigProperties.getProperty(serverStr + ".pass");
boolean useDefaultCredentialsRead = ConfigProperties.getBooleanProperty(serverStr + ".use.default.credentials.to.read");
if(!useDefaultCredentialsRead)
{
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request);
String passwordUserInSession = (String) ((UserSessionImpl)userSession).get(FtpService.FTP_PASSWORD);
if(passwordUserInSession == null || userSession.getUser() == null)
{
logger.warn("There is no user authenticated, is configured to not use default credentials, but will use default password for server " + serverStr);
}
else
{
user = userSession.getUsername();
pass = DesUtils.getInstance().decrypt(passwordUserInSession);
logger.warn("Will use User Credentials for server " + serverStr + " and user " + user);
}
}
 
if (path != null)
{
251,6 → 275,7
for (IFile iFile : iFiles)
{
Element iFileElem = actualNode.addElement("leaf");
addAttribute(iFileElem, "node", "false");
addAttribute(iFileElem, "id", FTP_FILE_PREFIX + "0_" + iFile.getName());
addAttribute(iFileElem, "idPrefixSize","" + (FTP_FILE_PREFIX + "0_").length());
276,7 → 301,7
 
String pathAux = path.substring(startPath.length());
String[] pathFragments;
if(path.startsWith("/"))
if(pathAux.startsWith("/"))
pathFragments = pathAux.substring(1).split("/");
else
pathFragments = pathAux.split("/");
292,8 → 317,8
String actualId = null;
for (IFile iFile : iFiles)
{
Element iFileElem = actualNode.addElement("node");
 
Element iFileElem = actualNode.addElement("leaf");
addAttribute(iFileElem, "node", "true");
addAttribute(iFileElem, "id", FTP_FILE_PREFIX + "0_" + iFile.getName());
addAttribute(iFileElem, "idPrefixSize","" + (FTP_FILE_PREFIX + "0_").length());
 
342,9 → 367,15
Element iFileElem;
 
if(i == pathFragments.length - 1)
{
iFileElem = goDeepElement.addElement("leaf");
addAttribute(iFileElem, "node","false");
}
else
iFileElem = goDeepElement.addElement("node");
{
iFileElem = goDeepElement.addElement("leaf");
addAttribute(iFileElem, "node","true");
}
 
addAttribute(iFileElem, "id", FTP_FILE_PREFIX + (i+1) + "_" + iFile.getName());
addAttribute(iFileElem, "idPrefixSize","" + (FTP_FILE_PREFIX + (i+1) + "_").length());
/impl/src/java/pt/estgp/estgweb/web/utils/DatesUtils.java
1,13 → 1,12
package pt.estgp.estgweb.web.utils;
 
import jomm.utils.MyCalendar;
import org.apache.log4j.Logger;
 
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Calendar;
import java.text.SimpleDateFormat;
 
import org.apache.log4j.Logger;
 
/**
* @author Jorge Machado
* @date 6/Mar/2008
19,6 → 18,7
 
private static final Logger logger = Logger.getLogger(DatesUtils.class);
 
private static SimpleDateFormat hourMinute = new SimpleDateFormat("HH:mm");
private static SimpleDateFormat minutesSecondsDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
private static SimpleDateFormat filenameDateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
private static SimpleDateFormat userViewDateFormat = new SimpleDateFormat("yyyy/MM/dd");
64,4 → 64,9
return null;
}
}
 
public String getTimeHHMM(Date d)
{
return hourMinute.format(d);
}
}
/impl/src/java/pt/estgp/estgweb/web/DirLayoutController.java
1,36 → 1,29
package pt.estgp.estgweb.web;
 
import org.apache.struts.action.Action;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.log4j.Logger;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.httpclient.util.URIUtil;
import org.dom4j.*;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.services.directories.DirectoryNodeType;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.Dom4jUtil;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.*;
import java.util.List;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.net.URL;
import java.net.MalformedURLException;
 
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.Dom4jUtil;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.services.directories.DirectoryNodeType;
import jomm.web.ftp.IFile;
import jomm.web.ftp.impl.FtpFile;
import jomm.web.utils.NavPlace;
 
/**
* @author Jorge Machado
* @date 26/Fev/2008
107,8 → 100,24
 
try
{
Document directoryDocument = Dom4jUtil.parseSourceFileFromCache("/pt/estgp/estgweb/directories/" + directory + ".xml");
 
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{directory};
Document directoryDocument;
try
{
String dXml = (String) sm.execute(RequestUtils.getRequester(request, response), "LoadDirectoryServiceXml", args, names);
directoryDocument = Dom4jUtil.parse(dXml);
}
catch (Throwable e)
{
logger.error(e, e);
throw new IOException(e.toString());
}
 
 
if (path.startsWith("/"))
path = path.substring(1);
String[] ids = path.split("/");
133,13 → 142,14
if (r != null)
rights.add(r);
String name = idElem.getQName().getName();
if (name.equals("leaf"))
boolean node = Boolean.parseBoolean(idElem.attributeValue("node"));
if (name.equals("leaf") && !node)
{
directoryNodeType = DirectoryNodeType.leaf;
actualNodeId = id;
actualNode = idElem;
}
else if (name.equals("node"))
else if (name.equals("leaf") && node)
{
directoryNodeType = DirectoryNodeType.node;
actualNodeId = id;
234,8 → 244,7
}
}
}
catch (DocumentException e)
{
catch (Throwable e) {
logger.error(e, e);
throw new IOException(e.toString());
}
350,8 → 359,8
}
 
public static Namespace dirNamespace = new Namespace("d", "http://www.estgp.pt/baco/directory/");
public static QName nodeDir = new QName("node", dirNamespace);
public static QName leafDir = new QName("leaf", dirNamespace);
//public static QName nodeDir = new QName("node", dirNamespace);
//public static QName leafDir = new QName("leaf", dirNamespace);
 
private boolean pruneDocument(Element startElem, Map namespaces, UserSession userSession)
{
363,8 → 372,12
parentNode.remove(startElem);
return false;
}
List<Element> nodes = startElem.elements(nodeDir);
List<Element> leafs = startElem.elements(leafDir);
XPath leafXpath = startElem.createXPath("./d:leaf[@node='false']");
XPath nodeXpath = startElem.createXPath("./d:leaf[@node='true']");
leafXpath.setNamespaceURIs(namespaces);
nodeXpath.setNamespaceURIs(namespaces);
List<Element> nodes = nodeXpath.selectNodes(startElem);
List<Element> leafs = leafXpath.selectNodes(startElem);
for (Element childNode : nodes)
{
pruneDocument(childNode, namespaces, userSession);
387,11 → 400,11
{
Rights rights = new Rights();
 
XPath userXpath = rightsElem.createXPath("./d:user");
XPath userXpath = rightsElem.createXPath("./d:right[@target='user']");
userXpath.setNamespaceURIs(namespaces);
List<Element> userElems = userXpath.selectNodes(rightsElem);
 
XPath roleXpath = rightsElem.createXPath("./d:role");
XPath roleXpath = rightsElem.createXPath("./d:right[@target='role']");
roleXpath.setNamespaceURIs(namespaces);
List<Element> rolesElems = roleXpath.selectNodes(rightsElem);
 
408,7 → 421,7
{
RightsT rightsT = new RightsT();
rightsT.rightsTClass = RightsT.RightsTClass.user;
rightsT.text = userElem.getText();
rightsT.text = userElem.attribute("name").getText();
String type = userElem.attribute("type").getText();
if (type.equals("permit"))
rightsT.type = RightsT.RightsTType.permit;
424,7 → 437,7
{
RightsT rightsT = new RightsT();
rightsT.rightsTClass = RightsT.RightsTClass.role;
rightsT.text = roleElem.getText();
rightsT.text = roleElem.attribute("name").getText();
String type = roleElem.attribute("type").getText();
if (type.equals("permit"))
rightsT.type = RightsT.RightsTType.permit;
/impl/src/java/pt/estgp/estgweb/web/form/configuration/DirectoriesForm.java
New file
0,0 → 1,71
package pt.estgp.estgweb.web.form.configuration;
 
import pt.estgp.estgweb.services.directories.xsd.Directory;
import pt.estgp.estgweb.services.directories.xsd.DirectoryImpl;
import pt.estgp.estgweb.web.form.ApplicationForm;
 
/**
* @author Jorge Machado
* @date 25/Jun/2008
* @see pt.estgp.estgweb.web.form.courses
*/
public class DirectoriesForm extends ApplicationForm
{
 
private Directory directory;
private String id;
private String rtarget;
private String rtype;
private String rname;
 
 
 
public DirectoriesForm()
{
 
}
 
public Directory getDirectory()
{
if(directory == null)
directory = new DirectoryImpl();
return directory;
}
 
public void setDirectory(Directory directory)
{
this.directory = directory;
}
 
public String getId() {
return id;
}
 
public void setId(String id) {
this.id = id;
}
 
public String getRtarget() {
return rtarget;
}
 
public void setRtarget(String rtarget) {
this.rtarget = rtarget;
}
 
public String getRtype() {
return rtype;
}
 
public void setRtype(String rtype) {
this.rtype = rtype;
}
 
public String getRname() {
return rname;
}
 
public void setRname(String rname) {
this.rname = rname;
}
}
/impl/src/java/pt/estgp/estgweb/web/form/configuration/ConfigurationGradesForm.java
New file
0,0 → 1,60
package pt.estgp.estgweb.web.form.configuration;
 
import jomm.utils.AutoFillArrayList;
import pt.estgp.estgweb.domain.ConfigurationGradesEpocaAvaliacaoImpl;
import pt.estgp.estgweb.domain.ConfigurationGradesStatusEpocaImpl;
import pt.estgp.estgweb.domain.views.ConfigurationGradesView;
import pt.estgp.estgweb.web.form.ApplicationForm;
 
import java.util.List;
 
/**
* @author Jorge Machado
* @date 25/Jun/2008
* @see pt.estgp.estgweb.web.form.courses
*/
public class ConfigurationGradesForm extends ApplicationForm
{
 
private String dispatch;
private long id;
private ConfigurationGradesView configurationGrades;
 
 
public ConfigurationGradesForm()
{
 
}
 
public ConfigurationGradesView getConfigurationGrades() {
if(configurationGrades == null)
{
configurationGrades = new ConfigurationGradesView();
List o = new AutoFillArrayList<ConfigurationGradesEpocaAvaliacaoImpl>(ConfigurationGradesEpocaAvaliacaoImpl.class);
List o2 = new AutoFillArrayList<ConfigurationGradesStatusEpocaImpl>(ConfigurationGradesStatusEpocaImpl.class);
configurationGrades.setEpocasAvaliacao(o);
configurationGrades.setStatusEpocas(o2);
}
return configurationGrades;
}
 
public String getOp() {
return dispatch;
}
 
public void setOp(String dispatch) {
this.dispatch = dispatch;
}
 
public void setConfigurationGrades(ConfigurationGradesView configurationGrades) {
this.configurationGrades = configurationGrades;
}
 
public long getId() {
return id;
}
 
public void setId(long id) {
this.id = id;
}
}
/impl/src/java/pt/estgp/estgweb/web/form/configuration/SchedulleTasksForm.java
New file
0,0 → 1,46
package pt.estgp.estgweb.web.form.configuration;
 
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.JobServiceTaskSchedulerImpl;
import pt.estgp.estgweb.web.form.ApplicationForm;
 
/**
* @author Jorge Machado
* @date 25/Jun/2008
* @see pt.estgp.estgweb.web.form.courses
*/
public class SchedulleTasksForm extends ApplicationForm
{
 
private JobServiceTaskSchedulerImpl jobScheduller;
private String id;
 
 
 
 
public SchedulleTasksForm()
{
 
}
 
public JobServiceTaskSchedulerImpl getDirectory()
{
if(jobScheduller == null)
jobScheduller = DomainObjectFactory.createJobServiceTaskSchedulerImpl();
return jobScheduller;
}
 
public void setJobScheduller(JobServiceTaskSchedulerImpl jobScheduller) {
this.jobScheduller = jobScheduller;
}
 
public String getId() {
return id;
}
 
public void setId(String id) {
this.id = id;
}
 
 
}
/impl/src/java/pt/estgp/estgweb/web/controllers/profile/ProfileController.java
1,33 → 1,38
package pt.estgp.estgweb.web.controllers.profile;
 
import java.io.Serializable;
 
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.views.RecordView;
import pt.estgp.estgweb.domain.views.UserView;
import pt.estgp.estgweb.services.expceptions.AlreadyExistsException;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.AddRolesController;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
import pt.estgp.estgweb.web.form.AddRolesForm;
import pt.estgp.estgweb.web.form.profile.ProfileForm;
import pt.estgp.estgweb.domain.*;
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.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterRetrieveException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.IncompatibleFilterException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterExpressionException;
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;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
import org.apache.log4j.Logger;
import org.apache.struts.action.*;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;
 
import pt.estgp.estgweb.web.form.AddRolesForm;
 
/**
* @author Jorge Machado
* @date 26/Fev/2008
522,4 → 527,32
}
}
 
public ActionForward addRole(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
ProfileForm profileForm = (ProfileForm) form;
UserView uV = loadUser(profileForm.getUserView().getId(), request, response);
profileForm.getUserView().setPasswordLocal(uV.isPasswordLocal());
profileForm.setUserView(uV);
UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request, response);
return super.addRole(mapping,form,request,response);
}
 
public ActionForward removeRole(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
ProfileForm profileForm = (ProfileForm) form;
UserView uV = loadUser(profileForm.getUserView().getId(), request, response);
profileForm.setUserView(uV);
profileForm.getUserView().setPasswordLocal(uV.isPasswordLocal());
UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request, response);
return super.removeRole(mapping,form,request,response);
}
 
}
/impl/src/java/pt/estgp/estgweb/web/controllers/configuration/DirectoriesController.java
New file
0,0 → 1,339
package pt.estgp.estgweb.web.controllers.configuration;
 
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.services.directories.xsd.*;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.form.configuration.DirectoriesForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
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;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Iterator;
 
/**
* @author Jorge Machado
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class DirectoriesController extends ApplicationDispatchController
{
 
private static final Logger logger = Logger.getLogger(DirectoriesController.class);
 
 
public ActionForward load(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{df.getId()};
 
try
{
Directory d = (Directory) sm.execute(RequestUtils.getRequester(request, response), "LoadDirectoryService", args, names);
df.setDirectory(d);
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
return mapping.findForward("directory");
}
public ActionForward addLeaf(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
LeafT leaf = LeafTImpl.findLeaf(df.getDirectory(), idParent);
if(leaf == null)
{
addError(request,"directories.leaf.not.found",idParent);
return mapping.findForward("directories");
}
addMessage(request,"directories.add.leaf",idParent);
leaf.getLeaf().add(new LeafTImpl());
return mapping.findForward("directory");
}
 
 
public ActionForward refresh(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
 
 
addMessage(request, "directories.refresh");
 
return mapping.findForward("directory");
}
 
public ActionForward save(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable {
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
 
DirectoriesForm df = (DirectoriesForm) form;
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{df.getDirectory()};
 
try {
sm.execute(RequestUtils.getRequester(request, response), "SaveDirectoryService", args, names);
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
 
addMessage(request, "directories.saved");
 
return mapping.findForward("directories");
}
 
public ActionForward cancel(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
addMessage(request, "directories.canceled");
return mapping.findForward("directories");
}
 
 
public ActionForward removeLeaf(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
LeafT leaf = LeafTImpl.removeLeaf(df.getDirectory(), idParent);
if(leaf == null)
{
addError(request,"directories.leaf.not.found",idParent);
return mapping.findForward("directories");
}
addMessage(request, "directories.removed.leaf", idParent);
leaf.getLeaf().add(new LeafTImpl());
return mapping.findForward("directory");
}
 
 
public ActionForward addRight(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
LeafT leaf = LeafTImpl.findLeaf(df.getDirectory(), idParent);
if(leaf == null)
{
addError(request,"directories.leaf.not.found",idParent);
return mapping.findForward("directories");
}
 
leaf.getRights().getRight().add(new RightImpl());
addMessage(request, "directories.add.right", idParent);
return mapping.findForward("directory");
}
 
public ActionForward removeRight(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
LeafT leaf = LeafTImpl.findLeaf(df.getDirectory(), idParent);
if(leaf == null)
{
addError(request,"directories.leaf.not.found",idParent);
return mapping.findForward("directories");
}
 
 
Iterator<RightsT.Right> iter = leaf.getRights().getRight().iterator();
while(iter.hasNext())
{
RightsT.Right r =iter.next();
if(r.getName().equals(df.getRname()) && r.getTarget().equals(df.getRtarget()) && df.getRtype().equals(r.getType()))
{
iter.remove();
}
}
addMessage(request, "directories.remove.right", df.getRname(),df.getRtarget(),df.getRtype());
return mapping.findForward("directory");
}
 
public ActionForward addDirRight(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
df.getDirectory().getRights().getRight().add(new RightImpl());
addMessage(request, "directories.add.right");
return mapping.findForward("directory");
}
 
public ActionForward removeDirRight(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
 
Iterator<RightsT.Right> iter = df.getDirectory().getRights().getRight().iterator();
while(iter.hasNext())
{
RightsT.Right r =iter.next();
if(r.getName().equals(df.getRname()) && r.getTarget().equals(df.getRtarget()) && df.getRtype().equals(r.getType()))
{
iter.remove();
}
}
addMessage(request, "directories.remove.right", df.getRname(),df.getRtarget(),df.getRtype());
return mapping.findForward("directory");
}
 
public ActionForward addDirGroup(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
df.getDirectory().getGroupsDeclaration().getGroup().add(new GroupImpl());
addMessage(request, "directories.add.group");
return mapping.findForward("directory");
}
 
public ActionForward removeDirGroup(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
 
Iterator<GroupDeclarationT.Group> iter = df.getDirectory().getGroupsDeclaration().getGroup().iterator();
while(iter.hasNext())
{
GroupDeclarationT.Group g =iter.next();
if(g.getName().equals(df.getRname()))
{
iter.remove();
}
}
addMessage(request, "directories.remove.group");
return mapping.findForward("directory");
}
 
 
 
}
Property changes:
Added: svn:executable
+ *
/impl/src/java/pt/estgp/estgweb/web/controllers/configuration/SchedulerTasksController.java
New file
0,0 → 1,339
package pt.estgp.estgweb.web.controllers.configuration;
 
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.services.directories.xsd.*;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.form.configuration.DirectoriesForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
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;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Iterator;
 
/**
* @author Jorge Machado
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class SchedulerTasksController extends ApplicationDispatchController
{
 
private static final Logger logger = Logger.getLogger(SchedulerTasksController.class);
 
 
public ActionForward load(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{df.getId()};
 
try
{
Directory d = (Directory) sm.execute(RequestUtils.getRequester(request, response), "LoadDirectoryService", args, names);
df.setDirectory(d);
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
return mapping.findForward("directory");
}
public ActionForward addLeaf(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
LeafT leaf = LeafTImpl.findLeaf(df.getDirectory(), idParent);
if(leaf == null)
{
addError(request,"directories.leaf.not.found",idParent);
return mapping.findForward("directories");
}
addMessage(request,"directories.add.leaf",idParent);
leaf.getLeaf().add(new LeafTImpl());
return mapping.findForward("directory");
}
 
 
public ActionForward refresh(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
 
 
addMessage(request, "directories.refresh");
 
return mapping.findForward("directory");
}
 
public ActionForward save(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable {
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
 
DirectoriesForm df = (DirectoriesForm) form;
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{df.getDirectory()};
 
try {
sm.execute(RequestUtils.getRequester(request, response), "SaveDirectoryService", args, names);
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
 
addMessage(request, "directories.saved");
 
return mapping.findForward("directories");
}
 
public ActionForward cancel(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
addMessage(request, "directories.canceled");
return mapping.findForward("directories");
}
 
 
public ActionForward removeLeaf(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
LeafT leaf = LeafTImpl.removeLeaf(df.getDirectory(), idParent);
if(leaf == null)
{
addError(request,"directories.leaf.not.found",idParent);
return mapping.findForward("directories");
}
addMessage(request, "directories.removed.leaf", idParent);
leaf.getLeaf().add(new LeafTImpl());
return mapping.findForward("directory");
}
 
 
public ActionForward addRight(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
LeafT leaf = LeafTImpl.findLeaf(df.getDirectory(), idParent);
if(leaf == null)
{
addError(request,"directories.leaf.not.found",idParent);
return mapping.findForward("directories");
}
 
leaf.getRights().getRight().add(new RightImpl());
addMessage(request, "directories.add.right", idParent);
return mapping.findForward("directory");
}
 
public ActionForward removeRight(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
LeafT leaf = LeafTImpl.findLeaf(df.getDirectory(), idParent);
if(leaf == null)
{
addError(request,"directories.leaf.not.found",idParent);
return mapping.findForward("directories");
}
 
 
Iterator<RightsT.Right> iter = leaf.getRights().getRight().iterator();
while(iter.hasNext())
{
RightsT.Right r =iter.next();
if(r.getName().equals(df.getRname()) && r.getTarget().equals(df.getRtarget()) && df.getRtype().equals(r.getType()))
{
iter.remove();
}
}
addMessage(request, "directories.remove.right", df.getRname(),df.getRtarget(),df.getRtype());
return mapping.findForward("directory");
}
 
public ActionForward addDirRight(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
df.getDirectory().getRights().getRight().add(new RightImpl());
addMessage(request, "directories.add.right");
return mapping.findForward("directory");
}
 
public ActionForward removeDirRight(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
 
Iterator<RightsT.Right> iter = df.getDirectory().getRights().getRight().iterator();
while(iter.hasNext())
{
RightsT.Right r =iter.next();
if(r.getName().equals(df.getRname()) && r.getTarget().equals(df.getRtarget()) && df.getRtype().equals(r.getType()))
{
iter.remove();
}
}
addMessage(request, "directories.remove.right", df.getRname(),df.getRtarget(),df.getRtype());
return mapping.findForward("directory");
}
 
public ActionForward addDirGroup(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
String idParent = df.getId();
 
df.getDirectory().getGroupsDeclaration().getGroup().add(new GroupImpl());
addMessage(request, "directories.add.group");
return mapping.findForward("directory");
}
 
public ActionForward removeDirGroup(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
DirectoriesForm df = (DirectoriesForm) form;
 
Iterator<GroupDeclarationT.Group> iter = df.getDirectory().getGroupsDeclaration().getGroup().iterator();
while(iter.hasNext())
{
GroupDeclarationT.Group g =iter.next();
if(g.getName().equals(df.getRname()))
{
iter.remove();
}
}
addMessage(request, "directories.remove.group");
return mapping.findForward("directory");
}
 
 
 
}
Property changes:
Added: svn:executable
+ *
/impl/src/java/pt/estgp/estgweb/web/controllers/configuration/GradesController.java
New file
0,0 → 1,151
package pt.estgp.estgweb.web.controllers.configuration;
 
import jomm.dao.impl.AbstractDao;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.domain.ConfigurationGradesEpocaAvaliacao;
import pt.estgp.estgweb.domain.ConfigurationGradesStatusEpoca;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.form.configuration.ConfigurationGradesForm;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
* @author Jorge Machado
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class GradesController extends ApplicationDispatchController
{
 
private static final Logger logger = Logger.getLogger(GradesController.class);
 
 
 
public ActionForward saveGrades(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
 
ConfigurationGradesForm f = (ConfigurationGradesForm) form;
AbstractDao.getCurrentSession().beginTransaction();
for(ConfigurationGradesEpocaAvaliacao a: f.getConfigurationGrades().getEpocasAvaliacao())
{
if(a.getId() > 0)
{
ConfigurationGradesEpocaAvaliacao persist = DaoFactory.getConfigurationGradesEpocaAvaliacaoDaoImpl().load(a.getId());
persist.setCodigoEpoca(a.getCodigoEpoca());
persist.setCodigoMomento(a.getCodigoMomento());
persist.setObs(a.getObs());
persist.setDescricao(a.getDescricao());
}
}
 
for(ConfigurationGradesStatusEpoca a: f.getConfigurationGrades().getStatusEpocas())
{
if(a.getId() > 0)
{
ConfigurationGradesStatusEpoca persist = DaoFactory.getConfigurationGradesStatusEpocaDaoImpl().load(a.getId());
persist.setStatus(a.getStatus());
persist.setObs(a.getObs());
persist.setDescricao(a.getDescricao());
}
}
AbstractDao.getCurrentSession().getTransaction().commit();
 
return mapping.findForward("grades");
}
 
public ActionForward addEpocaAvaliacao(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
AbstractDao.getCurrentSession().beginTransaction();
 
ConfigurationGradesEpocaAvaliacao epoca = DomainObjectFactory.createConfigurationGradesEpocaAvaliacaoImpl();
DaoFactory.getConfigurationDaoImpl().load().getConfigurationGrades().getEpocasAvaliacao().add(epoca);
DaoFactory.getConfigurationGradesEpocaAvaliacaoDaoImpl().save(epoca);
AbstractDao.getCurrentSession().getTransaction().commit();
return mapping.findForward("grades");
}
 
public ActionForward addSatusEpoca(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
AbstractDao.getCurrentSession().beginTransaction();
ConfigurationGradesStatusEpoca status = DomainObjectFactory.createConfigurationGradesStatusEpocaImpl();
DaoFactory.getConfigurationDaoImpl().load().getConfigurationGrades().getStatusEpoca().add(status);
DaoFactory.getConfigurationGradesStatusEpocaDaoImpl().save(status);
AbstractDao.getCurrentSession().getTransaction().commit();
return mapping.findForward("grades");
}
 
public ActionForward deleteEpocaAvaliacao(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
ConfigurationGradesForm f = (ConfigurationGradesForm) form;
AbstractDao.getCurrentSession().beginTransaction();
DaoFactory.getConfigurationGradesEpocaAvaliacaoDaoImpl().delete(f.getId());
AbstractDao.getCurrentSession().getTransaction().commit();
return mapping.findForward("grades");
}
 
public ActionForward deleteStatusEpoca(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services"))
{
return mapping.findForward("error401");
}
ConfigurationGradesForm f = (ConfigurationGradesForm) form;
 
AbstractDao.getCurrentSession().beginTransaction();
DaoFactory.getConfigurationGradesStatusEpocaDaoImpl().delete(f.getId());
AbstractDao.getCurrentSession().getTransaction().commit();
return mapping.findForward("grades");
}
 
}
Property changes:
Added: svn:executable
+ *
/impl/src/java/pt/estgp/estgweb/web/controllers/announcements/MessagesController.java
1,36 → 1,26
package pt.estgp.estgweb.web.controllers.announcements;
 
import pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsController;
import pt.estgp.estgweb.web.form.courses.CourseForm;
import pt.estgp.estgweb.web.form.announcements.MessagesForm;
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.domain.views.CourseView;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.domain.views.CourseView;
import pt.estgp.estgweb.domain.views.UserView;
import pt.estgp.estgweb.filters.exceptions.NotFoundException;
import pt.estgp.estgweb.services.expceptions.AlreadyExistsException;
import pt.estgp.estgweb.services.courseunits.DirectedCoordinatedUnitsService;
import pt.estgp.estgweb.services.courseunits.DirectedCoordinatedCourses;
import pt.estgp.estgweb.services.announcements.CreateAnnouncementService;
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.InvalidFilterExpressionException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.IncompatibleFilterException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterRetrieveException;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
import pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsController;
import pt.estgp.estgweb.web.form.announcements.MessagesForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.util.List;
import java.util.ArrayList;
import java.util.List;
 
/**
* @author Jorge Machado
58,7 → 48,7
MessagesForm mF = (MessagesForm) form;
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new String[]{"",mF.getDepartamento()};
Object[] args = new String[]{mF.getImportYear(),mF.getDepartamento()};
List<CourseView> courseViews = (List<CourseView>) sm.execute(RequestUtils.getRequester(request, response), "LoadCoursesImportYearArea", args, names);
mF.setCourseViews(courseViews);
addMessage(request,"submit.todo.message.courses.loaded");
/impl/src/java/pt/estgp/estgweb/web/FTPFileProxy.java
10,6 → 10,7
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.services.ftpservices.FtpService;
import pt.estgp.estgweb.utils.ConfigProperties;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
40,19 → 41,32
String server = objectRequired.substring(0,objectRequired.indexOf("/"));
String path = objectRequired.substring(objectRequired.indexOf("/"));
 
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request);
String username = ConfigProperties.getProperty(server + ".user");
String passwordUserInSession = ConfigProperties.getProperty(server + ".pass");
boolean useDefaultCredentialsRead = ConfigProperties.getBooleanProperty(server + ".use.default.credentials.to.read");
if(!useDefaultCredentialsRead)
{
String passwordUserInSessionCript = (String) ((UserSessionImpl)userSession).get(FtpService.FTP_PASSWORD);
if(passwordUserInSession == null || userSession.getUser() == null)
{
logger.warn("There is no user authenticated, is configured to use not default credentials, but will use default password for server " + server);
}
else
{
username = userSession.getUsername();
passwordUserInSession = DesUtils.getInstance().decrypt(passwordUserInSessionCript);
logger.warn("Will use User Credentials for server " + server + " and user " + username);
}
}
 
 
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request);
String username = userSession != null ? userSession.getUsername() : "UNKNOWN";
String passwordUserInSession = (String) ((UserSessionImpl)userSession).get(FtpService.FTP_PASSWORD);
logger.info("server:" + server);
logger.info("path:" + path);
if(username == null || passwordUserInSession == null)
{
response.sendError(401);
return;
}
passwordUserInSession = DesUtils.getInstance().decrypt(passwordUserInSession);
 
if(path != null)
{
server = pt.estgp.estgweb.utils.ConfigProperties.getProperty("server." + server);
/impl/src/java/pt/estgp/estgweb/examples/DBInit.java
70,6 → 70,9
announcement3.setPopupwidthpx(0);
announcement3.setPosition(0);
DaoFactory.getAnnouncementDaoImpl().save(announcement3);
 
 
 
AbstractDao.getCurrentSession().getTransaction().commit();
}
}
/impl/src/doc/TarefasManutencaoBaco.docx
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/mysql/ConfigurarMysql.txt
New file
0,0 → 1,11
 
 
my.conf
 
[mysqld]
default-storage-engine = innodb
transaction-isolation = READ-COMMITTED
 
restart mysql
 
restart no mac /usr/local/mysql/support-files/mysql.server restart
/impl/src/doc/EMAIL_SEND_CONF.doc
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:executable
+ *
Added: svn:mime-type
+ application/octet-stream