Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 917 → Rev 984

/impl/conf/language/MessageResources.properties
447,7 → 447,7
 
 
 
 
user.role.courseValidateProgramGPME=Comissão de Curso de Gestão de PME
user.role.courseValidateProgramCET_TD=Comissão de Curso de CETS de TD
user.role.courseValidateProgramEI=Comissão de Curso de EI
user.role.courseValidateProgramEC=Comissão de Curso de EC
/impl/conf/WEB-INF/web.xml
4,6 → 4,12
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
 
<listener>
<listener-class>
com.sun.xml.ws.transport.http.servlet.WSServletContextListener
</listener-class>
</listener>
 
<filter>
<filter-name>RequestedUrlFilter</filter-name>
<filter-class>pt.estgp.estgweb.web.filters.RequestURLFilter</filter-class>
123,7 → 129,18
</filter-mapping>
<!---->
<!--SERVLETS-->
 
<!--SOAP Tutorial-->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>
com.sun.xml.ws.transport.http.servlet.WSServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!--SOAP Tutorial-->
 
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
225,7 → 242,15
 
 
<!--MAPPINGS-->
 
<!--SOAP Tutorial-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<!--SOAP Tutorial-->
 
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
/impl/conf/WEB-INF/sun-jaxws.xml
New file
0,0 → 1,10
<?xml version="1.0" encoding="UTF-8"?>
<!--SOAP Tutorial-->
<endpoints
xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
version="2.0">
<endpoint
name="HelloWorld"
implementation="pt.estgp.estgweb.web.soap.HelloWorldImpl"
url-pattern="/hello"/>
</endpoints>
/impl/src/java/jomm/dao/impl/AbstractDao.java
341,6 → 341,8
*/
public CLAZZ narrow(CLAZZ o)
{
if(o == null)
return null;
if (o instanceof HibernateProxy)
{
return (CLAZZ) ((HibernateProxy)o).getHibernateLazyInitializer().getImplementation();
755,6 → 757,7
{
for (CLAZZ obj : objs)
{
System.out.println("CLEARING: " + obj);
evictAndDelete(obj);
}
}
/impl/src/java/pt/estgp/estgweb/Globals.java
118,6 → 118,12
public static final String TMP_DIR = ConfigProperties.getProperty("tmp.dir");
public static final String DATA_DIR = ConfigProperties.getProperty("data.dir");
public static final String EMAIL_SERVER_HOST = ConfigProperties.getProperty("email.server");
public static final String EMAIL_SERVER_SECURITY = ConfigProperties.getProperty("email.server.security");
public static final int EMAIL_SERVER_SECURITY_TLS = ConfigProperties.getIntProperty("email.server.security.tls");
public static final int EMAIL_SERVER_SECURITY_SSL = ConfigProperties.getIntProperty("email.server.security.ssl");
public static final String EMAIL_SERVER_USERNAME = ConfigProperties.getProperty("email.user");
public static final String EMAIL_SERVER_PASSWORD = ConfigProperties.getProperty("email.password");
 
public static final String SYSTEM_EMAIL_BOX = ConfigProperties.getProperty("email.from");
public static final String ANNOUNCEMENT_TYPE_NEWS = "news";
public static final String ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS = "top.flash.news";
/impl/src/java/pt/estgp/estgweb/services/courseunits/SaveCourseUnitProgram.java
193,7 → 193,10
}
 
private String generatePdfFile(CourseUnit cu, List<String> errors, UserSession u) throws TransformerException, IOException, FOPException {
((CourseUnitProgramImpl)cu.getCourseUnitProgram()).consistNullValues();
 
CourseUnitProgramImpl cProgram = (CourseUnitProgramImpl) DaoFactory.getCourseUnitProgramDaoImpl().narrow(cu.getCourseUnitProgram());
cProgram.consistNullValues();
 
Document responseDoc = DocumentHelper.createDocument();
Namespace namespace = new Namespace("uc", "http://baco.estgp.pt/schemas/courseunits/program/");
responseDoc.setXMLEncoding("ISO-8859-1");
431,6 → 434,7
 
 
public static void main(String[] args) throws IOException {
 
AbstractDao.getCurrentSession().beginTransaction();
new SaveCourseUnitProgram().storeAllPrograms();
AbstractDao.getCurrentSession().flush();
/impl/src/java/pt/estgp/estgweb/services/courseunits/SaveCourseUnitEvaluation.java
57,6 → 57,7
 
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(coursUnitId);
 
 
CourseUnitEvaluation evaluation = c.getCourseUnitEvaluation();
if(evaluation == null)
{
115,7 → 116,7
 
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);
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.courseunitEvaluationDomain,owner);
cu.setEvaluationStreamId(identifier);
}
else
127,16 → 128,19
 
//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();
CourseUnitEvaluationImpl cuvImpl = (CourseUnitEvaluationImpl) DaoFactory.getCourseUnitEvaluationDaoImpl().narrow(cuv);
Document responseDoc = cuvImpl.getDom(c);
responseDoc.setXMLEncoding("ISO-8859-1");
 
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
/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/LoadCourseUnitService.java
42,10 → 42,12
public CourseUnitView run(long id, boolean initTeachers, boolean initStudents, boolean initBlog, UserSession userSession) throws ServiceException
{
CourseUnit c = DaoFactory.getCourseUnitDaoImpl().get(id);
c.setCourseUnitEvaluation(DaoFactory.getCourseUnitEvaluationDaoImpl().narrow(c.getCourseUnitEvaluation()));
c.setCourseUnitProgram(DaoFactory.getCourseUnitProgramDaoImpl().narrow(c.getCourseUnitProgram()));
 
 
if(c == null)
return null;
 
CourseUnitView cV = new CourseUnitView(c,initTeachers,initStudents,initBlog);
 
if(c.getProgramStreamId()!= null)
/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitAdminService.java
1,16 → 1,14
package pt.estgp.estgweb.services.courseunits;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.domain.views.CourseUnitAssignementView;
import pt.estgp.estgweb.domain.UserSession;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.CourseUnitAssignement;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.views.CourseUnitView;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.Globals;
import org.apache.log4j.Logger;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
38,7 → 36,12
 
CourseUnit courseUnit;
if(cUV.getId() > 0)
{
courseUnit = DaoFactory.getCourseUnitDaoImpl().get(cUV.getId());
courseUnit.setCourseUnitEvaluation(DaoFactory.getCourseUnitEvaluationDaoImpl().narrow(courseUnit.getCourseUnitEvaluation()));
courseUnit.setCourseUnitProgram(DaoFactory.getCourseUnitProgramDaoImpl().narrow(courseUnit.getCourseUnitProgram()));
 
}
else
{
courseUnit = DomainObjectFactory.createCourseUnitImpl();
/impl/src/java/pt/estgp/estgweb/services/courseunits/courseunitevaluation.fo.xsl
75,7 → 75,7
</xsl:if>
<xsl:if test="//closed = 'true'">
<fo:block font-size="20pt">
 
Relatório de avaliação curricular <xsl:value-of select="//anoLectivo"/>
</fo:block>
</xsl:if>
</fo:table-cell>
164,7 → 164,70
<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">
Ano Lectivo
</fo:block>
</fo:table-cell>
<fo:table-cell border-right="1px solid gray" border-bottom="1px solid gray" display-align="center" >
<fo:block >
<xsl:value-of select="//anoLectivo"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<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">
Curso
</fo:block>
</fo:table-cell>
<fo:table-cell border-right="1px solid gray" border-bottom="1px solid gray" display-align="center" >
<fo:block >
<xsl:value-of select="//curso/nome"/> / <xsl:value-of select="//curso/codigo"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<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">
Unidade Curricular
</fo:block>
</fo:table-cell>
<fo:table-cell border-right="1px solid gray" border-bottom="1px solid gray" display-align="center" >
<fo:block >
<xsl:value-of select="//unidadecurricular/nome"/> / <xsl:value-of select="//unidadecurricular/codigo"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<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">
Professor Responsável
</fo:block>
</fo:table-cell>
<fo:table-cell border-right="1px solid gray" border-bottom="1px solid gray" display-align="center" >
<fo:block >
<xsl:value-of select="//responsavel/nome"/> / <xsl:value-of select="//responsavel/email"/>
</fo:block >
</fo:table-cell>
</fo:table-row>
<xsl:for-each select="//docente">
<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">
Docente
</fo:block>
</fo:table-cell>
<fo:table-cell border-right="1px solid gray" border-bottom="1px solid gray" display-align="center" >
<fo:block >
<xsl:value-of select="./nome"/> / <xsl:value-of select="./email"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
 
<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
/impl/src/java/pt/estgp/estgweb/services/email/SendEmailService.java
3,26 → 3,23
import jomm.utils.TemplateUtils;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.enums.LangEnum;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.Email;
import pt.estgp.estgweb.web.utils.DatesUtils;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.domain.enums.LangEnum;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.utils.Email;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.Transport;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
import java.io.UnsupportedEncodingException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import java.util.Date;
import java.text.MessageFormat;
 
/**
* @author Jorge Machado
43,9 → 40,47
// Set up properties for mail session
Properties props = System.getProperties();
props.put("mail.smtp.host", Globals.EMAIL_SERVER_HOST);
final String username = Globals.EMAIL_SERVER_USERNAME;
final String password = Globals.EMAIL_SERVER_PASSWORD;
javax.mail.Authenticator authenticator = null;
if(Globals.EMAIL_SERVER_SECURITY != null && Globals.EMAIL_SERVER_SECURITY.compareTo("TLS")==0)
{
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.port", ""+ Globals.EMAIL_SERVER_SECURITY_TLS);
authenticator = new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
};
}
else if(Globals.EMAIL_SERVER_SECURITY != null && Globals.EMAIL_SERVER_SECURITY.compareTo("SSL")==0)
{
props.put("mail.smtp.socketFactory.port", Globals.EMAIL_SERVER_SECURITY_SSL);
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", Globals.EMAIL_SERVER_SECURITY_SSL);
authenticator = new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,password);
}
};
}
else
{
 
}
 
 
 
 
 
 
// Get session
Session session = Session.getDefaultInstance(props, null);
Session session = Session.getDefaultInstance(props, authenticator);
session.setDebug(true);
session.setDebugOut(System.out);
 
// Create message
MimeMessage message = new MimeMessage(session);
67,28 → 102,49
// Format the mail message
String fullMessage = MessageFormat.format(content, email.getArguments().toArray());
 
logger.info("FROM:" + email.getFrom());
if(email.getFromName() != null)
 
 
logger.info("FROM:" + email.getFrom() + " but using: " + Globals.SYSTEM_EMAIL_BOX);
//if(email.getFromName() != null)
try {
message.setFrom(new InternetAddress(email.getFrom(),email.getFromName()));
message.setFrom(new InternetAddress(Globals.SYSTEM_EMAIL_BOX,Globals.SYSTEM_EMAIL_BOX));
} catch (UnsupportedEncodingException e) {
logger.error(e,e);
message.setFrom(new InternetAddress(email.getFrom()));
}
//else
// message.setFrom(new InternetAddress(Globals.SYSTEM_EMAIL_BOX));
message.setSubject(email.getSubject() + " - não responda para este endereço");
 
if(email.isHtml())
{
 
fullMessage += email.getFrom() != null && email.getFrom().length()>0 ? "<br/><br/>Responda para " + email.getFrom() : "";
fullMessage += " <br/> <br/> <h5> Mensagem Segura - enviada através da Google Apps Api através de baco 2015 </h5>";
 
}
else
message.setFrom(new InternetAddress(email.getFrom()));
message.setSubject(email.getSubject());
{
fullMessage += email.getFrom() != null && email.getFrom().length()>0 ? "\n\nResponda para " + email.getFrom() : "";
fullMessage += " \n\n Mensagem Segura - enviada através da Google Apps Api através de baco 2015";
}
 
message.setText(fullMessage,"utf-8");
 
 
if(email.isHtml())
{
message.setHeader("Content-Type","text/html; charset=\"utf-8\"");
}
else
{
message.setHeader("Content-Type","text/plain; charset=\"utf-8\"");
}
message.setHeader("Content-Transfer-Encoding", "quoted-printable");
logger.info("Sending email to transport:"+fullMessage);
 
 
 
Transport.send(message);
}
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportStudentsService.java
135,7 → 135,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 alunos",emails,"baco@estgp.pt","messageToAdmin_pt.txt",arguments);
Email email = new Email("Erro de importa��o de alunos",emails,"baco@estgp.pt","messageToAdmin_pt.txt",arguments);
new SendEmailService().sendEmail(email);
 
}
268,7 → 268,7
public static void main(String[] args) throws ServiceException
{
String year = DatesUtils.getImportYear();
System.out.println("YEAR:" + year);
System.out.println("YEAR:" + year);
if(args != null && args.length > 0)
year = args[0];
new ImportStudentsService().run(year);
/impl/src/java/pt/estgp/estgweb/services/sigesimports/SincronizeLastYearCourseUnitProgramsService.java
1,6 → 1,5
package pt.estgp.estgweb.services.sigesimports;
 
import com.lowagie.text.pdf.SimpleBookmark;
import jomm.dao.impl.AbstractDao;
import org.apache.fop.apps.FOPException;
import org.apache.log4j.Logger;
16,7 → 15,6
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages;
import pt.estgp.estgweb.utils.DatesUtils;
import pt.utl.ist.berserk.logic.serviceManager.IService;
import sun.tools.java.Imports;
 
import javax.xml.transform.TransformerException;
import java.io.IOException;
109,7 → 107,8
if(novaFicha || (!cu.isValidProgram() && !cloneOnlyNews))
{
updated++;
((CourseUnitProgramImpl)cu.getCourseUnitProgram()).cloneFrom(cuOld.getCourseUnitProgram());
CourseUnitProgramImpl cProgram = (CourseUnitProgramImpl) DaoFactory.getCourseUnitProgramDaoImpl().narrow(cu.getCourseUnitProgram());
cProgram.cloneFrom(cuOld.getCourseUnitProgram());
List<String> errors = new ArrayList<String>();
service.createPdf(cu,errors);
}
134,7 → 133,7
service.createPdf(cu,errors);
}
 
cu.setValidProgram(true);
//cu.setValidProgram(true);
}
logger.info("STATS " + year);
logger.info("Total: " + foundTotal);
245,9 → 244,10
cuInto.setValidProgram(false);
}
logger.info("AQUI");
((CourseUnitProgramImpl)cuInto.getCourseUnitProgram()).cloneFrom(cuFrom.getCourseUnitProgram());
DaoFactory.getCourseUnitProgramDaoImpl().saveOrUpdate(((CourseUnitProgramImpl)cuInto.getCourseUnitProgram()));
DaoFactory.getCourseUnitProgramPart2DaoImpl().saveOrUpdate(((CourseUnitProgramImpl)cuInto.getCourseUnitProgram()).getCourseUnitProgramPart2());
CourseUnitProgramImpl cProgram = (CourseUnitProgramImpl) DaoFactory.getCourseUnitProgramDaoImpl().narrow(cuInto.getCourseUnitProgram());
cProgram.cloneFrom(cuFrom.getCourseUnitProgram());
DaoFactory.getCourseUnitProgramDaoImpl().saveOrUpdate((cuInto.getCourseUnitProgram()));
DaoFactory.getCourseUnitProgramPart2DaoImpl().saveOrUpdate((cuInto.getCourseUnitProgram()).getCourseUnitProgramPart2());
 
SaveCourseUnitProgram service = new SaveCourseUnitProgram();
List<String> errors = new ArrayList<String>();
/impl/src/java/pt/estgp/estgweb/services/ftpservices/FtpService.java
27,7 → 27,7
 
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
59,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)
{
 
69,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/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;
 
 
/*
92,7 → 94,7
{
// 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));
111,7 → 113,15
}
 
logger.warn("user:" + username + " authenticated");
((UserSessionImpl)userSession).clearObjectsWithOpenTransaction();
 
//((UserSessionImpl)userSession).reset();
//((UserSessionImpl)userSession).clearObjectsWithOpenTransaction();
 
//DaoFactory.getUserSessionDaoImpl().flush();
 
//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/LogoutService.java
1,12 → 1,10
package pt.estgp.estgweb.services.authenticate;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import org.apache.log4j.Logger;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
30,6 → 28,8
{
logger.warn("user:" + userSession.getCookie() + " logout");
((UserSessionImpl)userSession).reset();
//TODO NOVO
((UserSessionImpl)userSession).clearObjectsWithOpenTransaction();
return userSession;
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java
48,8 → 48,10
 
private String objectives;
private String programStreamId;
private String evaluationStreamId;
private boolean validProgram;
private UserView validatorUser;
private boolean validEvaluation = false;
private int programSize;
private String extension;
private List<CourseUnitAssignementView> courseUnitAssignements;
118,6 → 120,7
this.semestre = courseUnit.getSemestre();
this.courseCode = courseUnit.getCourseCode();
 
 
// this.objectives = courseUnit.getObjectives(); DEPRECATED
if(courseUnit.getCourseUnitProgram() !=null && courseUnit.getCourseUnitProgram().getCourseUnitProgramPart2() != null)
this.objectives = courseUnit.getCourseUnitProgram().getCourseUnitProgramPart2().getObjectivos();
135,6 → 138,12
}
}
 
if(courseUnit.getEvaluationStreamId() != null)
{
evaluationStreamId = courseUnit.getEvaluationStreamId();
validEvaluation = courseUnit.getCourseUnitEvaluation().isClosed();
}
 
// if(courseUnit.getBlog() != null)
// this.blog = new BlogView(courseUnit.getBlog());
this.id = courseUnit.getId();
171,9 → 180,20
{
responsableId = courseUnit.getResponsableTeacher().getId();
}
courseView = new CourseView(courseUnit.getCourse(),false);
}
 
public String getEvaluationStreamId() {
return evaluationStreamId;
}
 
 
 
public boolean isValidEvaluation() {
return validEvaluation;
}
 
 
public long getCoordinatorId() {
return coordinatorId;
}
/impl/src/java/pt/estgp/estgweb/domain/UserImpl.java
1,7 → 1,5
package pt.estgp.estgweb.domain;
 
import jomm.utils.DesUtils;
 
/**
* @author Jorge Machado
* @date 2/Mar/2008
108,8 → 106,8
return false;
}
 
public String getPop3PassDecrypted()
/*public String getPop3PassDecrypted()
{
return DesUtils.getInstance().decrypt(getPop3password());
}
}*/
}
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java
102,6 → 102,22
 
}
 
/**
* Means that is teacher os responsable teacher or from course commission
* Only works in open transaction
*
* Needs Course and Responsable Teacher loaded
*/
public boolean isFromCourseUnitCommission(UserSession userSession)
{
return userSession.getUser()!= null &&
(((UserImpl) userSession.getUser()).isTeacherOfCourseUnit(getId(), true)
|| (getResponsableTeacher() != null && getResponsableTeacher().getId() == userSession.getUser().getId())
|| userSession.getUser().hasRole(getCourse().getValidationRole())
);
}
 
 
 
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseDaoImpl.java
15,7 → 15,7
 
import java.util.List;
 
import static org.hibernate.criterion.Restrictions.eq;
import static org.hibernate.criterion.Restrictions.*;
 
/**
* @author Jorge Machado
186,6 → 186,12
.list();
}
 
public List<Course> findAllNotIn(String importYear)
{
return createCriteria().add(not(eq("importYear", importYear)))
.list();
}
 
 
// Duarte Santos
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java
6,13 → 6,13
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.sql.JoinFragment;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.CourseUnitImpl;
import pt.estgp.estgweb.domain.Teacher;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.dao.DaoUtils;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
import pt.estgp.estgweb.utils.DatesUtils;
 
import java.util.ArrayList;
import java.util.List;
 
import static org.hibernate.criterion.Restrictions.*;
429,4 → 429,112
q.setLong(0,unit);
return q.list();
}
 
public static class CourseMissingValidationProgram
{
public Course course;
public List<CourseUnit> courseUnits;
}
public List<CourseMissingValidationProgram> loadMissingProgramValidate(UserSession userSession)
{
List<CourseMissingValidationProgram> result = new ArrayList<CourseMissingValidationProgram>();
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(DatesUtils.getImportYear());
for(Course course: courses)
{
if(userSession.getUser().hasRole(course.getValidationRole()))
{
List<CourseUnit> courseUnits = loadMissingProgramValidateGivenCourse(course.getId());
if(courseUnits != null && courseUnits.size() > 0)
{
CourseMissingValidationProgram c = new CourseMissingValidationProgram();
c.course = course;
c.courseUnits = courseUnits;
result.add(c);
}
}
}
return result;
}
public static class CourseMissingValidationEvaluation
{
public Course course;
public List<CourseUnit> courseUnits;
}
 
public List<CourseMissingValidationEvaluation> loadMissingEvaluationValidate(UserSession userSession)
{
List<CourseMissingValidationEvaluation> result = new ArrayList<CourseMissingValidationEvaluation>();
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll();
for(Course course: courses)
{
if(userSession.getUser().hasRole(course.getValidationRole()))
{
List<CourseUnit> courseUnits = loadMissingEvaluationValidateGivenCourse(course.getId());
if(courseUnits != null && courseUnits.size() > 0)
{
CourseMissingValidationEvaluation c = new CourseMissingValidationEvaluation();
c.course = course;
c.courseUnits = courseUnits;
result.add(c);
}
}
}
return result;
}
 
/*
* Neste caso apenas se validam as do ano anterior*/
 
public List<CourseUnit> loadMissingEvaluationValidateGivenCourse(long courseId)
{
return createCriteria()
.createAlias("course", "c")
.createAlias("courseUnitEvaluation", "ce")
.add(eq("c.id", courseId))
.add(not(eq("importYear", DatesUtils.getImportYear())))
.add(ge("importYear", "201415"))
.add((eq("ce.closed", false)))
.list();
}
 
public List<CourseMissingValidationEvaluation> loadMissingEvaluation(UserSession userSession)
{
List<CourseMissingValidationEvaluation> result = new ArrayList<CourseMissingValidationEvaluation>();
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll();
for(Course course: courses)
{
if(userSession.getUser().hasRole(course.getValidationRole()))
{
List<CourseUnit> courseUnits = loadMissingEvaluation(course.getId());
if(courseUnits != null && courseUnits.size() > 0)
{
CourseMissingValidationEvaluation c = new CourseMissingValidationEvaluation();
c.course = course;
c.courseUnits = courseUnits;
result.add(c);
}
}
}
return result;
}
 
public List<CourseUnit> loadMissingEvaluation(long courseId)
{
return createCriteria()
.createAlias("course", "c")
.add(eq("c.id", courseId))
.add(not(eq("importYear", DatesUtils.getImportYear())))
.add(ge("importYear", "201415"))
.add(isNull("courseUnitEvaluation"))
.list();
}
 
public CourseUnit loadByEvaluationStreamId(String identifier)
{
return
(CourseUnit)
createCriteria()
.add(eq("evaluationStreamId",identifier))
.uniqueResult();
}
}
/impl/src/java/pt/estgp/estgweb/domain/UserSessionImpl.java
1,22 → 1,18
package pt.estgp.estgweb.domain;
 
import org.apache.commons.io.output.ByteArrayOutputStream;
 
import java.io.Serializable;
import java.io.ByteArrayInputStream;
import java.io.ObjectOutputStream;
import java.io.IOException;
import java.util.*;
import java.beans.XMLEncoder;
import java.beans.XMLDecoder;
 
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.domain.dao.DaoFactory;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
 
/**
* @author Jorge Machado
119,22 → 115,30
 
public void clearObjects()
{
 
if (getObjects() == null || getObjects().size() == 0)
{
return;
}
System.out.println("Clearing session from " + getObjects().size() + " objects");
for(SessionObject obj: getObjects())
System.out.println(obj.getId().getKeyId());
if(removeList != null)
removeList.addAll(getObjects());
else
removeList = getObjects();
setObjects(null);
//todo NOVO Authenticate
getObjects().clear();
}
 
public void clearObjectsWithOpenTransaction()
{
clearObjects();
if(removeList != null && removeList.size() > 0)
{
DaoFactory.getSessionObjectDaoImpl().evictAndDelete(removeList);
 
}
}
 
 
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitEvaluationImpl.java
41,10 → 41,54
}
 
 
public Document getDom(){
public Document getDom(CourseUnit cu){
Document dom = DOMDocumentFactory.getInstance().createDocument();
Element elemCourseUnitEvaluationImpl = dom.addElement("CourseUnitEvaluation");
 
Element anoLectivo = elemCourseUnitEvaluationImpl.addElement("anoLectivo");
anoLectivo.setText(cu.getImportYear());
 
Element curso = elemCourseUnitEvaluationImpl.addElement("curso");
Element nomeCur = curso.addElement("nome");
nomeCur.setText(cu.getCourseName());
Element codigoCur = curso.addElement("codigo");
codigoCur.setText(cu.getCourseCode());
 
 
Element unidadecurricular = elemCourseUnitEvaluationImpl.addElement("unidadecurricular");
Element nome = unidadecurricular.addElement("nome");
nome.setText(cu.getName());
Element codigo = unidadecurricular.addElement("codigo");
codigo.setText(cu.getCode());
 
if(cu.getResponsableTeacher() != null)
{
Element responsavel = elemCourseUnitEvaluationImpl.addElement("responsavel");
Element nomeRes = responsavel.addElement("nome");
nomeRes.setText(cu.getResponsableTeacher().getName());
Element emailRes = responsavel.addElement("email");
if(cu.getResponsableTeacher().getEmail()!= null)
emailRes.setText(cu.getResponsableTeacher().getEmail());
else
emailRes.setText("");
}
 
if(cu.getTeachers() != null && cu.getTeachers().size()>0)
{
for(Teacher t: cu.getTeachers())
{
Element docente = elemCourseUnitEvaluationImpl.addElement("docente");
Element nomeRes = docente.addElement("nome");
nomeRes.setText(t.getName());
Element emailRes = docente.addElement("email");
if(t.getEmail()!= null)
emailRes.setText(t.getEmail());
else
emailRes.setText("");
}
}
 
 
Element id = elemCourseUnitEvaluationImpl.addElement("id");
id.setText(getId()+"");
 
/impl/src/java/pt/estgp/estgweb/filters/chains/ResourceAccessControlEnum.java
16,7 → 16,9
superUserDomain("resource.access.superDomain",new ResourceAccessControlSuperDomainFilter()),
courseunitDeliverableDomain("resource.access.courseunitDeliverableDomain",new ResourceAccessControlCourseUnitDeliverableFilter()),
courseunitDomain("resource.access.courseunitDomain",new ResourceAccessControlCourseUnitFilter()),
// Duarte Santos
// Duarte Santos
courseunitEvaluationDomain("resource.access.courseunitEvaluationDomain",new ResourceAccessControlCourseUnitEvaluationFilter()),
 
surveyStatsDomain("resource.access.survey", new ResourceAccessControlSurvey()),
 
processDomain("resource.access.process", new ResourceAccessControlProcessDomainFilter());
/impl/src/java/pt/estgp/estgweb/filters/filters/ResourceAccessControlCourseUnitEvaluationFilter.java
New file
0,0 → 1,24
package pt.estgp.estgweb.filters.filters;
 
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.CourseUnitImpl;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlFilter;
 
/**
* @author Jorge Machado
* @date 4/Jun/2008
* @see pt.estgp.estgweb.filters.filters
*/
public class ResourceAccessControlCourseUnitEvaluationFilter extends ResourceAccessControlFilter
{
 
private static final Logger logger = Logger.getLogger(ResourceAccessControlCourseUnitEvaluationFilter.class);
 
public boolean canAccessResource(UserSession userSession, String identifier)
{
CourseUnitImpl c = (CourseUnitImpl) DaoFactory.getCourseUnitDaoImpl().loadByEvaluationStreamId(identifier);
return c.isFromCourseUnitCommission(userSession);
}
}
Property changes:
Added: svn:executable
+ *
/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;
10,8 → 11,9
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import pt.estgp.estgweb.domain.UserImpl;
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;
149,7 → 151,9
{
logger.warn("Will access using user and pass authnenticated to connect FTP " + serverStr);
user= username;
pass= ((UserImpl)userSession.getUser()).getPop3PassDecrypted();
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();
/impl/src/java/pt/estgp/estgweb/web/soap/HelloWorld.java
New file
0,0 → 1,17
package pt.estgp.estgweb.web.soap;
 
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
 
/**
* Created by jorgemachado on 13/10/15.
* SOAP Tutorial
*/
//Service Endpoint Interface
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface HelloWorld {
@WebMethod
String getHelloWorldAsString();
}
/impl/src/java/pt/estgp/estgweb/web/soap/HelloWorldImpl.java
New file
0,0 → 1,17
package pt.estgp.estgweb.web.soap;
 
 
import javax.jws.WebService;
 
/**
* SOAP Tutorial
*/
 
@WebService(endpointInterface = "pt.estgp.estgweb.web.soap.HelloWorld")
public class HelloWorldImpl implements HelloWorld{
 
@Override
public String getHelloWorldAsString() {
return "Hello World JAX-WS";
}
}
/impl/src/hbm/pt/estgp/estgweb/domain/UserSession.hbm.xml
18,7 → 18,7
<property name="name" type="string"/>
<property name="username" type="string"/>
<many-to-one name="user" class="pt.estgp.estgweb.domain.User" outer-join="true" lazy="false"/>
<set name="objects" cascade="all" inverse="true"><!--lazy="true">-->
<set name="objects" cascade="save-update" inverse="true"><!--lazy="true">-->
<key column="cookie"/>
<one-to-many class="pt.estgp.estgweb.domain.SessionObject"/>
</set>
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml
31,8 → 31,10
<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"/>
<many-to-one name="courseUnitEvaluation" class="pt.estgp.estgweb.domain.CourseUnitEvaluation" lazy="false" outer-join="true"/>
<many-to-one name="courseUnitProgram" class="pt.estgp.estgweb.domain.CourseUnitProgram" lazy="proxy"/>
<many-to-one name="courseUnitEvaluation" class="pt.estgp.estgweb.domain.CourseUnitEvaluation" lazy="proxy"/>
<!--<many-to-one name="courseUnitProgram" class="pt.estgp.estgweb.domain.CourseUnitProgram" lazy="false" outer-join="true"/>
<many-to-one name="courseUnitEvaluation" class="pt.estgp.estgweb.domain.CourseUnitEvaluation" lazy="false" outer-join="true"/>-->
<many-to-one name="responsableTeacher" class="pt.estgp.estgweb.domain.Teacher" lazy="false" outer-join="true"/>
<set name="blogs" cascade="delete" lazy="true" order-by="saveDate asc">
<key column="courseUnit"/>
260,6 → 262,7
<property name="qualApreciacaoCumprimentoPrograma" type="text"/>
<property name="qualConclusoes" type="text"/>
 
 
<subclass name="pt.estgp.estgweb.domain.CourseUnitEvaluationImpl" discriminator-value="CourseUnitEvaluationImpl"/>
</class>
 
/impl/src/web/user/courseunits/courseunitEvaluation.jsp
52,7 → 52,7
%>
<div class="seccao">
<h2>
<bean:message key="courseunit.evaluation"/>
<bean:message key="courseunit.evaluation"/> - <%=CourseUnitView.getName()%> / <%=CourseUnitView.getImportYear()%>
 
</h2>
<p class="WARNING"><bean:message key="courseunit.evaluation.warning"/></p>
74,7 → 74,7
if(u instanceof pt.estgp.estgweb.domain.Teacher)
{
pt.estgp.estgweb.domain.Teacher t = (pt.estgp.estgweb.domain.Teacher) u;
if(t.isTeacherOfCourseUnit(CourseUnitView.getId()))
if(t.isTeacherOfCourseUnit(CourseUnitView.getId()) || (CourseUnitView.getResponsableTeacher() != null && CourseUnitView.getResponsableTeacher().getId() == t.getId()))
{
editTeacherPart = true;
}
91,7 → 91,7
<%
boolean closed = CourseUnitEvaluationForm.getCourseUnitEvaluationView().getCourseUnitEvaluation().isClosed();
//todo é necessário um servico para ver se tem estes papeis
if(CourseUnitView.getResponsableTeacher().getId() == UserSession.getUser().getId()
if((CourseUnitView.getResponsableTeacher() != null && CourseUnitView.getResponsableTeacher().getId() == UserSession.getUser().getId())
||
CourseUnitView.isOwnedBy(UserSession.getUser(),false)
||
102,7 → 102,9
if(closed)
{
%>
<h2>Este formulário está FECHADO para edição</h2>
<h2>Este formulário está FECHADO para edição
 
</h2>
<%
}
else
112,19 → 114,29
<%
}
 
if(closed)
{
%>
 
<script>
$( document ).ready(function() {
$("#formEdit :input").attr("disabled", true);
<%
if(closed)
{
%>
$("#formEdit :input").attr("disabled", true);
<%
}
if(!editTeacherPart && !editCoordinatorPart)
{
%>
$("#formEdit :input").attr("disabled", true);
<%
}
%>
});
 
</script>
<%
}
%>
 
 
<div id="formEdit">
<html:form action="/user/courseUnitEvaluationController">
<input type="hidden" name="dispatch" value="saveEvaluation">
133,9 → 145,27
 
<%--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>
<p class="alert-success">Esta avaliação será publicada no DTP em formato PDF após ordens dos orgãos competentes</p>
</logic:equal>
 
<%
if(closed)
{
%>
 
<p class="alert-success">Esta avaliação está concluida e aprovada pela comissão de curso</p>
<%
if(editCoordinatorPart || editTeacherPart)
{
%>
<p class="WARNING"> <a href="<%=request.getContextPath()%>/repositoryStream/<%=CourseUnitView.getEvaluationStreamId()%>">Relatório de avaliação em PDF</a></p>
<%
}
%>
<%
}
%>
 
<table class="dataTable tableDisabled" width="100%">
<tr>
<th colspan="2">Dados alterados pelo Docente da Unidade</th>
251,15 → 281,22
<tr>
<td colspan="2">
<%
if(!closed)
if(!closed && (editCoordinatorPart || editTeacherPart))
{
%>
 
<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()"/>
 
<%
}
if(!closed && editCoordinatorPart)
{
%>
 
<input type="button" value="VALIDAR e FECHAR pela Comissão de Curso" onclick="set(form,'publishEvaluation');form.submit()"/>
<%
}
%>
</td>
 
</tr>
/impl/src/web/user/courseunits/courseunit.jsp
30,11 → 30,39
<jomm:messages/>
 
<div id="contentPane">
<h1>${CourseUnitView.name} (${CourseUnitView.code}) - (${CourseUnitView.semestre})</h1>
<h1>${CourseUnitView.name} (${CourseUnitView.code}) - (${CourseUnitView.semestre}) - ${CourseUnitView.importYear})</h1>
<table width="100%" cellpadding="0" cellspacing="2" border="0">
<tr>
<td valign="top" class="seccao">
 
 
 
<%
if((CourseUnitView.getResponsableTeacher() != null && 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()))
{
if(CourseUnitView.isValidEvaluation())
{
%>
<p>
<label class="INFO"> <a href="<%=request.getContextPath()%>/repositoryStream/<%=CourseUnitView.getEvaluationStreamId()%>">Relatório de avaliação em PDF</a></label>
</p>
<%
}
else
{
%>
<p>
<label class="WARNING">Atenção o relatório de avaliação deve ser preenchido no ano 2014-2015 (Entrar no 2014-2015 pelo menu lateral esquerdo antes de clicar em relatório de avaliação e confirmar no titulo da unidade).</label>
</p>
<%
}
}
%>
<baco:hasRole role="admin,all,services">
<ul>
<li>
/impl/src/web/user/courseunits/menu.jsp
9,6 → 9,7
<%@ page import="pt.estgp.estgweb.domain.UserImpl" %>
<%@ page import="pt.estgp.estgweb.domain.UserSession" %>
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page import="pt.estgp.estgweb.utils.ConfigManager" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
70,9 → 71,9
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())
||
// Validation Role e o papel da comissão de curso
UserSession.getUser().hasRole(CourseUnitView.getCourseView().getValidationRole())
)
{
%>
87,11 → 88,11
}
 
%>
<li>
<%--<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>
</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>
146,12 → 147,19
<li>
&nbsp;&nbsp; <img alt="Pastas" src="<%=request.getContextPath()%>/imgs/folder.gif"> <html:link action="/user/startLoadCourseUnitContentsFromHome?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.contents"/></html:link>
</li>
<%
if(Integer.parseInt(CourseUnitView.getImportYear()) < Integer.parseInt("201516"))
{
%>
<li>
&nbsp;&nbsp; <img alt="Pastas" src="<%=request.getContextPath()%>/imgs/folder.gif"> <html:link action="/user/startLoadCourseUnitPresencesFromHome?courseUnitView.id=${CourseUnitView.id}"><bean:message key="courseunit.menu.presences"/></html:link>
</li>
<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>
/impl/src/web/user/home/teacher.jsp
6,8 → 6,11
<%@ 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" %>
<%@ page import="jomm.dao.utils.HibernateUtils" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.domain.dao.impl.CourseUnitDaoImpl" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.utils.DatesUtils" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnit" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<div class="portal">
<logic:notMatch value="TeacherImpl" name="UserSession" property="user.class.name">
25,8 → 28,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>()
{
206,6 → 209,127
<baco:isModuleOn module="todos">
<jsp:include page="/user/home/todos.jsp"/>
</baco:isModuleOn>
<%
try{
HibernateUtils.getCurrentSession().beginTransaction();
List<CourseUnitDaoImpl.CourseMissingValidationProgram> result = DaoFactory.getCourseUnitDaoImpl().loadMissingProgramValidate(UserSession);
List<CourseUnitDaoImpl.CourseMissingValidationEvaluation> result2 = DaoFactory.getCourseUnitDaoImpl().loadMissingEvaluationValidate(UserSession);
List<CourseUnitDaoImpl.CourseMissingValidationEvaluation> result3 = DaoFactory.getCourseUnitDaoImpl().loadMissingEvaluation(UserSession);
if(result.size() > 0 || result2.size() > 0 || result3.size()>0)
{
%>
<div class="block">
<p class="WARNING"><label class="WARNING"> Tarefas das Comissões de Curso</label></p>
 
<ul>
 
 
<%
if(result.size()>0)
{
%>
<li>
<h1>Fichas curriculares por validar</h1>
<ul>
<%
for(CourseUnitDaoImpl.CourseMissingValidationProgram mis:result)
{
%>
<li><a href="<%=request.getContextPath()%>/user/startLoadCoursesProgramsFromHome.do#<%=mis.course.getId()%>"><%=mis.course.getName()%> (<%=mis.courseUnits.size()%>)</a></li>
<%
}
%>
</ul>
</li>
<%
}
%>
<%
if(result2.size()>0)
{
 
%>
<li>
<h1>Relatórios de avaliação por validar</h1>
<p>Expanda os cursos e clique nas unidades para validar os relatórios de avaliação.</p>
<p>No final de cada relatório existe um botão de validação para os membros das comissões dos cursos respectivos.</p>
<ul>
<%
for(CourseUnitDaoImpl.CourseMissingValidationEvaluation mis:result2)
{
%>
<li>
<h2><a href="javascript:showOrHide('evaluationValidate<%=mis.course.getId()%>')"><%=mis.course.getName()%> / <%=mis.course.getCode()%></a> (<%=mis.courseUnits.size()%>)</h2>
<ul id="evaluationValidate<%=mis.course.getId()%>" style="display: none">
<%
for(CourseUnit cu: mis.courseUnits)
{
%>
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getImportYear()%> / <%=cu.getName()%> / <%=cu.getCode()%></a></li>
<%
}
%>
</ul>
 
</li>
<%
}
%>
</ul>
</li>
<%
 
}
%>
<%
if(result3.size()>0)
{
 
%>
<li>
<h1>Relatórios de avaliação ainda não preenchidos</h1>
<ul>
<%
for(CourseUnitDaoImpl.CourseMissingValidationEvaluation mis:result3)
{
%>
<li>
<h2><a href="javascript:showOrHide('evaluationFill<%=mis.course.getId()%>')"><%=mis.course.getName()%> / <%=mis.course.getCode()%></a> (<%=mis.courseUnits.size()%>)</h2>
<ul id="evaluationFill<%=mis.course.getId()%>" style="display: none">
<%
for(CourseUnit cu: mis.courseUnits)
{
%>
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getImportYear()%> / <%=cu.getName()%> / <%=cu.getCode()%></a></li>
<%
}
%>
</ul>
 
</li>
<%
}
%>
</ul>
</li>
<%
 
}
%>
</ul>
</div>
<%
}
HibernateUtils.getCurrentSession().getTransaction().commit();
}catch(Throwable e)
{
System.out.println(e);
e.printStackTrace();
}
%>
 
 
 
</td>
</tr>
</tbody>
/impl/etc/soap/jaxws/streambuffer.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/impl/etc/soap/jaxws/gmbal-api-only.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/impl/etc/soap/jaxws/stax-ex.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/impl/etc/soap/jaxws/jaxws-rt.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/impl/etc/soap/jaxws/policy.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/impl/etc/soap/jaxws/jaxb-impl.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/impl/etc/soap/jaxws/jaxws-api.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/impl/etc/soap/jaxws/management-api.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream