Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1242 → Rev 1273

/impl/importRoutines.xml
52,7 → 52,13
 
<!-- JOB RUNNER -->
<target name="jobs">
<java classname="pt.estgp.estgweb.services.jobs.JobDeamon" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/>
<java classname="pt.estgp.estgweb.services.jobs.JobDeamon" classpath="${build.dir.classes}" classpathref="pathToToolsLib"
fork="true">
<!--Usar isto em ANT_OPTS no LINUX PARA EVITAR O FORK
O FORK PODE COMPROMETER O KILL DE TAREFAS POR NAO HAVER COMO AS IDENTIFICAR-->
<jvmarg value="-Djava.security.egd=file:/dev/urandom"/>
</java>
 
</target>
 
 
/impl/conf/language/MessageResources.properties
148,6 → 148,9
user.role.studentsID=Alunos de Informação e Documentação
user.role.studentsFSIR=Alunos de Fontes de Informação e Serviço de Referência
user.role.sendMailMessages=Enviar Mensagens de Correio Electronico
user.role.pedagogicCouncilSecretariat=Secretariado do Conselho Pedagógico
user.role.directionSecretariat=Secretariado da Direcção
user.role.studentsSecretariat=Secretaria de Alunos
 
user.role.admin,teacher=Admin e Professor
user.role.assessementsTester=Testador de Provas de Avaliação
/impl/conf/app.properties
17,8 → 17,12
 
email.local.suffix=estgp.pt
email.server=smtp.gmail.com
#to use example: bacodev1@estgp.pt bacodev2@estgp.pt
email.user.prefix=bacodev
email.user.sufix=@estgp.pt
email.user.count=10
email.user=bacodev@estgp.pt
email.password=Agreyq54p7870#
email.password=Agreyq54p7870#!
email.from=bacodev@estgp.pt
email.templates.dir=@email.templates.dir@
#email.server.security=
214,6 → 218,10
user.role.1524=pedagogicCouncil
user.role.1525=pedagogicCouncil.president
 
user.role.1611=pedagogicCouncilSecretariat
user.role.1612=directionSecretariat
user.role.1613=studentsSecretariat
 
user.role.18=erasmusCouncil
user.role.19=courseCoordinator
user.role.20=studentAssociation
/impl/conf/template/email/message_en.txt
1,26 → 1,21
# 0 : From
# 1 : Subject
# 2 : Text
# 3 : person
# 4 : target
#
# Message Email
#
 
<html>
<head>
<title>{1}</title>
</head>
<body>
<h3>Dear {4}</h3>
<p>Dear {4}</p>
 
<p>A new message has been placed from {0}:</p>
<p>Message from: {0}</p>
<p>Subject: {1}</p>
 
{1}
 
{2}
 
<p>Best Regards {3}</p>
 
<p>Regards, {0}</p>
<p>Reply to email: {5}</p>
 
---------------------------------------------
<p>Escola Superior de Tecnologia e Gestão</p>
<p>Instituto Politécnico de Portalegre</p>
/impl/conf/template/email/message_pt.txt
1,20 → 1,23

 
<html>
<head>
<title>{1}</title>
</head>
<body>
<!--<h3>Caros {4}</h3>-->
 
<!--<p>Um nova mensagem foi enviada por {0}:</p>-->
 
{1}
<p><i>Mensagem de:</i> {0}</p>
<p><i>Assunto:</i> <b><u>{1}</u></b></p>
 
<p>Caros {4}</p>
 
{2}
 
<p>Cumprimentos, {3}</p>
 
<p>Cumprimentos</p>
<p>{0}</p>
<p>Se pretender responder, use o email: {5}</p>
 
---------------------------------------------
<p>Escola Superior de Tecnologia e Gestão</p>
<p>Instituto Politécnico de Portalegre</p>
/impl/src/java/pt/estgp/estgweb/Globals.java
126,6 → 126,11
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_USER_PREFIX = ConfigProperties.getProperty("email.user.prefix");
public static final String EMAIL_SERVER_USER_SUFIX = ConfigProperties.getProperty("email.user.sufix");
public static final int EMAIL_SERVER_USER_COUNT = ConfigProperties.getIntProperty("email.user.count");
 
public static final String EMAIL_SERVER_USERNAME = ConfigProperties.getProperty("email.user");
public static final String EMAIL_SERVER_PASSWORD = ConfigProperties.getProperty("email.password");
 
/impl/src/java/pt/estgp/estgweb/services/email/SendEmailService.java
33,9 → 33,29
 
private static final String gradeUnitTemplate = Globals.TEMPLATE_EMAIL_PATH + "/" + Globals.EMAIL_GRADE_UNIT_TEMPLATE;
 
static String[] serverEmails;
static int serverEmailPos = -1;
 
static{
serverEmails = new String[Globals.EMAIL_SERVER_USER_COUNT];
for(int i = 1;i<= Globals.EMAIL_SERVER_USER_COUNT;i++)
{
serverEmails[i-1] = Globals.EMAIL_SERVER_USER_PREFIX + i + Globals.EMAIL_SERVER_USER_SUFIX;
}
}
private static synchronized String getRoundRobinEmailUser()
{
serverEmailPos++;
if(serverEmailPos >= Globals.EMAIL_SERVER_USER_COUNT)
{
serverEmailPos = 0;
}
return serverEmails[serverEmailPos];
}
public void sendEmail(Email email) throws ServiceException
{
try{
final String sendFromAddress = getRoundRobinEmailUser();
 
// Set up properties for mail session
Properties props = System.getProperties();
50,7 → 70,7
props.put("mail.smtp.port", ""+ Globals.EMAIL_SERVER_SECURITY_TLS);
authenticator = new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
return new PasswordAuthentication(sendFromAddress, password);
}
};
}
63,7 → 83,7
props.put("mail.smtp.port", Globals.EMAIL_SERVER_SECURITY_SSL);
authenticator = new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,password);
return new PasswordAuthentication(sendFromAddress,password);
}
};
}
104,17 → 124,17
 
 
 
logger.info("FROM:" + email.getFrom() + " but using: " + Globals.SYSTEM_EMAIL_BOX);
logger.info("FROM:" + email.getFrom() + " but using: " + sendFromAddress);
//if(email.getFromName() != null)
try {
message.setFrom(new InternetAddress(Globals.SYSTEM_EMAIL_BOX,Globals.SYSTEM_EMAIL_BOX));
message.setFrom(new InternetAddress(sendFromAddress,sendFromAddress));
} catch (UnsupportedEncodingException e) {
logger.error(e,e);
message.setFrom(new InternetAddress(email.getFrom()));
//message.setFrom(new InternetAddress(sendFromAddress));
}
//else
// message.setFrom(new InternetAddress(Globals.SYSTEM_EMAIL_BOX));
message.setSubject(email.getSubject() + " - não responda para este endereço");
message.setSubject(email.getSubject() + " - não responda para este endereço","utf-8");
 
if(email.isHtml())
{
213,6 → 233,11
 
public Email getMessageEmail(String from, String subject,String text, LangEnum langEnum, String target, List<String> emails, User user)
{
return getMessageEmailAdulteredFromEmail(null,from,subject,text,langEnum,target,emails,user);
}
 
public Email getMessageEmailAdulteredFromEmail(String fromEmail, String from, String subject,String text, LangEnum langEnum, String target, List<String> emails, User user)
{
// # 0 : From
// # 1 : Subject
// # 2 : Text
224,6 → 249,7
arguments.add(text);
arguments.add(user.getName());
arguments.add(target);
arguments.add(fromEmail);
 
String template;
 
243,7 → 269,10
recipients.add(e);
}
logger.info("subject: " + subject);
logger.info("user: " + user.getEmail());
if(fromEmail == null)
logger.info("user: " + user.getEmail());
else
logger.info("user altered to: " + fromEmail);
logger.info("template: " + template);
logger.info("arguments:");
for(String arg: arguments)
252,7 → 281,8
for(String rec: recipients)
logger.info(rec);
logger.info("arguments end");
Email email = new Email(subject ,recipients,user.getEmail(),template,arguments,Message.RecipientType.BCC);
fromEmail = fromEmail == null ? user.getEmail() : fromEmail;
Email email = new Email(subject ,recipients,fromEmail,template,arguments,Message.RecipientType.BCC);
email.setFromName(from + " (ESTG)");
return email;
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/dao/DocenteDao.java
New file
0,0 → 1,257
package pt.estgp.estgweb.services.sigesimports.oracle.dao;
 
import pt.estgp.estgweb.services.sigesimports.oracle.domain.Disciplina;
import pt.estgp.estgweb.services.sigesimports.oracle.domain.Docente;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
 
/**
* Created by jorgemachado on 20/01/16.
*/
public class DocenteDao extends AbstractDao<Docente> {
 
private static DocenteDao instance = null;
 
private DocenteDao() {
}
 
public static DocenteDao getInstance() {
if (instance == null)
instance = new DocenteDao();
return instance;
}
 
//deprecated
public String getTable() {
//return "DOCENTE";
return "DOCENTE";
}
 
public String getIdColumn() {
return "CD_FUNCIONARIO";
}
 
public Docente load(Integer codigo, Integer codigoInstituicao, String ano,Connection conn) throws SQLException {
 
boolean closeConn = conn == null;
if(conn == null)
conn = getCurrentConnection();
 
//NOVO DESDE A ALTERACAO DO SIGES
PreparedStatement catCMD = conn.prepareStatement("SELECT * FROM CSP.T_FUNCIONARIOS INNER JOIN SIGES.T_INDIVIDUO on SIGES.T_INDIVIDUO.ID_INDIVIDUO = CSP.T_FUNCIONARIOS.ID_INDIVIDUO where " + getIdColumn() + "=" + codigo);
ResultSet aReader = catCMD.executeQuery();
if (aReader.next()) {
Docente c = load(aReader);
c.disciplinas = loadDisciplinasDosDocentes(codigo, codigoInstituicao, ano);
catCMD.close();
aReader.close();
if(closeConn)
conn.close();
return c;
}
aReader.close();
catCMD.close();
if(closeConn)
conn.close();
//close the reader
return null;
}
 
 
protected Docente load(ResultSet aReader) throws SQLException
{
Docente d = new Docente();
d.codigoFuncionario = getDecimal("CD_FUNCIONARIO", aReader); //ok T_FUNCIONARIO
 
d.nome = getString("NOME", aReader); //ok T_INDIVIDUO FALTA VER O "NOME"
 
//d.nomeFuncionario = getString("NM_FUNCIONARIO", aReader); //ok
d.nomeFuncionarioInt = getString("NM_COMPLETO", aReader); //ok T_INDIVIDUO FALTA VER O "NOME"
 
//d.nomeFuncionarioInt = getString("NM_FUNC_INT", aReader);
d.nomeFuncionario = getString("NM_ABREVIADO", aReader); //ok T_INDIVIDUO
 
d.nomeAcademico = getString("NM_ACADEMICO", aReader); //ok T_INDIVIDUO
 
//d.sexo = getString("CD_SEXO", aReader);
d.sexo = getString("SEXO", aReader); //ok
 
d.data_nascimento = getDateTime("DT_NASCIMENTO", aReader); //ok T_INDIVIDUO
 
d.morada = getString("DS_MORADA", aReader); //ok T_INDIVIDUO
 
d.codigoPostal = getDecimal("CD_POSTAL", aReader); //ok T_INDIVIDUO confirmar com CD_POSTAL
 
//d.subCodigoPostal = getInteger("CD_SUBCOD2", aReader);
d.subCodigoPostal = getDecimal("CD_SUBPOS", aReader); //ok T_INDIVIDUO confirmar com CD_SUPPOS
 
//d.email = getString("DS_EMAIL",aReader);
d.email = getString("EMAIL", aReader); //ok T_INDIVIDUO
 
//d.numeroBi = getString("NR_BI", aReader); // FALTA VER CODIGO DE IDENTIFICACAO_TIPO em CD_TIPO_ID
d.numeroBi = getString("IDENTIFICACAO", aReader); //ok T_INDIVIDUO
 
//d.usernameNetpa = getString("USERNAME_NETPA", aReader);
d.usernameNetpa = getString("USER_NETPA", aReader); //ok T_FUNCIONARIO
return d;
}
 
public ArrayList<Integer> loadCodigosDocentes(Integer codigoInstituicao, String ano) throws SQLException {
ArrayList<Integer> codigos = new ArrayList<Integer>();
Connection conn = getCurrentConnection();
PreparedStatement catCMD = conn.prepareStatement("SELECT DISTINCT CSD.T_DOC_TURMA.CD_DOCENTE AS CD FROM CSD.T_DOC_TURMA INNER JOIN CSE.T_TBDISCIP ON CSE.T_TBDISCIP.CD_DISCIP = CSD.T_DOC_TURMA.CD_DISCIP WHERE CSD.T_DOC_TURMA.CD_LECTIVO='" + ano + "' AND CSE.T_TBDISCIP.CD_INSTITUIC=" + codigoInstituicao);
ResultSet aReader = catCMD.executeQuery();
while (aReader.next()) {
codigos.add(getDecimal("CD", aReader));
}
//close the reader
aReader.close();
catCMD.close();
conn.close();
return codigos;
}
 
/*por esta nos cursos para obter topologias das cadeiras em vez de o fazermos no docente
 
/*
Extrai do Horario de Trabalho (dos Sumários) todas as combinações de códigos Tipo aula cadeiras do docente
20128
QUERY DAS TOPOLOGIAS A PARTIR DAS CADEIRAS
 
SELECT DISTINCT
CSE.T_TBDISCIP.CD_INSTITUIC,
CSH.T_DETALHE_AULA.CD_LECTIVO AS CD_LECTIVO,
CSH.T_DETALHE_AULA.CD_PERIODO AS CD_PERIODO,
CSH.T_DETALHE_AULA.CD_DISCIP AS CD_DISCIP,
CSH.T_DETALHE_AULA.CD_TURMA AS CD_TURMA,
CSH.T_DETALHE_AULA.CD_DOCENTE AS CD_DOCENTE,
CSD.T_SUMARIOS_AULAS.CD_TIPO_AULA AS CD_TIPO_AULA
FROM CSH.T_DETALHE_AULA
JOIN CSD.T_SUMARIOS_AULAS ON
CSD.T_SUMARIOS_AULAS.CD_SUMARIO = CSH.T_DETALHE_AULA.CD_SUMARIO
AND CSD.T_SUMARIOS_AULAS.CD_ESTADO = 1
JOIN
CSE.T_TURMA ON
CSH.T_DETALHE_AULA.CD_TURMA = CSE.T_TURMA.CD_TURMA
AND
CSH.T_DETALHE_AULA.CD_LECTIVO = CSE.T_TURMA.CD_LECTIVO
AND
CSH.T_DETALHE_AULA.CD_PERIODO = CSE.T_TURMA.CD_DURACAO
AND
CSH.T_DETALHE_AULA.CD_DISCIP = CSE.T_TURMA.CD_DISCIP
JOIN
CSE.T_TBDISCIP ON
CSE.T_TBDISCIP.CD_DISCIP = CSH.T_DETALHE_AULA.CD_DISCIP
WHERE
(CSE.T_TURMA.CD_CURSO = '9500' OR CSE.T_TURMA.CD_CURSO is NULL) AND
CSE.T_TBDISCIP.CD_INSTITUIC = 4 AND
CSH.T_DETALHE_AULA.CD_DISCIP = 704330 AND
CSH.T_DETALHE_AULA.CD_LECTIVO = '201516' AND
CSH.T_DETALHE_AULA.CD_PERIODO = 'S1';
 
*
* */
public ArrayList<Disciplina> loadDisciplinasDosDocentes(Integer codigo, Integer codigoInstituicao, String ano) throws SQLException {
ArrayList<Disciplina> disciplinas = new ArrayList<Disciplina>();
Connection conn = getCurrentConnection();
PreparedStatement catCMD = conn.prepareStatement(
"SELECT DISTINCT CSE.T_TBDISCIP.CD_DISCIP AS CD_DISCIP, " +
//" CSD.T_DOC_TURMA.CD_TURMA AS CD_TURMA, " +
" CSD.T_DOC_TURMA.CD_LECTIVO, " +
" CSD.T_DOC_TURMA.CD_DURACAO, " +
" CSD.T_DOC_TURMA.CD_CURSO " +
//" CSD.T_DOC_TURMA.CD_FUNCAO_DOC, " +
//" CSD.T_SUMARIOS_AULAS.CD_TIPO_AULA " +
" FROM (CSD.T_DOC_TURMA " +
" INNER JOIN CSE.T_TBDISCIP ON CSE.T_TBDISCIP.CD_DISCIP = CSD.T_DOC_TURMA.CD_DISCIP) " +
/* " LEFT OUTER JOIN CSH.T_DETALHE_AULA ON " +
" CSH.T_DETALHE_AULA.CD_DOCENTE = CSD.T_DOC_TURMA.CD_DOCENTE " +
" AND " +
" CSH.T_DETALHE_AULA.CD_TURMA = CSD.T_DOC_TURMA.CD_TURMA " +
" AND " +
" CSH.T_DETALHE_AULA.CD_LECTIVO = CSD.T_DOC_TURMA.CD_LECTIVO " +
" AND " +
" CSH.T_DETALHE_AULA.CD_PERIODO = CSD.T_DOC_TURMA.CD_DURACAO " +
" AND " +
" CSH.T_DETALHE_AULA.CD_DISCIP = CSD.T_DOC_TURMA.CD_DISCIP " +
 
" LEFT OUTER JOIN CSD.T_SUMARIOS_AULAS ON CSD.T_SUMARIOS_AULAS.CD_SUMARIO = CSH.T_DETALHE_AULA.CD_SUMARIO " +
" AND CSD.T_SUMARIOS_AULAS.CD_ESTADO = 1 " +
*/ "WHERE " + /*((" +
" CSH.T_DETALHE_AULA.CAMPO_REFERENCIA is not null " +
" AND " +
" CSD.T_SUMARIOS_AULAS.CD_TIPO_AULA is not NULL)" + //Queremos apenas casos em que haja Detalhe e Sumario
" or CSH.T_DETALHE_AULA.CAMPO_REFERENCIA IS NULL ) " + //Se nao houver detalhe tambem queremos
" AND " +
*/
" CSD.T_DOC_TURMA.CD_LECTIVO='" + ano + "' AND CSE.T_TBDISCIP.CD_INSTITUIC=" + codigoInstituicao + " AND CSD.T_DOC_TURMA.CD_DOCENTE = " + codigo );
 
 
ResultSet aReader = catCMD.executeQuery();
while (aReader.next()) {
Disciplina d = new Disciplina();
d.codigo = getDecimal("CD_DISCIP", aReader);
d.codigoCurso = getDecimal("CD_CURSO", aReader);
//d.cdTurma = getString("CD_TURMA", aReader);
d.codigoInstituicao = codigoInstituicao;
d.cdLectivo = ano;
d.cdDuracao = getString("CD_DURACAO", aReader);
//d.cdTipologia = getDecimal("CD_TIPO_AULA", aReader);
//d.codigoFuncaoDocente = getDecimal("CD_FUNCAO_DOC",aReader);
disciplinas.add(d);
}
//close the reader
aReader.close();
catCMD.close();
conn.close();
return disciplinas;
}
 
 
/** Versao antes das Tipologias
 
public List<Disciplina> loadDisciplinasDosDocentes(Integer codigo, Integer codigoInstituicao, String ano) throws SQLException {
List<Disciplina> disciplinas = new ArrayList<Disciplina>();
Connection conn = getCurrentConnection();
PreparedStatement catCMD = conn.prepareStatement("SELECT DISTINCT CSE.T_TBDISCIP.CD_DISCIP AS CD_DISCIP, CSD.T_DOC_TURMA.CD_TURMA AS CD_TURMA, CSD.T_DOC_TURMA.CD_LECTIVO, CD_DURACAO, CD_CURSO FROM ((CSD.T_DOC_TURMA INNER JOIN CSE.T_TBDISCIP ON CSE.T_TBDISCIP.CD_DISCIP = CSD.T_DOC_TURMA.CD_DISCIP) INNER JOIN CSH.T_DETALHE_AULA ON CSH.T_DETALHE_AULA.CD_DOCENTE = CSD.T_DOC_TURMA.CD_DOCENTE AND CSH.T_DETALHE_AULA.CD_DISCIP = CSE.T_TBDISCIP.CD_DISCIP) WHERE CSD.T_DOC_TURMA.CD_LECTIVO='" + ano + "' AND CSE.T_TBDISCIP.CD_INSTITUIC=" + codigoInstituicao + " AND CSD.T_DOC_TURMA.CD_DOCENTE = " + codigo);
 
ResultSet aReader = catCMD.executeQuery();
while (aReader.next()) {
Disciplina d = new Disciplina();
d.codigo = getDecimal("CD_DISCIP", aReader);
d.codigoCurso = getDecimal("CD_CURSO", aReader);
d.cdTurma = getString("CD_TURMA", aReader);
d.codigoInstituicao = codigoInstituicao;
d.cdLectivo = ano;
d.cdDuracao = getString("CD_DURACAO", aReader);
disciplinas.add(d);
}
//close the reader
aReader.close();
catCMD.close();
conn.close();
return disciplinas;
}
***/
 
 
public static void main(String[] args) throws SQLException {
List<Integer> cods = new DocenteDao().loadCodigosDocentes(1,"201516");
for(Integer c:cods)
System.out.println(c);
List<Disciplina> ds = new DocenteDao().loadDisciplinasDosDocentes(20074,1,"201516");
for(Disciplina d: ds)
{
System.out.println(d.codigo + " - " + d.nome + " - " + d.codigoCurso + "-" + d.nomeCurso);
}
System.out.println(ds);
ds = new DocenteDao().loadDisciplinasDosDocentes(20128,1,"201516");
System.out.println(ds);
}
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/dao/AulaDao.java
113,12 → 113,13
}
 
 
public ArrayList<Aula> loadAulas(Integer codigoInstituicao, String anolectivo, String codigoUnidade, String semestre, String codigoCurso) throws SQLException {
public ArrayList<Aula> loadAulas(Integer codigoInstituicao, String anolectivo, String codigoUnidade, String semestre, String codigoCurso, Connection conn) throws SQLException {
Integer limiteSalaInferior = codigoInstituicao * 1000;
Integer limiteSalaSuperior = (codigoInstituicao + 1) * 1000;
 
boolean closeConnection = conn == null;
ArrayList<Aula> aulas = new ArrayList<Aula>();
Connection conn = getCurrentConnection();
if(conn == null)
conn = getCurrentConnection();
String query;
query = "SELECT "
+ "CSH.T_OCUPACOES.DT_OCUPACAO AS DT_OCUPACAO,"
203,7 → 204,8
//close the reader
aReader.close();
catCMD.close();
conn.close();
if(closeConnection)
conn.close();
return aulas;
}
 
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/domain/Disciplina.java
24,8 → 24,103
//Mas isto tudo do lado do Baco
public Integer cdTipoDisciplina;
 
/*Este codigo neste moemento é sempre 1 que significa responsavel mas é possivel que de futuro mude
* pois o siges permite varias funcções
*select * from CSD.T_TBFUNCAO_DOC;
* 1 Responsável S 105531 S S
2 Docente S 105532 S N
3 Convidado S 105533 N N
4 Supervisor S 2711846 N N
5 Conferencista S 2711849 N N
6 Coordenador S 2713681 S N
7 Vogal S 10025925 N N
*
* */
public Integer codigoFuncaoDocente;
 
 
/**
* @Tirado de app.properties
*
* netpa.tipo.aula.1=Teorica
netpa.tipo.aula.2=Teorico-pratica
netpa.tipo.aula.3=Pratica Laboratorial
netpa.tipo.aula.4=Seminario
netpa.tipo.aula.5=Laboratorial
netpa.tipo.aula.6=OT-Orientacao Tutorial
netpa.tipo.aula.7=Ensino Clinico
netpa.tipo.aula.8=Estagio HO
* */
public Integer cdTipologia; //vem do CD_TIPO_AULA do sumario
 
public Disciplina()
{
 
}
 
public Integer getCodigo() {
return codigo;
}
 
public String getCdLectivo() {
return cdLectivo;
}
 
public Integer getCodigoCurso() {
return codigoCurso;
}
 
public String getCdDuracao() {
return cdDuracao;
}
 
public Integer getCodigoInstituicao() {
return codigoInstituicao;
}
 
public String getCdTurma() {
return cdTurma;
}
 
public String getNome() {
return nome;
}
 
public String getNomeCurso() {
return nomeCurso;
}
 
public String getGrauCurso() {
return grauCurso;
}
 
public Integer getCdTipoDisciplina() {
return cdTipoDisciplina;
}
 
public Integer getCodigoFuncaoDocente() {
return codigoFuncaoDocente;
}
 
public Integer getCdTipologia() {
return cdTipologia;
}
 
@Override
public String toString() {
return "Disciplina{" +
"codigo=" + codigo +
", cdLectivo='" + cdLectivo + '\'' +
", codigoCurso=" + codigoCurso +
", cdDuracao='" + cdDuracao + '\'' +
", codigoInstituicao=" + codigoInstituicao +
", cdTurma='" + cdTurma + '\'' +
", nome='" + nome + '\'' +
", nomeCurso='" + nomeCurso + '\'' +
", grauCurso='" + grauCurso + '\'' +
", cdTipoDisciplina=" + cdTipoDisciplina +
", codigoFuncaoDocente=" + codigoFuncaoDocente +
", cdTipologia=" + cdTipologia +
'}';
}
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/domain/Docente.java
New file
0,0 → 1,83
package pt.estgp.estgweb.services.sigesimports.oracle.domain;
 
import java.util.Date;
import java.util.List;
 
/**
* Created by jorgemachado on 20/01/16.
*/
public class Docente
{
public Integer codigoFuncionario;
public String nome;
public String nomeFuncionario;
public String nomeFuncionarioInt;
public String nomeAcademico;
public String sexo;
public Date data_nascimento;
public String morada;
public Integer codigoPostal;
public Integer subCodigoPostal;
public String email;
public String numeroBi;
public String usernameNetpa;
public List<Disciplina> disciplinas;
 
public Docente() { }
 
public Integer getCodigoFuncionario() {
return codigoFuncionario;
}
 
public String getNome() {
return nome;
}
 
public String getNomeFuncionario() {
return nomeFuncionario;
}
 
public String getNomeFuncionarioInt() {
return nomeFuncionarioInt;
}
 
public String getNomeAcademico() {
return nomeAcademico;
}
 
public String getSexo() {
return sexo;
}
 
public Date getData_nascimento() {
return data_nascimento;
}
 
public String getMorada() {
return morada;
}
 
public Integer getCodigoPostal() {
return codigoPostal;
}
 
public Integer getSubCodigoPostal() {
return subCodigoPostal;
}
 
public String getEmail() {
return email;
}
 
public String getNumeroBi() {
return numeroBi;
}
 
public String getUsernameNetpa() {
return usernameNetpa;
}
 
public List<Disciplina> getDisciplinas() {
return disciplinas;
}
}
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportTeachersService.java
15,18 → 15,15
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum;
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage;
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages;
import pt.estgp.estgweb.services.sigesimports.oracle.dao.DocenteDao;
import pt.estgp.estgweb.services.sigesimports.oracle.dao.connection.ConnectionManager;
import pt.estgp.estgweb.services.sigesimports.oracle.domain.Disciplina;
import pt.estgp.estgweb.services.sigesimports.oracle.domain.Docente;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.Email;
import pt.ipportalegre.siges.web.services.ArrayOfDecimal;
import pt.ipportalegre.siges.web.services.Disciplina;
import pt.ipportalegre.siges.web.services.Docente;
import pt.ipportalegre.siges.web.services.SiGesWEB;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import javax.xml.namespace.QName;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.Connection;
import java.util.*;
 
/**
47,7 → 44,9
int teachersZeroUnits = 0;
int unitsNotFound = 0;
int unitsNotFoundCourseNotFound = 0;
int unitsFoundForCourseNotFound = 0;
int unitsFoundForCourseNotFoundMult = 0;
int unitsFoundForCourseNotFoundSingle = 0;
int unitsDuplicated = 0;
int unitsAddedToTeachers = 0;
int unitsRemovedToTeachers = 0;
int unitsLocalAddedNotRemoved = 0;
64,7 → 63,9
teachersZeroUnits = 0;
unitsNotFound = 0;
unitsNotFoundCourseNotFound = 0;
unitsFoundForCourseNotFound = 0;
unitsFoundForCourseNotFoundMult = 0;
unitsFoundForCourseNotFoundSingle = 0;
unitsDuplicated = 0;
unitsAddedToTeachers = 0;
unitsRemovedToTeachers = 0;
unitsLocalAddedNotRemoved = 0;
81,9 → 82,9
 
try
{
String WSDL = DaoFactory.getConfigurationDaoImpl().getSigesWebServicesWsdl();
SiGesWEB service;
try
//String WSDL = DaoFactory.getConfigurationDaoImpl().getSigesWebServicesWsdl();
//SiGesWEB service;
/*try
{
serviceLogInfo("STARTING WEB SERVICE AT " + WSDL);
service = new SiGesWEB(new URL(WSDL), new QName(Globals.SIGES_WEBSERVICE_TARGET_NAMESPACE, "SiGesWEB"));
96,24 → 97,31
return logMessages;
}
ArrayOfDecimal codigosDocentes = service.getSiGesWEBSoap().getCodigosDocentesInscritosDaInstituicao(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year);
List<BigDecimal> codigos = codigosDocentes.getDecimal();
*/
List<Integer> codigosDocentes = DocenteDao.getInstance().loadCodigosDocentes(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode(), year);
// List<BigDecimal> codigos = codigosDocentes.getDecimal();
 
Connection conn = ConnectionManager.openConnection();
int i = 1;
for (BigDecimal c : codigos)
for (Integer c : codigosDocentes)
{
 
teachersFound++;
if (i++ > MAX_COMMIT)
{
i = 0;
setProgress((int) (((float)teachersFound)/((float)codigos.size())*100.0f));
setProgress((int) (((float)teachersFound)/((float)codigosDocentes.size())*100.0f));
commitPartially();
}
 
 
Docente d = service.getSiGesWEBSoap().getDocente(c, new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year);
logger.info("Starting import Funcionario: SIGES:" + c);
//Docente d = service.getSiGesWEBSoap().getDocente(c, new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year);
Docente d = DocenteDao.getInstance().load(c, DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode(), year,conn);
logger.info("Codigo Funcionario Importado: SIGES(" + d.getCodigoFuncionario().intValue() + ") email IPP SIGES: " + d.getEmail());
serviceLogInfo("Codigo Funcionario Importado: SIGES(" + d.getCodigoFuncionario().intValue() + ") email IPP SIGES: " + d.getEmail());
logger.info("SIGES IMPORTED INFO: " + docenteToString(d));
serviceLogInfo("SIGES IMPORTED INFO: " + docenteToString(d));
Teacher t = DaoFactory.getTeacherDaoImpl().loadBySigesCode(d.getCodigoFuncionario().intValue());
boolean newUser = false;
if (t == null)
155,6 → 163,7
t.setPassword(password);
}
}
conn.close();
 
}
catch(StaleStateException e)
192,7 → 201,9
serviceLogInfo("#Teachers Zero Units: " + teachersZeroUnits);
serviceLogInfo("#Units not found: " + unitsNotFound);
serviceLogInfo("#Units with NULL COURSE : " + unitsNotFoundCourseNotFound);
serviceLogInfo("#Units added to multiple courses because NULL COURSE : " + unitsFoundForCourseNotFound);
serviceLogInfo("#Units added to one possible course because NULL COURSE : " + unitsFoundForCourseNotFoundSingle);
serviceLogInfo("#Units added to multiple possible courses because NULL COURSE : " + unitsFoundForCourseNotFoundMult);
serviceLogInfo("#Units duplicated : " + unitsDuplicated);
serviceLogInfo("#Units removed to Teachers: " + unitsRemovedToTeachers);
serviceLogInfo("#Units added to Teachers: " + unitsAddedToTeachers);
serviceLogInfo("#Units not Removed because localy added: " + unitsLocalAddedNotRemoved);
205,7 → 216,9
logger.info("#Teachers Zero Units: " + teachersZeroUnits);
logger.info("#Units not found: " + unitsNotFound);
logger.info("#Units with NULL COURSE : " + unitsNotFoundCourseNotFound);
logger.info("#Units added to multiple courses because NULL COURSE : " + unitsFoundForCourseNotFound);
logger.info("#Units added to one possible course because NULL COURSE : " + unitsFoundForCourseNotFoundSingle);
logger.info("#Units added to multiple possible courses because NULL COURSE : " + unitsFoundForCourseNotFoundMult);
logger.info("#Units duplicated : " + unitsDuplicated);
logger.info("#Units removed to Teachers: " + unitsRemovedToTeachers);
logger.info("#Units added to Teachers: " + unitsAddedToTeachers);
logger.info("#Units not Removed because localy added: " + unitsLocalAddedNotRemoved);
274,7 → 287,7
", nomeFuncionarioInt='" + d.getNomeFuncionarioInt() + '\'' +
", nomeAcademico='" + d.getNomeAcademico() + '\'' +
", sexo='" + d.getSexo() + '\'' +
", dataNascimento=" + d.getDataNascimento() +
", dataNascimento=" + d.getData_nascimento() +
", morada='" + d.getMorada() + '\'' +
", codigoPostal=" + d.getCodigoPostal() +
", subCodigoPostal=" + d.getSubCodigoPostal() +
322,8 → 335,15
teacher.setBi(teacherSiges.getNumeroBi());
teacher.setEmployerName(teacherSiges.getNomeFuncionario());
teacher.setAcademicName(teacherSiges.getNomeAcademico());
teacher.setBirthDate(teacherSiges.getDataNascimento().toGregorianCalendar().getTime());
teacher.setBirthDate(teacherSiges.getData_nascimento());
}
 
private static class TipologiaCourseUnitPair
{
CourseUnit cu;
Integer cdTipologia;
Integer cdFuncaoDocente;
}
/**
* Nao esta testado
* jm
335,11 → 355,8
private void persist(Docente teacherSiges, Teacher teacher, boolean newUser, String year,DefaultLogMessages logmessages) throws Exception
{
String msgS;
System.out.println("STATING PERSIST");
 
if(teacherSiges.getCodigoFuncionario().longValue()==20115)
System.out.println("Sergio");
if(teacherSiges.getCodigoFuncionario().longValue()==20219)
System.out.println("Eliseu");
try
{
 
437,11 → 454,11
teacher.setEmployerName(teacherSiges.getNomeFuncionario());
teacher.setAcademicName(teacherSiges.getNomeAcademico());
if(teacher.getBirthDate() == null || teacher.getBirthDate().getTime() == 0)
teacher.setBirthDate(teacherSiges.getDataNascimento().toGregorianCalendar().getTime());
teacher.setBirthDate(teacherSiges.getData_nascimento());
}
 
//Desta forma as relacoes antigas sao ignoradas cria-se uma lista nova e atribui-se ao Teacher, o Hibernate faz resto e apaga as chaves estrangeiras antigas
if (teacherSiges.getDisciplinas() == null || teacherSiges.getDisciplinas().getDisciplina() == null || teacherSiges.getDisciplinas().getDisciplina().size() == 0)
if (teacherSiges.getDisciplinas() == null || teacherSiges.getDisciplinas().size() == 0)
{
msgS = "ATENTION TEACHER WITH ZERO UNITS: codigoFuncionario " + teacherSiges.getCodigoFuncionario();
logger.warn(msgS);
450,14 → 467,17
}
else
{
System.out.println("STATING STEPS");
//1 - PROCEDIMENTO CADEIRAS SAO CARREGADAS DO BACO DA LISTA QUE VEM DO SIGES -> units
//2 - Sao retiradas da lista units as que o teacher tem mas que foram removidas localmente
//3 - Sao adicionadas ao teacher as que o docente ainda nao tiver da lista units
//4 - Remover da lista do teacher as unidades que não vêm do SIGES e que não foram adicionadas localmente
 
//PASSO 1
System.out.println("STATING STEP 1");
Set<CourseUnit> units = new HashSet<CourseUnit>();
for (Disciplina disciplina : teacherSiges.getDisciplinas().getDisciplina())
 
for (Disciplina disciplina : teacherSiges.getDisciplinas())
{
List<CourseUnit> loadedunits = new ArrayList<CourseUnit>();
if(disciplina.getCodigoCurso().intValue() < 0)
479,9 → 499,11
//TODO -- Isto vai passar a vir com Tipologias. Muda alguma coisa? A mesma cadeira vem duas vezes, mas o procedimento tem de ser o mesmo para as duas vezes
//TODO -- que ela é devolvida, caso já exista nao se faz nada, pode-se meter na lista à mesma, fica lá duas vezes, sera?
 
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUniqueAllCourses("" + disciplina.getCodigo(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo(), disciplina.getCdTurma());
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUniqueAllCourses("" + disciplina.getCodigo(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo());
if(courseUnits!=null)
{
loadedunits = courseUnits;
}
 
if(loadedunits.size() > 0)
{
493,19 → 515,33
}
msgS+=" } all added to teacher: " + teacher.getSigesCode();
logmessages.addMessage(new DefaultLogMessage("import.teachers", LogMessageTypeEnum.WARNING,msgS ));
unitsFoundForCourseNotFound++;
if(loadedunits.size() > 1)
unitsFoundForCourseNotFoundMult++;
else
unitsFoundForCourseNotFoundSingle++;
logger.warn(msgS);
serviceLogWarn(msgS);
}
}
else{
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(), "" + disciplina.getCodigoCurso(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo(),disciplina.getCdTurma());
if(courseUnit != null)
loadedunits.add(courseUnit);
 
loadedunits = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(), "" + disciplina.getCodigoCurso(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo());
if(loadedunits.size()>1)
{
unitsDuplicated++;
msgS = "WARNING WARNING #### UnitsDuplicated: ";
serviceLogWarn(msgS);
logmessages.addMessage(new DefaultLogMessage("import.teachers", LogMessageTypeEnum.WARNING,msgS ));
msgS = "WARNING WARNING ####String sigesCode, String courseCode, String semestre, String year = " + disciplina.getCodigo() + ", " + disciplina.getCodigoCurso() + ","+ disciplina.getCdDuracao() + "," + disciplina.getCdLectivo();
serviceLogWarn(msgS);
logmessages.addMessage(new DefaultLogMessage("import.teachers", LogMessageTypeEnum.WARNING,msgS ));
msgS = "WARNING WARNING ####returning first one, this could be a case of units spared because of TURMAS split used in 201516: ";
serviceLogWarn(msgS);
logmessages.addMessage(new DefaultLogMessage("import.teachers", LogMessageTypeEnum.WARNING,msgS ));
}
}
 
//Ja todas as unidades tem todas turma, um dos docentes vai perder uma e o outro docente perde a outra
//COMENTARIO OBSOLETO - VOLTAMOS AO MESMO, UMA CADEIRA VARIAS TURMAS
// Ja todas as unidades tem todas turma, um dos docentes vai perder uma e o outro docente perde a outra
//por exemplo uma que era dos dois vai continuar nos dois e será removida de um deles
//a outra será adicionada
 
530,7 → 566,9
else
units.addAll(loadedunits);
}
System.out.println("STATING STEP 2");
//PASSO 2
//2 - Sao retiradas da lista units as que o teacher tem mas que foram removidas localmente
Iterator<CourseUnit> iter = units.iterator();
while (iter.hasNext())
{
546,7 → 584,9
iter.remove();
}
}
System.out.println("STATING STEP 3");
//PASSO 3
//3 - da lista units sao adicionadas ao teacher as que sobraram do passo 2 e o docente ainda nao tiver
if (teacher.getTeachedUnits() != null)
{
for (CourseUnit c : units)
573,9 → 613,7
else
teacher.setTeachedUnits(units);
 
 
//PASSO 4 nao é feito nos teacher mas deveria ser
 
System.out.println("STATING STEP 4");
//PASSO 4
//Remover unidades deste ano que nao vem do SIGES e que nao foram adicionadas localmente
Iterator<CourseUnit> iterNowUnits = teacher.getTeachedUnits().iterator();
606,12 → 644,12
 
if(!tImpl.isLocalUnit(cUNow))
{
//todo e tirar a linha de baixo no futuro - String msg = "Removendo unidade: " + ((CourseUnitImpl)cUNow).getSigesUniqueIdentifiers() + " - do docente: " + teacher.getSigesCode() + " - Associacao desapareceu do SIGES";
String msg = "Temporariamente não mas sim adicionando localmente, Removendo unidade: " + ((CourseUnitImpl)cUNow).getSigesUniqueIdentifiers() + " - do docente: " + teacher.getSigesCode() + " - Associacao desapareceu do SIGES";
((TeacherImpl)tImpl).addUnitLocaly(cUNow);
String msg = "Removendo unidade: " + ((CourseUnitImpl)cUNow).getSigesUniqueIdentifiers() + " - do docente: " + teacher.getSigesCode() + " - Associacao desapareceu do SIGES";
//String msg = "Temporariamente não mas sim adicionando localmente, Removendo unidade: " + ((CourseUnitImpl)cUNow).getSigesUniqueIdentifiers() + " - do docente: " + teacher.getSigesCode() + " - Associacao desapareceu do SIGES";
//((TeacherImpl)tImpl).addUnitLocaly(cUNow);
serviceLogInfo(msg);
logger.info(msg);
//todo iterNowUnits.remove();
iterNowUnits.remove();
unitsRemovedToTeachers++;
}
else
624,6 → 662,7
}
}
}
System.out.println("END STEP 4");
}
 
 
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportSumariesJson.java
26,6 → 26,7
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage;
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages;
import pt.estgp.estgweb.services.sigesimports.oracle.dao.AulaDao;
import pt.estgp.estgweb.services.sigesimports.oracle.dao.connection.ConnectionManager;
import pt.estgp.estgweb.utils.Dom4jUtil;
import pt.estgp.estgweb.web.FtpServer;
import pt.ipportalegre.siges.web.services.SiGesWEB;
39,6 → 40,7
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
104,8 → 106,12
//List<Long> cUs = DaoFactory.getCourseUnitDaoImpl().loadIds(year,DatesUtils.getSemestre());
List<Long> cUs = DaoFactory.getCourseUnitDaoImpl().loadIds(year,semestre);
String nowCode = "";
Connection conn = ConnectionManager.openConnection();
boolean connError = false;
for(Long cId: cUs)
{
if(connError)
break;
nowCode = "" + cId;
countUnits++;
try
130,8 → 136,10
//comentario de teste
try
{
 
//arrayOfAulas = service.getSiGesWEBSoap().getAulas(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year,c.getCode(),semestre,c.getCourse().getCode());
arrayOfAulas = AulaDao.getInstance().loadAulas(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode(),year,c.getCode(),semestre,c.getCourse().getCode());
arrayOfAulas = AulaDao.getInstance().loadAulas(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode(),year,c.getCode(),semestre,c.getCourse().getCode(),conn);
 
break;
}
catch(Throwable t)
140,11 → 148,12
{
logger.error("Giving up of courseUnit:" + cId + " ( " + c.getName() + " ) ",t);
serviceLogError("Giving up of courseUnit:" + cId + " ( " + c.getName() + " ) ",t);
connError = true;
break;
}
 
 
logger.error("WebService Fail, trying " + tries + " times sleeping a while");
logger.error("WebService Fail, trying " + tries + " times sleeping a while",t);
serviceLogError("WebService Fail, trying " + tries + " times sleeping a while " + t.toString());
serviceLogError("WebService Fail, trying " + tries + " times sleeping a while " + t.getCause());
Thread.sleep(5000);
173,6 → 182,7
//separar tendo em conta quem entra, se for aluno só vê os
//seus sumários, se for prof vê os sumários das suas turmas
 
/*
if(c.getCdTurma() != null && aula.getAula_codigoTurma()!=null
&& c.getCdTurma().trim().length() > 0
&& aula.getAula_codigoTurma().trim().length() > 0
181,7 → 191,7
//Código de Turma diferente
System.out.println("Ignoring summary code: " + aula.getAula_codigoTurma() + " for unit " + c.getName() + "/" + c.getCode() + " T:" + c.getCdTurma());
continue;
}
}*/
 
//CourseUnitSummary s = map.get(aula.getSumNumeroAula() + ":" + aula.getCodigoSumario());
//if(s == null)
236,7 → 246,12
{
String path = generatePdf(c);
sendPdfFtpIonline(c,new ArrayList<String>(),null,path,null);
FilesUtils.delete(path);
try{
FilesUtils.delete(path);
}catch(Throwable e)
{
logger.error("trying to delete " + path,e);
}
}
if(sendEMAIL)
{
260,6 → 275,7
serviceLogError(e.toString(),e);
}
}
conn.close();
 
setProgress(100);
serviceLogError("Finish commiting");
/impl/src/java/pt/estgp/estgweb/services/announcements/CreateAnnouncementService.java
120,7 → 120,7
return userViews;
}
 
public Integer sendMessage(HttpServletRequest request, String from, String year, String department, long courseId, long courseUnitId, String semestre, MessageTarget target, String text,String subject, UserSession userSession)
public Integer sendMessage(HttpServletRequest request, String fromEmail, String from, String year, String department, long courseId, long courseUnitId, String semestre, MessageTarget target, String text,String subject, UserSession userSession)
{
//List<User> users = DaoFactory.getAnnouncementDaoImpl().findUsers(year,department,courseId,courseUnitId,semestre,target);
AnnouncementDaoImpl.FindUsersResult result = DaoFactory.getAnnouncementDaoImpl().findUsersEmails(year, department, courseId, courseUnitId, semestre, target);
139,7 → 139,7
iter.remove();
contador++;
}
Email e = sendEmailService.getMessageEmail(
Email e = sendEmailService.getMessageEmailAdulteredFromEmail(fromEmail,
jomm.utils.MessageResources.getMessage(request,"user.role." + from),
subject,
text,
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitTurmaDocenteTipologiaImpl.java
File deleted
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java
265,20 → 265,27
 
//TODO Na actualizacao 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,String turma)
public List<CourseUnit> loadBySigesCodeUnique(String sigesCode, String courseCode, String semestre, String year)
{
//todo cdTurma Rollback
return (CourseUnit)
List<CourseUnit> cus =
createCriteria()
.add(eq("code", sigesCode))
.add(eq("courseCode", courseCode))
.add(eq("semestre", semestre))
.add(eq("importYear", year))
.add(eq("cdTurma", turma))
.uniqueResult();
//not any more .add(eq("cdTurma", turma))
.list();
if(cus.size() > 1)
{
logger.warn("WARNING WARNING ####Two units found for: ");
logger.warn("WARNING WARNING ####String sigesCode, String courseCode, String semestre, String year = " + sigesCode + ", " + courseCode + "," + semestre + "," + year);
logger.warn("WARNING WARNING ####returning first one, this could be a case of units spared because of TURMAS split used in 201516: ");
}
 
return cus;
}
 
public List<CourseUnit> loadBySigesCodeUniqueAllCourses(String sigesCode, String semestre, String year,String turma)
public List<CourseUnit> loadBySigesCodeUniqueAllCourses(String sigesCode, String semestre, String year)
{
//todo cdTurma Rollback
return
287,7 → 294,7
// REMOVED TO LET BE ALL COURSES .add(eq("courseCode", courseCode))
.add(eq("semestre", semestre))
.add(eq("importYear", year))
.add(eq("cdTurma", turma))
//not anymore .add(eq("cdTurma", turma))
.list();
}
 
/impl/src/java/pt/estgp/estgweb/web/form/announcements/MessagesForm.java
18,6 → 18,7
 
private String importYear = DaoFactory.getConfigurationDaoImpl().getInterfaceImportYearCreateTransaction();
 
private String fromEmail;
private String fromRole;
private CourseView courseView;
private String departamento;
80,6 → 81,14
this.courseViews = courseViews;
}
 
public String getFromEmail() {
return fromEmail;
}
 
public void setFromEmail(String fromEmail) {
this.fromEmail = fromEmail;
}
 
public MessagesForm()
{
 
/impl/src/java/pt/estgp/estgweb/web/controllers/announcements/MessagesController.java
138,7 → 138,7
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{request, mF.getFromRole(),mF.getImportYear(),mF.getDepartamento(),mF.getCourseId(),mF.getCourseUnitId(),mF.getSemestre(), CreateAnnouncementService.MessageTarget.parse(mF.getTarget()),mF.getText(),mF.getSubject()};
Object[] args = new Object[]{request, mF.getFromEmail(),mF.getFromRole(),mF.getImportYear(),mF.getDepartamento(),mF.getCourseId(),mF.getCourseUnitId(),mF.getSemestre(), CreateAnnouncementService.MessageTarget.parse(mF.getTarget()),mF.getText(),mF.getSubject()};
// String from, String year, String department, long courseId, long courseUnitId, String semestre, MessageTarget target,
Integer size = (Integer) sm.execute(RequestUtils.getRequester(request, response), "SendMessage", args, names);
 
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml
33,7 → 33,7
<column name="evaluationOpenByAdmin" default="false"/>
</property>
<property name="summariesJson" type="text">
<column name="summariesJson" sql-type="TEXT"/>
<column name="summariesJson" sql-type="MEDIUMTEXT"/>
</property>
<property name="tipologiaJson" type="text">
<column name="tipologiaJson" sql-type="TEXT"/>
/impl/src/web/admin/announcements/submitMessage.jsp
35,6 → 35,14
 
<tr>
<th>
Email de Origem para aparecer na mensagem
</th>
<td>
<html:text property="fromEmail"></html:text> ** Se deixar por preencher fica o email pessoal
</td>
</tr>
<tr>
<th>
<bean:message key="announcement.sendAnnouncementLike"/>
</th>
<td>
156,7 → 164,11
 
})();
 
setTimeout("setText()",500);
$(document).ready(
function(){
setText();
}
);
 
 
function setText()
/impl/src/web/css/style.css
802,10 → 802,6
margin-bottom: 10px;
}
 
a
{
color: #4d4d4d !important;
}
.contentPortal li a .contentPortal li {
color: #4d4d4d;
}
/impl/src/web/css/lavish-bootstrap.css
3531,7 → 3531,7
}
}
.navbar-collapse {
 
max-height: 340px;
overflow-x: visible;
padding-right: 15px;
padding-left: 15px;
4571,15 → 4571,6
text-decoration: none;
background-color: #f5f5f5;
}
 
.list-group-item-info {
color: #8a6100;
background-color: #ffdb96;
}
a.list-group-item-info,
button.list-group-item-info {
color: #8a6100;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
4775,18 → 4766,18
border-bottom-color: #eed3d7;
}
.panel-info {
border-color: #e8d68a;
border-color: #bce8f1;
}
.panel-info > .panel-heading {
color: #8a6100;
background-color: #ffdb96;
border-color: #e8d68a;
color: #3a87ad;
background-color: #d9edf7;
border-color: #bce8f1;
}
.panel-info > .panel-heading + .panel-collapse .panel-body {
border-color: #e8d68a;
border-top-color: #bce8f1;
}
.panel-info > .panel-footer + .panel-collapse .panel-body {
border-color: #e8d68a;
border-bottom-color: #bce8f1;
}
.well {
min-height: 20px;
/impl/src/web/user/home/student.jsp
53,6 → 53,7
</li>
</ul>
</logic:notMatch>
<jsp:include page="todosAfazer.jsp"/>
<table class="columnTable" width="100%">
<tbody>
<tr>
/impl/src/web/user/home/teacher.jsp
29,6 → 29,7
</li>
</ul>
</logic:notMatch>
<jsp:include page="todosAfazer.jsp"/>
<table class="columnTable" width="100%">
<tbody>
<tr>
121,9 → 122,10
%>
</div>
</baco:isModuleOn>
<%--
<baco:isModuleOn module="todos">
<jsp:include page="/user/home/todos.jsp"/>
</baco:isModuleOn>
</baco:isModuleOn>--%>
<baco:isModuleOn module="courseunits">
<jsp:include page="/user/home/courseUnitsAnnouncements.jsp"/>
</baco:isModuleOn>
/impl/src/web/user/home/todosAfazer.jsp
New file
0,0 → 1,100
<%@ page import="pt.estgp.estgweb.services.common.IToDoCat" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
<%@ page import="jomm.utils.MessageResources" %>
<%@ page import="pt.estgp.estgweb.services.common.IToDo" %>
<%@ page import="pt.estgp.estgweb.services.common.ModuleEnum" %>
<%@ 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" %>
<%--
Created by IntelliJ IDEA.
User: Jorge
Date: 2/Jun/2008
Time: 16:01:47
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
<%
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{};
 
List<IToDoCat> todos = (List<IToDoCat>) sm.execute(RequestUtils.getRequester(request, response), "CommonServicesGetAllTodosCat", args, names);
%>
 
 
 
<%
for (IToDoCat toDoCat : todos)
{
if (toDoCat.getDescription().equals(ModuleEnum.TodoAnnouncements.getMessageKey()))
{
 
%>
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="panel panel-primary">
<div class="panel-heading"><bean:message key="intranet.todo"/></div>
<div class="panel-body">
 
<div class="list-group">
<div class="list-group-item active">
<%=MessageResources.getMessage(request, toDoCat.getDescription())%> (<%=toDoCat.getTotalToDo()%>)
</div>
 
<%
for (IToDo todo : toDoCat.getAllToDos())
{
%>
<div class="list-group-item">
<%
if (todo.getUrl() != null)
{
%>
 
<a href="<%=request.getContextPath() + todo.getUrl()%>">
<%
if(todo.getCatArg0() == null && todo.getCatKey() != null)
{
out.print(MessageResources.getMessage(request,todo.getCatKey()) + ":");
}
else if(todo.getCatArg0() != null && todo.getCatKey() != null)
{
out.print(MessageResources.getMessage(request,todo.getCatKey(),todo.getCatArg0()) + ":");
}
%>
<%=todo.getLabelInsideCat(request)%>
</a>
<img src="<%=request.getContextPath()%>/imgs/preencher.gif" width="35px"/>
<%
}
else
{
%>
<%=todo.getLabelInsideCat(request)%>
<%
}
%>
</div>
<%
}
%>
</div>
</div>
</div>
</div>
</div>
 
<%
}
}
%>