/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> |
<% |
} |
} |
%> |