/impl/importRoutines.xml |
---|
7,20 → 7,22 |
<target name="courses"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportCourseService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"> |
<!--<arg value="201314"/>--> |
<!--<arg value="201415"/>--> |
<!-- CLONE PROGRAMS --> |
<target name="sincronizeunits"> |
<java classname="pt.estgp.estgweb.services.sigesimports.SincronizeLastYearCourseUnitProgramsService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"> |
<arg value="201516"/> |
<arg value="true"/> <!-- Clone Only News --> |
<arg value="false"/> <!-- Generate all pdfs --> |
</java> |
</target> |
<target name="sincronizeunits"> |
<java classname="pt.estgp.estgweb.services.sigesimports.SincronizeLastYearCourseUnitProgramsService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"> |
</target> |
<!-- CORE PROCESSES --> |
<target name="courses"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportCourseService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"> |
<!--<arg value="201314"/>--> |
<!--<arg value="201415"/>--> |
<arg value="201516"/> |
<arg value="true"/> |
<arg value="false"/> |
</java> |
</target> |
<target name="teachers"> |
28,7 → 30,6 |
<!--<arg value="201314"/>--> |
<!--<arg value="201415"/>--> |
<arg value="201516"/> |
</java> |
</target> |
<target name="students"> |
36,17 → 37,33 |
<!--<arg value="201314"/>--> |
<!--<arg value="201415"/>--> |
<arg value="201516"/> |
</java> |
</java> |
</target> |
<target name="grades"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportGradesService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
<target name="summaries"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportSumariesJson" classpath="${build.dir.classes}" classpathref="pathToToolsLib"> |
<arg value="201516"/> |
<arg value="S1"/> |
<arg value="true"/> |
<arg value="false"/> |
</java> |
</target> |
<!-- JOB RUNNER --> |
<target name="jobs"> |
<java classname="pt.estgp.estgweb.services.jobs.JobDeamon" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
<target name="summaries"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportSumariesJson" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
<!-- PONTUAIS --> |
<target name="grades"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportGradesService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
<target name="setAreas"> |
<java fork="true" classname="pt.estgp.estgweb.services.courses.SetUserArea" classpath="${build.dir.classes}" classpathref="pathToToolsLib"/> |
</target> |
/impl/src/java/pt/estgp/estgweb/utils/DatesUtils.java |
---|
9,6 → 9,7 |
import java.text.MessageFormat; |
import java.text.SimpleDateFormat; |
import java.util.ArrayList; |
import java.util.Date; |
import java.util.List; |
/** |
172,6 → 173,22 |
return finalFormat.format(years); |
} |
static SimpleDateFormat formatFileSystem = new SimpleDateFormat("yyyyMMdd_HHmmss"); |
/** |
* |
* @param d java.util.Date |
* @return a string formated like this: |
* |
* 20151103_043500 |
* |
* for 2015/11/03 at 04:35:00 time |
*/ |
public static String getFormatedFileSystem(Date d) |
{ |
return formatFileSystem.format(d); |
} |
public static List<String> getImportYears(int size) |
{ |
MyCalendar mc = new MyCalendar(); |
/impl/src/java/pt/estgp/estgweb/services/courseunits/DirectedCoordinatedUnitsService.java |
---|
263,6 → 263,7 |
if(courseUnit.isValidProgram() != courseUnitView.isValidProgram()) |
{ |
courseUnit.setValidProgram(courseUnitView.isValidProgram()); |
courseUnit.setValidatorUser(usession.getUser()); |
counter++; |
new SaveCourseUnitProgram().createPdf(courseUnit,null,usession); |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportStudentsService.java |
---|
46,18 → 46,24 |
int unitsNotFound = 0; |
int unitsRemovedToStudents = 0; |
int unitsLocalAddedNotRemoved = 0; |
int unitsLocallyRemovedNotAdded = 0; |
int alunosFound = 0; |
int studentsChangeBI = 0; |
int unitsAddedToStudents = 0; |
public ILogMessages run(String year) throws ServiceException |
{ |
studentsMerged = 0; |
studentsNew = 0; |
studentsZeroUnits = 0; |
unitsNotFound = 0; |
unitsRemovedToStudents = 0; |
unitsLocalAddedNotRemoved = 0; |
unitsLocallyRemovedNotAdded = 0; |
alunosFound = 0; |
studentsChangeBI = 0; |
unitsAddedToStudents = 0; |
String msgS = "STARTING STUDENTS IMPORT SERVICE FOR YEAR: " + year; |
serviceLogInfo(msgS); |
92,7 → 98,7 |
if (i++ > MAX_COMMIT) |
{ |
i = 0; |
setProgress((int) (((float)alunosFound)/((float)codigos.size())*100)); |
setProgress((int) (((float)alunosFound)/((float)codigos.size())*100.0f)); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
} |
173,11 → 179,10 |
AbstractDao.getCurrentSession().beginTransaction(); |
logger.error(e,e); |
serviceLogError("Rolling back will lost previous updates: " + e.toString(),e); |
sendNotificationAdmin("Erro de importacao de alunos",e.toString()); |
sendNotificationAdmin("Erro de base de dados importacao de alunos, provavelmente chave errada, corrigir no MySql",e.toString()); |
} |
catch(Throwable e) |
{ |
logger.error(e,e); |
logMessages.addMessage(new DefaultLogMessage("import.error",e.toString(), "see log for details", LogMessageTypeEnum.ERROR)); |
serviceLogError(e.toString(),e); |
193,8 → 198,10 |
serviceLogInfo("#Students Merged: " + studentsMerged); |
serviceLogInfo("#Students Zero Units: " + studentsZeroUnits); |
serviceLogInfo("#Units not found: " + unitsNotFound); |
serviceLogInfo("#Units added to Students: " + unitsAddedToStudents); |
serviceLogInfo("#Units removed to Students: " + unitsRemovedToStudents); |
serviceLogInfo("#Units not Removed because localy added: " + unitsLocalAddedNotRemoved); |
serviceLogInfo("#Units not Added because localy removed: " + unitsLocallyRemovedNotAdded); |
if(studentsChangeBI>0) |
{ |
serviceLogInfo("#>>>>>AVISO AVISO<<<<<<<<<: "); |
243,6 → 250,7 |
{ |
studentsNew++; |
cloneFields(alunoSiges, student); |
serviceLogInfo("NOVO ALUNO ENCONTRADO: siges:" + student.getSigesCode() + " bi:" + student.getBi() + " nome:" + student.getName()); |
} |
//CASO EM QUE O ALUNO NO SIGES FOI ATRIBUIDO A OUTRO ESTUDANTE PARA PREENCHER BURACO NA NUMERACAO |
else if(alunoSiges.getNumeroBi() == null || student.getBi() == null || ! alunoSiges.getNumeroBi().equals(student.getBi())) |
254,6 → 262,7 |
builder.append("ATENCAO NUMERO DE ALUNO " + alunoSiges.getCodigo() + " MUDOU DE DONO VAI SER BLOQUEADO IMEDIATAMENTE\n"); |
builder.append("ALTERANDO DADOS DO ALUNO " + alunoSiges.getCodigo() + "\n"); |
builder.append("<<<<<<<ANTES: " + "\n"); |
builder.append("<<<<<<<BI: " + student.getBi() + "\n"); |
builder.append("<<<<<<<Nome: " + student.getName() + "\n"); |
builder.append("<<<<<<<Username: " + student.getUserNameNetpa() + "\n"); |
builder.append("<<<<<<<Address: " + student.getAddress() + "\n"); |
267,6 → 276,7 |
student.setManualBlock(true); |
builder.append("DEPOIS: " + "\n"); |
builder.append("BI: " + student.getBi() + "\n"); |
builder.append("Nome: " + student.getName() + "\n"); |
builder.append("Username: " + student.getUserNameNetpa() + "\n"); |
builder.append("Address: " + student.getAddress() + "\n"); |
290,6 → 300,13 |
} |
else |
{ |
//1 - PROCEDIMENTO CADEIRAS SAO CARREGADAS DO BACO DA LISTA QUE VEM DO SIGES -> units |
//2 - Sao retiradas da lista units as que o aluno tem mas que foram removidas localmente |
//3 - Sao adicionadas ao aluno as que o aluno ainda nao tiver da lista units |
//4 - Remover da lista do aluno as unidades que não vêm do SIGES e que não foram adicionadas localmente |
//PASSO 1 |
Set<CourseUnit> units = new HashSet<CourseUnit>(); |
ArrayOfDisciplina disciplinas = alunoSiges.getDisciplinasInscrito(); |
for (Disciplina disciplina : disciplinas.getDisciplina()) |
305,6 → 322,8 |
else |
units.add(courseUnit); |
} |
//PASSO 2 |
Iterator<CourseUnit> iter = units.iterator(); |
StudentImpl sImpl = (StudentImpl) DaoFactory.getStudentDaoImpl().narrow(student); |
while (iter.hasNext()) |
314,13 → 333,15 |
if(sImpl.isLocalRemovedUnit(courseUnit)) |
{ |
String msg = "Removendo unidade: " + courseUnit.getCode() + " - do aluno: " + student.getSigesCode() + " - Associacao existe no SIGES mas foi removido LOCALMENTE"; |
unitsLocallyRemovedNotAdded++; |
String msg = "Removendo unidade: " + ((CourseUnitImpl)courseUnit).getSigesUniqueIdentifiers() + " - do aluno: " + student.getSigesCode() + " - Associacao existe no SIGES mas foi removido LOCALMENTE"; |
serviceLogInfo(msg); |
logger.info(msg); |
iter.remove(); |
} |
} |
//PASSO 3 |
if(student.getSubscribedUnits() != null) |
{ |
for(CourseUnit c: units) |
335,12 → 356,19 |
} |
} |
if(!isIn) |
{ |
String msg = "Adicionando unidade: " + ((CourseUnitImpl)c).getSigesUniqueIdentifiers() + " - ao aluno: " + student.getSigesCode() + " - Associacao nova no SIGES"; |
serviceLogInfo(msg); |
logger.info(msg); |
unitsAddedToStudents++; |
student.getSubscribedUnits().add(c); |
} |
} |
} |
else |
student.setSubscribedUnits(units); |
//PASSO 4 |
//Remover unidades deste ano que nao vem do SIGES e que nao foram adicionadas localmente |
Iterator<CourseUnit> iterNowUnits = student.getSubscribedUnits().iterator(); |
while(iterNowUnits.hasNext()) |
369,7 → 397,7 |
if(!sImpl.isLocalUnit(cUNow)) |
{ |
String msg = "Removendo unidade: " + cUNow.getCode() + " - do aluno: " + student.getSigesCode() + " - Associacao desapareceu do SIGES"; |
String msg = "Removendo unidade: " + ((CourseUnitImpl)cUNow).getSigesUniqueIdentifiers() + " - do aluno: " + student.getSigesCode() + " - Associacao desapareceu do SIGES"; |
serviceLogInfo(msg); |
logger.info(msg); |
iterNowUnits.remove(); |
377,7 → 405,7 |
} |
else |
{ |
String msg = "NAO REMOVIDA - Unidade: " + cUNow.getCode() + " - do aluno: " + student.getSigesCode() + " - Associacao desapareceu do SIGES mas foi adicionada localmente"; |
String msg = "NAO REMOVIDA - Unidade: " + ((CourseUnitImpl)cUNow).getSigesUniqueIdentifiers() + " - do aluno: " + student.getSigesCode() + " - Associacao desapareceu do SIGES mas foi adicionada localmente"; |
serviceLogInfo(msg); |
logger.info(msg); |
unitsLocalAddedNotRemoved++; |
412,10 → 440,6 |
} |
@Override |
public String getLogPathPrefix() { |
return getClass().getName(); |
} |
/** |
* Testar por aqui poi requer Super Role e assim e' autmatico |
* |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/SincronizeLastYearCourseUnitProgramsService.java |
---|
92,7 → 92,7 |
if (i++ > MAX_COMMIT) |
{ |
i = 0; |
setProgress((int) (((float)foundTotal)/((float)units.size())*100)); |
setProgress((int) (((float)foundTotal)/((float)units.size())*100.0f)); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
serviceLogInfo("Commiting database"); |
134,9 → 134,9 |
updated++; |
CourseUnitProgramImpl cProgram = (CourseUnitProgramImpl) DaoFactory.getCourseUnitProgramDaoImpl().narrow(cu.getCourseUnitProgram()); |
cProgram.cloneFrom(cuOld.getCourseUnitProgram()); |
//List<String> errors = new ArrayList<String>(); |
List<String> errors = new ArrayList<String>(); |
clonados.add(cu.getCode()); |
//todo JOBS service.createPdf(cu,errors); |
service.createPdf(cu,errors); |
cu.setValidProgram(validate); |
} |
else |
171,9 → 171,9 |
serviceLogInfo("Ficha nao alterada. razao: cloneOnlyNews=true"); |
if(generateAllPdfs) |
{ |
//List<String> errors = new ArrayList<String>(); |
/*todo JOBS if(cu.getCourseUnitProgram() != n ull) |
service.createPdf(cu,errors);*/ |
List<String> errors = new ArrayList<String>(); |
if(cu.getCourseUnitProgram() != null) |
service.createPdf(cu,errors); |
} |
} |
404,8 → 404,4 |
run(importYear,cloneOnlyNews,generateAllPdfs,validate); |
} |
@Override |
public String getLogPathPrefix() { |
return getClass().getName(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportTeachersService.java |
---|
2,15 → 2,15 |
import jomm.dao.impl.AbstractDao; |
import org.apache.log4j.Logger; |
import org.hibernate.HibernateException; |
import org.hibernate.StaleStateException; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
import pt.estgp.estgweb.domain.Teacher; |
import pt.estgp.estgweb.domain.TeacherImpl; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.common.CommonServicesManager; |
import pt.estgp.estgweb.services.email.SendEmailService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.jobs.ServiceJob; |
import pt.estgp.estgweb.services.logresults.ILogMessages; |
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage; |
35,33 → 35,78 |
* @time 12:51:32 |
* @see pt.estgp.estgweb |
*/ |
public class ImportTeachersService implements IService |
public class ImportTeachersService extends ServiceJob implements IService |
{ |
private static final Logger logger = Logger.getLogger(ImportTeachersService.class); |
private static final int MAX_COMMIT = 100; |
//int studentsMerged = 0; |
int teachersNew = 0; |
int teachersZeroUnits = 0; |
int unitsNotFound = 0; |
int unitsAddedToTeachers = 0; |
int unitsRemovedToTeachers = 0; |
int unitsLocalAddedNotRemoved = 0; |
int teachersFound = 0; |
int teachersChangeBI = 0; |
int unitsLocallyRemovedNotAdded = 0; |
//todo meter a zero no run |
public ILogMessages run(String year) throws ServiceException |
{ |
teachersNew = 0; |
teachersZeroUnits = 0; |
unitsNotFound = 0; |
unitsAddedToTeachers = 0; |
unitsRemovedToTeachers = 0; |
unitsLocalAddedNotRemoved = 0; |
teachersFound = 0; |
teachersChangeBI = 0; |
unitsLocallyRemovedNotAdded = 0; |
String msgS = "STARTING TEACHERS IMPORT SERVICE FOR YEAR: " + year; |
serviceLogInfo(msgS); |
logger.info(msgS); |
DefaultLogMessages logMessages = new DefaultLogMessages(); |
logMessages.addMessage(new DefaultLogMessage("import.teachers", LogMessageTypeEnum.INFO, "instituicao " + Globals.SIGES_INSTITUTION_CODE)); |
logger.info("starting teacher import"); |
try |
{ |
SiGesWEB service; |
try |
{ |
serviceLogInfo("STARTING WEB SERVICE AT " + Globals.SIGES_WEBSERVICE_WSDL); |
service = new SiGesWEB(new URL(Globals.SIGES_WEBSERVICE_WSDL), new QName(Globals.SIGES_WEBSERVICE_TARGET_NAMESPACE, "SiGesWEB")); |
} |
catch (MalformedURLException e) |
{ |
logMessages.addMessage(new DefaultLogMessage("import.error", e.toString(), "erro na configuracao do WEB Service", LogMessageTypeEnum.INFO)); |
logger.fatal(e, e); |
serviceLogFatal(logMessages.getLastMessage(), e); |
return logMessages; |
} |
ArrayOfDecimal codigosDocentes = service.getSiGesWEBSoap().getCodigosDocentesInscritosDaInstituicao(Globals.SIGES_INSTITUTION_CODE, year); |
List<BigDecimal> codigos = codigosDocentes.getDecimal(); |
int i = 1; |
for (BigDecimal c : codigos) |
{ |
teachersFound++; |
if (i++ > MAX_COMMIT) |
{ |
i = 0; |
setProgress((int) (((float)teachersFound)/((float)codigos.size())*100.0f)); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
} |
Docente d = service.getSiGesWEBSoap().getDocente(c, Globals.SIGES_INSTITUTION_CODE, year); |
logger.info("Codigo Funcionario Importado: SIGES(" + d.getCodigoFuncionario().intValue() + ") email IPP SIGES: " + d.getEmail()); |
logger.info("SIGES IMPORTED INFO: " + docenteToString(d)); |
69,19 → 114,27 |
boolean newUser = false; |
if (t == null) |
{ |
logger.info("Teacher does not exist in baco, will create SIGES:" + d.getCodigoFuncionario().intValue()); |
msgS = "Teacher does not exist in baco, will create SIGES:" + d.getCodigoFuncionario().intValue(); |
logger.info(msgS); |
serviceLogInfo(msgS); |
t = DomainObjectFactory.createTeacherImpl(); |
DaoFactory.getTeacherDaoImpl().save(t); |
newUser = true; |
teachersNew++; |
} |
else |
{ |
logger.info("Teacher EXIST in baco with SIGES: " + d.getCodigoFuncionario().intValue()); |
msgS = "Teacher EXIST in baco with SIGES: " + d.getCodigoFuncionario().intValue(); |
logger.info(msgS); |
//serviceLogInfo(msgS); //NOT NEED EXCESS OF INFORMATION |
} |
logger.info("Will persist SIGES(" + d.getCodigoFuncionario().intValue() + ") baco (username:" + t.getUsername() + ") baco name:" + t.getName()); |
msgS = "Will persist SIGES(" + d.getCodigoFuncionario().intValue() + ") baco (username:" + t.getUsername() + ") baco name:" + t.getName(); |
logger.info(msgS); |
serviceLogInfo(msgS); |
try |
{ |
persist(d, t, newUser); |
persist(d, t, newUser,year); |
} |
catch (Exception e) |
{ |
98,19 → 151,85 |
t.setPassword(password); |
} |
} |
} |
catch(StaleStateException e) |
{ |
AbstractDao.getCurrentSession().getTransaction().rollback(); |
AbstractDao.getCurrentSession().beginTransaction(); |
logger.error(e,e); |
serviceLogError("Rolling back will lost previous updates: " + e.toString(),e); |
sendNotificationAdmin("Erro de importacao de docentes",e.toString()); |
} |
catch(HibernateException e) |
{ |
AbstractDao.getCurrentSession().getTransaction().rollback(); |
AbstractDao.getCurrentSession().beginTransaction(); |
logger.error(e,e); |
serviceLogError("Rolling back will lost previous updates: " + e.toString(),e); |
sendNotificationAdmin("Erro de base de dados importacao de docentes, provavelmente chave errada, corrigir no MySql",e.toString()); |
} |
catch (Throwable e) |
{ |
logMessages.addMessage(new DefaultLogMessage("import.error", e.toString(), "see log for details", LogMessageTypeEnum.ERROR)); |
logger.error(e, e); |
throw new ServiceException(e.toString(), e); |
} |
serviceLogInfo("############################"); |
serviceLogInfo("############################"); |
serviceLogInfo("#Teachers found: " + teachersFound); |
serviceLogInfo("#Teachers New: " + teachersNew); |
serviceLogInfo("#Teachers Zero Units: " + teachersZeroUnits); |
serviceLogInfo("#Units not found: " + unitsNotFound); |
serviceLogInfo("#Units removed to Teachers: " + unitsRemovedToTeachers); |
serviceLogInfo("#Units added to Teachers: " + unitsAddedToTeachers); |
serviceLogInfo("#Units not Removed because localy added: " + unitsLocalAddedNotRemoved); |
serviceLogInfo("#Units not Added because localy removed: " + unitsLocallyRemovedNotAdded); |
if(teachersChangeBI>0) |
{ |
serviceLogInfo("#>>>>>AVISO AVISO<<<<<<<<<: "); |
serviceLogInfo("#>>>>>AVISO AVISO<<<<<<<<<: "); |
serviceLogInfo("#>>>>>NUMEROS DE PROFESSORES MUDARAM DE BI<<<<<<<<<: CONSULTAR LOG"); |
serviceLogInfo("#CODIGO SIGES COM BIs DIFERENTES:" + teachersChangeBI); |
} |
setProgress(100); |
logMessages.addMessage(new DefaultLogMessage("import.teachers.terminating", LogMessageTypeEnum.INFO)); |
logger.info("terminating teacher import"); |
serviceLogInfo("terminating teacher import"); |
return logMessages; |
} |
/** |
* Envio de Notificação aos operadores do CI |
* @param subject |
* @param cause |
*/ |
private void sendNotificationAdmin(String subject, String cause) |
{ |
//todo JOB |
List<String> emails = ConfigProperties.getListValues("admin.email"); |
for(String email:emails) |
{ |
serviceLogWarn(">>>>>>>>ENVIANDO NOTIFICACAO A ADMINISTRACAO: " + email); |
logger.warn(">>>>>>>>ENVIANDO NOTIFICACAO A ADMINISTRACAO: " + email); |
} |
List<String> arguments = new ArrayList<String>(); |
arguments.add(cause.replace("\n","<br/>")); |
Email email = new Email(subject,emails,Globals.SYSTEM_EMAIL_BOX,"messageToAdmin_pt.txt",arguments); |
try { |
new SendEmailService().sendEmail(email); |
} catch (ServiceException e) { |
e.printStackTrace(); |
} |
} |
/** |
* Implementação local do toString para a class Docente que foi gerada pelos web-services |
* @param d |
* @return |
134,90 → 253,212 |
", disciplinas=" + d.getDisciplinas() + |
'}'; |
} |
private void cloneFields(Docente teacherSiges, Teacher teacher) |
{ |
teacher.setName(teacherSiges.getNomeFuncionarioInt()); |
teacher.setEmail(teacherSiges.getEmail()); |
String msgS; |
if(teacherSiges.getEmail() != null && teacherSiges.getEmail().endsWith(Globals.EMAIL_LOCAL_SUFFIX)) |
{ |
int atIndex = teacherSiges.getEmail().indexOf("@"); |
if (atIndex > 0) |
{ |
teacher.setUsername(teacherSiges.getEmail().substring(0, atIndex)); |
msgS = "Teacher SIGES:" + teacherSiges.getCodigoFuncionario().intValue() + " foi-lhe atribuido o username d" + teacherSiges.getEmail().substring(0, atIndex); |
logger.info(msgS); |
serviceLogInfo(msgS); |
} |
else |
{ |
msgS = "Teacher SIGES:" + teacherSiges.getCodigoFuncionario().intValue() + " NAO lhe foi atribuido username o email não tem o caracter @"; |
logger.info(msgS); |
serviceLogInfo(msgS); |
} |
} |
else |
{ |
msgS = "Teacher SIGES:" + teacherSiges.getCodigoFuncionario().intValue() + " nao tem email no SIGES foi-lhe atribuido o username d" + teacherSiges.getCodigoFuncionario().intValue(); |
logger.info(msgS); |
serviceLogInfo(msgS); |
teacher.setUsername("d" + teacherSiges.getCodigoFuncionario().intValue()); |
} |
teacher.setSigesCode(teacherSiges.getCodigoFuncionario().intValue()); |
teacher.setAddress(teacherSiges.getMorada()); |
teacher.setZip("" + teacherSiges.getCodigoPostal().intValue()); |
teacher.setBi(teacherSiges.getNumeroBi()); |
teacher.setEmployerName(teacherSiges.getNomeFuncionario()); |
teacher.setAcademicName(teacherSiges.getNomeAcademico()); |
teacher.setBirthDate(teacherSiges.getDataNascimento().toGregorianCalendar().getTime()); |
} |
/** |
* Nao esta testado |
* jm |
* |
* @param d docente |
* @param t teacher |
* @param teacherSiges docente |
* @param teacher teacher |
* @throws Exception . |
*/ |
private void persist(Docente d, Teacher t, boolean newUser) throws Exception |
private void persist(Docente teacherSiges, Teacher teacher, boolean newUser, String year) throws Exception |
{ |
String msgS; |
try |
{ |
if(t.getName() == null || t.getName().length() == 0) |
t.setName(d.getNomeFuncionarioInt()); |
//Email instituicao |
if(t.getEmail() == null || t.getEmail().indexOf("@") < 0) |
t.setEmail(d.getEmail()); |
if (d.getEmail() != null && (t.getUsername() == null || t.getUsername().trim().length() == 0) && d.getEmail().endsWith(Globals.EMAIL_LOCAL_SUFFIX)) |
if(newUser) |
{ |
int atIndex = d.getEmail().indexOf("@"); |
if (atIndex > 0) |
teachersNew++; |
cloneFields(teacherSiges, teacher); |
serviceLogInfo("NOVO PROFESSOR ENCONTRADO: siges:" + teacherSiges.getCodigoFuncionario() + " bi:" + teacher.getBi() + " nome:" + teacher.getName()); |
} |
//CASO EM QUE O DOCENTE NO SIGES FOI ATRIBUIDO A OUTRO ESTUDANTE PARA PREENCHER BURACO NA NUMERACAO |
else if(teacherSiges.getNumeroBi() == null || teacher.getBi() == null || ! teacherSiges.getNumeroBi().equals(teacher.getBi())) |
{ |
teachersChangeBI++; |
StringBuilder builder = new StringBuilder(); |
builder.append("ATENCAO NUMERO DE PROFESSOR " + teacherSiges.getCodigoFuncionario() + " MUDOU DE DONO VAI SER BLOQUEADO IMEDIATAMENTE\n"); |
builder.append("ALTERANDO DADOS DO PROFESSOR " + teacherSiges.getCodigoFuncionario() + "\n"); |
builder.append("<<<<<<<ANTES: " + "\n"); |
builder.append("<<<<<<<BI: " + teacher.getBi() + "\n"); |
builder.append("<<<<<<<Nome: " + teacher.getName() + "\n"); |
builder.append("<<<<<<<Username: " + teacher.getUserNameNetpa() + "\n"); |
builder.append("<<<<<<<Address: " + teacher.getAddress() + "\n"); |
builder.append("<<<<<<<Zip: " + teacher.getZip() + "\n"); |
builder.append("<<<<<<<Email: " + teacher.getEmail() + "\n"); |
builder.append("<<<<<<<Phone: " + teacher.getPhonenumber() + "\n"); |
cloneFields(teacherSiges, teacher); |
//teacher.setAutoBlockMode(false); |
//teacher.setManualBlock(true); |
builder.append("DEPOIS: " + "\n"); |
builder.append("BI: " + teacher.getBi() + "\n"); |
builder.append("Nome: " + teacher.getName() + "\n"); |
builder.append("Username: " + teacher.getUserNameNetpa() + "\n"); |
builder.append("Address: " + teacher.getAddress() + "\n"); |
builder.append("Zip: " + teacher.getZip() + "\n"); |
builder.append("Email: " + teacher.getEmail() + "\n"); |
builder.append("Phone: " + teacher.getPhonenumber() + "\n"); |
serviceLogWarn(builder.toString()); |
sendNotificationAdmin("CODIGO SIGES PROFESSOR " + teacherSiges.getCodigoFuncionario() + " MUDOU DE DONO - NAO FOI BLOQUEADO OS DADOS FORAM REPOSTOS ",builder.toString()); |
} |
else |
{ |
//VAMOS APENAS ADICIONAR CAMPOS QUE AINDA NAO EXISTAM IGUAL AO CLONE MAS NAO MECHE |
if(teacher.getName() == null || teacher.getName().length() == 0) |
teacher.setName(teacherSiges.getNomeFuncionarioInt()); |
//Email instituicao |
if(teacher.getEmail() == null || teacher.getEmail().indexOf("@") < 0) |
teacher.setEmail(teacherSiges.getEmail()); |
if (teacherSiges.getEmail() != null && (teacher.getUsername() == null || teacher.getUsername().trim().length() == 0) && teacherSiges.getEmail().endsWith(Globals.EMAIL_LOCAL_SUFFIX)) |
{ |
t.setUsername(d.getEmail().substring(0, atIndex)); |
logger.info("Teacher SIGES:" + d.getCodigoFuncionario().intValue() + " foi-lhe atribuido o username d" + d.getEmail().substring(0, atIndex)); |
int atIndex = teacherSiges.getEmail().indexOf("@"); |
if (atIndex > 0) |
{ |
teacher.setUsername(teacherSiges.getEmail().substring(0, atIndex)); |
msgS = "Teacher SIGES:" + teacherSiges.getCodigoFuncionario().intValue() + " foi-lhe atribuido o username d" + teacherSiges.getEmail().substring(0, atIndex); |
logger.info(msgS); |
serviceLogInfo(msgS); |
} |
else |
{ |
msgS = "Teacher SIGES:" + teacherSiges.getCodigoFuncionario().intValue() + " NAO lhe foi atribuido username o email não tem o caracter @"; |
logger.info(msgS); |
serviceLogInfo(msgS); |
} |
} |
else if(teacher.getUsername() == null || teacher.getUsername().trim().length() == 0) |
{ |
msgS = "Teacher SIGES:" + teacherSiges.getCodigoFuncionario().intValue() + " nao tem email no SIGES foi-lhe atribuido o username d" + teacherSiges.getCodigoFuncionario().intValue(); |
logger.info(msgS); |
serviceLogInfo(msgS); |
teacher.setUsername("d" + teacherSiges.getCodigoFuncionario().intValue()); |
} |
else |
{ |
logger.info("Teacher SIGES:" + d.getCodigoFuncionario().intValue() + " NAO lhe foi atribuido username o email não tem o caracter @"); |
//ALL OK |
//username não foi alterado |
//msgS="Teacher SIGES:" + teacherSiges.getCodigoFuncionario().intValue() + " nao lhe foi alterado o username " + teacher.getUsername(); |
//logger.info(msgS); |
//serviceLogInfo(msgS); |
} |
teacher.setSigesCode(teacherSiges.getCodigoFuncionario().intValue()); |
if(teacher.getAddress() == null || teacher.getAddress().length() == 0) |
teacher.setAddress(teacherSiges.getMorada()); |
if(teacher.getZip() == null || teacher.getZip().length() == 0) |
teacher.setZip("" + teacherSiges.getCodigoPostal().intValue()); |
if(teacher.getBi() == null || teacher.getBi().length() == 0) |
teacher.setBi(teacherSiges.getNumeroBi()); |
teacher.setEmployerName(teacherSiges.getNomeFuncionario()); |
teacher.setAcademicName(teacherSiges.getNomeAcademico()); |
if(teacher.getBirthDate() == null || teacher.getBirthDate().getTime() == 0) |
teacher.setBirthDate(teacherSiges.getDataNascimento().toGregorianCalendar().getTime()); |
} |
else if(t.getUsername() == null || t.getUsername().trim().length() == 0) |
//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) |
{ |
logger.info("Teacher SIGES:" + d.getCodigoFuncionario().intValue() + " nao tem email no SIGES foi-lhe atribuido o username d" + d.getCodigoFuncionario().intValue()); |
t.setUsername("d" + d.getCodigoFuncionario().intValue()); |
msgS = "ATENTION TEACHER WITH ZERO UNITS: codigoFuncionario " + teacherSiges.getCodigoFuncionario(); |
logger.warn(msgS); |
serviceLogInfo(msgS); |
} |
else |
{ |
//username não foi alterado |
logger.info("Teacher SIGES:" + d.getCodigoFuncionario().intValue() + " nao lhe foi alterado o username " + t.getUsername()); |
} |
t.setSigesCode(d.getCodigoFuncionario().intValue()); |
if(t.getAddress() == null || t.getAddress().length() == 0) |
t.setAddress(d.getMorada()); |
if(t.getZip() == null || t.getZip().length() == 0) |
t.setZip("" + d.getCodigoPostal().intValue()); |
if(t.getBi() == null || t.getBi().length() == 0) |
t.setBi(d.getNumeroBi()); |
t.setEmployerName(d.getNomeFuncionario()); |
t.setAcademicName(d.getNomeAcademico()); |
if(t.getBirthDate() == null || t.getBirthDate().getTime() == 0) |
t.setBirthDate(d.getDataNascimento().toGregorianCalendar().getTime()); |
//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 (d.getDisciplinas() == null || d.getDisciplinas().getDisciplina() == null || d.getDisciplinas().getDisciplina().size() == 0) |
logger.warn("ATENTION TEACHER WITH ZERO UNITS: codigoFuncionario " + d.getCodigoFuncionario()); |
else |
{ |
//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 |
Set<CourseUnit> units = new HashSet<CourseUnit>(); |
for (Disciplina disciplina : d.getDisciplinas().getDisciplina()) |
for (Disciplina disciplina : teacherSiges.getDisciplinas().getDisciplina()) |
{ |
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(), "" + disciplina.getCodigoCurso(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo()); |
if (courseUnit == null) |
{ |
logger.warn("Unit not found: semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + disciplina.getCodigoCurso() + " year:" + disciplina.getCdLectivo()); |
msgS = "Unit not found: semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + disciplina.getCodigoCurso() + " year:" + disciplina.getCdLectivo(); |
logger.warn(msgS); |
serviceLogWarn(msgS); |
} |
else |
units.add(courseUnit); |
} |
//PASSO 2 |
Iterator<CourseUnit> iter = units.iterator(); |
while (iter.hasNext()) |
{ |
CourseUnit courseUnit = iter.next(); |
//In case of a comming proxy |
TeacherImpl tImpl = (TeacherImpl) DaoFactory.getTeacherDaoImpl().narrow(t); |
TeacherImpl tImpl = (TeacherImpl) DaoFactory.getTeacherDaoImpl().narrow(teacher); |
if (tImpl.isLocalRemovedUnit(courseUnit)) |
{ |
unitsLocallyRemovedNotAdded++; |
String msg = "Removendo unidade: " + ((CourseUnitImpl)courseUnit).getSigesUniqueIdentifiers() + " - do professor: " + tImpl.getSigesCode() + " - Associacao existe no SIGES mas foi removido LOCALMENTE"; |
serviceLogInfo(msg); |
logger.info(msg); |
iter.remove(); |
} |
} |
if (t.getTeachedUnits() != null) |
//PASSO 3 |
if (teacher.getTeachedUnits() != null) |
{ |
for (CourseUnit c : units) |
{ |
boolean isIn = false; |
for (CourseUnit tc : t.getTeachedUnits()) |
for (CourseUnit tc : teacher.getTeachedUnits()) |
{ |
if (tc.equals(c)) |
{ |
226,12 → 467,70 |
} |
} |
if (!isIn) |
t.getTeachedUnits().add(c); |
{ |
String msg = "Adicionando unidade: " + ((CourseUnitImpl)c).getSigesUniqueIdentifiers() + " - ao teacher: " + teacher.getSigesCode() + " - Associacao nova no SIGES"; |
serviceLogInfo(msg); |
logger.info(msg); |
unitsAddedToTeachers++; |
teacher.getTeachedUnits().add(c); |
} |
} |
} |
else |
t.setTeachedUnits(units); |
teacher.setTeachedUnits(units); |
//PASSO 4 nao é feito nos teacher mas deveria ser |
//PASSO 4 |
//Remover unidades deste ano que nao vem do SIGES e que nao foram adicionadas localmente |
Iterator<CourseUnit> iterNowUnits = teacher.getTeachedUnits().iterator(); |
TeacherImpl tImpl = (TeacherImpl) DaoFactory.getTeacherDaoImpl().narrow(teacher); |
while(iterNowUnits.hasNext()) |
{ |
CourseUnit cUNow = iterNowUnits.next(); |
if(cUNow.getImportYear().equals(year)) |
//Apenas tentamos apagar as unidades do ano corrente. |
//Este servico trabalha com unidades importadas do ano que e passado como argumento |
//Se importamos unidades desse ano, as dos outros anos nao vem na lista, logo |
//iriamos constatar que nenhuma estava no SIGES o que nao e verdade. |
//Assim so apagamos unidades do ano que estamos a importar e que nao venham |
//na importacao desse ano |
{ |
boolean added = false; |
for(CourseUnit c: units) |
{ |
if(cUNow.equals(c)) |
{ |
added = true; |
break; |
} |
} |
if(!added) |
{ |
if(!tImpl.isLocalRemovedUnit(cUNow)) |
{ |
String msg = "Removendo unidade: " + ((CourseUnitImpl)cUNow).getSigesUniqueIdentifiers() + " - do docente: " + teacher.getSigesCode() + " - Associacao desapareceu do SIGES"; |
serviceLogInfo(msg); |
logger.info(msg); |
iterNowUnits.remove(); |
unitsRemovedToTeachers++; |
} |
else |
{ |
String msg = "NAO REMOVIDA - Unidade: " + ((CourseUnitImpl)cUNow).getSigesUniqueIdentifiers() + " - do docente: " + teacher.getSigesCode() + " - Associacao desapareceu do SIGES mas foi adicionada localmente"; |
serviceLogInfo(msg); |
logger.info(msg); |
unitsLocalAddedNotRemoved++; |
} |
} |
} |
} |
} |
} |
catch (Exception e) |
{ |
248,6 → 547,17 |
} |
@Override |
protected void runJobServiceTask() throws Throwable { |
String importYear = (String) getParametersMap().get(JOB_importYear_KEY).getObject(); |
run(importYear); |
} |
public static final String JOB_importYear_KEY = "JOB_importYear_KEY"; |
/** |
* Testar por aqui poi requer Super Role e assim e' autmatico |
* |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportCourseService.java |
---|
135,14 → 135,8 |
logger.error(e,e); |
logMessages.addMessage(new DefaultLogMessage("import.error",e.toString(), "see log for details", LogMessageTypeEnum.ERROR)); |
serviceLogError(logMessages.getLastMessage(), e); |
List<String> emails = new ArrayList<String>(); |
emails.add(ConfigProperties.getProperty("admin.email")); |
List<String> arguments = new ArrayList<String>(); |
String cause = e.getCause() == null ? "" : e.getCause().toString(); |
arguments.add((e.toString() + "\n" + cause).replace("\n","<br/>")); |
serviceLogWarn("Sending email to " + ConfigProperties.getProperty("admin.email")); |
Email email = new Email("Erro de importacao de cursos e unidades",emails,"baco@estgp.pt","messageToAdmin_pt.txt",arguments); |
new SendEmailService().sendEmail(email); |
sendNotificationAdmin("Erro na importacao de sumarios",cause); |
} |
logger.info("terminating course import"); |
serviceLogInfo("terminating course import"); |
151,6 → 145,32 |
return logMessages; |
} |
/** |
* Envio de Notificação aos operadores do CI |
* @param subject |
* @param cause |
*/ |
private void sendNotificationAdmin(String subject, String cause) |
{ |
//todo JOB |
List<String> emails = ConfigProperties.getListValues("admin.email"); |
for(String email:emails) |
{ |
serviceLogWarn(">>>>>>>>ENVIANDO NOTIFICACAO A ADMINISTRACAO: " + email); |
logger.warn(">>>>>>>>ENVIANDO NOTIFICACAO A ADMINISTRACAO: " + email); |
} |
List<String> arguments = new ArrayList<String>(); |
arguments.add(cause.replace("\n","<br/>")); |
Email email = new Email(subject,emails,Globals.SYSTEM_EMAIL_BOX,"messageToAdmin_pt.txt",arguments); |
try { |
new SendEmailService().sendEmail(email); |
} catch (ServiceException e) { |
e.printStackTrace(); |
} |
} |
private void importUnitsSemestre(SiGesWEB service, |
String semestre, |
String year, |
226,10 → 246,6 |
} |
@Override |
public String getLogPathPrefix() { |
return getClass().getName(); |
} |
public static void main(String[] args) throws ServiceException |
{ |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportSumariesJson.java |
---|
112,7 → 112,7 |
if (i++ > MAX_COMMIT) |
{ |
i = 0; |
setProgress((int) (((float)countUnits)/((float)cUs.size())*100)); |
setProgress((int) (((float)countUnits)/((float)cUs.size())*100.0f)); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
serviceLogInfo("Commiting database"); |
325,18 → 325,26 |
*/ |
public static void main(String[] args) throws ServiceException, JSONException { |
System.out.println("Syntax:"); |
System.out.println("year, semestre, sendIonline, sendEmail"); |
System.out.println("If no arguments wil user actual year import config in all semestres and true in email and ionline"); |
String year = DaoFactory.getConfigurationDaoImpl().getImportsDefaultImportYearCreateTransaction(); |
String semestre = null; |
boolean sendIonline = true; |
boolean sendEmail = true; |
if(args != null && args.length > 0) |
year = args[0]; |
if(args != null && args.length > 1) |
semestre = args[1]; |
if(args != null && args.length > 2) |
sendIonline = Boolean.parseBoolean(args[2]); |
if(args != null && args.length > 3) |
sendEmail = Boolean.parseBoolean(args[3]); |
AbstractDao.getCurrentSession().beginTransaction(); |
if(semestre != null) |
new ImportSumariesJson().run(year,semestre,sendIonline,sendEmail); |
366,8 → 374,4 |
} |
@Override |
public String getLogPathPrefix() { |
return getClass().getName(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/jobs/JobScheduleService.java |
---|
3,10 → 3,7 |
import jomm.dao.impl.AbstractDao; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.sigesimports.ImportCourseService; |
import pt.estgp.estgweb.services.sigesimports.ImportStudentsService; |
import pt.estgp.estgweb.services.sigesimports.ImportSumariesJson; |
import pt.estgp.estgweb.services.sigesimports.SincronizeLastYearCourseUnitProgramsService; |
import pt.estgp.estgweb.services.sigesimports.*; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import java.io.Serializable; |
109,7 → 106,7 |
public static void main(String[] args) throws SQLException |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
scheduleImportStudents(); |
scheduleImportTeachers(); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
254,7 → 251,7 |
jobServiceTaskScheduler.setId(0); |
JobServiceTaskSchedulerParameterImpl param1 = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl(); |
param1.setJobServiceTaskScheduler(jobServiceTaskScheduler); |
param1.setName(ImportCourseService.JOB_importYear_KEY); |
param1.setName(ImportStudentsService.JOB_importYear_KEY); |
param1.setDescription("desc1"); |
param1.setObject("201415"); |
Set<JobServiceTaskSchedulerParameter> params = new HashSet<JobServiceTaskSchedulerParameter>(); |
280,4 → 277,37 |
new JobScheduleService().createOrUpdateScheduleServiceTask(jobServiceTaskScheduler,sess); |
} |
public static void scheduleImportTeachers() |
{ |
JobServiceTaskScheduler jobServiceTaskScheduler = DomainObjectFactory.createJobServiceTaskSchedulerImpl(); |
jobServiceTaskScheduler.setId(0); |
JobServiceTaskSchedulerParameterImpl param1 = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl(); |
param1.setJobServiceTaskScheduler(jobServiceTaskScheduler); |
param1.setName(ImportTeachersService.JOB_importYear_KEY); |
param1.setDescription("desc1"); |
param1.setObject("201415"); |
Set<JobServiceTaskSchedulerParameter> params = new HashSet<JobServiceTaskSchedulerParameter>(); |
params.add(param1); |
jobServiceTaskScheduler.setServiceTaskSchedulerParameters(params); |
jobServiceTaskScheduler.setDaily(true); |
jobServiceTaskScheduler.setMonthday(GregorianCalendar.NOVEMBER); |
jobServiceTaskScheduler.setWeekday(GregorianCalendar.MONDAY); |
jobServiceTaskScheduler.setHour(01); |
jobServiceTaskScheduler.setMinute(0); |
jobServiceTaskScheduler.setSecond(0); |
jobServiceTaskScheduler.setTargetService(ImportTeachersService.class.getName()); |
User u = (User) DaoFactory.getTeacherDaoImpl().findByEmail("jmachado@estgp.pt").get(0); |
UserSession sess = new UserSession() { |
@Override |
public Serializable getSerializable() { |
return null; |
} |
}; |
sess.setUser(u); |
jobServiceTaskScheduler.setDescription("TESTE Teachers"); |
new JobScheduleService().createOrUpdateScheduleServiceTask(jobServiceTaskScheduler,sess); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/jobs/ServiceJob.java |
---|
126,5 → 126,4 |
//Implemented in SubService to run the Job |
protected abstract void runJobServiceTask() throws Throwable; |
public abstract String getLogPathPrefix(); |
} |
/impl/src/java/pt/estgp/estgweb/services/jobs/JobDeamon.java |
---|
6,6 → 6,7 |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.utils.DatesUtils; |
import java.util.*; |
120,7 → 121,13 |
jobServiceTask.setRequestStop(false); |
jobServiceTask.setOwner(schedule.getCreatedBy()); |
jobServiceTask.setJobHandler(new SerializableNullJobHandler()); |
jobServiceTask.setLogFilePath( jobServiceTask.getId() + "-" + schedule.getTargetService() + ".log"); |
try { |
String filePath = Class.forName(schedule.getTargetService()).getSimpleName() + "-" + DatesUtils.getFormatedFileSystem(new Date()); |
jobServiceTask.setLogFilePath( filePath + ".log"); |
} catch (ClassNotFoundException e) { |
logger.fatal(e,e); |
continue; |
} |
Set<JobServiceTaskParameter> paramsJob = new HashSet<JobServiceTaskParameter>(); |
for(JobServiceTaskSchedulerParameter param : schedule.getServiceTaskSchedulerParameters()) |
{ |
/impl/src/java/pt/estgp/estgweb/domain/TeacherImpl.java |
---|
223,15 → 223,27 |
public void removeUnitLocaly(CourseUnit unit) |
{ |
setLocalRemovedTeachedUnits(StringsUtils.addElement(getLocalRemovedTeachedUnits(),"" + unit.getId(),",")); |
//todo novo |
setLocalTeachedUnits(StringsUtils.removeElement(getLocalTeachedUnits(),"" + unit.getId(),",")); |
} |
public void addUnitLocaly(CourseUnit unit) |
{ |
setLocalRemovedTeachedUnits(StringsUtils.removeElement(getLocalRemovedTeachedUnits(),"" + unit.getId(),",")); |
//todo novo |
setLocalTeachedUnits(StringsUtils.removeElement(getLocalTeachedUnits(),"" + unit.getId(),",")); |
setLocalTeachedUnits(StringsUtils.addElement(getLocalTeachedUnits(),"" + unit.getId(),",")); |
} |
public boolean isLocalRemovedUnit(CourseUnit unit) |
{ |
return StringsUtils.hasElement(getLocalRemovedTeachedUnits(),"" + unit.getId(),","); |
} |
public boolean isLocalUnit(CourseUnit unit) |
{ |
return StringsUtils.hasElement(getLocalTeachedUnits(),""+unit.getId(),","); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitImpl.java |
---|
134,5 → 134,11 |
} |
public String getSigesUniqueIdentifiers() |
{ |
return "SIGES:" + getCode() + ", COURSE: " + getCourseCode() + |
", " + getSemestre() + " of " + getImportYear() + " - " + getName(); |
} |
} |
/impl/src/updates/version/release2015-11.txt |
---|
39,3 → 39,9 |
- Links para FTP vão passar a usar proxy ver xsl dos proxies |
Foi criado um FTPFileProxy que usa o user logado para se autenticar no FTP e puxar o ficheiro |
- todo gerar todos os PDF's de programas outra vez e gerar todos os relatorios de avaliação e sumarios |
- todo tirar os todo job dos envios de emails e sends to ionline |
- todo Configurações possiveis de ir para BD |
/impl/src/hbm/pt/estgp/estgweb/domain/GenericUser.hbm.xml |
---|
122,6 → 122,7 |
<property name="unitCheck" type="boolean"/> |
<property name="academicDegree" type="string"/> |
<property name="localRemovedTeachedUnits" type="string"/> |
<property name="localTeachedUnits" type="string"/> |
<set name="responsibleUnits" lazy="true" order-by="name"> |
<key column="responsableTeacher"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUnit"/> |
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml |
---|
32,13 → 32,14 |
<property name="summariesJson" type="text"> |
<column name="summariesJson" sql-type="TEXT"/> |
</property> |
<many-to-one name="validatorUser" class="pt.estgp.estgweb.domain.Teacher" lazy="false" outer-join="true"/> |
<!--Not In Use--> |
<many-to-one name="validatorUser" class="pt.estgp.estgweb.domain.User" lazy="false" outer-join="true" not-null="false"/> |
<many-to-one name="course" class="pt.estgp.estgweb.domain.Course" lazy="false" outer-join="true"/> |
<many-to-one name="courseUnitProgram" class="pt.estgp.estgweb.domain.CourseUnitProgram" lazy="proxy"/> |
<many-to-one name="courseUnitEvaluation" class="pt.estgp.estgweb.domain.CourseUnitEvaluation" lazy="proxy"/> |
<many-to-one name="courseUnitProgram" class="pt.estgp.estgweb.domain.CourseUnitProgram" lazy="proxy" not-null="false"/> |
<many-to-one name="courseUnitEvaluation" class="pt.estgp.estgweb.domain.CourseUnitEvaluation" lazy="proxy" not-null="false"/> |
<!--<many-to-one name="courseUnitProgram" class="pt.estgp.estgweb.domain.CourseUnitProgram" lazy="false" outer-join="true"/> |
<many-to-one name="courseUnitEvaluation" class="pt.estgp.estgweb.domain.CourseUnitEvaluation" lazy="false" outer-join="true"/>--> |
<many-to-one name="responsableTeacher" class="pt.estgp.estgweb.domain.Teacher" lazy="false" outer-join="true"/> |
<many-to-one name="responsableTeacher" class="pt.estgp.estgweb.domain.Teacher" lazy="false" outer-join="true" not-null="false"/> |
<set name="blogs" cascade="delete" lazy="true" order-by="saveDate asc"> |
<key column="courseUnit"/> |
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitBlog" /> |