Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 891 → Rev 924

/impl/importRoutines.xml
7,24 → 7,28
 
<target name="courses">
<java classname="pt.estgp.estgweb.services.sigesimports.ImportCourseService" classpath="${build.dir.classes}" classpathref="pathToToolsLib">
<arg value="201314"/>
<!--<arg value="201314"/>-->
<arg value="201415"/>
</java>
</target>
<target name="sincronizeunits">
<java classname="pt.estgp.estgweb.services.sigesimports.SincronizeLastYearCourseUnitProgramsService" classpath="${build.dir.classes}" classpathref="pathToToolsLib">
<arg value="201314"/>
<!--<arg value="201314"/>-->
<arg value="201415"/>
<arg value="true"/>
<arg value="true"/>
</java>
</target>
<target name="teachers">
<java classname="pt.estgp.estgweb.services.sigesimports.ImportTeachersService" classpath="${build.dir.classes}" classpathref="pathToToolsLib">
<arg value="201314"/>
<!--<arg value="201314"/>-->
<arg value="201415"/>
</java>
</target>
<target name="students">
<java classname="pt.estgp.estgweb.services.sigesimports.ImportStudentsService" classpath="${build.dir.classes}" classpathref="pathToToolsLib">
<arg value="201314"/>
<!--<arg value="201314"/>-->
<arg value="201415"/>
</java>
</target>
<target name="grades">
51,4 → 55,8
<arg value="false"/>
</java>
</target>
 
<target name="storeAllProgramsFtp">
<java classname="pt.estgp.estgweb.services.courseunits.SaveCourseUnitProgram" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/>
</target>
</project>
/impl/conf/language/MessageResourcesIntranet.properties
22,6 → 22,7
intranet.separator.utils=Utilitários
intranet.separator.utils.back=Voltar aos Utilitários
intranet.separator.contacts=Contactos
intranet.separator.courseunits=Perfil
 
intranet.contacts.lists=@Listas de Distribuição
intranet.contacts.labs=Laboratórios
/impl/conf/language/MessageResourcesCourse.properties
27,7 → 27,7
course.studies.plan.not.available=Não disponivel
course.courseunit.program.objectives.todo={0} Unidades em Falta (programa)
course.externalSite=Site Externo
course.studies.plan=Plano de Estudos
#course.studies.plan=Plano de Estudos
course.directed.coordinated.courses=Gestão de Unidades Curriculares
course.directed.coordinated.courses.updated.success={0} unidades curriculares actualizadas com sucesso
 
39,6 → 39,7
course.C=Acções de Formação de Curta Duração
course.A=Formações Avançadas
course.O=Outras Formações
course.T=TeSP
 
course.Bs=Bacharelatos
course.Ls=Licenciaturas
60,15 → 61,15
course.program.courses=Programas Curriculares por Curso
course.program.coordinated.directed.courses=Programas Curriculares dos Cursos Coordenados e/ou dirigidos
course.program.courses.choose.year=Escolha o ano que deseja consultar
course.userGroupStudents=Grupo atribuido aos Alunos na Rede (Criação Pastas DTP)
 
#courseunit.programfile.valid=programa <u>Aprovado</u> pela Comissão de Curso
 
courseunit.programfile.valid=programa <u>Aprovado</u> pela Comissão de Curso
 
 
 
 
 
 
courses.all=Todos os Cursos
 
course.validation.role=Comissão de Curso para validação de Programas
/impl/conf/language/MessageResources.properties
158,6 → 158,7
fail.owner=Lamentamos o incómodo, mas não tem permissões sobre o objecto ao qual tentou aceder.
fail.timer=Lamentamos o incomodo, mas a acção que tentou efectuar não pode ser executada nesta data.
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.
 
#palavras comuns
courseunit=Unidade Curricular
/impl/conf/language/MessageResourcesCourseUnits.properties
101,6 → 101,7
courseunit.menu.presences=Assiduidade
courseunit.menu.contents=Conte\u00fados
courseunit.menu.grades=Avalia\u00e7\u00e3o
courseunit.menu.dtp=DTP
 
replace=Substituir
 
169,6 → 170,7
 
 
courseunit.evaluation=Ficha de Avalia\u00e7\u00e3o da Unidade Curricular
courseunit.evaluation.warning=Por favor v\u00e1 guardando a sua ficha no bot\u00e3o de Salvar para evitar que caso a sess\u00e3o expire perca o seu trabalho.
courseunit.evaluation.mapa1=Mapa 1
courseunit.evaluation.mapa1.desc=Dados relativos ao processo de avalia\u00e7\u00e3o
courseunit.menu.evaluation=Relat\u00f3rio de Avalia\u00e7\u00e3o
176,6 → 178,13
 
 
 
 
 
 
 
 
courseunit.consultaroutros=Consultar outros programas
courseunit.confirmaclonagem=Tem a certeza que deseja clonar o programa do ano na caixa de selecção para este programa actualmente aberto para edição? Vai gerar uma nova versão de programa e a anterior será arquivada em PDF.
 
courseunit.dossier.tecnico.pedagogico=Dossier T\u00E9cnico Pedag\u00F3gico
 
/impl/conf/WEB-INF/struts/struts-courseunits.xml
66,6 → 66,7
 
<action path="/user/startLoadCourseUnitEvaluation" forward="/user/courseUnitEvaluationController.do?dispatch=editEvaluation"/>
 
 
<action path="/user/courseUnitEvaluationController"
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsEvaluationController"
name="CourseUnitEvaluationForm"
83,6 → 84,7
<action path="/user/startLoadCourseUnitContentsFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadContents&amp;from=Home"/>
<action path="/user/startLoadCourseUnitGradesFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadGrades&amp;from=Home"/>
<action path="/user/startLoadCourseUnitPresencesFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadPresences&amp;from=Home"/>
<action path="/user/startLoadCourseUnitDtpFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadDtp&amp;from=Home"/>
<action path="/user/startCourseUnitBlogFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=startBlog&amp;from=CourseUnit"/>
<action path="/user/startLoadCourseUnitAssignementFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadAssignement&amp;from=Home"/>
<action path="/user/startValidateInvalidateCourseUnitWorksFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=validateInvalidateAssignement&amp;from=Home"/>
94,6 → 96,8
<action path="/user/startLoadTeacherCourseUnitFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadTeacher&amp;from=Home"/>
<action path="/user/startLoadStudentCourseUnitFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadStudent&amp;from=Home"/>
 
<action path="/user/startLoadCourseUnitDossierFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadDossier&amp;from=Home"/>
 
<action path="/user/startLoadCourseUnitSigesFromHome" forward="/user/courseUnitControllerFromHome.do?dispatch=loadCourseUnitWebSiteBySigesCodes&amp;from=Home"/>
 
 
112,6 → 116,8
<forward name="submit" path="page.submit.courseunit.from.home"/>
<forward name="load.teacher" path="page.load.courseunit.teacher.from.home"/>
<forward name="load.student" path="page.load.courseunit.student.from.home"/>
<forward name="load.dossier" path="page.load.courseunit.dossier.tecnico.pedagogico"/>
 
</action>
 
 
/impl/conf/WEB-INF/struts/tiles-courseunits.xml
115,6 → 115,9
<definition name="page.courseLayoutIOnlinePresences.proxy.ftp" extends="page.courseLayoutIOnline.proxy.ftp">
<put name="topnav" value="/user/home/topnavCourseUnitPresences.jsp"/>
</definition>
<definition name="page.courseLayoutIOnlineDtp.proxy.ftp" extends="page.courseLayoutIOnline.proxy.ftp">
<put name="topnav" value="/user/home/topnavCourseUnitDtp.jsp"/>
</definition>
 
 
 
165,7 → 168,16
 
 
 
<!-- Dossier Tecnico Pedagogico -->
 
 
<definition name="page.load.courseunit.dossier.tecnico.pedagogico" extends="page.separators.home">
<put name="title" value="Dossier Técnico Pedagógico"/>
<put name="topnav" value="/user/courseunits/topnavDossierTecnicoPedagogico.jsp"/>
<put name="left" value="/user/courseunits/menu.jsp"/>
<put name="body" value="/user/courseunits/dossierTecnicoPedagogico.jsp"/>
</definition>
 
 
 
</tiles-definitions>
/impl/conf/WEB-INF/struts/struts-default.xml
20,6 → 20,7
 
<global-forwards>
<forward name="welcome" path="/Welcome.do"/>
<forward name="welcomeBootstrap" path="/WelcomeBootstrap.do"/>
<forward name="error503" path="/error503.do"/>
<forward name="error500" path="/error500.do"/>
<forward name="error404" path="/error404.do"/>
39,6 → 40,7
<!-- Start Pages -->
 
<action path="/Welcome" forward="page.welcome"/>
<action path="/WelcomeBootstrap" forward="page.welcome.bootstrap"/>
<action path="/StartAuthentication" forward="page.authentication"/>
<action path="/Logout" forward="/authenticate.do?dispatch=logout"/>
 
142,6 → 144,7
<forward name="courseLayoutIOnlineContents.ftp" path="page.courseLayoutIOnlineContents.proxy.ftp"/>
<forward name="courseLayoutIOnlineGrades.ftp" path="page.courseLayoutIOnlineGrades.proxy.ftp"/>
<forward name="courseLayoutIOnlinePresences.ftp" path="page.courseLayoutIOnlinePresences.proxy.ftp"/>
<forward name="courseLayoutIOnlineDtp.ftp" path="page.courseLayoutIOnlineDtp.proxy.ftp"/>
 
<forward name="layoutIntranetUtils" path="page.layoutIntranetUtils.proxy"/>
<forward name="layoutIntranetContacts" path="page.layoutIntranetContacts.proxy"/>
/impl/conf/WEB-INF/struts/tiles-default.xml
68,12 → 68,40
</definition>
 
 
 
<!-- Layout Old -->
<definition name="base.layoutWelcome" extends="base.definition" path="/layout/layoutWelcome.jsp">
<put name="navigationLeft" value="/layout/navigationLeft.jsp" />
<put name="navigationRight" value="/layout/navigationRight.jsp" />
</definition>
 
<!-- Testes com Layout Novo Bootstrap -->
<definition name="base.layoutWelcomeBootstrap" path="/layout/layoutWelcomeBootstrap.jsp">
<put name="title" value="x"/>
<put name="announcements" value="/layout/topnavempty.jsp"/>
<put name="header" value="/layout/header.jsp"/>
<put name="topnav" value="/layout/topnavempty.jsp" />
<put name="footer" value="/layout/footer.jsp" />
<put name="navigationTop" value="/layout/navigationTop.jsp"/>
<put name="navigationLeft" value="/layout/navigationLeft.jsp" />
<put name="navigationRight" value="/layout/navigationRight.jsp" />
</definition>
 
<!--Pagina inicial-->
<!-- welcome OLD -->
<definition name="page.welcome" extends="base.layoutWelcome">
<put name="title" value="ESTG" />
<put name="body" value="/public/index.jsp" />
</definition>
<!-- welcome NEW bootstrap -->
<definition name="page.welcome.bootstrap" extends="base.layoutWelcomeBootstrap">
<put name="title" value="ESTG" />
<put name="body" value="/public/indexBootstrap.jsp" />
</definition>
 
 
 
 
 
<definition name="base.layoutCourses" extends="base.definition" path="/layout/layout1.jsp">
<put name="topnav" value="/user/courses/topnavCourses.jsp"/>
<put name="navigation" value="/layout/navigationCourse.jsp" />
358,13 → 386,9
 
 
 
<!--Pagina inicial-->
<definition name="page.welcome" extends="base.layoutWelcome">
<put name="title" value="ESTG" />
<put name="body" value="/public/index.jsp" />
</definition>
 
 
 
<!-- Autenticacao -->
<definition name="page.authentication" extends="base.layout1">
<put name="title" value="Authentication" />
/impl/conf/WEB-INF/tlds/baco.tld
252,4 → 252,28
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<name>object2Request</name>
<tagclass>pt.estgp.estgweb.web.tags.Object2RequestTag</tagclass>
<attribute>
<name>beanIdName</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>beanIdProperty</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>classname</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>useBean</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
/impl/conf/app.properties
1,7 → 1,7
 
#FICHEIRO DE CONFIGURACOES
 
import.year=201314
import.year=201415
tmp.dir=@tmp.dir@
data.dir=@data.dir@
use.ldap=@use.ldap@
461,8 → 461,24
intranet.contents.dir=Conteudos
intranet.grades.dir=Avaliacao
intranet.presences.dir=Assiduidade
intranet.dtp.dir=DTP
 
intranet.dtp.planeamento=1.Planeamento
intranet.dtp.ficha_curricular=2.Ficha.Curricular
intranet.dtp.sumarios=3.Sumarios
intranet.dtp.avaliacao=4.Avaliacao
intranet.dtp.avaliacao.enunciados=4.1.Enunciados
intranet.dtp.avaliacao.pautas=4.2.Pautas
intranet.dtp.ficha_avaliacao=5.Relatorio.de.Avaliacao
intranet.dtp.inquerito_pedagogico=6.Inquerito.Pedagogico
intranet.dtp.course.coordinator.write=true
intranet.dtp.course.director.write=true
intranet.dtp.course.unit.responsible.write=true
 
##COLOCAR AQUI AS DEFINICOES DO DTP
 
 
 
#########################################################################
#
#PopService
/impl/conf/template/email/unidadeValidada_pt.txt
4,7 → 4,7
O BACO informa-o de que a ficha curricular da unidade de {0}
foi aprovada pela comissão de curso
 
Com os melhores cumprimentos
Cumprimentos
---------------------------------------------
Escola Superior de Tecnologia e Gestão
Instituto Politécnico de Portalegre
/impl/conf/template/email/courseUnitWork_pt.txt
15,7 → 15,8
 
{2}
 
Com os melhores cumprimentos {3}
Cumprimentos
{3}
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
/impl/conf/template/email/courseUnitWorkChange_pt.txt
19,7 → 19,8
 
{2}
 
Com os melhores cumprimentos {3}
Cumprimentos
{3}
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
/impl/conf/template/email/courseUnitBlogPost_pt.txt
14,7 → 14,8
 
{2}
 
Com os melhores cumprimentos {3}
Cumprimentos
{3}
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
/impl/conf/template/email/courseUnitAnnouncement_pt.txt
15,7 → 15,8
 
{2}
 
Com os melhores cumprimentos {3}
Cumprimentos
{3}
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
/impl/conf/template/email/unidadeEdicao_pt.txt
4,7 → 4,7
O BACO informa-o de que a ficha curricular da unidade de {0}
se encontra disponivel para edição
 
Com os melhores cumprimentos
Cumprimentos
---------------------------------------------
Escola Superior de Tecnologia e Gestão
Instituto Politécnico de Portalegre
/impl/conf/template/email/sendPageFriend_pt.txt
5,7 → 5,7
 
{1}
 
Com os Melhores cumprimentos
Cumprimentos
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
/impl/conf/template/email/newGrades_pt.txt
5,7 → 5,7
 
{1}
 
Com os melhores cumprimentos
Cumprimentos
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
/impl/conf/template/email/message_pt.txt
13,7 → 13,7
 
{2}
 
<p>Com os melhores cumprimentos {3}</p>
<p>Cumprimentos, {3}</p>
 
---------------------------------------------
<p>Escola Superior de Tecnologia e Gestão</p>
/impl/conf/template/email/unidadeEditada_pt.txt
4,7 → 4,7
O BACO informa-o de que a ficha curricular da unidade de {1}
foi editada
 
Com os melhores cumprimentos
Cumprimentos
---------------------------------------------
Escola Superior de Tecnologia e Gestão
Instituto Politécnico de Portalegre
/impl/conf/template/email/summary_pt.txt
9,7 → 9,7
 
{4}
 
Com os melhores cumprimentos
Cumprimentos
 
---------------------------------------------
Escola Superior de Tecnologia e Gestão
/impl/conf/directories/styleMapaDir.xsl
New file
0,0 → 1,43
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" xmlns:d="http://www.estgp.pt/baco/directory/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
 
<xsl:output method="html" encoding="UTF-8" omit-xml-declaration="yes" />
 
 
<xsl:template match="/">
<h1><xsl:value-of select="//d:directory/@label"/></h1>
<table border="1" width="100%">
<tr>
<td>NOME</td>
<td>SALTO EXTERNO</td>
<td>ULR</td>
<td width="20%">NOTAS</td>
</tr>
<xsl:for-each select="//d:node">
<tr>
<td colspan="4" style="background-color:#aaaaaa"><xsl:value-of select="@label"/></td>
</tr>
<xsl:for-each select="./d:leaf">
<tr>
<td><xsl:text>-&gt;</xsl:text><xsl:value-of select="@label"/></td>
<td>
<xsl:if test="@absolute='true'">
<label style="background-color:red">SIM</label>
</xsl:if>
<xsl:if test="@proxy='grupos'">
<label style="background-color:yellow">PASTA INTRANET</label>
</xsl:if>
 
</td>
<td><xsl:value-of select="@url"/></td>
<td></td>
</tr>
</xsl:for-each>
 
</xsl:for-each>
 
</table>
</xsl:template>
 
 
</xsl:stylesheet>
Property changes:
Added: svn:executable
+ *
/impl/conf/berserk/sd.xml
1131,7 → 1131,7
<!--CourseUnitAssignements Backups-->
<service>
<name>CreateCourseUnitDirPackage</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitDirPackageService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.courseunits.CreateCourseUnitDirPackageServiceBat</implementationClass>
<description>Create a zip file with Intranet folders</description>
<isTransactional>true</isTransactional>
<filterChains>
1999,4 → 1999,19
</service>
 
 
<!--Atention this method should be used with carefully because loads an object inconditionally without checking permissions-->
<service>
<name>LoadObjectService</name>
<implementationClass>pt.estgp.estgweb.services.common.LoadObjectService</implementationClass>
<description>Loads an object from Object Repository</description>
<isTransactional>true</isTransactional>
<defaultMethod>load</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
 
 
 
</serviceDefinitions>
/impl/src/java/pt/estgp/estgweb/utils/StringsUtils.java
44,6 → 44,7
try{
if(nome != null)
{
nome = nome.replace("/","_");
String[] partes = nome.split(" ");
StringBuilder sb = new StringBuilder();
for(String n : partes)
/impl/src/java/pt/estgp/estgweb/Globals.java
85,7 → 85,22
public static final String INTRANET_CONTENTS = ConfigProperties.getProperty("intranet.contents.dir");
public static final String INTRANET_GRADES = ConfigProperties.getProperty("intranet.grades.dir");
public static final String INTRANET_PRESENCES = ConfigProperties.getProperty("intranet.presences.dir");
public static final String INTRANET_DTP = ConfigProperties.getProperty("intranet.dtp.dir");
 
public static final String INTRANET_DTP_Planeamento = ConfigProperties.getProperty("intranet.dtp.planeamento");
public static final String INTRANET_DTP_FichaCurricular = ConfigProperties.getProperty("intranet.dtp.ficha_curricular");
public static final String INTRANET_DTP_Sumarios = ConfigProperties.getProperty("intranet.dtp.sumarios");
public static final String INTRANET_DTP_Avaliacao = ConfigProperties.getProperty("intranet.dtp.avaliacao");
public static final String INTRANET_DTP_Avaliacao_enunciados = ConfigProperties.getProperty("intranet.dtp.avaliacao.enunciados");
public static final String INTRANET_DTP_Avaliacao_pautas = ConfigProperties.getProperty("intranet.dtp.avaliacao.pautas");
public static final String INTRANET_DTP_FichaAvaliacao = ConfigProperties.getProperty("intranet.dtp.ficha_avaliacao");
public static final String INTRANET_DTP_InqueritoPedagogico = ConfigProperties.getProperty("intranet.dtp.inquerito_pedagogico");
public static final boolean INTRANET_DTP_CourseCoordinatorWrite = ConfigProperties.getBooleanProperty("intranet.dtp.course.coordinator.write");
public static final boolean INTRANET_DTP_CourseDirectorWrite = ConfigProperties.getBooleanProperty("intranet.dtp.course.director.write");
public static final boolean INTRANET_DTP_CourseUnitResponsibleWrite = ConfigProperties.getBooleanProperty("intranet.dtp.course.unit.responsible.write");
 
 
 
public static final int SEARCH_MAX_RESULTS = ConfigProperties.getIntProperty("search.max.results");
public static final int SEARCH_BEST_FRAGMENTS_MAX_FRAGMENT_SIZE = ConfigProperties.getIntProperty("search.best.fragments.max.fragment.size");
public static final int SEARCH_BEST_FRAGMENTS_MAX_FRAGMENTS = ConfigProperties.getIntProperty("search.best.fragments.max.fragments");
345,4 → 360,10
public static final String EMAIL_GRADE_UNIT_TEMPLATE = "GradeUnit.txt";
 
public static final String[] PROXY_EXTENSIONS = ConfigProperties.getProperty("proxy.extensions").split(" ");
 
 
public static final String FTP_IONLINE_URL = ConfigProperties.getProperty("server.ionline") + ConfigProperties.getProperty("server.ionline.start.path");
public static final String FTP_IONLINE_USER = ConfigProperties.getProperty("ionline.user");
public static final String FTP_IONLINE_PASS = ConfigProperties.getProperty("ionline.pass");
public static final String FTP_IONLINE_START_PATH = ConfigProperties.getProperty("server.ionline.start.path");
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/SaveCourseUnitProgram.java
1,12 → 1,17
package pt.estgp.estgweb.services.courseunits;
 
import jomm.dao.impl.AbstractDao;
import jomm.utils.PdfUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.fop.apps.FOPException;
import org.apache.log4j.Logger;
import org.dom4j.*;
import org.hibernate.Query;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.dao.impl.CourseUnitDaoImpl;
import pt.estgp.estgweb.domain.views.CourseUnitProgramView;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.services.data.RepositoryService;
14,6 → 19,7
import pt.estgp.estgweb.utils.DatesUtils;
import pt.estgp.estgweb.utils.Dom4jUtil;
import pt.estgp.estgweb.utils.StringsUtils;
import pt.estgp.estgweb.web.FtpServer;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import javax.xml.transform.TransformerException;
23,10 → 29,7
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
110,9 → 113,86
public void createPdf(CourseUnit cu, List<String> errors) throws IOException, TransformerException, FOPException {
createPdf(cu,errors,null);
}
 
public void createPdf(CourseUnit cu, List<String> errors,UserSession u) throws IOException, TransformerException, FOPException {
 
 
String path = generatePdfFile(cu, errors, u);
 
 
 
RepositoryService repositoryService = new RepositoryService();
User owner;
if(cu.getTeachers() != null && cu.getTeachers().size() > 0)
owner = cu.getTeachers().iterator().next();
else
owner = DaoFactory.getUserDaoImpl().load(new Long(1));
if(owner.getUsername() == null)
{
errors.add("Docente: " + owner.getName() + " ( " + owner.getId() + " ) don't have username check that situation");
// owner.setUsername("UKNOWN");
}
if(cu.getProgramStreamId() == null)
{
String identifier = repositoryService.storeRepositoryFile(new FileInputStream(path), "application/pdf", "pdf",((int) new File(path).length()), cu.getCode() + ".pdf", "courseunit.program.description" + cu.getName(), ResourceAccessControlEnum.publicDomain,owner);
cu.setProgramStreamId(identifier);
}
else
{
repositoryService.updateRepositoryFile(cu.getProgramStreamId(), new FileInputStream(path), "application/pdf", "pdf", ((int)new File(path).length()),cu.getCode() + ".pdf", "courseunit.program.description " + cu.getName(), ResourceAccessControlEnum.publicDomain);
}
cu.setObjectives(cu.getCourseUnitProgram().getCourseUnitProgramPart2().getObjectivos());
//Obrigar a ser falso
 
//NOVO
RepositoryFileImpl repoFile = repositoryService.loadView(cu.getProgramStreamId());
sendPdfFtpIonline(cu,errors,u,path,repoFile.getLastVersion().getSaveDate(),null);
}
 
 
public boolean sendPdfFtpIonline(CourseUnit cu, List<String> errors, UserSession u, FTPClient client) throws IOException, TransformerException, FOPException
{
RepositoryService repositoryService = new RepositoryService();
if(cu.getProgramStreamId() != null && cu.getProgramStreamId().length()> 0)
{
RepositoryFileImpl repoFile = repositoryService.loadView(cu.getProgramStreamId());
String path = generatePdfFile(cu, errors, u);
sendPdfFtpIonline(cu,errors,u,path,repoFile.getLastVersion().getSaveDate(),client);
return true;
}
return false;
}
 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd.HH_mm_ss");
private void sendPdfFtpIonline(CourseUnit cu, List<String> errors, UserSession u,String pdfPath,Date versionDate,FTPClient client) throws IOException, TransformerException, FOPException {
 
FtpServer server = null;
if(client == null)
{
server = FtpServer.getNewServer(Globals.FTP_IONLINE_URL,Globals.FTP_IONLINE_USER,Globals.FTP_IONLINE_PASS);
client = server.getClient();
}
client.setFileType(FTP.BINARY_FILE_TYPE);
 
String pastaFichaCurricular = Globals.FTP_IONLINE_START_PATH + cu.getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_FichaCurricular;
if(!client.changeWorkingDirectory(pastaFichaCurricular))
{
logger.error("FTP CANT CHANGE TO PATH: " + pastaFichaCurricular);
}
else
{
client.storeFile(cu.getCode() + "_" + cu.getNormalizedName() + "_v" + sdf.format(versionDate) + ".pdf",new FileInputStream(pdfPath));
 
if(server != null)
{
client.quit();
client.disconnect();
}
}
//
}
 
private String generatePdfFile(CourseUnit cu, List<String> errors, UserSession u) throws TransformerException, IOException, FOPException {
((CourseUnitProgramImpl)cu.getCourseUnitProgram()).consistNullValues();
Document responseDoc = DocumentHelper.createDocument();
Namespace namespace = new Namespace("uc", "http://baco.estgp.pt/schemas/courseunits/program/");
174,7 → 254,6
}
 
 
 
Element apresentacaoObjectivos = curriculum.addElement(new QName("objetivosDaAprendizagem",namespace));
apresentacaoObjectivos.setText(cu.getCourseUnitProgram().getCourseUnitProgramPart2().getObjectivos());
 
290,18 → 369,11
cargaHorariaTotal.setText(cu.getCourseUnitProgram().getCargaHorariaTotal());
 
 
 
 
 
 
 
 
 
// Dom4jUtil.writeSout(responseDoc);
 
 
String path = Globals.TMP_DIR + File.separator + cu.getCode() + "-" + cu.getName() + ".pdf";
FileOutputStream teste = new FileOutputStream(path);
String path = Globals.TMP_DIR + File.separator + cu.getCode() + "-" + cu.getNormalizedName() + ".pdf";
FileOutputStream out = new FileOutputStream(path);
Map<String,Object> params = new HashMap<String,Object>();
params.put("site", Globals.SITE_URL);
if(cu.isValidProgram())
314,34 → 386,55
 
org.w3c.dom.Document dd = Dom4jUtil.toW3c(responseDoc);
 
PdfUtils.createPdfFromXml(new DOMSource(dd), "pt/estgp/estgweb/services/courseunits/courseunitprogram.fo.xsl", teste,params);
teste.flush();
teste.close();
PdfUtils.createPdfFromXml(new DOMSource(dd), "pt/estgp/estgweb/services/courseunits/courseunitprogram.fo.xsl", out, params);
out.flush();
out.close();
return path;
}
 
 
RepositoryService repositoryService = new RepositoryService();
User owner;
if(cu.getTeachers() != null && cu.getTeachers().size() > 0)
owner = cu.getTeachers().iterator().next();
else
owner = DaoFactory.getUserDaoImpl().load(new Long(1));
if(owner.getUsername() == null)
{
errors.add("Docente: " + owner.getName() + " ( " + owner.getId() + " ) don't have username check that situation");
// owner.setUsername("UKNOWN");
public void storeAllPrograms() throws IOException {
CourseUnitDaoImpl dao = DaoFactory.getCourseUnitDaoImpl();
Query q = AbstractDao.getCurrentSession().createQuery("select c from c in class " + CourseUnit.class.getName() + " where c.importYear = ?");
q.setString(0,DatesUtils.getImportYear());
Iterator<CourseUnit> cuIter = q.iterate();
FtpServer server = FtpServer.getNewServer(Globals.FTP_IONLINE_URL,Globals.FTP_IONLINE_USER,Globals.FTP_IONLINE_PASS);
FTPClient client = server.getClient();
while (cuIter.hasNext()) {
CourseUnit next = cuIter.next();
 
try {
List<String> errors = new ArrayList<String>();
System.out.print("Sending " + next.getCourse().getName() + " - " + next.getSemestre() + " - " + next.getNormalizedName());
if(sendPdfFtpIonline(next,errors,null,client))
System.out.print(" ... OK");
else
System.out.print(" ... FAIL probably no StreamID");
System.out.print("\n");
if(errors.size()>0)
for(String error:errors)
logger.warn(error);
} catch (IOException e) {
logger.error(e,e);
} catch (TransformerException e) {
logger.error(e, e);
} catch (FOPException e) {
e.printStackTrace();
}
 
AbstractDao.getCurrentSession().evict(next);
}
if(cu.getProgramStreamId() == null)
{
String identifier = repositoryService.storeRepositoryFile(new FileInputStream(path), "application/pdf", "pdf",((int) new File(path).length()), cu.getCode() + ".pdf", "courseunit.program.description" + cu.getName(), ResourceAccessControlEnum.publicDomain,owner);
cu.setProgramStreamId(identifier);
client.quit();
client.disconnect();
 
}
 
 
public static void main(String[] args) throws IOException {
AbstractDao.getCurrentSession().beginTransaction();
new SaveCourseUnitProgram().storeAllPrograms();
AbstractDao.getCurrentSession().flush();
AbstractDao.getCurrentSession().getTransaction().commit();
}
else
{
repositoryService.updateRepositoryFile(cu.getProgramStreamId(), new FileInputStream(path), "application/pdf", "pdf", ((int)new File(path).length()),cu.getCode() + ".pdf", "courseunit.program.description " + cu.getName(), ResourceAccessControlEnum.publicDomain);
}
cu.setObjectives(cu.getCourseUnitProgram().getCourseUnitProgramPart2().getObjectivos());
//Obrigar a ser falso
 
 
}
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/SaveCourseUnitEvaluation.java
1,20 → 1,20
package pt.estgp.estgweb.services.courseunits;
 
import jomm.utils.PdfUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.fop.apps.FOPException;
import org.apache.log4j.Logger;
import org.dom4j.*;
import org.dom4j.Document;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.views.CourseUnitEvaluationView;
import pt.estgp.estgweb.domain.views.CourseUnitProgramView;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.estgp.estgweb.utils.Dom4jUtil;
import pt.estgp.estgweb.utils.StringsUtils;
import pt.estgp.estgweb.web.FtpServer;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import javax.xml.transform.TransformerException;
24,10 → 24,7
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
41,8 → 38,8
* @author Jorge Machado
*
*
* So pode editar o programa da unidade o coordenador do curso ou o responsavel da unidade
* ou o docente da unidade ou tem o role de validacao do curso a comissao de curso
* So pode editar a avaliação da unidade o docente da unidade
* É gerado um PDF a cada gravação do Ficheiro
*
* Created at 17/Out/2003 , 23:45:24
*
54,6 → 51,8
 
private static final Logger logger = Logger.getLogger(SaveCourseUnitEvaluation.class);
 
RepositoryService repositoryService = new RepositoryService();
 
public CourseUnitEvaluationView run(CourseUnitEvaluationView cupv, Long coursUnitId, UserSession usession) throws ServiceException, TransformerException, IOException, FOPException {
 
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(coursUnitId);
84,7 → 83,16
cupv.persistViewInObjectTeacher(evaluation);
}
List<String> errors = new ArrayList<String>();
if(cupv.isFechar())
{
evaluation.setClosed(true);
}
else
{
evaluation.setClosed(false);
}
 
createPdf(evaluation,c,usession,errors);
if(usession.getUser() instanceof Teacher)
DirectedCoordinatedUnitsService.sendNotificationsEditedInterestedPeople(c,usession);
else
95,5 → 103,106
return cupv;
}
 
public void createPdf(CourseUnitEvaluation cuv, CourseUnit cu, UserSession userSession,List<String> errors) throws IOException, TransformerException, FOPException {
 
 
String path = generatePdf(cuv, cu);
 
 
 
RepositoryService repositoryService = new RepositoryService();
User owner = userSession.getUser();
 
if(cu.getEvaluationStreamId() == null)
{
String identifier = repositoryService.storeRepositoryFile(new FileInputStream(path), "application/pdf", "pdf",((int) new File(path).length()), cu.getCode() + "-evaluation.pdf", "courseunit.evaluation.description" + cu.getName(), ResourceAccessControlEnum.privateDomain,owner);
cu.setEvaluationStreamId(identifier);
}
else
{
repositoryService.updateRepositoryFile(cu.getEvaluationStreamId(), new FileInputStream(path), "application/pdf", "pdf", ((int)new File(path).length()),cu.getCode() + "-evaluation.pdf", "evaluation.evaluation.description " + cu.getName(), ResourceAccessControlEnum.privateDomain);
}
 
//Obrigar a ser falso
 
//NOVO
 
if(cuv.isClosed())
{
RepositoryFileImpl repoFile = repositoryService.loadView(cu.getEvaluationStreamId());
sendPdfFtpIonline(cu,errors,userSession,path,repoFile.getLastVersion().getSaveDate(),null);
}
}
 
public String generatePdf(CourseUnitEvaluation cuv, CourseUnit c) throws IOException, TransformerException, FOPException {
 
Document responseDoc = ((CourseUnitEvaluationImpl)cuv).getDom();
responseDoc.setXMLEncoding("ISO-8859-1");
 
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
 
responseDoc.getRootElement().addAttribute("data", sdf.format(new java.util.Date()));
 
 
 
 
String path = Globals.TMP_DIR + File.separator + c.getCode() + "-" + c.getNormalizedName() + "-eval.pdf";
 
FileOutputStream out = new FileOutputStream(path);
Map<String,Object> params = new HashMap<String,Object>();
params.put("site", Globals.SITE_URL);
 
 
org.w3c.dom.Document dd = Dom4jUtil.toW3c(responseDoc);
 
PdfUtils.createPdfFromXml(new DOMSource(dd), "pt/estgp/estgweb/services/courseunits/courseunitevaluation.fo.xsl", out, params);
out.flush();
out.close();
return path;
}
 
 
 
/* public boolean sendPdfFtpIonline(CourseUnit cu, List<String> errors, UserSession u, FTPClient client) throws IOException, TransformerException, FOPException
{
RepositoryService repositoryService = new RepositoryService();
if(cu.getProgramStreamId() != null && cu.getProgramStreamId().length()> 0)
{
RepositoryFileImpl repoFile = repositoryService.loadView(cu.getProgramStreamId());
String path = generatePdfFile(cu, errors, u);
sendPdfFtpIonline(cu,errors,u,path,repoFile.getLastVersion().getSaveDate(),client);
return true;
}
return false;
}*/
 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd.HH_mm_ss");
private void sendPdfFtpIonline(CourseUnit cu, List<String> errors, UserSession u,String pdfPath,Date versionDate,FTPClient client) throws IOException, TransformerException, FOPException {
 
FtpServer server = null;
if(client == null)
{
server = FtpServer.getNewServer(Globals.FTP_IONLINE_URL,Globals.FTP_IONLINE_USER,Globals.FTP_IONLINE_PASS);
client = server.getClient();
}
client.setFileType(FTP.BINARY_FILE_TYPE);
 
String pastaFichaCurricular = Globals.FTP_IONLINE_START_PATH + cu.getPathIntranet() + "/" + Globals.INTRANET_DTP + "/" + Globals.INTRANET_DTP_FichaAvaliacao;
if(!client.changeWorkingDirectory(pastaFichaCurricular))
{
logger.error("FTP CANT CHANGE TO PATH: " + pastaFichaCurricular);
}
else
{
client.storeFile(cu.getCode() + "_" + cu.getNormalizedName() + "_v" + sdf.format(versionDate) + ".pdf",new FileInputStream(pdfPath));
 
if(server != null)
{
client.quit();
client.disconnect();
}
}
//
}
 
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/courseunitprogram.fo.xsl
253,11 → 253,12
<xsl:with-param name="value"><xsl:value-of select="//uc:conteudosProgramaticos"/></xsl:with-param>
</xsl:call-template>
 
<!--<xsl:call-template name="tableGrayLine">-->
<!--<xsl:with-param name="label">Demonstração da coerência dos conteúdos programáticos com os objectivos da unidade curricular</xsl:with-param>-->
<!--<xsl:with-param name="label2"></xsl:with-param>-->
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:demonstracaoCoerenciaConteudosObjectivos"/></xsl:with-param>-->
<!--</xsl:call-template>-->
<!-- Campo Novo Aprovado Luis Batista Mail de 3 de Setembro de 2015 assunto RE: Verificação conteudos - UC - CESH_TD-->
<xsl:call-template name="tableGrayLine">
<xsl:with-param name="label">Demonstração da coerência dos conteúdos programáticos com os objectivos da unidade curricular</xsl:with-param>
<xsl:with-param name="label2"></xsl:with-param>
<xsl:with-param name="value"><xsl:value-of select="//uc:demonstracaoCoerenciaConteudosObjectivos"/></xsl:with-param>
</xsl:call-template>
 
<xsl:call-template name="tableWhiteLine">
<xsl:with-param name="label">Metodologias de ensino e Aprendizagem</xsl:with-param>
265,12 → 266,14
<xsl:with-param name="value"><xsl:value-of select="//uc:metodologiasEnsino"/></xsl:with-param>
</xsl:call-template>
 
<!--<xsl:call-template name="tableGrayLine">-->
<!--<xsl:with-param name="label">Demonstração da coerência das metodologias de ensino com os objectivos da aprendizagem da unidade curricular</xsl:with-param>-->
<!--<xsl:with-param name="label2"></xsl:with-param>-->
<!--<xsl:with-param name="value"><xsl:value-of select="//uc:demonstracaoDaCoerenciaMetodologiasObjectivos"/></xsl:with-param>-->
<!--</xsl:call-template>-->
<!-- Campo Novo Aprovado Luis Batista Mail de 3 de Setembro de 2015 assunto RE: Verificação conteudos - UC - CESH_TD-->
 
<xsl:call-template name="tableGrayLine">
<xsl:with-param name="label">Demonstração da coerência das metodologias de ensino com os objectivos da aprendizagem da unidade curricular</xsl:with-param>
<xsl:with-param name="label2"></xsl:with-param>
<xsl:with-param name="value"><xsl:value-of select="//uc:demonstracaoDaCoerenciaMetodologiasObjectivos"/></xsl:with-param>
</xsl:call-template>
 
<xsl:call-template name="tableWhiteLine">
<xsl:with-param name="label">Língua de ensino</xsl:with-param>
<xsl:with-param name="label2"></xsl:with-param>
/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitDirPackageServiceBat.java
New file
0,0 → 1,353
package pt.estgp.estgweb.services.courseunits;
 
import jomm.utils.BytesUtils;
import jomm.utils.FilesUtils;
import jomm.utils.StringsUtils;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.Course;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.Teacher;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
 
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class CreateCourseUnitDirPackageServiceBat implements IService
{
private static final Logger logger = Logger.getLogger(CreateCourseUnitDirPackageServiceBat.class);
 
public String run(String importYear, UserSession userSession) throws ServiceException
{
if(importYear == null || importYear.trim().length() == 0)
importYear = DatesUtils.getImportYear();
String importYearIntranet = DatesUtils.getImportYearIntranet(importYear);
String tmpName = BytesUtils.generateHexKey();
String tmpDir = Globals.TMP_DIR + "/" + tmpName;
new File(tmpDir).mkdirs();
//List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(importYear);
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll();
try
{
FileWriter batRunner = new FileWriter(tmpDir + "/create.bat");
 
String back = "";
for(Course c: courses)
{
//O curso é sempre o mesmo ID mas muda de Ano consoante o ano de importação
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadByCourse(c.getId(),importYear);
if(courseUnits == null || courseUnits.size() == 0)
{
logger.info("Skipping course: " + c.getCode() + ":" + c.getName() + " zero units in " + importYear);
}
else{
String courseNormalizedName = StringsUtils.normalizeResourceName(c.getName()) + '.' + c.getCode();
String couseDirPath = tmpDir + "/" + courseNormalizedName;
// File courseDir = new File(couseDirPath);
//courseDir.mkdirs();
try
{
 
String courseImportYearPathDos = couseDirPath + "\\" + importYearIntranet;
String courseImportYearPath = couseDirPath + "/" + importYearIntranet;
File courseImportYearDir = new File(courseImportYearPath);
//courseImportYearDir.mkdirs();
//new File(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S1).mkdirs();
//new File(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S2).mkdirs();
//new File(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_A).mkdirs();
//FilesUtils.copy(CreateCourseUnitDirPackageServiceBat.class.getResourceAsStream(Globals.INTRANET_SETUP_FILE),courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S1 + "/" + Globals.INTRANET_SETUP_FILE_NAME);
//FilesUtils.copy(CreateCourseUnitDirPackageServiceBat.class.getResourceAsStream(Globals.INTRANET_SETUP_FILE),courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S2 + "/" + Globals.INTRANET_SETUP_FILE_NAME);
//FilesUtils.copy(CreateCourseUnitDirPackageServiceBat.class.getResourceAsStream(Globals.INTRANET_SETUP_FILE),courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_A + "/" + Globals.INTRANET_SETUP_FILE_NAME);
 
 
String relativeDirCourse = courseImportYearPathDos.substring(tmpDir.length() + 1);
//String callPathS1 = (courseImportYearPathDos + "\\" + Globals.INTRANET_SEMESTRE_S1 + "\\").substring(tmpDir.length() + 1);
//String callPathS2 = (courseImportYearPathDos + "\\" + Globals.INTRANET_SEMESTRE_S2 + "\\").substring(tmpDir.length() + 1);
//String callPathA = (courseImportYearPathDos + "\\" + Globals.INTRANET_SEMESTRE_A + "\\").substring(tmpDir.length() + 1);
//batRunner.write("cd " + back + relativeDirCourse + "\\");
//back = "..\\..\\..\\";
//back = "..\\..\\";
//batRunner.write("\n");
/*batRunner.write(Globals.INTRANET_SETUP_FILE_NAME + " " + Globals.INTRANET_USERS_SETUP_FILE_NAME);
batRunner.write("\n");
batRunner.write("cd " + back + callPathS2);
batRunner.write("\n");
batRunner.write(Globals.INTRANET_SETUP_FILE_NAME + " " + Globals.INTRANET_USERS_SETUP_FILE_NAME);
batRunner.write("\n");
batRunner.write("cd " + back + callPathA);
batRunner.write("\n");
batRunner.write(Globals.INTRANET_SETUP_FILE_NAME + " " + Globals.INTRANET_USERS_SETUP_FILE_NAME);
batRunner.write("\n");*/
 
//RETIRADO
//FileWriter confWriterSemestre1 = new FileWriter(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S1 + "/" + Globals.INTRANET_USERS_SETUP_FILE_NAME);
//FileWriter confWriterSemestre2 = new FileWriter(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_S2 + "/" + Globals.INTRANET_USERS_SETUP_FILE_NAME);
// FileWriter confWriterA = new FileWriter(courseImportYearPath + "/" + Globals.INTRANET_SEMESTRE_A + "/" + Globals.INTRANET_USERS_SETUP_FILE_NAME);
batRunner.write("md " + courseNormalizedName + "\\\n");
batRunner.write("md " + relativeDirCourse + "\\\n");
batRunner.write("md " + relativeDirCourse + "\\" + Globals.INTRANET_SEMESTRE_S1 + "\\\n");
batRunner.write("md " + relativeDirCourse + "\\" + Globals.INTRANET_SEMESTRE_S2 + "\\\n");
batRunner.write("md " + relativeDirCourse + "\\" + Globals.INTRANET_SEMESTRE_A + "\\\n");
batRunner.write("cd " + relativeDirCourse + "\\\n");
 
//back = "..\\..\\";
//batRunner.write("\n");
 
// List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadByCourse(c.getId(),importYear);
for(CourseUnit courseUnit: courseUnits)
{
//FileWriter nowWriter;
String semestre;
if(courseUnit.getSemestre().equals("S1"))
{
//nowWriter = confWriterSemestre1;
semestre = Globals.INTRANET_SEMESTRE_S1;
}
else if(courseUnit.getSemestre().equals("S2"))
{
//nowWriter = confWriterSemestre2;
semestre = Globals.INTRANET_SEMESTRE_S2;
}
else
{
//nowWriter = confWriterA;
semestre = Globals.INTRANET_SEMESTRE_A;
}
/*md Unidade\DTP
md Unidade\DTP\1.Planeamento
md Unidade\DTP\2.Ficha.Curricular
md Unidade\DTP\3.Sumarios
md Unidade\DTP\4.Avaliacao
md Unidade\DTP\5.Ficha.de.Avaliacao.da.Unidade.Curricular
md Unidade\DTP\6.Inquerito.Pedagogico.Unidade.Curricular
md Unidade\DTP\7.Relatorio.Final*/
 
String normalizedName = StringsUtils.normalizeResourceName(courseUnit.getName());
String unitPath = courseImportYearPath + "/" + semestre + "/" + normalizedName;
courseUnit.setNormalizedName(normalizedName);
courseUnit.setPathIntranet(unitPath.substring(tmpDir.length()));
 
String semestreUnitName = semestre + "\\" + normalizedName + "\\";
String dtpUnitFolder = semestreUnitName + Globals.INTRANET_DTP + "\\";
String conteudosUnitFolder = semestreUnitName + Globals.INTRANET_CONTENTS + "\\";
 
batRunner.write("md " + semestreUnitName + "\n");
batRunner.write("md " + conteudosUnitFolder + "\n");
batRunner.write("md " + dtpUnitFolder + "\n");
 
batRunner.write("md " + dtpUnitFolder + Globals.INTRANET_DTP_Planeamento + "\\\n");
batRunner.write("md " + dtpUnitFolder + Globals.INTRANET_DTP_FichaCurricular + "\\\n");
batRunner.write("md " + dtpUnitFolder + Globals.INTRANET_DTP_Sumarios + "\\\n");
batRunner.write("md " + dtpUnitFolder + Globals.INTRANET_DTP_Avaliacao + "\\\n");
batRunner.write("md " + dtpUnitFolder + Globals.INTRANET_DTP_Avaliacao + "\\" + Globals.INTRANET_DTP_Avaliacao_enunciados + "\\\n");
batRunner.write("md " + dtpUnitFolder + Globals.INTRANET_DTP_Avaliacao + "\\" + Globals.INTRANET_DTP_Avaliacao_pautas + "\\\n");
batRunner.write("md " + dtpUnitFolder + Globals.INTRANET_DTP_FichaAvaliacao + "\\\n");
batRunner.write("md " + dtpUnitFolder + Globals.INTRANET_DTP_InqueritoPedagogico + "\\\n");
batRunner.write("cd " + semestreUnitName + "\n");
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /p \"Domain Users\":n\n");
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /p \"Authenticated Users\":n\n");
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /p \"Intranet\":n\n");
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /p \"Alunos\":n\n");
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /r \"Domain Users\"\n");
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /r \"Authenticated Users\"\n");
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /r \"Intranet\"\n");
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /r \"Alunos\"\n");
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"Docentes\":r\n");
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + c.getUserGroupStudents() + "\":r\n");
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + ConfigProperties.getProperty("ionline.user") + "\":f\n");
 
 
/*
echo CACLS Seminario.Ii /T /E /R [NOME DO GRUPO DE TODOS OS ALUNOS DA ESTG tira os parentisis rectos]
echo CACLS Seminario.Ii /T /E /G [NOME DO GRUPO DE TODOS OS DOCENTES]:R
echo CACLS Seminario.Ii /T /E /G [NOME DO GRUPO DE TODOS OS ALUNOS DO CURSO]:R
echo CACLS Seminario.Ii /T /E /G secundino.lopes:C
*/
//batRunner.write("\n");
 
//nowWriter.write(normalizedName);
System.out.println("GENERATING LINE: " + normalizedName);
 
if(courseUnit.getTeachers() != null)
{
String users = "";
int counter = 0;
for(Teacher t: courseUnit.getTeachers())
{
if(t.getUsername() != null)
{
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + t.getUsername() + "\":c\n");
//batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /r \"" + t.getUsername() + "\":c\n");
batRunner.write("cd " + Globals.INTRANET_DTP + "\n");
batRunner.write("cacls " + Globals.INTRANET_DTP_FichaCurricular + " /t /e /r \"" + t.getUsername() + "\"\n");
//batRunner.write("cacls " + Globals.INTRANET_DTP_FichaAvaliacao + " /t /e /r \"" + t.getUsername() + "\"\n");
batRunner.write("cd ..\\\n");
batRunner.write("cacls " + Globals.INTRANET_CONTENTS + " /t /e /g \"" + t.getUsername() + "\":c\n");
//users += " " + t.getUsername();
//counter++;
}
}
// nowWriter.write(" " + counter + users);
//nowWriter.write("\n");
}
if(Globals.INTRANET_DTP_CourseUnitResponsibleWrite && courseUnit.getResponsableTeacher() != null )
{
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + courseUnit.getResponsableTeacher().getUsername() + "\":c\n");
batRunner.write("cd " + Globals.INTRANET_DTP + "\n");
batRunner.write("cacls " + Globals.INTRANET_DTP_FichaCurricular + " /t /e /r \"" + courseUnit.getResponsableTeacher().getUsername() + "\"\n");
batRunner.write("cacls " + Globals.INTRANET_DTP_FichaAvaliacao + " /t /e /r \"" + courseUnit.getResponsableTeacher().getUsername() + "\"\n");
batRunner.write("cd ..\\\n");
 
}
if(Globals.INTRANET_DTP_CourseCoordinatorWrite && c.getCoordinator() != null)
{
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + c.getCoordinator().getUsername() + "\":c\n");
batRunner.write("cd " + Globals.INTRANET_DTP + "\n");
batRunner.write("cacls " + Globals.INTRANET_DTP_FichaCurricular + " /t /e /r \"" + c.getCoordinator().getUsername() + "\"\n");
batRunner.write("cacls " + Globals.INTRANET_DTP_FichaAvaliacao + " /t /e /r \"" + c.getCoordinator().getUsername() + "\"\n");
batRunner.write("cd ..\\\n");
 
}
if(Globals.INTRANET_DTP_CourseDirectorWrite && c.getCoordinator() != null)
{
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + c.getDirector().getUsername() + "\":c\n");
batRunner.write("cd " + Globals.INTRANET_DTP + "\n");
batRunner.write("cacls " + Globals.INTRANET_DTP_FichaCurricular + " /t /e /r \"" + c.getDirector().getUsername() + "\"\n");
batRunner.write("cacls " + Globals.INTRANET_DTP_FichaAvaliacao + " /t /e /r \"" + c.getDirector().getUsername() + "\"\n");
batRunner.write("cd ..\\\n");
}
batRunner.write("cd ..\\..\\\n");
}
batRunner.write("cd ..\\..\\\n");
//confWriterSemestre1.flush();
//confWriterSemestre2.flush();
// confWriterA.flush();
// confWriterSemestre1.close();
// confWriterSemestre2.close();
// confWriterA.close();
}
catch (IOException e)
{
logger.error(e,e);
}
}
}
batRunner.write("cd " + back);
batRunner.close();
FilesUtils.zipFolder(tmpDir,tmpDir + ".zip");
FilesUtils.delete(tmpDir);
return tmpName + ".zip";
}
catch (IOException e)
{
logger.error(e,e);
}
return null;
}
 
public static void main(String[] args) throws ServiceException
{
String teste = "Sistemas Térmicos, Hidráulicos e Pneumáticos";
System.out.println(StringsUtils.normalizeResourceName(teste));
// AbstractDao.getCurrentSession().beginTransaction();
// new CreateCourseUnitDirPackageService().run(null,null);
// AbstractDao.getCurrentSession().getTransaction().commit();
}
 
 
}
 
/******
*
* MEMO COMANDOS WINDOWS
* Ok Jaime testa este comando se faz favor.
 
Por partes:
 
O ficheiro de input do mkcursos.exe é assim:
 
Seminario.Ii 1 secundino.lopes
Bases.De.Dados.Ii 1 vrealinho
Redes.De.Computadores.I 1 secundino.lopes
Teoria.Da.Computacao 1 jmachado
Seguranca 1 secundino.lopes
 
Em que o primeiro parâmetro é a pasta da unidade
O segundo é o numero de users que vêm seguidamente
 
O programa faz isto
 
O inicio cria uma pasta para a cadeira e 3 pastas lá dentro:
fscanf(fic, " %s", disc); //SCAN DO FICHEIRO DE UMA STRING para a var disc isto é o nome da pasta para a unidade
if (feof(fic)) exit(0);
sprintf(linha,"echo md %s", disc); //CONSTRUCAO DO COMANDO DE MD para a var linha para criar os três directorios
//disc = Seminario.Ii
//fica: linha = " echo md Seminario.Ii "
system(linha); //EXECUTA O COMANDO em Linha
sprintf(linha,"echo md %s\\\\Conteudos", disc); //fica: linha = " echo md Seminario.Ii\\Conteudos "
 
system(linha);
sprintf(linha,"echo md %s\\\\Avaliacao", disc); //fica: linha = " echo md Seminario.Ii\\ Avaliacao "
 
system(linha);
sprintf(linha,"echo md %s\\\\Assiduidade", disc); //fica: linha = " echo md Seminario.Ii\\ Assiduidade "
 
system(linha);
seguidamente o programa lê o inteiro no caso do seminario é "1" e de 0 até 1 ou seja só uma vez neste caso lê a próxima String neste caso secundino.lopes o ActiveDirectory tem lá este user
fscanf(fic, "%i", &n);
for (i=0; i<n; i++) {
fscanf(fic, " %s", doc); //Lê secundino.lopes aqui
sprintf(linha, "echo CACLS %s /T /E /G %s:C", disc, doc);
//fica linha=echo CACLS Seminario.Ii /T /E /G secundino.lopes:C
system(linha);
}
 
O CACLS muda isto:
discretionary access control list (DACL) da pasta
 
JAIME Metes-te no Donald em linha de comandos crias uma pasta num sitio de teste e escreves isto:
 
segundo a documentação da Microsoft:
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cacls.mspx?mfr=true
O /T significa aplicar às subpastas
O /E significa editar em vez de a destruir o DACL para manter as permissões anteriores
O /G para garantir acesso ao user especificado no fomato User:permission permission pode ser C, R etc
logo Secundino.lopes:CREATE é o que quer dizer o secundino.lopes:C
/R User revoga direitos de acesso a um User
O que queremos é revogar a todos os utilizadores e de seguida adicionar permissões de leitura a
todos os docentes, leitura aos users do Curso e por fim escrita aos docentes da unidade
Agora resta saber a ordem como fazer isto para funcionar e isso tens de ser tu a testar JAIME
Tenta isto numa pasta de teste fora do i.online para não estragarmos nada
Retiramos aos alunos todos, damos leitura aos docentes todos, damos leitura aos alunos do curso
e por fim escrita ao docente de teste
echo CACLS Seminario.Ii /T /E /R [NOME DO GRUPO DE TODOS OS ALUNOS DA ESTG tira os parentisis rectos]
echo CACLS Seminario.Ii /T /E /G [NOME DO GRUPO DE TODOS OS DOCENTES]:R
echo CACLS Seminario.Ii /T /E /G [NOME DO GRUPO DE TODOS OS ALUNOS DO CURSO]:R
echo CACLS Seminario.Ii /T /E /G secundino.lopes:C
 
 
Experimenta isto ou noutra ordem e verifica como ficaram as permissões no fim e quando acertares o passo
manda-me o resultado para eu criar o ficheiro final com os BATS todos
*/
Property changes:
Added: svn:executable
+ *
/impl/src/java/pt/estgp/estgweb/services/courseunits/courseunitevaluation.fo.xsl
New file
0,0 → 1,275
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:uc="http://baco.estgp.pt/schemas/courseunits/program/">
<xsl:param name="site">http://localhost/bacoTESTE</xsl:param>
<xsl:param name="revisor">automático</xsl:param>
<xsl:param name="validadoCC">false</xsl:param>
<xsl:template match="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="A4Vertical" page-width="210mm" page-height="297mm"
margin-top="1cm" margin-bottom="1cm" margin-left="1cm" margin-right="1cm"
reference-orientation="0">
<fo:region-body region-name="body" margin-top="20mm" margin-bottom="10mm" margin-right="0"
margin-left="0"/>
 
<fo:region-before region-name="header" extent="15mm"/>
<fo:region-after region-name="footer" extent="1cm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="A4HorizontalRot" page-width="210mm" page-height="297mm"
margin-top="0.5cm" margin-bottom="0.5cm" margin-left="0.5cm" margin-right="0.5cm"
reference-orientation="90">
<fo:region-body region-name="body" margin-top="20mm" margin-bottom="10mm" margin-right="0"
margin-left="0"/>
<fo:region-before region-name="header" extent="15mm"/>
<fo:region-after region-name="footer" extent="1cm"/>
</fo:simple-page-master>
<fo:simple-page-master master-name="A4Horizontal" page-width="297mm" page-height="210mm"
margin-top="0.5cm" margin-bottom="0.5cm" margin-left="0.5cm"
margin-right="0.5cm">
<fo:region-body region-name="body" margin-top="20mm" margin-bottom="15mm" margin-right="0"
margin-left="0"/>
<fo:region-before region-name="header" extent="15mm"/>
<fo:region-after region-name="footer" extent="1cm"/>
</fo:simple-page-master>
<fo:page-sequence-master master-name="pages">
<fo:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference master-reference="pages" page-position="any"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
</fo:layout-master-set>
 
<!--LAYOUT DE PAGINA ESCOLHIDO-->
<fo:page-sequence master-reference="A4Vertical" initial-page-number="auto">
<xsl:call-template name="page"/>
</fo:page-sequence>
 
 
</fo:root>
</xsl:template>
 
 
<xsl:template name="page">
<fo:static-content flow-name="header">
 
<fo:block text-align="left" >
<fo:table width="100%" table-layout="fixed" border-bottom="1px solid black">
<fo:table-column column-width="100%"/>
 
 
<fo:table-body>
<fo:table-row>
<fo:table-cell >
<fo:block>
<fo:external-graphic height="auto" width="auto"
content-height="30">
<!--<xsl:attribute name="src">url('http://www.ipportalegre.pt/imagens/Logos/ESTG/Logotipo%20ESTG.jpg')</xsl:attribute>-->
<xsl:attribute name="src">url('<xsl:value-of select="$site"/>/imgs/logoestg.gif')</xsl:attribute>
</fo:external-graphic>
</fo:block>
<xsl:if test="//closed = 'false'">
<fo:block font-size="20pt">
(Este documento não está fechado)
</fo:block>
</xsl:if>
<xsl:if test="//closed = 'true'">
<fo:block font-size="20pt">
 
</fo:block>
</xsl:if>
</fo:table-cell>
 
</fo:table-row>
 
</fo:table-body>
</fo:table>
 
</fo:block>
 
 
</fo:static-content>
<fo:static-content flow-name="footer">
 
<fo:table width="100%" table-layout="fixed" border-top="1px solid black" font-size="6.5pt" >
<fo:table-column column-width="20%"/>
<fo:table-column column-width="80%" />
 
 
<fo:table-body>
<fo:table-row>
<fo:table-cell padding-top="3pt">
<fo:block >
Revisto a <xsl:value-of select="//updateDate"/> por <xsl:value-of select="$revisor"/> / Página <fo:page-number/>
</fo:block>
<fo:block font-size="5pt">
ESTG.SA.xxxx.1
</fo:block>
 
</fo:table-cell>
<fo:table-cell padding-top="3pt" >
<fo:block font-size="6pt" text-align="right">
http://www.estgp.pt | gerado pela plataforma baco® 2015
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:static-content>
 
<fo:flow flow-name="body">
<fo:block>
<xsl:apply-templates select="/CourseUnitEvaluation"/>
</fo:block>
</fo:flow>
</xsl:template>
 
<xsl:template match="/CourseUnitEvaluation">
 
<fo:table table-layout="fixed" border="0px solid black" margin="0.5em" font-size="8.5pt">
<xsl:call-template name="gen_cols"/>
<fo:table-body text-align="left">
 
<xsl:call-template name="gen_header"/>
 
<xsl:call-template name="gen_line"/>
 
</fo:table-body>
</fo:table>
</xsl:template>
 
<xsl:template name="gen_cols">
<fo:table-column column-width="15em" />
<fo:table-column/>
</xsl:template>
 
 
 
 
<xsl:template name="gen_header">
 
</xsl:template>
 
 
 
 
 
 
 
 
<xsl:attribute-set name="myBorder">
<xsl:attribute name="border">solid 0.2mm black</xsl:attribute>
</xsl:attribute-set>
 
<xsl:template name="gen_line">
 
<fo:table-row background-color="#FFF" color="#000" padding="0">
 
<fo:table-cell border-right="1px solid gray" border-bottom="1px solid gray" display-align="center" >
<fo:block text-align="right" padding="3pt" font-weight="bold">
Dados relativos ao processo de avaliação
</fo:block>
</fo:table-cell>
 
<fo:table-cell border-bottom="1px solid gray" padding="0" padding-top="5px" padding-bottom="5px" padding-left="0mm" display-align="center">
 
 
<fo:table margin="0" margin-left="0mm" border="0px solid black" font-size="5.5pt" >
<fo:table-column/>
<fo:table-column/>
<fo:table-column/>
<fo:table-column/>
<fo:table-column/>
<fo:table-column/>
<fo:table-column/>
<fo:table-column/>
<fo:table-column/>
<fo:table-column/>
<fo:table-body>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="myBorder" number-rows-spanned="2" padding-top="3pt"><fo:block > Nº Alunos Inscritos </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" number-rows-spanned="2" padding-top="3pt"><fo:block > Nº de alunos sem elementos de avaliação </fo:block> </fo:table-cell>
 
<fo:table-cell xsl:use-attribute-sets="myBorder" number-rows-spanned="1" number-columns-spanned="5" padding-top="3pt" display-align="center"><fo:block display-align="center"> Nº de alunos aprovados em </fo:block> </fo:table-cell>
 
<fo:table-cell xsl:use-attribute-sets="myBorder" number-rows-spanned="2" padding-top="3pt"><fo:block > Aprovados com a classificação entre 10 e 13 valores (%) </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" number-rows-spanned="2" padding-top="3pt"><fo:block > Aprovados com a classificação entre 14 e 16 valores (%) </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" number-rows-spanned="2" padding-top="3pt"><fo:block > Aprovados com a classificação entre 17 e 20 valores (%) </fo:block> </fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-top="3pt"><fo:block > Avaliação de frequência </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-top="3pt"><fo:block > Exame Época Normal </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-top="3pt"><fo:block > Exame Época Recurso </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-top="3pt"><fo:block > Exame Época Especial </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-top="3pt"><fo:block > Total </fo:block> </fo:table-cell>
 
</fo:table-row>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-top="3pt"><fo:block > <xsl:value-of select="//numAlunosInscritos"/> </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-top="3pt"><fo:block > <xsl:value-of select="//numAlunosSemElementosAvaliacao"/> </fo:block> </fo:table-cell>
 
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-top="3pt"><fo:block > <xsl:value-of select="//numAlunosAprovFrequencia"/> </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-top="3pt"><fo:block > <xsl:value-of select="//numAlunosAprovNormal"/> </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-top="3pt"><fo:block > <xsl:value-of select="//numAlunosAprovRecurso"/> </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-top="3pt"><fo:block > <xsl:value-of select="//numAlunosAprovEspecial"/> </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-top="3pt"><fo:block > <xsl:value-of select="//numAlunosAprovTotal"/> </fo:block> </fo:table-cell>
 
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-top="3pt"><fo:block > <xsl:value-of select="//numAlunosAprov1013"/> </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-top="3pt"><fo:block > <xsl:value-of select="//numAlunosAprov1416"/> </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding-top="3pt"><fo:block > <xsl:value-of select="//numAlunosAprov1720"/> </fo:block> </fo:table-cell>
 
</fo:table-row>
</fo:table-body>
</fo:table>
 
 
</fo:table-cell>
 
 
 
</fo:table-row>
 
<fo:table-row background-color="#FFF" color="#000">
<fo:table-cell border-bottom="1px solid gray" border-right="1px solid gray" padding-right="0.1em" display-align="center">
<fo:block text-align="center" font-weight="bold">Auto-avaliação</fo:block>
</fo:table-cell>
<fo:table-cell border-bottom="1px solid gray" display-align="center" padding="5px">
 
 
<fo:table margin="0" margin-left="0mm" border="0px solid black" font-size="5.5pt" >
<fo:table-column column-width="20%"/>
<fo:table-column/>
<fo:table-body>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="myBorder" display-align="center" padding="3pt"><fo:block font-weight="bold"> Apreciação dos resultados quantitativos obtidos pelos estudantes </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding="3pt"><fo:block > <xsl:value-of select="//qualApreciacaoQuantitivos"/> </fo:block> </fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="myBorder" display-align="center" padding="3pt"><fo:block font-weight="bold"> Apreciação do funcionamento da UC (Condições de funcionamento da UC; problemas detetados; identificação de práticas pedagógicas de mérito ou deficientes; etc.) </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding="3pt"><fo:block > <xsl:value-of select="//qualApreciacaoUC"/> </fo:block> </fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="myBorder" display-align="center" padding="3pt"><fo:block font-weight="bold"> Apreciação do cumprimento do programa da UC (Adequação das metodologias de ensino/aprendizagem utilizadas; competências efetivamente adquiridas e cumprimento dos conteúdos planificados) </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding="3pt"><fo:block > <xsl:value-of select="//qualApreciacaoCumprimentoPrograma"/> </fo:block> </fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="myBorder" display-align="center" padding="3pt"><fo:block font-weight="bold"> Conclusões (Pontos fortes e fracos; sugestões de melhoria e respetivo plano de ação para a sua concretização) </fo:block> </fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="myBorder" padding="3pt"><fo:block > <xsl:value-of select="//qualConclusoes"/> </fo:block> </fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
 
 
</fo:table-cell>
</fo:table-row>
 
 
</xsl:template>
 
 
 
 
 
 
 
</xsl:stylesheet>
Property changes:
Added: svn:executable
+ *
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportTeachersService.java
64,16 → 64,22
for (BigDecimal c : codigos)
{
Docente d = service.getSiGesWEBSoap().getDocente(c, Globals.SIGES_INSTITUTION_CODE, year);
logger.info("Codigo Funcionario Importado:" + d.getCodigoFuncionario().intValue() + " email IPP SIGES: " + d.getEmail());
logger.info("Codigo Funcionario Importado: SIGES(" + d.getCodigoFuncionario().intValue() + ") email IPP SIGES: " + d.getEmail());
logger.info("SIGES IMPORTED INFO: " + docenteToString(d));
Teacher t = DaoFactory.getTeacherDaoImpl().loadBySigesCode(d.getCodigoFuncionario().intValue());
boolean newUser = false;
if (t == null)
{
logger.info("Teacher does not exist in baco, will create SIGES:" + d.getCodigoFuncionario().intValue());
t = DomainObjectFactory.createTeacherImpl();
DaoFactory.getTeacherDaoImpl().save(t);
newUser = true;
}
logger.info("Importing: (" + t.getUsername() + ") " + t.getName());
else
{
logger.info("Teacher EXIST in baco with SIGES: " + d.getCodigoFuncionario().intValue());
}
logger.info("Will persist SIGES(" + d.getCodigoFuncionario().intValue() + ") baco (username:" + t.getUsername() + ") baco name:" + t.getName());
try
{
persist(d, t, newUser);
106,6 → 112,30
}
 
/**
* Implementação local do toString para a class Docente que foi gerada pelos web-services
* @param d
* @return
*/
 
public String docenteToString(Docente d)
{
return "Docente{" +
"codigoFuncionario=" + d.getCodigoFuncionario() +
", nomeFuncionario='" + d.getNomeFuncionario() + '\'' +
", nomeFuncionarioInt='" + d.getNomeFuncionarioInt() + '\'' +
", nomeAcademico='" + d.getNomeAcademico() + '\'' +
", sexo='" + d.getSexo() + '\'' +
", dataNascimento=" + d.getDataNascimento() +
", morada='" + d.getMorada() + '\'' +
", codigoPostal=" + d.getCodigoPostal() +
", subCodigoPostal=" + d.getSubCodigoPostal() +
", email='" + d.getEmail() + '\'' +
", numeroBi='" + d.getNumeroBi() + '\'' +
", usernameNetpa='" + d.getUsernameNetpa() + '\'' +
", disciplinas=" + d.getDisciplinas() +
'}';
}
/**
* Nao esta testado
* jm
*
127,8 → 157,25
{
int atIndex = d.getEmail().indexOf("@");
if (atIndex > 0)
{
t.setUsername(d.getEmail().substring(0, atIndex));
logger.info("Teacher SIGES:" + d.getCodigoFuncionario().intValue() + " foi-lhe atribuido o username d" + d.getEmail().substring(0, atIndex));
}
else
{
logger.info("Teacher SIGES:" + d.getCodigoFuncionario().intValue() + " NAO lhe foi atribuido username o email não tem o caracter @");
}
}
else if(t.getUsername() == null || t.getUsername().trim().length() == 0)
{
logger.info("Teacher SIGES:" + d.getCodigoFuncionario().intValue() + " nao tem email no SIGES foi-lhe atribuido o username d" + d.getCodigoFuncionario().intValue());
t.setUsername("d" + d.getCodigoFuncionario().intValue());
}
else
{
//username não foi alterado
logger.info("Teacher SIGES:" + d.getCodigoFuncionario().intValue() + " nao lhe foi alterado o username " + t.getUsername());
}
t.setSigesCode(d.getCodigoFuncionario().intValue());
if(t.getAddress() == null || t.getAddress().length() == 0)
t.setAddress(d.getMorada());
195,7 → 242,7
List<String> arguments = new ArrayList<String>();
String cause = e.getCause() == null ? "" : e.getCause().toString();
arguments.add((e.toString() + "\n" + cause).replace("\n","<br/>"));
Email email = new Email("Erro de importação de professores",emails,"baco@estgp.pt","messageToAdmin_pt.txt",arguments);
Email email = new Email("Erro de importa��o de professores",emails,"baco@estgp.pt","messageToAdmin_pt.txt",arguments);
new SendEmailService().sendEmail(email);
throw e;
}
/impl/src/java/pt/estgp/estgweb/services/common/LoadObjectService.java
New file
0,0 → 1,42
package pt.estgp.estgweb.services.common;
 
import jomm.dao.utils.HibernateUtils;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import java.io.Serializable;
import java.util.List;
 
/**
* @author Jorge Machado
* @date 22/Mai/2008
* @see pt.estgp.estgweb.services.common
*/
public class LoadObjectService implements IService
{
private static final Logger logger = Logger.getLogger(LoadObjectService.class);
 
public Object load(String className, Serializable id, UserSession userSession) throws ServiceException
{
try
{
Object obj = HibernateUtils.getCurrentSession().load(className,id);
if(obj instanceof CourseUnit)
return new CourseUnitView((CourseUnit) obj);
else
{
logger.info("Atention LoadObjectService Only implemented for CourseUnits");
return null;
}
}
catch (Throwable throwable)
{
logger.error(throwable,throwable);
throw new ServiceException("", throwable);
}
}
}
Property changes:
Added: svn:executable
+ *
/impl/src/java/pt/estgp/estgweb/services/ftpservices/FtpService.java
1,34 → 1,21
package pt.estgp.estgweb.services.ftpservices;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.services.email.ReadEmailService;
import pt.estgp.estgweb.services.email.IPopEmail;
import pt.estgp.estgweb.services.email.IAddress;
import pt.estgp.estgweb.services.email.impl.DefaultPopEmail;
import pt.estgp.estgweb.services.email.impl.DefaultAddress;
import pt.estgp.estgweb.domain.*;
import jomm.utils.DesUtils;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.CourseUnitImpl;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.web.utils.DatesUtils;
import pt.estgp.estgweb.web.FtpServer;
import org.apache.log4j.Logger;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.fileupload.FileItem;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import java.util.List;
import java.util.Properties;
import java.util.Date;
import java.util.ArrayList;
import java.io.*;
import java.io.File;
import java.io.IOException;
 
import jomm.utils.DesUtils;
import jomm.utils.StringsUtils;
 
import javax.mail.*;
import javax.mail.internet.InternetAddress;
 
/**
* @author Jorge Machado
* @date 20/Mar/2008
40,12 → 27,12
 
private static final Logger logger = Logger.getLogger(FtpService.class);
 
private static final String FTP_PASSWORD = "pt.estgp.estgweb.services.ftpservices.FtpService.FTP_PASSWORD";
public static final String FTP_PASSWORD = "pt.estgp.estgweb.services.ftpservices.FtpService.FTP_PASSWORD";
 
 
public String run(FtpRequestForm ftpRequestForm, UserSession userSession) throws IOException
{
 
//userSession.getUser().get
boolean isStaticAccess = ConfigProperties.getBooleanProperty(ftpRequestForm.getServerConfName()+".use.default.credentials.to.updates.and.deletes");
String password = ftpRequestForm.getPassword();
String username = ftpRequestForm.getUsername();
72,8 → 59,12
{
((UserSessionImpl)userSession).put(FTP_PASSWORD,DesUtils.getInstance().encrypt(ftpRequestForm.getPassword()));
}
//ESTE CAMPO É COLOCADO EM MEMORIA LOGO NA AUTENTICACAO POR ISSO A POP3 PASS NAO CHEGA A SER USADA
//E A POP3PASS DAVA PROBLEMAS SE O USER ALGUMA VEZ A TINHA INICIADO
String passwordCode = (String) ((UserSessionImpl)userSession).get(FTP_PASSWORD);
 
//System.out.println("SAVEDCODE"+passwordCode);
 
if(password != null && password.trim().length() > 0)
{
 
82,6 → 73,7
{
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)
{
/impl/src/java/pt/estgp/estgweb/services/assessments/CreateEditAssessmentService.java
36,7 → 36,7
assessmentView.persistViewInObject(a);
a.setOwner(userSession.getUser());
a.setSemester(DatesUtils.getSemestre());
a.setYear(DatesUtils.getImportYear());
a.setYear(DatesUtils.getImportYear());//nao e' usado este metodo
a.setSaveDate(new Date());
a.setStatusPercentage(0);
a.setStatus(SurveyStatusEnum.STATUS_STOPPED.getStatus());
/impl/src/java/pt/estgp/estgweb/services/authenticate/AuthenticateService.java
1,19 → 1,21
package pt.estgp.estgweb.services.authenticate;
 
import jomm.utils.DesUtils;
import openldap.ILdapManager;
import openldap.LdapManagerFactory;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.common.CommonServicesManager;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.services.common.CommonServicesManager;
import pt.estgp.estgweb.services.ftpservices.FtpService;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.utl.ist.berserk.logic.serviceManager.IService;
import openldap.ILdapManager;
import openldap.LdapManagerFactory;
 
import java.util.HashMap;
import java.util.Set;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
 
 
/*
70,6 → 72,9
 
if(u == null)
{
logger.warn("user:" + username + " does not exist");
throw new AuthenticateException(AuthenticateException.DOES_NOT_EXIST);
/*
u = getUserInfo(username);
u.setPassword(password);
//put password to be complete for advising
83,13 → 88,13
else if (u.getRoles().contains("student"))
{
 
}
}*/
}
else
{
// String passwordAux = u.getPassword();
u.setPassword(password);
//put password to be complete for advising
 
CommonServicesManager.getInstance().adviseUpdate(u);
// u.setPassword(passwordAux);
u.setPassword(jomm.utils.BytesUtils.getDigestMD5Hex(password));
109,6 → 114,9
 
logger.warn("user:" + username + " authenticated");
((UserSessionImpl)userSession).clearObjectsWithOpenTransaction();
//PASSWORD PARA SERVICOS FTP CLIENT
((UserSessionImpl)userSession).put(FtpService.FTP_PASSWORD, DesUtils.getInstance().encrypt(password));
//put password to be complete for advising
userSession.setName(u.getName());
userSession.setUsername(u.getUsername());
userSession.setUser(u);
/impl/src/java/pt/estgp/estgweb/services/authenticate/AuthenticateException.java
6,6 → 6,7
{
public static final String ALREADY_AUTHENTICATED = "authenticate.already.authenticated";
public static final String FAIL_AUTHENTICATION = "fail.authenticate";
public static final String DOES_NOT_EXIST = "dontexist.authenticate";
public static final String BLOCKED = "authenticate.blocked";
 
public AuthenticateException()
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitEvaluationView.java
2,8 → 2,6
 
import pt.estgp.estgweb.domain.CourseUnitEvaluation;
import pt.estgp.estgweb.domain.CourseUnitEvaluationImpl;
import pt.estgp.estgweb.domain.CourseUnitProgram;
import pt.estgp.estgweb.domain.CourseUnitProgramImpl;
 
import java.io.Serializable;
 
19,6 → 17,7
 
 
private CourseUnitEvaluation courseUnitEvaluation;
private boolean fechar = false;
 
public Class getReferenceClass()
{
67,4 → 66,12
c.setQualApreciacaoUC(courseUnitEvaluation.getQualApreciacaoUC());
c.setQualConclusoes(courseUnitEvaluation.getQualConclusoes());
}
 
public boolean isFechar() {
return fechar;
}
 
public void setFechar(boolean fechar) {
this.fechar = fechar;
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/CourseView.java
49,6 → 49,7
private String externalSitePath;
private String validationRole;
private boolean status;
private String userGroupStudents;
 
 
 
106,6 → 107,7
this.externalSitePath = course.getExternalSitePath();
this.externalSiteServer = course.getExternalSiteServer();
this.status = course.isStatus();
this.userGroupStudents = course.getUserGroupStudents();
if(course.getStudiesPlan() != null)
this.studiesPlanStreamId = course.getStudiesPlan();
if(course.getCoordinator() != null)
140,6 → 142,7
c.setExternalSiteServer(externalSiteServer);
c.setValidationRole(validationRole);
c.setStatus(status);
c.setUserGroupStudents(userGroupStudents);
if(coordinator != null && coordinator.getId() > 0)
{
Teacher u = DaoFactory.getTeacherDaoImpl().load(coordinator.getId());
454,5 → 457,11
this.courseUnitsWithProgramNotCheckedS2 = courseUnitsWithProgramNotCheckedS2;
}
 
public String getUserGroupStudents() {
return userGroupStudents;
}
 
public void setUserGroupStudents(String userGroupStudents) {
this.userGroupStudents = userGroupStudents;
}
}
/impl/src/java/pt/estgp/estgweb/domain/UserImpl.java
1,11 → 1,5
package pt.estgp.estgweb.domain;
 
import jomm.dao.impl.AbstractDao;
 
import java.io.Serializable;
import java.util.Date;
import java.util.Set;
 
/**
* @author Jorge Machado
* @date 2/Mar/2008
111,4 → 105,9
}
return false;
}
 
/*public String getPop3PassDecrypted()
{
return DesUtils.getInstance().decrypt(getPop3password());
}*/
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java
207,7 → 207,7
}
 
 
//TODO Na actualização de uma cadeira para o curso de TESTE mudar o coursecode para o o coursecode desse curso para nao deixar os dados duplicados e mal
//TODO Na actualiza��o de uma cadeira para o curso de TESTE mudar o coursecode para o o coursecode desse curso para nao deixar os dados duplicados e mal
//se nao a carregar unidades vai buscar a errada
public CourseUnit loadBySigesCodeUnique(String sigesCode, String courseCode, String semestre, String year)
{
220,9 → 220,21
.uniqueResult();
}
 
public CourseUnit loadBySigesCodeUniqueMostRecent(String sigesCode, String courseCode, String semestre)
{
return (CourseUnit)
createCriteria()
.add(eq("code", sigesCode))
.add(eq("courseCode", courseCode))
.add(eq("semestre", semestre))
.addOrder(Order.desc("importYear"))
.setMaxResults(1).list().get(0);
}
 
 
public CourseUnit loadBySigesCodeUniqueLastYear(String sigesCode, String courseCode, String semestre)
{
return loadBySigesCodeUnique(sigesCode,courseCode,semestre,DatesUtils.getImportYear());
return loadBySigesCodeUniqueMostRecent(sigesCode,courseCode,semestre);
}
 
 
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitEvaluationImpl.java
1,13 → 1,172
package pt.estgp.estgweb.domain;
 
import org.apache.fop.apps.FOPException;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.dom.DOMDocumentFactory;
import pt.estgp.estgweb.services.courseunits.SaveCourseUnitEvaluation;
 
import javax.xml.transform.TransformerException;
import java.beans.ExceptionListener;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Serializable;
 
/**
* Created by jorgemachado on 03/06/14.
*/
 
/**
 
 
 
 
 
 
 
 
 
 
 
 
private String qualConclusoes;
*/
public class CourseUnitEvaluationImpl extends CourseUnitEvaluation {
@Override
public Serializable getSerializable() {
return getId();
}
public CourseUnitEvaluationImpl() {
}
 
 
public Document getDom(){
Document dom = DOMDocumentFactory.getInstance().createDocument();
Element elemCourseUnitEvaluationImpl = dom.addElement("CourseUnitEvaluation");
 
Element id = elemCourseUnitEvaluationImpl.addElement("id");
id.setText(getId()+"");
 
Element updateDate = elemCourseUnitEvaluationImpl.addElement("updateDate");
updateDate.setText(getUpdateDate()+"");
 
Element saveDate = elemCourseUnitEvaluationImpl.addElement("saveDate");
saveDate.setText(getSaveDate()+"");
 
Element closed = elemCourseUnitEvaluationImpl.addElement("closed");
closed.setText(isClosed()+"");
 
Element numAlunosInscritos = elemCourseUnitEvaluationImpl.addElement("numAlunosInscritos");
numAlunosInscritos.setText(getNumAlunosInscritos()+"");
 
Element numAlunosSemElementosAvaliacao = elemCourseUnitEvaluationImpl.addElement("numAlunosSemElementosAvaliacao");
numAlunosSemElementosAvaliacao.setText(getNumAlunosSemElementosAvaliacao()+"");
 
Element numAlunosAprovFrequencia = elemCourseUnitEvaluationImpl.addElement("numAlunosAprovFrequencia");
numAlunosAprovFrequencia.setText(getNumAlunosAprovFrequencia()+"");
 
Element numAlunosAprovNormal = elemCourseUnitEvaluationImpl.addElement("numAlunosAprovNormal");
numAlunosAprovNormal.setText(getNumAlunosAprovNormal()+"");
 
Element numAlunosAprovRecurso = elemCourseUnitEvaluationImpl.addElement("numAlunosAprovRecurso");
numAlunosAprovRecurso.setText(getNumAlunosAprovRecurso()+"");
 
Element numAlunosAprovEspecial = elemCourseUnitEvaluationImpl.addElement("numAlunosAprovEspecial");
numAlunosAprovEspecial.setText(getNumAlunosAprovEspecial()+"");
 
Element numAlunosAprovTotal = elemCourseUnitEvaluationImpl.addElement("numAlunosAprovTotal");
numAlunosAprovTotal.setText(getNumAlunosAprovTotal()+"");
 
Element numAlunosAprov1013 = elemCourseUnitEvaluationImpl.addElement("numAlunosAprov1013");
numAlunosAprov1013.setText(getNumAlunosAprov1013()+"");
 
Element numAlunosAprov1416 = elemCourseUnitEvaluationImpl.addElement("numAlunosAprov1416");
numAlunosAprov1416.setText(getNumAlunosAprov1416()+"");
 
Element numAlunosAprov1720 = elemCourseUnitEvaluationImpl.addElement("numAlunosAprov1720");
numAlunosAprov1720.setText(getNumAlunosAprov1720()+"");
 
Element numAlunosAprovados = elemCourseUnitEvaluationImpl.addElement("numAlunosAprovados");
numAlunosAprovados.setText(getNumAlunosAprovados()+"");
 
Element numAlunosReprovados = elemCourseUnitEvaluationImpl.addElement("numAlunosReprovados");
numAlunosReprovados.setText(getNumAlunosReprovados()+"");
 
Element qualApreciacaoQuantitivos = elemCourseUnitEvaluationImpl.addElement("qualApreciacaoQuantitivos");
qualApreciacaoQuantitivos.setText(getQualApreciacaoQuantitivos()+"");
 
Element qualApreciacaoUC = elemCourseUnitEvaluationImpl.addElement("qualApreciacaoUC");
qualApreciacaoUC.setText(getQualApreciacaoUC()+"");
 
Element qualApreciacaoCumprimentoPrograma = elemCourseUnitEvaluationImpl.addElement("qualApreciacaoCumprimentoPrograma");
qualApreciacaoCumprimentoPrograma.setText(getQualApreciacaoCumprimentoPrograma()+"");
 
Element qualConclusoes = elemCourseUnitEvaluationImpl.addElement("qualConclusoes");
qualConclusoes.setText(getQualConclusoes()+"");
 
return dom;
}
 
public String writeXml() throws FileNotFoundException {
StringOutputStream sout = new StringOutputStream();
java.beans.XMLEncoder xe1 = new java.beans.XMLEncoder(sout);
xe1.setExceptionListener(new ExceptionListener() {
@Override
public void exceptionThrown(Exception e) {
System.out.println("Exception:" + e.toString());
}
});
//ObjectOutputStream oos = new ObjectOutputStream( baos );
xe1.writeObject(this);
xe1.flush();
xe1.close();
 
return sout.getString();
}
 
public static class StringOutputStream extends OutputStream {
 
StringBuilder mBuf = new StringBuilder();
 
public void write(int c) throws IOException {
mBuf.append((char) c);
}
 
public String getString() {
return mBuf.toString();
}
}
 
public static class Teste
{
public Teste(){}
private String nome;
 
public String getNome() {
return nome;
}
 
public void setNome(String nome) {
this.nome = nome;
}
}
public static void main(String [] args) throws IOException, TransformerException, FOPException {
CourseUnitEvaluationImpl cuv = new CourseUnitEvaluationImpl() {
@Override
public Serializable getSerializable() {
return 1;
}
};
cuv.setClosed(true);
cuv.setNumAlunosAprov1013(12);
cuv.setNumAlunosInscritos("" + 20);
cuv.setQualConclusoes("conclusoes");
SaveCourseUnitEvaluation s = new SaveCourseUnitEvaluation();
CourseUnit cu = new CourseUnitImpl();
cu.setNormalizedName("teste");
cu.setCode("TESTE");
s.generatePdf(cuv,cu);
}
 
}
/impl/src/java/pt/estgp/estgweb/web/tags/CanManageTag.java
70,8 → 70,8
 
 
IInternal iInternal = (IInternal) owned;
System.out.println("userSession: " + userSession);
System.out.println("iInternal: " + iInternal);
//System.out.println("userSession: " + userSession);
//System.out.println("iInternal: " + iInternal);
if((userSession==null || userSession.getUser() == null) && iInternal.isInternal())
{
return false;
/impl/src/java/pt/estgp/estgweb/web/tags/OwnerImageRoleTag.java
39,7 → 39,7
 
public int doStartTag() throws JspException {
HttpServletRequest hrequest = (HttpServletRequest) pageContext.getRequest();
Object bean = null;
Object bean = null;
if(name != null)
bean = RequestUtils.lookup(pageContext, name, property, null);
 
/impl/src/java/pt/estgp/estgweb/web/tags/Object2RequestTag.java
New file
0,0 → 1,120
package pt.estgp.estgweb.web.tags;
 
import jomm.utils.MessageResources;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
 
public class Object2RequestTag extends TagSupport
{
 
private static final Logger logger = Logger.getLogger(Object2RequestTag.class);
 
private String beanIdName;
private String beanIdProperty;
private String classname;
private String useBean;
 
public String getUseBean() {
return useBean;
}
 
public void setUseBean(String useBean) {
this.useBean = useBean;
}
 
public String getClassname() {
return classname;
}
 
public void setClassname(String classname) {
this.classname = classname;
}
 
public String getBeanIdName() {
return beanIdName;
}
 
public void setBeanIdName(String beanIdName) {
this.beanIdName = beanIdName;
}
 
public String getBeanIdProperty() {
return beanIdProperty;
}
 
public void setBeanIdProperty(String beanIdProperty) {
this.beanIdProperty = beanIdProperty;
}
 
public int doStartTag() throws JspException
{
HttpServletRequest hrequest = (HttpServletRequest) pageContext.getRequest();
HttpServletResponse hresponse = (HttpServletResponse) pageContext.getResponse();
Object bean = null;
try{
if(beanIdName != null)
bean = org.apache.struts.util.RequestUtils.lookup(pageContext, beanIdName, beanIdProperty, null);
}catch(JspException e)
{
 
}
Long id;
if(bean == null)
bean = hrequest.getParameter(beanIdName);
if(bean == null)
{
logger.error("Cant find " + beanIdName + " in any scope neither in paramenters");
return (SKIP_BODY);
}
if(bean instanceof String)
id = Long.parseLong((String)bean);
else
id = (Long) bean;
 
 
 
try {
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{classname, id};
 
Object loaded = sm.execute(RequestUtils.getRequester(hrequest, hresponse), "LoadObjectService", args, names);
 
hrequest.setAttribute(useBean,loaded);
 
} catch (FilterRetrieveException e) {
e.printStackTrace();
} catch (InvalidFilterExpressionException e) {
e.printStackTrace();
} catch (InvalidFilterException e) {
e.printStackTrace();
} catch (ClassNotIFilterException e) {
e.printStackTrace();
} catch (IncompatibleFilterException e) {
e.printStackTrace();
} catch (ServiceManagerException e) {
e.printStackTrace();
} catch (NoCookiesException e) {
e.printStackTrace();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
 
//JspWriter writer = pageContext.getOut();
 
return (SKIP_BODY);
}
}
Property changes:
Added: svn:executable
+ *
/impl/src/java/pt/estgp/estgweb/web/FtpServer.java
46,6 → 46,7
{
FTPClient ftp = new FTPClient();
ftp.connect(host, port);
 
if (username != null)
ftp.user(username);
if (password != null)
/impl/src/java/pt/estgp/estgweb/web/LayoutController.java
1,5 → 1,6
package pt.estgp.estgweb.web;
 
import jomm.utils.DesUtils;
import jomm.web.ftp.IFile;
import jomm.web.ftp.impl.FtpFile;
import jomm.web.utils.NavPlace;
11,6 → 12,8
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.services.ftpservices.FtpService;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
130,17 → 133,32
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request);
String username = userSession != null ? userSession.getUsername() : "UNKNOWN";
 
String user = ConfigProperties.getProperty(serverStr + ".user");
String pass = ConfigProperties.getProperty(serverStr + ".pass");
 
 
if (path != null)
{
 
FtpServer ftpServer = FtpServer.getServer(server, user, pass);
boolean isStaticAccess = ConfigProperties.getBooleanProperty(serverStr+".use.default.credentials.to.updates.and.deletes");
String user;
String pass;
 
if(isStaticAccess)
{
user = ConfigProperties.getProperty(serverStr + ".user");
pass = ConfigProperties.getProperty(serverStr + ".pass");
}
else
{
logger.warn("Will access using user and pass authnenticated to connect FTP " + serverStr);
user= username;
String passwordCode = (String) ((UserSessionImpl)userSession).get(FtpService.FTP_PASSWORD);
pass= DesUtils.getInstance().decrypt(passwordCode);
//pass= ((UserImpl)userSession.getUser()).getPop3PassDecrypted();
}
FtpServer ftpServer = FtpServer.getNewServer(server, user, pass);
FTPClient client = ftpServer.getClient();
if(!client.changeWorkingDirectory(path))
{
logger.warn(username + ": " + request.getRemoteAddr() + "cant access this area server:" + server + " and path:" + path);
throw new NotAuthorizedException("nao pode aceder a esta area");
}
FTPFile[] files = client.listFiles();
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsEvaluationController.java
5,15 → 5,10
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.domain.CourseUnitEvaluationImpl;
import pt.estgp.estgweb.domain.CourseUnitProgram;
import pt.estgp.estgweb.domain.CourseUnitProgramImpl;
import pt.estgp.estgweb.domain.CourseUnitProgramPart2Impl;
import pt.estgp.estgweb.domain.views.CourseUnitEvaluationView;
import pt.estgp.estgweb.domain.views.CourseUnitProgramView;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.filters.exceptions.NotFoundException;
import pt.estgp.estgweb.web.form.courseunits.CourseUnitEvaluationForm;
import pt.estgp.estgweb.web.form.courseunits.CourseUnitProgramForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
121,7 → 116,44
}
}
 
public ActionForward publishEvaluation(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
{
CourseUnitEvaluationForm cUF = (CourseUnitEvaluationForm) form;
 
long id = cUF.getCourseUnitView().getId();
CourseUnitEvaluationView cuV = cUF.getCourseUnitEvaluationView();
cuV.setFechar(true);
IServiceManager sm = ServiceManager.getInstance();
Object[] args = new Object[]{cuV, id};
sm.execute(RequestUtils.getRequester(request, response), "SaveCourseUnitEvaluation", args);
CourseUnitView cV = loadCourseUnitView(id,true,false, mapping, request, response);
cUF.setCourseUnitView(cV);
request.setAttribute("CourseUnitView", cV);
addMessage(request,"courseunit.evaluation.success");
return mapping.findForward("load");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
}
}
 
 
 
 
}
/impl/src/java/pt/estgp/estgweb/web/controllers/courseunits/CourseUnitsController.java
5,17 → 5,16
import org.apache.struts.upload.FormFile;
import org.hibernate.ObjectNotFoundException;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.CourseUnitProgram;
import pt.estgp.estgweb.domain.CourseUnitProgramImpl;
import pt.estgp.estgweb.domain.CourseUnitProgramPart2Impl;
import pt.estgp.estgweb.domain.views.*;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.domain.views.CourseUnitAssignementView;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.domain.views.UserView;
import pt.estgp.estgweb.filters.exceptions.NotFoundException;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.controllers.blogs.BlogsController;
import pt.estgp.estgweb.web.controllers.profile.ProfileController;
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
import pt.estgp.estgweb.web.form.blogs.BlogForm;
import pt.estgp.estgweb.web.form.courseunits.CourseUnitProgramForm;
import pt.estgp.estgweb.web.form.courseunits.CourseUnitsForm;
import pt.estgp.estgweb.web.form.profile.ProfileForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
294,7 → 293,42
}
 
 
public ActionForward loadDossier(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
{
CourseUnitsForm cUF = (CourseUnitsForm) form;
long id;
if(request.getParameter("id")!=null)
id = Long.parseLong(request.getParameter("id"));
else
id = cUF.getCourseUnitView().getId();
CourseUnitView cV = loadCourseUnitView(id,false,false, mapping, request, response);
cUF.setCourseUnitView(cV);
request.setAttribute("CourseUnitView", cV);
return mapping.findForward("load.dossier");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
}
}
 
 
 
public ActionForward loadTeacher(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
845,6 → 879,15
{
return loadCourseUnitIntranet(Globals.INTRANET_PRESENCES,"courseLayoutIOnlinePresences",mapping,form,request,response);
}
public ActionForward loadDtp(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
return loadCourseUnitIntranet(Globals.INTRANET_DTP,"courseLayoutIOnlineDtp",mapping,form,request,response);
}
 
 
 
/impl/src/java/pt/estgp/estgweb/web/controllers/processes/ProcessEventController.java
247,8 → 247,57
}
}
 
public ActionForward deleteLastProcessEvent(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
try
{
 
ProcessEventForm f = (ProcessEventForm)form;
HibernateUtils.getCurrentSession().beginTransaction();
Process process = DaoFactory.getProcessDaoImpl().load(Long.parseLong(request.getParameter("id")));
 
User nowUser = UserSessionProxy.loadUserSessionFromRequest(request).getUser();
 
ProcessEvent pLastEvent = process.getLastEvent();
//only Last Event
if(!((ProcessImpl)pLastEvent.getProcess()).canRemoveLastEvent(nowUser))
return mapping.findForward("error401");
 
Date now = new Date();
 
logger.warn("Deleting event: " + pLastEvent.toString());
 
pLastEvent.getProcess().setLastEvent(pLastEvent.getPreviousEvent());
pLastEvent.getPreviousEvent().setNextEvent(null);
pLastEvent.getProcess().getEvents().remove(pLastEvent);
pLastEvent.setProcess(null);
pLastEvent.getProcess().setLastChangeDate(now);
pLastEvent.getProcess().setNowState(ProcessImpl.ProcessState.TRANSITION.name());
pLastEvent.setNowState(ProcessEventImpl.ProcessEventState.ACCEPTED.name());
pLastEvent.setCloseDate(null);
pLastEvent.setDispatchedDate(null);
DaoFactory.getProcessEventDaoImpl().delete(pLastEvent);
 
logger.warn("DELETED event: " + pLastEvent.toString());
//importPossibleFile(request, f, p, now);
 
HibernateUtils.getCurrentSession().getTransaction().commit();
request.setAttribute("processId",f.getProcessEvent().getProcess().getId());
return mapping.getInputForward();
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error501");
}
}
 
 
 
public ActionForward reopenProcessEventPerson(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
/impl/src/java/pt/estgp/estgweb/web/ImageStream.java
57,9 → 57,10
out.close();
 
}
catch (Exception e1)
catch (Throwable e1)
{
e1.printStackTrace();
logger.error(e1 );
response.sendError(404);
}
 
AbstractDao.getCurrentSession().getTransaction().commit();
/impl/src/java/pt/estgp/estgweb/examples/DBInit.java
39,6 → 39,9
announcement.setOwner(user);
announcement.setTitle("Titulo de Teste");
announcement.setText("Anuncio de Teste");
announcement.setPopupheightpx(0);
announcement.setPopupwidthpx(0);
announcement.setPosition(0);
announcement.setStatus(true);
announcement.setType(Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS);
announcement.setTargetRoles("all");
51,6 → 54,9
announcement2.setText("Anuncio de Teste");
announcement2.setStatus(true);
announcement2.setType(Globals.ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS);
announcement2.setPopupheightpx(0);
announcement2.setPopupwidthpx(0);
announcement2.setPosition(0);
DaoFactory.getAnnouncementDaoImpl().save(announcement2);
 
AnnouncementImpl announcement3 = DomainObjectFactory.createAnnouncementImpl();
60,6 → 66,9
announcement3.setTargetRoles("all");
announcement3.setType(Globals.ANNOUNCEMENT_TYPE_NEWS);
announcement3.setStatus(true);
announcement3.setPopupheightpx(0);
announcement3.setPopupwidthpx(0);
announcement3.setPosition(0);
DaoFactory.getAnnouncementDaoImpl().save(announcement3);
AbstractDao.getCurrentSession().getTransaction().commit();
}
/impl/src/doc/estgweb.eap
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/impl/src/doc/baco.ppt
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/impl/src/hbm/pt/estgp/estgweb/domain/Assessment.hbm.xml
47,8 → 47,8
<generator class="native"/>
</id>
<discriminator column="discriminator"/>
<property name="textpt" type="string"/>
<property name="texten" type="string"/>
<property name="textpt" type="text"/>
<property name="texten" type="text"/>
<property name="type" type="string"/>
<property name="quotation" type="double"/>
<property name="textExtra" type="string"/>
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml
28,6 → 28,7
<property name="validProgram" type="boolean" index="validProgramIndex"/>
<property name="status" type="boolean" index="statusIndex" />
<property name="contentsGrants" type="string"/>
<property name="evaluationStreamId" type="string" index="evaluationStreamIdIndex" />
<many-to-one name="validatorUser" class="pt.estgp.estgweb.domain.Teacher" lazy="false" outer-join="true"/>
<many-to-one name="course" class="pt.estgp.estgweb.domain.Course" lazy="false" outer-join="true"/>
<many-to-one name="courseUnitProgram" class="pt.estgp.estgweb.domain.CourseUnitProgram" lazy="false" outer-join="true"/>
/impl/src/hbm/pt/estgp/estgweb/domain/Course.hbm.xml
28,6 → 28,7
<property name="studiesPlan" type="string" index="studiesPlanIndex"/>
<property name="validationRole" type="string" index="validationRoleIndex"/>
<property name="area" type="string" index="areaIndex"/>
<property name="userGroupStudents" type="string"/>
<many-to-one name="director" class="pt.estgp.estgweb.domain.Teacher" outer-join="false" lazy="proxy"/>
<many-to-one name="coordinator" class="pt.estgp.estgweb.domain.Teacher" outer-join="false" lazy="proxy"/>
<set name="users" order-by="user.name asc" lazy="true">
/impl/src/web/imgs/mime/docx.gif
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/impl/src/web/index.jsp
1,4 → 1,5
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
<%@page language="java" contentType="UTF-8" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%--<logic:forward name="welcome"/>--%>
<logic:forward name="welcome"/>
/impl/src/web/admin/courses/course.jsp
77,8 → 77,9
<html:option value="A"><bean:message key="course.A"/></html:option>
<html:option value="C"><bean:message key="course.C"/></html:option>
<html:option value="O"><bean:message key="course.O"/></html:option>
<html:option value="T"><bean:message key="course.T"/></html:option>
</html:select>
* SIGES: <bean:write name="CourseForm" property="courseView.degree"/> - Confirmar Mestrados e Pos graduacoes e informar equipa de desenvolvimento
** SIGES: <bean:write name="CourseForm" property="courseView.degree"/> - Confirmar Mestrados e Pos graduacoes e informar equipa de desenvolvimento
</td>
</tr>
<tr>
101,8 → 102,18
<html:text property="courseView.institutionalCode"/>
</td>
</tr>
 
<tr>
<th>
<bean:message key="course.userGroupStudents"/>
</th>
<td>
<html:text property="courseView.userGroupStudents"/>
</td>
</tr>
 
<tr>
<th>
<bean:message key="course.description"/>
</th>
<td>
/impl/src/web/layout/layoutWelcome.jsp
57,7 → 57,7
boolean flash = false;
try
{
java.net.URL url = new java.net.URL("http://baco.estgp.pt:9090/static/public/portal/imagens/HOME.swf");
java.net.URL url = new java.net.URL("http://www.estgp.pt:9090/static/public/portal/imagens/HOME.swf");
java.io.InputStream s = url.openStream();
s.close();
flash=true;
86,7 → 86,7
else
{
%>
<img src="http://baco.estgp.pt:9090/static/public/portal/imagens/HOME.jpg"/>
<img src="http://www.estgp.pt:9090/static/public/portal/imagens/HOME.jpg"/>
<%
}
%>
/impl/src/web/layout/layoutintranet.jsp
7,6 → 7,7
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html:html locale="true">
<head>
<title><bean:message key="site.title"/> - <tiles:getAsString name="title"/></title>
/impl/src/web/layout/navigationTop.jsp
61,6 → 61,7
<li><html:link action="/courses?type=E"><bean:message key="course.E"/></html:link></li>
<li><html:link action="/courses?type=A"><bean:message key="course.A"/></html:link></li>
<li><html:link action="/courses?type=P"><bean:message key="course.P"/></html:link></li>
<li><html:link action="/courses?type=T"><bean:message key="course.T"/></html:link></li>
</ul>
</div>
</li>
/impl/src/web/user/courseunits/topnavDossierTecnicoPedagogico.jsp
New file
0,0 → 1,21
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%@ page import="pt.estgp.estgweb.domain.views.BlogView" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnit" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%--<baco:object2Request beanIdName="id" classname="pt.estgp.estgweb.domain.CourseUnit" useBean="CourseUnitView"/>--%>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
 
 
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back");
topNav.addNavPlace(null, "course",CourseUnitView.getCourseName());
topNav.addNavPlace("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(), "courseunit",CourseUnitView.getName());
topNav.addNavPlace(null, "courseunit.dossier.tecnico.pedagogico");
%>
<jsp:include page="/layout/topnav.jsp"/>
Property changes:
Added: svn:executable
+ *
/impl/src/web/user/courseunits/courseunitEvaluation.jsp
53,8 → 53,13
<div class="seccao">
<h2>
<bean:message key="courseunit.evaluation"/>
 
</h2>
<p class="WARNING"><bean:message key="courseunit.evaluation.warning"/></p>
<%
 
%>
 
<%
boolean editCoordinatorPart = false;
boolean editTeacherPart = false;
127,6 → 132,9
<html:hidden property="courseUnitView.id"/>
 
<%--DOCENTE--%>
<logic:equal value="true" name="CourseUnitEvaluationForm" property="courseUnitEvaluationView.fechar">
<p class="alert-success">Esta avaliação está publicada no DTP em formato PDF</p>
</logic:equal>
 
<table class="dataTable tableDisabled" width="100%">
<tr>
248,6 → 256,7
%>
 
<input type="button" value="<bean:message key="save"/>" onclick="set(form,'saveEvaluation');form.submit()"/>
<!--<input type="button" value="FECHAR E PUBLICAR" onclick="set(form,'publishEvaluation');form.submit()"/>-->
<%
}
%>
/impl/src/web/user/courseunits/dossierTecnicoPedagogico.jsp
New file
0,0 → 1,11
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<div class="seccao">
<bean:message key="courseunit.dossier.tecnico.pedagogico"/>
</div>
Property changes:
Added: svn:executable
+ *
/impl/src/web/user/courseunits/menu.jsp
16,7 → 16,9
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
 
<%
try{
if (request.getAttribute("BlogView") != null)
{
BlogView bV = (BlogView) request.getAttribute("BlogView");
57,15 → 59,21
 
 
<%
if(Globals.MODULE_STATUS_COURSEUNITEVALUATION)
try{
//System.out.println(CourseUnitView);
//System.out.println(CourseUnitView.getCourseView());
//System.out.println(CourseUnitView.getResponsableTeacher());
 
if(CourseUnitView != null && Globals.MODULE_STATUS_COURSEUNITEVALUATION)
{
//todo é necessário um servico para ver se tem estes papeis
if(CourseUnitView.getResponsableTeacher().getId() == UserSession.getUser().getId()
||
CourseUnitView.isOwnedBy(UserSession.getUser(),false)
||
// ||
//Validation Role e o papel da comissão de curso
UserSession.getUser().hasRole(CourseUnitView.getCourseView().getValidationRole()))
//UserSession.getUser().hasRole(CourseUnitView.getCourseView().getValidationRole())
)
{
%>
<li style="background-color: yellow">
74,8 → 82,16
<%
}
}
}catch(Throwable e)
{
}
 
%>
 
<li>
<baco:isTeacherOfCourseUnit courseUnitId="${CourseUnitView.id}">
<html:link action="/user/startLoadCourseUnitDossierFromHome.do?id=${CourseUnitView.id}"><bean:message key="courseunit.dossier.tecnico.pedagogico"/></html:link>
</baco:isTeacherOfCourseUnit>
</li>
<baco:isTeacherOfCourseUnit courseUnitId="${CourseUnitView.id}">
<li>
<html:link action="/user/startSubmitAnnouncementFromCourseUnit?announcementView.courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.put.announcement"/></html:link>
136,6 → 152,9
<li>
&nbsp;&nbsp; <img alt="Pastas" src="<%=request.getContextPath()%>/imgs/folder.gif"> <html:link action="/user/startLoadCourseUnitGradesFromHome?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.grades"/></html:link>
</li>
<li>
&nbsp;&nbsp; <img alt="Pastas" src="<%=request.getContextPath()%>/imgs/folder.gif"> <html:link action="/user/startLoadCourseUnitDtpFromHome?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.dtp"/></html:link>
</li>
<%
}
%>
193,3 → 212,10
</div>
</div>
</logic:present>
<%
}catch(Throwable e)
{
System.out.println(e.toString());
e.printStackTrace();
}
%>
/impl/src/web/user/ftpclient/ftpclient.jsp
151,7 → 151,7
&nbsp;
 
<%
if (i.getName().toLowerCase().endsWith("doc") || i.getName().endsWith("rtf"))
if (i.getName().toLowerCase().endsWith("doc") || i.getName().endsWith("rtf") || i.getName().endsWith("docx"))
{
%>
<img alt="<%=i.getCompleteUrl()%>" src="<%=request.getContextPath()%>/imgs/mime/doc.gif">
244,4 → 244,4
<%
}
}
%>
%>
/impl/src/web/user/home/topnavCourseUnitDtp.jsp
New file
0,0 → 1,13
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<jsp:useBean id="CourseUnitView" type="pt.estgp.estgweb.domain.views.CourseUnitView" scope="request"/>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back");
topNav.addNavPlace(null, "course",CourseUnitView.getCourseName());
topNav.addNavPlace("/user/startLoadCourseUnitFromHome.do?courseUnitView.id=" + CourseUnitView.getId(), "courseunit",CourseUnitView.getName());
topNav.addNavPlace(null, "courseunit.menu.dtp");
%>
<jsp:include page="/layout/topnav.jsp"/>
Property changes:
Added: svn:executable
+ *
/impl/src/web/user/home/teacher.jsp
25,8 → 25,8
<div class="block">
<%
java.util.List<String> years = new java.util.ArrayList<String>();
years.add("201516");
years.add("201415");
years.add("201314");
 
java.util.Collections.sort(years, new java.util.Comparator<String>()
{
/impl/src/web/user/processes/openProcess.jsp
96,6 → 96,38
</tr>
</table>
<%
if(((ProcessImpl)process).canRemoveLastEvent(UserSession.getUser()))
{
%>
 
<form action="<%=request.getContextPath()%>/user/processEventController.do" method="post">
<input type="hidden" name="id" value="<%=processId%>"/>
<input type="hidden" name="dispatch" value="deleteLastProcessEvent"/>
 
<table border="0" style="background-color: #ffc9da">
<tr>
<td>
<table class="processActivity" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td class="processActivityTail"><img src="<%=request.getContextPath()%>/imgs/process/leftProcess.gif"/></td>
<td class="processActivityName">
<input class="TERMINAR_BTN" type="button" value="ELIMINAR ULTIMO EVENTO" onclick="if(confirm('Tem a certeza que deseja eliminar o ultimo evento deste processo? Esta acção será reportada e ficará registada.')){this.form.submit();}"/>
</td>
<td class="processActivityArrow"><img src="<%=request.getContextPath()%>/imgs/process/rightProcess.gif"/></td>
</tr>
</table>
</td>
<td>
<img src="<%=request.getContextPath()%>/imgs/process/actor.gif"/> ${UserSession.user.name}
</td>
</tr>
</table>
 
</form>
 
<input class="TRANSITAR_BTN" type="button" value="TRANSITAR" onclick="if(confirm('Tem a certeza que deseja transitar este processo para ' + this.form.destinationPerson.options[this.form.destinationPerson.selectedIndex].text + '?')){set(form,'transitProcessEventPerson');this.form.submit();}"/>
<%
}
if(process.getNowState().equals(ProcessImpl.ProcessState.CLOSED.name()) &&
process.canReopen(UserSession.getUser()))
{
/impl/build.xml
9,6 → 9,7
-->
<target name="help">
<echo>This is the availible Ant Tasks:</echo>
<echo message="${env.JAVA_HOME}"></echo>
</target>