Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1139 → Rev 1146

/impl/conf/language/MessageResourcesCourseUnits.properties
185,12 → 185,12
courseunit.evaluation.success=Ficha de Avalia\u00e7\u00e3o alterada com sucesso
 
 
courseunit.turma=Turma
 
 
 
 
 
 
courseunit.consultaroutros=Consultar outros programas
courseunit.confirmaclonagem=Tem a certeza que deseja clonar o programa do ano na caixa de selecção para este programa actualmente aberto para edição? Vai gerar uma nova versão de programa e a anterior será arquivada em PDF.
 
/impl/conf/app.properties
469,6 → 469,9
# Imports SIGoES
#
 
#Disciplinas extracurriculares tem 6 no CdTipoDisci nas inscrições
siges.codigo.tipo.disciplina.extra.curricular=6
 
siges.degree.1=L
siges.degree.2=B
siges.degree.3=D
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportStudentsService.java
44,6 → 44,7
int studentsNew = 0;
int studentsZeroUnits = 0;
int unitsNotFound = 0;
int unitsNotFoundTurma = 0;
int unitsRemovedToStudents = 0;
int unitsLocalAddedNotRemoved = 0;
int unitsLocallyRemovedNotAdded = 0;
58,6 → 59,7
studentsNew = 0;
studentsZeroUnits = 0;
unitsNotFound = 0;
unitsNotFoundTurma = 0;
unitsRemovedToStudents = 0;
unitsLocalAddedNotRemoved = 0;
unitsLocallyRemovedNotAdded = 0;
68,6 → 70,8
String activeImportYear = DaoFactory.getConfigurationDaoImpl().getInterfaceImportYear();
 
String msgS = "STARTING STUDENTS IMPORT SERVICE FOR YEAR: " + year;
 
 
serviceLogInfo(msgS);
logger.info(msgS);
 
82,6 → 86,7
{
serviceLogInfo("STARTING WEB SERVICE AT " + WSDL);
service = new SiGesWEB(new URL(WSDL), new QName(Globals.SIGES_WEBSERVICE_TARGET_NAMESPACE, "SiGesWEB"));
 
}
catch (MalformedURLException e)
{
149,7 → 154,7
DaoFactory.getStudentDaoImpl().save(s);
newUser = true;
}
persist(alunoSiges, s, newUser,year,activeImportYear,logMessages);
persist(alunoSiges, s, newUser,year,activeImportYear,logMessages,service);
//Advising CommonsServicesManager before change password
 
if (newUser)
199,6 → 204,7
serviceLogInfo("#Students Merged: " + studentsMerged);
serviceLogInfo("#Students Zero Units: " + studentsZeroUnits);
serviceLogInfo("#Units not found: " + unitsNotFound);
serviceLogInfo("#Units not found in real course (turma ok): " + unitsNotFoundTurma);
serviceLogInfo("#Units added to Students: " + unitsAddedToStudents);
serviceLogInfo("#Units removed to Students: " + unitsRemovedToStudents);
serviceLogInfo("#Units not Removed because localy added: " + unitsLocalAddedNotRemoved);
211,6 → 217,7
logger.info("#Students Merged: " + studentsMerged);
logger.info("#Students Zero Units: " + studentsZeroUnits);
logger.info("#Units not found: " + unitsNotFound);
logger.info("#Units not found in real course (turma ok): " + unitsNotFoundTurma);
logger.info("#Units added to Students: " + unitsAddedToStudents);
logger.info("#Units removed to Students: " + unitsRemovedToStudents);
logger.info("#Units not Removed because localy added: " + unitsLocalAddedNotRemoved);
257,6 → 264,82
}
}
 
public BigDecimal getRealCourse(String turma,String year, String semestre, SiGesWEB service)
{
HashMap<String,List<BigDecimal>> pairs = getCourseTurmaPairs(year,semestre,service);
List<BigDecimal> cursos = pairs.get(turma);
if(cursos.size() > 1)
{
String msgAdmin = "";
String msg = "####Atenção existe um caso de dúvida nas inscrições : " + year + "-" + semestre + " turma " + turma;
msgAdmin += msg + "\n";
logger.warn(msg);
serviceLogWarn(msg);
msg = "####A turma " + turma + " tem " + cursos.size() + " cursos associados: ";
logger.warn(msg);
serviceLogWarn(msg);
msgAdmin += msg + "\n";
for(BigDecimal curso: cursos)
{
msg = "######->turma:" + turma + " -> curso siges: " + curso.longValue();
msgAdmin += msg + "\n";
logger.warn(msg);
serviceLogWarn(msg);
}
sendNotificationAdmin("Atenção existe um caso de dúvida nas inscrições",msgAdmin);
}
if(cursos.size() > 0)
return cursos.get(0);
else
{
String msg = "####Atenção existe um em que uma turma nao tem curso associado : " + year + "-" + semestre + " turma " + turma;
sendNotificationAdmin("Atenção existe um em que uma turma nao tem curso associado",msg);
logger.error(msg);
serviceLogError(msg);
return null;
}
}
HashMap<String,HashMap<String,List<BigDecimal>>> semestreTurmaCursosPairs = new HashMap<String, HashMap<String, List<BigDecimal>>>();
private HashMap<String,List<BigDecimal>> getCourseTurmaPairs(String year,String semestre, SiGesWEB service)
{
HashMap<String,List<BigDecimal>> turmaCourses = semestreTurmaCursosPairs.get(year + ";" + semestre);
if(turmaCourses == null)
{
String msg = "Starting structure pairs turma curso para : " + year + "-" + semestre;
logger.info(msg);
serviceLogInfo(msg);
ArrayOfTurmaCurso arrayOfTurmaCurso = service.getSiGesWEBSoap().loadParesTurmaCurso(
new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode())
, year,semestre);
turmaCourses = new HashMap<String, List<BigDecimal>>();
for(TurmaCurso turmaCursoPair: arrayOfTurmaCurso.getTurmaCurso())
{
List<BigDecimal> cursos = turmaCourses.get(turmaCursoPair.getCdTurma());
if(cursos == null)
{
cursos = new ArrayList<BigDecimal>();
turmaCourses.put(turmaCursoPair.getCdTurma(),cursos);
}
if(turmaCursoPair.getCodigoCurso().intValue() > 0)
{
cursos.add(turmaCursoPair.getCodigoCurso());
msg = "Adding:" + turmaCursoPair.getCdTurma() + "->" + turmaCursoPair.getCodigoCurso();
logger.info(msg);
serviceLogInfo(msg);
}
else
{
msg = "Excluding:" + turmaCursoPair.getCdTurma() + "->" + turmaCursoPair.getCodigoCurso();
logger.warn(msg);
serviceLogInfo(msg);
}
}
semestreTurmaCursosPairs.put(year + ";" + semestre,turmaCourses);
/***END INICIALIZACAO***/
}
/**Inicialização da Estrutura de Suporte aos Cursos/Turma*/
return turmaCourses;
}
 
 
/**
266,7 → 349,7
* @param alunoSiges Aluno
* @param student Student
*/
private void persist(Aluno alunoSiges, Student student, boolean newUser, String year, String activeImportYear, DefaultLogMessages logMessages)
private void persist(Aluno alunoSiges, Student student, boolean newUser, String year, String activeImportYear, DefaultLogMessages logMessages, SiGesWEB service)
{
if(newUser)
{
363,17 → 446,29
ArrayOfDisciplina disciplinas = alunoSiges.getDisciplinasInscrito();
for (Disciplina disciplina : disciplinas.getDisciplina())
{
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(),"" + disciplina.getCodigoCurso(),disciplina.getCdDuracao(),disciplina.getCdLectivo()
BigDecimal codigoDoCursoReal = disciplina.getCodigoCurso();
if(disciplina.getCdTipoDisciplina() != null && disciplina.getCdTipoDisciplina().intValue() == ImportCourseService.SIGES_CODIGO_TIPO_DISCIPLINA_EXTRA_CURRICULAR)
{
 
codigoDoCursoReal = getRealCourse(disciplina.getCdTurma(),year,disciplina.getCdDuracao(),service);
String msg = "Codigo de curso (" + disciplina.getCodigoCurso() + ") da disciplina " + disciplina.getCodigo() + " tipo: " + disciplina.getCdTipoDisciplina() + " nome:" + disciplina.getNome() + "turma: " + disciplina.getCdTurma() + " Modificado para o real: " + codigoDoCursoReal;
serviceLogInfo(msg);
logger.info(msg);
}
 
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(),"" + codigoDoCursoReal,disciplina.getCdDuracao(),disciplina.getCdLectivo()
,disciplina.getCdTurma());
//Special procedure for Aluno to check if turma not exist will find without turma code to keep old years compatibility
if(courseUnit == null)
{
courseUnit = tryFindCourseUnitWithOutTurma(logMessages,disciplina);
unitsNotFoundTurma++;
courseUnit = tryFindCourseUnitWithOutTurma(logMessages,disciplina.getCdDuracao(),""+disciplina.getCodigo().intValue()
,"" + codigoDoCursoReal.intValue(),disciplina.getCdLectivo(),disciplina.getCdTurma());
}
if(courseUnit == null)
{
unitsNotFound++;
String msg = "Unit not found: semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + disciplina.getCodigoCurso() + " year:" + disciplina.getCdLectivo() + " turma: " + disciplina.getCdTurma();
String msg = "Unit not found: semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + codigoDoCursoReal + " year:" + disciplina.getCdLectivo() + " turma: " + disciplina.getCdTurma();
serviceLogWarn(msg);
logger.warn(msg);
}
474,17 → 569,17
}
}
 
private CourseUnit tryFindCourseUnitWithOutTurma(DefaultLogMessages logMessages, Disciplina disciplina)
private CourseUnit tryFindCourseUnitWithOutTurma(DefaultLogMessages logMessages, String cdDuracao, String codigo,String codigoCurso,String cdLectivo,String cdTurma)
{
CourseUnit courseUnit = null;
String msg = "Unit not found with turma code : semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + disciplina.getCodigoCurso() + " year:" + disciplina.getCdLectivo() + " turma: " + disciplina.getCdTurma();
String msg = "Unit not found with turma code : semestre:" + cdDuracao + " codigo:" + codigo + " course:" + codigoCurso + " year:" + cdLectivo + " turma: " + cdTurma;
logMessages.addMessage(new DefaultLogMessage("", LogMessageTypeEnum.WARNING,msg));
serviceLogWarn(msg);
logger.warn(msg);
msg = "Trying without Turma code...";
serviceLogWarn(msg);
logger.warn(msg);
List<CourseUnit> cus = DaoFactory.getCourseUnitDaoImpl().loadBySigesCode("" + disciplina.getCodigo(),"" + disciplina.getCodigoCurso(),disciplina.getCdDuracao(),disciplina.getCdLectivo());
List<CourseUnit> cus = DaoFactory.getCourseUnitDaoImpl().loadBySigesCode("" + codigo,"" + codigoCurso,cdDuracao,cdLectivo);
if(cus != null && cus.size() == 1)
{
courseUnit = cus.get(0);
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportCourseService.java
236,36 → 236,22
return d.getCodigo().intValue() + ":" + d.getCodigoCurso() + ":" + d.getCdDuracao() + ":" + d.getCdTurma();
}
 
public static final int SIGES_CODIGO_TIPO_DISCIPLINA_EXTRA_CURRICULAR = ConfigProperties.getIntProperty("siges.codigo.tipo.disciplina.extra.curricular");
private void updateCourseUnits(HashMap<String, Disciplina> disciplinasMapS, String semestre, DefaultLogMessages logMessages, String year,SiGesWEB service)
{
logMessages.addMessage(new DefaultLogMessage("import.semestre.updating.course.units." + semestre, LogMessageTypeEnum.INFO));
/**Inicialização da Estrutura de Suporte aos Cursos/Turma*/
ArrayOfTurmaCurso arrayOfTurmaCurso = service.getSiGesWEBSoap().loadParesTurmaCurso(
new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode())
, year,semestre);
HashMap<String,List<BigDecimal>> turmaCourses = new HashMap<String, List<BigDecimal>>();
for(TurmaCurso turmaCursoPair: arrayOfTurmaCurso.getTurmaCurso())
{
List<BigDecimal> cursos = turmaCourses.get(turmaCursoPair.getCdTurma());
if(cursos == null)
{
cursos = new ArrayList<BigDecimal>();
turmaCourses.put(turmaCursoPair.getCdTurma(),cursos);
}
cursos.add(turmaCursoPair.getCodigoCurso());
System.out.println("Adding:" + turmaCursoPair.getCdTurma() + "->" + turmaCursoPair.getCodigoCurso());
}
/***END INICIALIZACAO***/
 
 
logger.info("updating " + semestre + " course units");
serviceLogInfo("updating " + semestre + " course units");
Set<Map.Entry<String, Disciplina>> set = disciplinasMapS.entrySet();
for (Map.Entry<String, Disciplina> entry : set)
{
Disciplina d = entry.getValue();
if(d.getCdTipoDisciplina().longValue() == 6)
//TIPO 6 é uma EXTRA CURRICULAR
if(d.getCdTipoDisciplina().longValue() == SIGES_CODIGO_TIPO_DISCIPLINA_EXTRA_CURRICULAR)
{
logMessages.addMessage(new DefaultLogMessage("import.error","Ignorando disciplica com tipo = " + d.getCdTipoDisciplina(), "see log for details", LogMessageTypeEnum.WARNING));
logMessages.addMessage(new DefaultLogMessage("import.error","Ignorando disciplina com tipo = " + d.getCdTipoDisciplina(), "see log for details", LogMessageTypeEnum.WARNING));
logger.warn(logMessages.getLastMessage());
serviceLogWarn(logMessages.getLastMessage());
 
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportSumariesJson.java
108,7 → 108,7
String nowCode = "";
for(Long cId: cUs)
{
nowCode = "BACO_ONLY_CODE" + cId;
nowCode = "" + cId;
countUnits++;
try
{
143,8 → 143,10
break;
}
 
 
logger.error("WebService Fail, trying " + tries + " times sleeping a while");
serviceLogError("WebService Fail, trying " + tries + " times sleeping a while");
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);
}
}
210,6 → 212,7
}
else if(summariesValid == 0)
{
//NAO METE OK NEM ZERO
countUnitsZeroValidSummaries++;
unitsZeroSummaries.add(c.getCode());
logger.info("ZERO VALID SUMARIES unit:" + c.getCode() + " course: " + c.getCourseCode());
234,6 → 237,7
}
else
{
//NAO METE OK MAS METE ZERO
countUnitsZeroSummaries++;
unitsZeroSummaries.add(c.getCode());
logger.error("Summaries come null in unit:" + c.getCode());
242,6 → 246,7
}
catch(Throwable e)
{
//NAO METE OK
unitsFailed.add(nowCode);
logger.error(e,e);
serviceLogError(e.toString(),e);
264,23 → 269,33
logger.info("terminating summaries import");
serviceLogInfo(logMessages.getLastMessage());
 
StringBuilder failedUnitsExc = new StringBuilder();
for(String cId: unitsFailed)
failedUnitsExc.append(cId).append(";");
 
serviceLogInfo("#######################################");
serviceLogInfo("#######################################");
serviceLogInfo("UNITS PROCESSED: " + countUnits);
serviceLogInfo("UNITS FAILED: " + (countUnits - countUnitsZeroSummaries - countUnitsOk));
serviceLogInfo("UNITS FAILED: " + (countUnits - countUnitsZeroSummaries - countUnitsOk - countUnitsZeroValidSummaries));
serviceLogInfo("UNITS FAILED EXCEPTION PARSING XML WEB SERVICE: " + unitsFailed.size());
serviceLogInfo("UNITS IMPORT OK: " + countUnitsOk);
serviceLogInfo("UNITS ZERO SUMARIES: " + countUnitsZeroSummaries);
serviceLogInfo("UNITS ZERO VALID SUMARIES: " + countUnitsZeroValidSummaries);
serviceLogInfo("#######################################");
serviceLogWarn("####FAILED Exception (Check exceptions in log): Units Baco Id Code : " + failedUnitsExc.toString());
 
logger.info("#######################################");
logger.info("#######################################");
logger.info("UNITS PROCESSED: " + countUnits);
logger.info("UNITS FAILED: " + (countUnits - countUnitsZeroSummaries - countUnitsOk));
logger.info("UNITS FAILED: " + (countUnits - countUnitsZeroSummaries - countUnitsOk - countUnitsZeroValidSummaries));
logger.info("UNITS FAILED EXCEPTION PARSING XML WEB SERVICE: " + unitsFailed.size());
logger.info("UNITS IMPORT OK: " + countUnitsOk);
logger.info("UNITS ZERO SUMARIES: " + countUnitsZeroSummaries);
logger.info("UNITS ZERO VALID SUMARIES: " + countUnitsZeroValidSummaries);
logger.info("#######################################");
logger.warn("####FAILED Exception (Check exceptions in log): Units Baco Id Code : " + failedUnitsExc.toString());
 
 
return logMessages;
}
 
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java
362,6 → 362,7
c.setImportYear(importYear);
c.setName(name);
c.setCode(code);
c.setCdTurma(cdTurma);
c.setSemestre(semestre);
if(courseId > 0)
{
/impl/src/web/admin/courseunits/courseunit.jsp
116,6 → 116,14
</html:select>
</td>
</tr>
<tr>
<th>
<bean:message key="courseunit.turma"/>
</th>
<td>
<html:text styleClass="text" property="courseUnitView.cdTurma"/> (Esta ação vai influênciar as importações SIGES)
</td>
</tr>
<tr>
<th>
<bean:message key="courseunit.pathIntranet"/>