/impl/importRoutines.xml |
---|
28,8 → 28,8 |
<target name="teachers"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportTeachersService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"> |
<!--<arg value="201314"/>--> |
<!--<arg value="201415"/>--> |
<arg value="201516"/> |
<arg value="201415"/> |
<!--<arg value="201516"/>--> |
</java> |
</target> |
<target name="students"> |
67,7 → 67,7 |
</java> |
</target> |
<target name="grades"> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportGradesService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"> |
<!--<java classname="pt.estgp.estgweb.services.sigesimports.ImportGradesService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"> |
<arg value="200809"/> |
</java> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportGradesService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"> |
81,10 → 81,11 |
</java> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportGradesService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"> |
<arg value="201213"/> |
</java> |
</java>--> |
<java classname="pt.estgp.estgweb.services.sigesimports.ImportGradesService" classpath="${build.dir.classes}" classpathref="pathToToolsLib"> |
<arg value="201314"/> |
</java> |
</target> |
<target name="setAreas"> |
/impl/conf/language/MessageResourcesCourse.properties |
---|
3,6 → 3,7 |
# COURSE UNITS MESSAGE RESOURCES |
# |
################################################################################ |
course.label=Curso |
module.Courses=Cursos |
course.new=Criar Curso |
course.submit.edit=Editar Curso {0} |
/impl/conf/language/MessageResources.properties |
---|
521,7 → 521,8 |
configuration.task.weekday=Dia da semana |
configuration.task.monthday=Dia do Mês |
configuration.task.now=Agendar para correr agora |
configuration.tasks.canceled=Calcelado |
configuration.tasks.saved=Tarefa agendada com sucesso |
configuration.task.records=Registos de Tarefas Agendadas |
configuration.task.log=Ficheiro de Registo |
configuration.task.progress=Progresso |
548,6 → 549,14 |
weekday.Sat=Sabados |
weekday.Sun=Domingos |
weekday.2=Segundas |
weekday.3=Terças |
weekday.4=Quartas |
weekday.5=Quintas |
weekday.6=Sextas |
weekday.7=Sabados |
weekday.1=Domingos |
monthday.day=ao dia |
weekday.day=às |
day.time=às |
/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 |
536,6 → 539,8 |
intranet.dtp.course.coordinator.write=true |
intranet.dtp.course.director.write=true |
intranet.dtp.course.unit.responsible.write=true |
intranet.dtp.course.unit.fullcontrol.roles= |
intranet.dtp.course.unit.inquerito_pedagogico.role=pedagogicCouncil |
##COLOCAR AQUI AS DEFINICOES DO DTP |
/impl/conf/berserk/sd.xml |
---|
2225,10 → 2225,24 |
</filterChains> |
</service> |
<service> |
<name>SaveJobServiceTaskScheduler</name> |
<implementationClass>pt.estgp.estgweb.services.jobs.JobScheduleService</implementationClass> |
<description></description> |
<isTransactional>true</isTransactional> |
<defaultMethod>save</defaultMethod> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
<chain name="Admins"/> |
</filterChains> |
</service> |
saveJobServiceTaskScheduler |
</serviceDefinitions> |
/impl/src/java/pt/estgp/estgweb/utils/StringsUtils.java |
---|
48,7 → 48,8 |
List<String> l = new ArrayList<String>(); |
for (String role : roles) |
{ |
l.add(role); |
if(role != null && role.trim().length() > 0) |
l.add(role); |
} |
return l; |
} |
/impl/src/java/pt/estgp/estgweb/Globals.java |
---|
1,6 → 1,7 |
package pt.estgp.estgweb; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.utils.StringsUtils; |
import java.util.List; |
97,6 → 98,9 |
public static final boolean INTRANET_DTP_CourseCoordinatorWrite = ConfigProperties.getBooleanProperty("intranet.dtp.course.coordinator.write"); |
public static final boolean INTRANET_DTP_CourseDirectorWrite = ConfigProperties.getBooleanProperty("intranet.dtp.course.director.write"); |
public static final boolean INTRANET_DTP_CourseUnitResponsibleWrite = ConfigProperties.getBooleanProperty("intranet.dtp.course.unit.responsible.write"); |
//use , as separator |
public static final List<String> INTRANET_DTP_FULLCONTROL_ROLES = StringsUtils.getStringsFromSerial(ConfigProperties.getProperty("intranet.dtp.course.unit.fullcontrol.roles"),","); |
public static final String INTRANET_DTP_INQUERITO_PEDAGOGICO_ROLE = ConfigProperties.getProperty("intranet.dtp.course.unit.inquerito_pedagogico.role"); |
/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitDirPackageServiceBat.java |
---|
5,10 → 5,7 |
import jomm.utils.StringsUtils; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.Globals; |
import pt.estgp.estgweb.domain.Course; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.Teacher; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.utils.ConfigProperties; |
49,6 → 46,18 |
new File(tmpDir).mkdirs(); |
//List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(importYear); |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(); |
List<User> usersFullControlDtp = null; |
if(Globals.INTRANET_DTP_FULLCONTROL_ROLES != null && Globals.INTRANET_DTP_FULLCONTROL_ROLES.size() > 0) |
{ |
usersFullControlDtp = DaoFactory.getUserDaoImpl().loadRolesUsers(Globals.INTRANET_DTP_FULLCONTROL_ROLES); |
} |
List<User> usersInqueritoPedagogico = null; |
if(Globals.INTRANET_DTP_INQUERITO_PEDAGOGICO_ROLE != null && Globals.INTRANET_DTP_INQUERITO_PEDAGOGICO_ROLE.trim().length() > 0) |
{ |
usersInqueritoPedagogico = DaoFactory.getUserDaoImpl().loadRoleUsers(Globals.INTRANET_DTP_INQUERITO_PEDAGOGICO_ROLE.trim()); |
} |
try |
{ |
FileWriter batRunner = new FileWriter(tmpDir + "/create.bat"); |
237,7 → 246,9 |
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + c.getUserGroupStudents() + "\":r\n"); |
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + ConfigProperties.getProperty("ionline.user") + "\":f\n"); |
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + ConfigProperties.getProperty("ionline.user") + "\":f\n"); |
/* |
echo CACLS Seminario.Ii /T /E /R [NOME DO GRUPO DE TODOS OS ALUNOS DA ESTG tira os parentisis rectos] |
echo CACLS Seminario.Ii /T /E /G [NOME DO GRUPO DE TODOS OS DOCENTES]:R |
297,6 → 308,28 |
batRunner.write("cacls " + Globals.INTRANET_DTP_FichaAvaliacao + " /t /e /r \"" + c.getDirector().getUsername() + "\"\n"); |
batRunner.write("cd ..\\\n"); |
} |
if(usersInqueritoPedagogico != null && usersInqueritoPedagogico.size() > 0) |
{ |
for(User u: usersInqueritoPedagogico) |
{ |
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + u.getUsername() + "\":r\n"); |
} |
batRunner.write("cd " + Globals.INTRANET_DTP + "\n"); |
for(User u: usersInqueritoPedagogico) |
{ |
batRunner.write("cacls " + Globals.INTRANET_DTP_InqueritoPedagogico + " /t /e /g \"" + u.getUsername() + "\":f\n"); |
} |
batRunner.write("cd ..\\\n"); |
} |
if(usersFullControlDtp != null && usersFullControlDtp.size() > 0) |
{ |
for(User u: usersFullControlDtp) |
{ |
batRunner.write("cacls " + Globals.INTRANET_DTP + " /t /e /g \"" + u.getUsername() + "\":f\n"); |
} |
} |
batRunner.write("cd ..\\..\\\n"); |
} |
batRunner.write("cd ..\\..\\\n"); |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/CleanCourseUnitsZeroStudents.java |
---|
New file |
0,0 → 1,72 |
package pt.estgp.estgweb.services.sigesimports; |
import jomm.dao.impl.AbstractDao; |
import org.hibernate.Query; |
import pt.estgp.estgweb.domain.CourseUnit; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import java.util.Iterator; |
/** |
* Created by jorgemachado on 01/12/15. |
*/ |
public class CleanCourseUnitsZeroStudents |
{ |
public static void main(String[] args) |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
Query q = AbstractDao.getCurrentSession().createQuery("select c.id from c in class " + CourseUnit.class.getName() + |
" where size(c.students) = 0 and (c.importYear = '201415' or c.importYear='201516') order by c.importYear, c.semestre, c.code"); |
Iterator iter = q.iterate(); |
System.out.println("ANO;SEMESTRE;CODIGO;NOME;CODIGOCURSO;NOMECURSO"); |
while(iter.hasNext()) |
{ |
Long id = (Long) iter.next(); |
CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(id); |
System.out.println(cu.getImportYear() + ";" + cu.getSemestre() + ";" + cu.getCode() + ";" + cu.getName() + ";" + cu.getCourseCode() + ";" +cu.getCourseName()); |
boolean alert = false; |
if(cu.getAnnouncements() != null && cu.getAnnouncements().size() > 0) |
{ |
System.out.println("ALERT - Tem Announcements"); |
} |
if(cu.getAssignements() != null && cu.getAssignements().size() > 0) |
{ |
System.out.println("ALERT - Tem Assignements"); |
} |
if(cu.getBlogs() != null && cu.getBlogs().size() > 0) |
{ |
System.out.println("ALERT - Tem BLOGS"); |
} |
if(cu.getCourseUnitEvaluation() != null) |
{ |
System.out.println("ALERT - Tem Evaluation"); |
alert = true; |
} |
if(cu.getCourseUnitProgram() != null) |
{ |
System.out.println("ALERT - Tem program"); |
alert = true; |
} |
if(cu.getSummaries() != null && cu.getSummaries().size() > 0) |
{ |
System.out.println("ALERT - Tem SUMMARIES"); |
} |
if(alert) |
{ |
System.out.println(">>>>>>>>>>>>>>NAO APAGA"); |
} |
else |
{ |
System.out.println("+++++++++++++++CANDIDATA A APAGAR"); |
} |
} |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportGradesService.java |
---|
11,6 → 11,7 |
import pt.estgp.estgweb.services.email.SendEmailService; |
import pt.estgp.estgweb.services.expceptions.ServiceException; |
import pt.estgp.estgweb.services.jobs.JobScheduleService; |
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; |
33,7 → 34,7 |
* @time 12:51:32 |
* @see pt.estgp.estgweb |
*/ |
public class ImportGradesService implements IService |
public class ImportGradesService extends ServiceJob implements IService |
{ |
private static final Logger logger = Logger.getLogger(ImportGradesService.class); |
46,23 → 47,31 |
{ |
DefaultLogMessages logMessages = new DefaultLogMessages(); |
logMessages.addMessage(new DefaultLogMessage("import.grades", LogMessageTypeEnum.INFO, "instituicao " + DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode() + " ano : " + year)); |
logger.info("starting grades import " + year); |
logger.info(logMessages.getLastMessage()); |
serviceLogInfo(logMessages.getLastMessage()); |
Map<Integer,Integer> alunos = new HashMap<Integer,Integer>(); |
Map<String,String> alunoCadeira = new HashMap<String,String>(); |
int foundTotal = 0; |
try |
{ |
logger.info("Loading Epocas de avaliacao"); |
serviceLogInfo("Loading Epocas de avaliacao"); |
List<ConfigurationGradesEpocaAvaliacao> epocas = DaoFactory.getConfigurationGradesEpocaAvaliacaoDaoImpl().findAll(); |
if(epocas == null || epocas.size() == 0) |
{ |
logMessages.addMessage(new DefaultLogMessage("import.grades",LogMessageTypeEnum.WARNING,"Sem Epocas de Avaliacao, por favor adicione as epocas ao sistema")); |
logger.warn("Sem Epocas de Avaliacao, por favor adicione as epocas ao sistema"); |
logger.warn(logMessages.getLastMessage()); |
serviceLogWarn(logMessages.getLastMessage()); |
return logMessages; |
} |
List<ConfigurationGradesStatusEpoca> statusEpocas = DaoFactory.getConfigurationGradesStatusEpocaDaoImpl().findAll(); |
if(statusEpocas == null || statusEpocas.size() == 0) |
{ |
logMessages.addMessage(new DefaultLogMessage("import.grades",LogMessageTypeEnum.WARNING,"Sem Status de epocas de avaliacao, por favor adicione as epocas ao sistema")); |
logger.warn("Sem Status de epocas de avaliacao, por favor adicione as epocas ao sistema"); |
logger.warn(logMessages.getLastMessage()); |
serviceLogWarn(logMessages.getLastMessage()); |
return logMessages; |
} |
HashMap<String,String> mapaEpocasAvaliacao = new HashMap<String, String>(); |
88,18 → 97,21 |
{ |
logMessages.addMessage(new DefaultLogMessage("import.error",e.toString(),"erro na configuracao do WEB Service", LogMessageTypeEnum.INFO)); |
logger.fatal(e, e); |
serviceLogFatal(logMessages.getLastMessage()); |
return logMessages; |
} |
ArrayOfNota arrayOfNotas = service.getSiGesWEBSoap().getNotas(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year); |
List<Nota> notas = arrayOfNotas.getNota(); |
int i = 0; |
for (Nota nota : notas) |
{ |
foundTotal++; |
if (i++ > MAX_COMMIT) |
{ |
i = 0; |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
setProgress((int) (((float)foundTotal)/((float)notas.size())*100.0f)); |
commitPartially(); |
} |
/** |
113,7 → 125,9 |
*/ |
int codAluno = nota.getCodigoAluno().intValue(); |
alunos.put(codAluno,codAluno); |
int codUnidade = nota.getCodigoDisciplina().intValue(); |
alunoCadeira.put(codAluno + "$" + codUnidade,codAluno + "$" + codUnidade); |
int codCurso = nota.getCodigoCurso().intValue(); |
String cdDuracao = nota.getCdDuracao(); |
int valor = nota.getNota().intValue(); |
121,6 → 135,7 |
Date data = nota.getDataAvaliacao().toGregorianCalendar().getTime(); |
int momento = nota.getMomentoAvaliacao().intValue(); |
int epoca = nota.getEpocaAvaliacao().intValue(); |
//boolean eFinal = nota.get |
String descricaoEpoca = mapaEpocasAvaliacao.get(epoca + "-" + momento); |
130,9 → 145,25 |
if(descricaoEpoca!= null && s != null) |
{ |
CourseUnit courseUnit; |
CourseUnit courseUnit = null; |
try{ |
courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUniqueSubscribed("" + codUnidade, year, "" + codCurso,s.getId(),cdDuracao); |
List<CourseUnit> cus = DaoFactory.getCourseUnitDaoImpl().loadBySigesCode("" + codUnidade, "" + codCurso,cdDuracao,year); |
//Uma cadeira atribuida a uma nota que pode nao ser de facto a turma dela |
//A nota tem de passar a deixar de ter obrigatoriamente a cadeira |
//ha que mudar isso na interface e colocar apenas o descritivo nesses casos e manter a cadeira |
//a null para nao haver hipoteses de confusao |
if(cus != null && cus.size() > 0) |
courseUnit = cus.get(0); |
if(cus.size() > 1) |
{ |
CourseUnit c1 = cus.get(0); |
CourseUnit c2 = cus.get(1); |
logMessages.addMessage(new DefaultLogMessage("import.warning","", |
"Mais que uma unidade para o código(unidade,curso): " + codUnidade + "," + codCurso + " -> " + courseUnit.getName() + " possiveis duas turmas: " + c1.getCdTurma() + " - " + c2.getCdTurma() , LogMessageTypeEnum.INFO)); |
logger.info(logMessages.getLastMessage()); |
serviceLogInfo(logMessages.getLastMessage()); |
} |
if(courseUnit != null) |
{ |
CourseUnitGrade grade = DaoFactory.getCourseUnitGradeDaoImpl().find(courseUnit.getId(),s.getId(),""+momento,""+epoca); |
166,12 → 197,16 |
} |
else |
{ |
logMessages.addMessage(new DefaultLogMessage("import.warning","","CourseUnit: " + codUnidade + " course: " + codCurso + " student: " + s.getSigesCode() + " semestre: " + cdDuracao + " year: " + year + " does not exist", LogMessageTypeEnum.WARNING)); |
logger.warn("CourseUnit: " + codUnidade + " course: " + codCurso + " student: " + s.getSigesCode() + " semestre: " + cdDuracao + " year: " + year + " does not exist"); |
logMessages.addMessage(new DefaultLogMessage("import.warning","","CourseUnit: " + codUnidade + " course: " + codCurso + " searching for student" + s.getSigesCode() + " semestre: " + cdDuracao + " year: " + year + " does not exist", LogMessageTypeEnum.WARNING)); |
logger.warn(logMessages.getLastMessage()); |
serviceLogWarn(logMessages.getLastMessage()); |
} |
}catch(Exception e) |
{ |
logger.warn("Error : unit:" + codUnidade + " course:" + codCurso + " student:" + s.getId(),e); |
logMessages.addMessage(new DefaultLogMessage("import.warning","","Error : unit:" + codUnidade + " course:" + codCurso + " student:" + s.getId(), LogMessageTypeEnum.WARNING)); |
logger.warn(logMessages.getLastMessage()); |
serviceLogWarn(logMessages.getLastMessage()); |
} |
} |
179,12 → 214,14 |
{ |
if(descricaoEpoca == null) |
{ |
logger.info(epoca + "-" + momento + " nao esta catalogada para atribuicao de nota"); |
logMessages.addMessage(new DefaultLogMessage("import.warning","",epoca + "-" + momento + " nao esta catalogada para atribuicao de nota", LogMessageTypeEnum.WARNING)); |
logger.info(logMessages.getLastMessage()); |
serviceLogInfo(logMessages.getLastMessage()); |
}else |
{ |
logMessages.addMessage(new DefaultLogMessage("import.warning","","Student: " + codAluno + " does not exist", LogMessageTypeEnum.WARNING)); |
logger.warn("Student: " + codAluno + " does not exist"); |
logger.warn(logMessages.getLastMessage()); |
serviceLogWarn(logMessages.getLastMessage()); |
} |
} |
192,19 → 229,39 |
} |
sendSms(null); |
sendEmail(null); |
//AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
//AbstractDao.getCurrentSession().getTransaction().rollback(); |
logMessages.addMessage(new DefaultLogMessage("import.error", e.toString(), "see log for details", LogMessageTypeEnum.ERROR)); |
serviceLogError(logMessages.getLastMessage()); |
throw new ServiceException(e.toString(), e); |
} |
setProgress(100); |
logger.info("######################################"); |
serviceLogInfo("######################################"); |
logger.info("######################################"); |
serviceLogInfo("######################################"); |
logger.info("STATS " + year); |
serviceLogInfo("STATS " + year); |
logger.info("Total Notas: " + foundTotal); |
serviceLogInfo("Total Notas: " + foundTotal); |
logger.info("Alunos: " + alunos.size()); |
serviceLogInfo("Alunos: " + alunos.size()); |
logger.info("Notas de Alunos em cadeiras: " + alunoCadeira.size()); |
serviceLogInfo("Notas de Alunos em cadeiras: " + alunoCadeira.size()); |
logMessages.addMessage(new DefaultLogMessage("import.teachers.terminating", LogMessageTypeEnum.INFO)); |
logger.info("terminating grades import"); |
logger.info(logMessages.getLastMessage()); |
serviceLogInfo(logMessages.getLastMessage()); |
return logMessages; |
} |
271,6 → 328,7 |
} |
} |
/** |
* Testar por aqui poi requer Super Role e assim e' autmatico |
* |
288,4 → 346,9 |
} |
@Override |
protected ILogMessages runJobServiceTask() throws Throwable { |
String importYear = getParametersMap().get(JOB_importYear_KEY).getObject(); |
return run(importYear); |
} |
} |
/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); |
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) |
private void persist(Aluno alunoSiges, Student student, boolean newUser, String year, String activeImportYear, DefaultLogMessages logMessages, SiGesWEB service) |
{ |
if(newUser) |
{ |
363,11 → 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) |
{ |
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(); |
String msg = "Unit not found: semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + codigoDoCursoReal + " year:" + disciplina.getCdLectivo() + " turma: " + disciplina.getCdTurma(); |
serviceLogWarn(msg); |
logger.warn(msg); |
} |
468,6 → 569,41 |
} |
} |
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:" + 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("" + codigo,"" + codigoCurso,cdDuracao,cdLectivo); |
if(cus != null && cus.size() == 1) |
{ |
courseUnit = cus.get(0); |
msg = "Found ok..."; |
serviceLogInfo(msg); |
logger.info(msg); |
} |
else if(cus !=null && cus.size() > 1) |
{ |
courseUnit = cus.get(0); |
msg = "Found More than one, unexpected situation..." + cus.get(0).getId() + " - " + cus.get(1).getId(); |
logMessages.addMessage(new DefaultLogMessage("", LogMessageTypeEnum.WARNING,msg)); |
serviceLogWarn(msg); |
logger.warn(msg); |
} |
else |
{ |
msg = "Not Found ..."; |
serviceLogInfo(msg); |
logger.info(msg); |
} |
return courseUnit; |
} |
private void cloneFields(Aluno alunoSiges, Student student) { |
student.setName(alunoSiges.getNome()); |
student.setEmail(alunoSiges.getEmail()); |
481,9 → 617,6 |
student.setBirthDate(alunoSiges.getDataNascimento().toGregorianCalendar().getTime()); |
student.setUsername("a" + alunoSiges.getCodigo().intValue()); |
} |
public static final String JOB_importYear_KEY = "JOB_importYear_KEY"; |
@Override |
protected ILogMessages runJobServiceTask() throws Throwable { |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/SincronizeLastYearCourseUnitProgramsService.java |
---|
386,10 → 386,6 |
} |
public static final String JOB_importYear_KEY = "JOB_importYear_KEY"; |
public static final String JOB_cloneOnlyNews_KEY = "JOB_cloneOnlyNews_KEY"; |
public static final String JOB_generateAllPdfs_KEY = "JOB_generateAllPdfs_KEY"; |
public static final String JOB_validate_KEY = "JOB_validade_KEY"; |
/** |
* Parameters for ServiceJob |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportTeachersService.java |
---|
328,7 → 328,10 |
{ |
String msgS; |
if(teacherSiges.getCodigoFuncionario().longValue()==20115) |
System.out.println("Sergio"); |
if(teacherSiges.getCodigoFuncionario().longValue()==20219) |
System.out.println("Eliseu"); |
try |
{ |
448,8 → 451,12 |
Set<CourseUnit> units = new HashSet<CourseUnit>(); |
for (Disciplina disciplina : teacherSiges.getDisciplinas().getDisciplina()) |
{ |
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(), "" + disciplina.getCodigoCurso(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo()); |
CourseUnit courseUnit = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique("" + disciplina.getCodigo(), "" + disciplina.getCodigoCurso(), "" + disciplina.getCdDuracao(), "" + disciplina.getCdLectivo(),disciplina.getCdTurma()); |
//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 |
if (courseUnit == null) |
{ |
msgS = "Unit not found: semestre:" + disciplina.getCdDuracao() + " codigo:" + disciplina.getCodigo() + " course:" + disciplina.getCodigoCurso() + " year:" + disciplina.getCdLectivo(); |
491,7 → 498,7 |
} |
if (!isIn) |
{ |
String msg = "Adicionando unidade: " + ((CourseUnitImpl)c).getSigesUniqueIdentifiers() + " - ao teacher: " + teacher.getSigesCode() + " - Associacao nova no SIGES"; |
String msg = "Adicionando unidade: " + ((CourseUnitImpl)c).getSigesUniqueIdentifiers() + " - ao teacher: " + teacher.getSigesCode() + " turma " + c.getCdTurma() + " - Associacao nova no SIGES"; |
serviceLogInfo(msg); |
logger.info(msg); |
unitsAddedToTeachers++; |
535,10 → 542,12 |
if(!tImpl.isLocalUnit(cUNow)) |
{ |
String msg = "Removendo unidade: " + ((CourseUnitImpl)cUNow).getSigesUniqueIdentifiers() + " - do docente: " + teacher.getSigesCode() + " - Associacao desapareceu do SIGES"; |
//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); |
serviceLogInfo(msg); |
logger.info(msg); |
iterNowUnits.remove(); |
//todo iterNowUnits.remove(); |
unitsRemovedToTeachers++; |
} |
else |
/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()); |
333,7 → 319,6 |
} |
} |
public static final String JOB_importYear_KEY = "JOB_importYear_KEY"; |
@Override |
protected ILogMessages runJobServiceTask() throws Throwable { |
347,12 → 332,12 |
public static void main(String[] args) throws ServiceException |
{ |
String year = "201415";//DaoFactory.getConfigurationDaoImpl().getImportsDefaultImportYearCreateTransaction(); |
String year = DaoFactory.getConfigurationDaoImpl().getImportsDefaultImportYearCreateTransaction(); |
if(args != null && args.length > 0) |
year = args[0]; |
AbstractDao.getCurrentSession().beginTransaction(); |
new ImportCourseService().run(year); |
AbstractDao.getCurrentSession().getTransaction().rollback(); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
/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); |
} |
} |
166,6 → 168,16 |
for(Aula aula: arrayOfAulas.getAula()) |
{ |
if(c.getCdTurma() != null && aula.getAulaCodigoTurma()!=null |
&& c.getCdTurma().trim().length() > 0 |
&& aula.getAulaCodigoTurma().trim().length() > 0 |
&& !aula.getAulaCodigoTurma().equals(c.getCdTurma())) |
{ |
//Código de Turma diferente |
System.out.println("Ignoring summary code: " + aula.getAulaCodigoTurma() + " for unit " + c.getName() + "/" + c.getCode() + " T:" + c.getCdTurma()); |
continue; |
} |
//CourseUnitSummary s = map.get(aula.getSumNumeroAula() + ":" + aula.getCodigoSumario()); |
//if(s == null) |
//{ |
200,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()); |
224,6 → 237,7 |
} |
else |
{ |
//NAO METE OK MAS METE ZERO |
countUnitsZeroSummaries++; |
unitsZeroSummaries.add(c.getCode()); |
logger.error("Summaries come null in unit:" + c.getCode()); |
232,6 → 246,7 |
} |
catch(Throwable e) |
{ |
//NAO METE OK |
unitsFailed.add(nowCode); |
logger.error(e,e); |
serviceLogError(e.toString(),e); |
254,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; |
} |
366,8 → 391,8 |
String year = DaoFactory.getConfigurationDaoImpl().getImportsDefaultImportYearCreateTransaction(); |
String semestre = null; |
boolean sendIonline = true; |
boolean sendEmail = true; |
boolean sendIonline = false; |
boolean sendEmail = false; |
if(args != null && args.length > 0) |
year = args[0]; |
393,11 → 418,6 |
} |
public static final String JOB_importYear_KEY = "JOB_importYear_KEY"; |
public static final String JOB_semestre_KEY = "JOB_semestre_KEY"; |
public static final String JOB_sendIonline_KEY = "JOB_sendIonline_KEY"; |
public static final String JOB_sendEmail_KEY = "JOB_sendEmail_KEY"; |
@Override |
protected ILogMessages runJobServiceTask() throws Throwable { |
/impl/src/java/pt/estgp/estgweb/services/jobs/JobScheduleService.java |
---|
143,6 → 143,125 |
DaoFactory.getJobServiceTaskSchedulerDaoImpl().delete(persistent); |
} |
public void save(JobServiceTaskSchedulerImpl scheduler |
,String jobCloneOnlyNewsKey |
,String jobJobGenerateAllPdfsKey |
,String jobJobImportYearKey |
,String jobJobSemestreKey |
,String jobSendEmailKey |
,String jobSendIonlineKey |
,String jobJobValidateKey |
,UserSession sess) |
{ |
JobServiceTaskSchedulerImpl persistent; |
if(scheduler.getId() <= 0) |
{ |
persistent = DomainObjectFactory.createJobServiceTaskSchedulerImpl(); |
persistent.setSaveDate(new Date()); |
persistent.setActive(false); |
persistent.setCreatedBy(sess.getUser()); |
DaoFactory.getJobServiceTaskSchedulerDaoImpl().save(persistent); |
logger.info("Will create task scheduller " + persistent.getTargetService() + " id:" + scheduler.getId()); |
} |
else |
{ |
persistent = (JobServiceTaskSchedulerImpl) DaoFactory.getJobServiceTaskSchedulerDaoImpl().load(scheduler.getId()); |
logger.warn("Will update task scheduller " + persistent.getTargetService() + " id:" + scheduler.getId()); |
} |
persistent.setTargetService(scheduler.getTargetService()); |
persistent.setDaily(scheduler.isDaily()); |
persistent.setMonthly(scheduler.isMonthly()); |
persistent.setWeekly(scheduler.isWeekly()); |
persistent.setHour(scheduler.getHour()); |
persistent.setMinute(scheduler.getMinute()); |
persistent.setSecond(scheduler.getSecond()); |
persistent.setDescription(scheduler.getDescription()); |
Set<JobServiceTaskSchedulerParameter> params = persistent.getServiceTaskSchedulerParameters(); |
if(persistent.getTargetService().equals(ImportCourseService.class.getName()) || |
persistent.getTargetService().equals(ImportGradesService.class.getName()) || |
persistent.getTargetService().equals(ImportStudentsService.class.getName()) || |
persistent.getTargetService().equals(ImportTeachersService.class.getName())) |
{ |
if(params == null || params.size() == 0) |
{ |
createParameter(persistent,ServiceJob.JOB_importYear_KEY); |
} |
JobServiceTaskSchedulerParameter parameter = params.iterator().next(); |
parameter.setObject(jobJobImportYearKey); |
} |
else if(persistent.getTargetService().equals(ImportSumariesJson.class.getName())) |
{ |
if(params == null || params.size() == 0) |
{ |
createParameter(persistent,ServiceJob.JOB_importYear_KEY); |
createParameter(persistent,ServiceJob.JOB_semestre_KEY); |
createParameter(persistent,ServiceJob.JOB_sendIonline_KEY); |
createParameter(persistent,ServiceJob.JOB_sendEmail_KEY); |
} |
for(JobServiceTaskSchedulerParameter param:persistent.getServiceTaskSchedulerParameters()) |
{ |
if(param.getName().equals(ServiceJob.JOB_importYear_KEY)) |
{ |
param.setObject(jobJobImportYearKey); |
} |
else if(param.getName().equals(ServiceJob.JOB_semestre_KEY)) |
{ |
param.setObject(jobJobSemestreKey); |
} |
else if(param.getName().equals(ServiceJob.JOB_sendIonline_KEY)) |
{ |
param.setObject(jobSendIonlineKey); |
} |
else if(param.getName().equals(ServiceJob.JOB_sendEmail_KEY)) |
{ |
param.setObject(jobSendEmailKey); |
} |
} |
} |
else if(persistent.getTargetService().equals(SincronizeLastYearCourseUnitProgramsService.class.getName())) |
{ |
if(params == null || params.size() == 0) |
{ |
createParameter(persistent,ServiceJob.JOB_importYear_KEY); |
createParameter(persistent,ServiceJob.JOB_cloneOnlyNews_KEY); |
createParameter(persistent,ServiceJob.JOB_generateAllPdfs_KEY); |
createParameter(persistent,ServiceJob.JOB_validate_KEY); |
} |
for(JobServiceTaskSchedulerParameter param:persistent.getServiceTaskSchedulerParameters()) |
{ |
if(param.getName().equals(ServiceJob.JOB_importYear_KEY)) |
{ |
param.setObject(jobJobImportYearKey); |
} |
else if(param.getName().equals(ServiceJob.JOB_cloneOnlyNews_KEY)) |
{ |
param.setObject(jobCloneOnlyNewsKey); |
} |
else if(param.getName().equals(ServiceJob.JOB_generateAllPdfs_KEY)) |
{ |
param.setObject(jobJobGenerateAllPdfsKey); |
} |
else if(param.getName().equals(ServiceJob.JOB_validate_KEY)) |
{ |
param.setObject(jobJobValidateKey); |
} |
} |
} |
} |
private void createParameter(JobServiceTaskSchedulerImpl persistent,String name) { |
JobServiceTaskSchedulerParameterImpl param = DomainObjectFactory.createJobServiceTaskSchedulerParameterImpl(); |
param.setJobServiceTaskScheduler(persistent); |
persistent.getServiceTaskSchedulerParameters().add(param); |
param.setName(name); |
DaoFactory.getJobServiceTaskSchedulerParameterDaoImpl().save(param); |
} |
public static void main(String[] args) throws SQLException |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
/impl/src/java/pt/estgp/estgweb/services/jobs/ServiceJob.java |
---|
22,7 → 22,15 |
public abstract class ServiceJob implements JobHandler |
{ |
public static final String JOB_importYear_KEY = "JOB_importYear_KEY"; |
public static final String JOB_semestre_KEY = "JOB_semestre_KEY"; |
public static final String JOB_sendIonline_KEY = "JOB_sendIonline_KEY"; |
public static final String JOB_sendEmail_KEY = "JOB_sendEmail_KEY"; |
public static final String JOB_cloneOnlyNews_KEY = "JOB_cloneOnlyNews_KEY"; |
public static final String JOB_generateAllPdfs_KEY = "JOB_generateAllPdfs_KEY"; |
public static final String JOB_validate_KEY = "JOB_validade_KEY"; |
/*Log for service run*/ |
protected final Logger serviceLog = Logger.getLogger(ServiceJob.class); |
/*Class regular log*/ |
136,8 → 144,10 |
protected abstract ILogMessages runJobServiceTask() throws Throwable; |
protected void commitPartially() { |
AbstractDao.getCurrentSession().getTransaction().commit(); |
AbstractDao.getCurrentSession().beginTransaction(); |
AbstractDao.getCurrentSession().update(jobServiceTask); |
if(jobServiceTask != null) |
AbstractDao.getCurrentSession().update(jobServiceTask); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitProgramImpl.java |
---|
505,9 → 505,13 |
private static void importCourseUnit(CourseUnitInputLine line, String importYear) throws TransformerException, IOException, FOPException { |
CourseUnit cu; |
CourseUnit cu = null; |
try{ |
cu = DaoFactory.getCourseUnitDaoImpl().loadBySigesCodeUnique(line.codigoSIGESUnidade,line.codigoCurso,line.semestre, importYear); |
//todo revisao necessaria |
System.out.println("######FRAGMENTO DE CODIGO DESATUALIZADO, NESTE MOMENTO UMA CADEIRA AQUI NAO E UNICA (FALTA ID DE TURMA) -> NECESSITA DE REVISAO"); |
List<CourseUnit> cs = DaoFactory.getCourseUnitDaoImpl().loadBySigesCode(line.codigoSIGESUnidade,line.codigoCurso,line.semestre, importYear); |
if(cs!=null && cs.size() > 0) |
cu=cs.get(0); |
}catch(NonUniqueResultException e) |
{ |
errors.add("unidade nao unica: " + line.codigoSIGESUnidade + ":" + line.codigoCurso + ":" + line.semestre + ":" + importYear ); |
/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/java/pt/estgp/estgweb/domain/CourseUnitImpl.java |
---|
97,7 → 97,8 |
return anCourseUnit.getCode() != null && getCode() != null && getCode().equals(anCourseUnit.getCode()) && |
anCourseUnit.getCourseCode() != null && getCourseCode() != null && getCourseCode().equals(anCourseUnit.getCourseCode()) && |
anCourseUnit.getSemestre() != null && getSemestre() != null && getSemestre().equals(anCourseUnit.getSemestre()) && |
anCourseUnit.getImportYear() != null && getImportYear() != null && getImportYear().equals(anCourseUnit.getImportYear()); |
anCourseUnit.getImportYear() != null && getImportYear() != null && getImportYear().equals(anCourseUnit.getImportYear()) && |
anCourseUnit.getCdTurma() != null && getCdTurma() != null && getCdTurma().equals(anCourseUnit.getCdTurma()); |
} |
return false; |
137,7 → 138,7 |
public String getSigesUniqueIdentifiers() |
{ |
return "SIGES:" + getCode() + ", COURSE: " + getCourseCode() + |
", " + getSemestre() + " of " + getImportYear() + " - " + getName(); |
", " + getSemestre() + " of " + getImportYear() + " - " + getName() + " Turma - " + getCdTurma(); |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/UserDaoImpl.java |
---|
12,6 → 12,7 |
import pt.estgp.estgweb.services.common.SearchTypeEnum; |
import java.io.Serializable; |
import java.util.ArrayList; |
import java.util.Date; |
import java.util.List; |
133,6 → 134,8 |
public List<User> loadRoleUsers(String role) |
{ |
if(role == null || role.trim().length() == 0) |
return new ArrayList<User>(); |
return createCriteria().add(like("roles", "%" + role + "%")).addOrder(Order.asc("name")).list(); |
} |
226,10 → 229,14 |
// Duarte Santos |
public List<User> loadRolesUsers(List<String> roles) |
{ |
if(roles == null || roles.size() == 0) |
return new ArrayList<User>(); |
Criteria criteria = createCriteria(); |
Criterion co = null; |
for (String role : roles) |
{ |
if(role.trim().length() == 0) |
continue; |
Criterion cor = like("roles", "%" + role + "%"); |
if (co == null) |
co = cor; |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java |
---|
222,15 → 222,24 |
//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) |
/** |
* Turma required to be unique in BACO Model |
* @param sigesCode |
* @param courseCode |
* @param semestre |
* @param year |
* @return |
*/ |
public List<CourseUnit> loadBySigesCode(String sigesCode, String courseCode, String semestre, String year) |
{ |
return (CourseUnit) |
return |
createCriteria() |
.add(eq("code", sigesCode)) |
.add(eq("courseCode", courseCode)) |
.add(eq("semestre", semestre)) |
.add(eq("importYear", year)) |
.uniqueResult(); |
.list(); |
} |
/** |
/impl/src/java/pt/estgp/estgweb/domain/JobServiceTaskSchedulerImpl.java |
---|
53,4 → 53,55 |
return "unknown"; |
} |
private String calendarization; |
public String getCalendarization() { |
if(calendarization == null) |
{ |
if(isDaily()) |
return CalendarizationEnum.DAILY.name(); |
else if(isMonthly()) |
return CalendarizationEnum.MONTLY.name(); |
else if(isWeekly()) |
return CalendarizationEnum.WEEKLY.name(); |
else |
return CalendarizationEnum.DAILY.name(); |
} |
return calendarization; |
} |
public void setCalendarization(String calendarization) { |
this.calendarization = calendarization; |
CalendarizationEnum calendarizationEnum = CalendarizationEnum.parse(calendarization); |
setDaily(false); |
setMonthly(false); |
setWeekly(false); |
if(calendarizationEnum == CalendarizationEnum.DAILY) |
setDaily(true); |
else if(calendarizationEnum == CalendarizationEnum.MONTLY) |
setMonthly(true); |
else if(calendarizationEnum == CalendarizationEnum.WEEKLY) |
setWeekly(true); |
} |
public enum CalendarizationEnum |
{ |
DAILY,WEEKLY,MONTLY; |
public static CalendarizationEnum parse(String cal) |
{ |
if(cal == null) |
return MONTLY; |
for(CalendarizationEnum en: CalendarizationEnum.values()) |
if(en.name().equals(cal)) |
return en; |
return MONTLY; |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/filters/filters/Session.java |
---|
36,13 → 36,14 |
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception { |
UserSessionImpl userSession = null; |
Configuration config = DaoFactory.getConfigurationDaoImpl().loadSimpleConfigurationForConsult(); |
try |
{ |
userSession = (UserSessionImpl) DaoFactory.getUserSessionDaoImpl().get((Serializable) request.getRequester()); |
if(userSession != null && userSession.getObjects() != null) |
{ |
Configuration config = DaoFactory.getConfigurationDaoImpl().loadSimpleConfigurationForConsult(); |
userSession.setNowConfiguration(config); |
for(SessionObject sessionObject: userSession.getObjects()) |
{ |
51,6 → 52,7 |
} |
if(userSession != null && new Date().getTime() - userSession.getSaveDate().getTime() < TIMEOUT_SESSION) |
{ |
userSession.setNowConfiguration(config); |
putSessionInArgs(userSession,request); |
userSession.setSaveDate(new Date()); //todo NOVO refrescar a sessao |
return; |
81,6 → 83,8 |
userSession.setUpdateDate(new Date()); |
DaoFactory.getUserSessionDaoImpl().saveOrUpdate(userSession); |
// System.out.println(Thread.currentThread().getId() +"UPDATE: " + request.getRequester()); |
userSession.setNowConfiguration(config); |
putSessionInArgs(userSession,request); |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/form/configuration/SchedulleTasksForm.java |
---|
18,13 → 18,82 |
private Long id; |
private String jobImportYearKey; |
private String jobSemestreKey; |
private String jobSendIonlineKey; |
private String jobSendEmailKey; |
private String jobCloneOnlyNewsKey; |
private String jobGenerateAllPdfsKey; |
private String jobValidateKey; |
public SchedulleTasksForm() |
{ |
if(jobScheduller == null) |
{ |
jobScheduller = DomainObjectFactory.createJobServiceTaskSchedulerImpl(); |
} |
} |
public String getJobImportYearKey() { |
return jobImportYearKey; |
} |
public void setJobImportYearKey(String jobImportYearKey) { |
this.jobImportYearKey = jobImportYearKey; |
} |
public String getJobSemestreKey() { |
return jobSemestreKey; |
} |
public void setJobSemestreKey(String jobSemestreKey) { |
this.jobSemestreKey = jobSemestreKey; |
} |
public String getJobSendIonlineKey() { |
return jobSendIonlineKey; |
} |
public void setJobSendIonlineKey(String jobSendIonlineKey) { |
this.jobSendIonlineKey = jobSendIonlineKey; |
} |
public String getJobSendEmailKey() { |
return jobSendEmailKey; |
} |
public void setJobSendEmailKey(String jobSendEmailKey) { |
this.jobSendEmailKey = jobSendEmailKey; |
} |
public String getJobCloneOnlyNewsKey() { |
return jobCloneOnlyNewsKey; |
} |
public void setJobCloneOnlyNewsKey(String jobCloneOnlyNewsKey) { |
this.jobCloneOnlyNewsKey = jobCloneOnlyNewsKey; |
} |
public String getJobGenerateAllPdfsKey() { |
return jobGenerateAllPdfsKey; |
} |
public void setJobGenerateAllPdfsKey(String jobGenerateAllPdfsKey) { |
this.jobGenerateAllPdfsKey = jobGenerateAllPdfsKey; |
} |
public String getJobValidateKey() { |
return jobValidateKey; |
} |
public void setJobValidateKey(String jobValidateKey) { |
this.jobValidateKey = jobValidateKey; |
} |
public JobServiceTaskSchedulerImpl getDirectory() |
{ |
if(jobScheduller == null) |
32,6 → 101,10 |
return jobScheduller; |
} |
public JobServiceTaskSchedulerImpl getJobScheduller() { |
return jobScheduller; |
} |
public void setJobScheduller(JobServiceTaskSchedulerImpl jobScheduller) { |
this.jobScheduller = jobScheduller; |
} |
52,4 → 125,6 |
public void setJobServiceTask(JobServiceTaskImpl jobServiceTask) { |
this.jobServiceTask = jobServiceTask; |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/controllers/configuration/SchedulerTasksController.java |
---|
4,10 → 4,10 |
import org.apache.struts.action.ActionForm; |
import org.apache.struts.action.ActionForward; |
import org.apache.struts.action.ActionMapping; |
import pt.estgp.estgweb.domain.JobServiceTaskImpl; |
import pt.estgp.estgweb.domain.JobServiceTaskScheduler; |
import pt.estgp.estgweb.domain.JobServiceTaskSchedulerImpl; |
import pt.estgp.estgweb.services.directories.xsd.*; |
import pt.estgp.estgweb.domain.*; |
import pt.estgp.estgweb.services.directories.xsd.LeafT; |
import pt.estgp.estgweb.services.directories.xsd.LeafTImpl; |
import pt.estgp.estgweb.services.jobs.ServiceJob; |
import pt.estgp.estgweb.web.UserSessionProxy; |
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController; |
import pt.estgp.estgweb.web.form.configuration.DirectoriesForm; |
20,7 → 20,6 |
import javax.servlet.ServletException; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
import java.util.Iterator; |
/** |
* @author Jorge Machado |
33,7 → 32,19 |
private static final Logger logger = Logger.getLogger(SchedulerTasksController.class); |
public ActionForward newTask(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable |
{ |
SchedulleTasksForm sf = (SchedulleTasksForm) form; |
sf.setJobScheduller(DomainObjectFactory.createJobServiceTaskSchedulerImpl()); |
return mapping.findForward("task"); |
} |
public ActionForward load(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
50,7 → 61,39 |
try |
{ |
JobServiceTaskSchedulerImpl d = (JobServiceTaskSchedulerImpl) sm.execute(RequestUtils.getRequester(request, response), "LoadJobServiceTaskScheduler", args, names); |
for(JobServiceTaskSchedulerParameter p: d.getServiceTaskSchedulerParameters()) |
{ |
if(p.getName().equals(ServiceJob.JOB_importYear_KEY)) |
{ |
sf.setJobImportYearKey(p.getObject()); |
}else if(p.getName().equals(ServiceJob.JOB_semestre_KEY)) |
{ |
sf.setJobSemestreKey(p.getObject()); |
} |
else if(p.getName().equals(ServiceJob.JOB_cloneOnlyNews_KEY)) |
{ |
sf.setJobCloneOnlyNewsKey(p.getObject()); |
} |
else if(p.getName().equals(ServiceJob.JOB_generateAllPdfs_KEY)) |
{ |
sf.setJobGenerateAllPdfsKey(p.getObject()); |
} |
else if(p.getName().equals(ServiceJob.JOB_sendEmail_KEY)) |
{ |
sf.setJobSendEmailKey(p.getObject()); |
} |
else if(p.getName().equals(ServiceJob.JOB_sendIonline_KEY)) |
{ |
sf.setJobSendIonlineKey(p.getObject()); |
} |
else if(p.getName().equals(ServiceJob.JOB_validate_KEY)) |
{ |
sf.setJobValidateKey(p.getObject()); |
} |
} |
sf.setJobScheduller(d); |
} |
catch (FilterChainFailedException e) |
{ |
64,6 → 107,44 |
return mapping.findForward("task"); |
} |
public ActionForward save(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable |
{ |
SchedulleTasksForm sf = (SchedulleTasksForm) form; |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{sf.getJobScheduller() |
,sf.getJobCloneOnlyNewsKey() |
,sf.getJobGenerateAllPdfsKey() |
,sf.getJobImportYearKey() |
,sf.getJobSemestreKey() |
,sf.getJobSendEmailKey() |
,sf.getJobSendIonlineKey() |
,sf.getJobValidateKey() |
}; |
try |
{ |
sm.execute(RequestUtils.getRequester(request, response), "SaveJobServiceTaskScheduler", args, names); |
addMessage(request, "configuration.tasks.saved"); |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
throw e; |
} |
return mapping.findForward("tasks"); |
} |
public ActionForward loadLog(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
239,234 → 320,21 |
return mapping.findForward("directory"); |
} |
public ActionForward save(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable { |
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services")) |
{ |
return mapping.findForward("error401"); |
} |
DirectoriesForm df = (DirectoriesForm) form; |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{df.getDirectory()}; |
try { |
sm.execute(RequestUtils.getRequester(request, response), "SaveDirectoryService", args, names); |
} |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e, e); |
throw e; |
} |
addMessage(request, "directories.saved"); |
return mapping.findForward("directories"); |
} |
public ActionForward cancel(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services")) |
{ |
return mapping.findForward("error401"); |
} |
addMessage(request, "directories.canceled"); |
return mapping.findForward("directories"); |
addMessage(request, "configuration.tasks.canceled"); |
return mapping.findForward("tasks"); |
} |
public ActionForward removeLeaf(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services")) |
{ |
return mapping.findForward("error401"); |
} |
DirectoriesForm df = (DirectoriesForm) form; |
String idParent = df.getId(); |
LeafT leaf = LeafTImpl.removeLeaf(df.getDirectory(), idParent); |
if(leaf == null) |
{ |
addError(request,"directories.leaf.not.found",idParent); |
return mapping.findForward("directories"); |
} |
addMessage(request, "directories.removed.leaf", idParent); |
leaf.getLeaf().add(new LeafTImpl()); |
return mapping.findForward("directory"); |
} |
public ActionForward addRight(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services")) |
{ |
return mapping.findForward("error401"); |
} |
DirectoriesForm df = (DirectoriesForm) form; |
String idParent = df.getId(); |
LeafT leaf = LeafTImpl.findLeaf(df.getDirectory(), idParent); |
if(leaf == null) |
{ |
addError(request,"directories.leaf.not.found",idParent); |
return mapping.findForward("directories"); |
} |
leaf.getRights().getRight().add(new RightImpl()); |
addMessage(request, "directories.add.right", idParent); |
return mapping.findForward("directory"); |
} |
public ActionForward removeRight(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services")) |
{ |
return mapping.findForward("error401"); |
} |
DirectoriesForm df = (DirectoriesForm) form; |
String idParent = df.getId(); |
LeafT leaf = LeafTImpl.findLeaf(df.getDirectory(), idParent); |
if(leaf == null) |
{ |
addError(request,"directories.leaf.not.found",idParent); |
return mapping.findForward("directories"); |
} |
Iterator<RightsT.Right> iter = leaf.getRights().getRight().iterator(); |
while(iter.hasNext()) |
{ |
RightsT.Right r =iter.next(); |
if(r.getName().equals(df.getRname()) && r.getTarget().equals(df.getRtarget()) && df.getRtype().equals(r.getType())) |
{ |
iter.remove(); |
} |
} |
addMessage(request, "directories.remove.right", df.getRname(),df.getRtarget(),df.getRtype()); |
return mapping.findForward("directory"); |
} |
public ActionForward addDirRight(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services")) |
{ |
return mapping.findForward("error401"); |
} |
DirectoriesForm df = (DirectoriesForm) form; |
String idParent = df.getId(); |
df.getDirectory().getRights().getRight().add(new RightImpl()); |
addMessage(request, "directories.add.right"); |
return mapping.findForward("directory"); |
} |
public ActionForward removeDirRight(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services")) |
{ |
return mapping.findForward("error401"); |
} |
DirectoriesForm df = (DirectoriesForm) form; |
Iterator<RightsT.Right> iter = df.getDirectory().getRights().getRight().iterator(); |
while(iter.hasNext()) |
{ |
RightsT.Right r =iter.next(); |
if(r.getName().equals(df.getRname()) && r.getTarget().equals(df.getRtarget()) && df.getRtype().equals(r.getType())) |
{ |
iter.remove(); |
} |
} |
addMessage(request, "directories.remove.right", df.getRname(),df.getRtarget(),df.getRtype()); |
return mapping.findForward("directory"); |
} |
public ActionForward addDirGroup(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services")) |
{ |
return mapping.findForward("error401"); |
} |
DirectoriesForm df = (DirectoriesForm) form; |
String idParent = df.getId(); |
df.getDirectory().getGroupsDeclaration().getGroup().add(new GroupImpl()); |
addMessage(request, "directories.add.group"); |
return mapping.findForward("directory"); |
} |
public ActionForward removeDirGroup(ActionMapping mapping, |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws ServletException |
{ |
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("services")) |
{ |
return mapping.findForward("error401"); |
} |
DirectoriesForm df = (DirectoriesForm) form; |
Iterator<GroupDeclarationT.Group> iter = df.getDirectory().getGroupsDeclaration().getGroup().iterator(); |
while(iter.hasNext()) |
{ |
GroupDeclarationT.Group g =iter.next(); |
if(g.getName().equals(df.getRname())) |
{ |
iter.remove(); |
} |
} |
addMessage(request, "directories.remove.group"); |
return mapping.findForward("directory"); |
} |
} |
/impl/src/web/auth/index.jsp |
---|
5,6 → 5,11 |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSessionImpl" scope="request"/> |
<html:errors/> |
<% |
%> |
<div class="container"> |
<logic:notEmpty name="UserSession" property="nowConfiguration.openInfoIntranet"> |
<div class="row"> |
32,4 → 37,4 |
</div> |
</div> |
</div> |
/impl/src/web/admin/courses/course.jsp |
---|
12,6 → 12,17 |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<jsp:useBean id="CourseView" type="pt.estgp.estgweb.domain.views.CourseView" scope="request"/> |
<script> |
function alertPermissions() |
{ |
alert("Este procedimento afecta as permissões atuais no sistema de ficheiros da intranet. Após salvar estas alterações, por favor gere o BAT de geração de pastas e corra-o novamente na raiz do servidor IONLINE") |
} |
function alertFolders(place) |
{ |
alert("Caro administrador, lembramos-lhe que alterar o " + place + " de uma unidade curricular implica trocar a pasta de ficheiros da intranet do " + place + " onde esta se encontrava para o " + place + " onde actualmente se encontra. O BACO irá actualizar a nova LOCALIZAÇÃO da pasta de ficheiros na sua base de dados. Mas a pasta terá de ser fisicamente alterada pela administração de sistemas."); |
} |
</script> |
<html:errors/> |
<jomm:messages/> |
<html:form action="/user/courseControllerFromServiceZone" enctype="multipart/form-data"> |
22,6 → 33,7 |
<bean:write name="CourseView" property="htmlResult"/> |
</pre> |
</logic:present> |
<table class="form"> |
<tr> |
<th> |
79,7 → 91,7 |
<html:option value="O"><bean:message key="course.O"/></html:option> |
<html:option value="T"><bean:message key="course.T"/></html:option> |
</html:select> |
** SIGES: <bean:write name="CourseForm" property="courseView.degree"/> - Confirmar Mestrados e Pos graduacoes e informar equipa de desenvolvimento |
** SIGES: <bean:write name="CourseForm" property="courseView.degree"/> - Qualquer erro de atrbuição informar imediatamente a equipa de desenvolvimento |
</td> |
</tr> |
<tr> |
108,7 → 120,7 |
<bean:message key="course.userGroupStudents"/> |
</th> |
<td> |
<html:text property="courseView.userGroupStudents"/> |
<html:text onchange="alertPermissions()" property="courseView.userGroupStudents"/> |
</td> |
</tr> |
125,7 → 137,7 |
<bean:message key="course.coordinator"/> |
</th> |
<td> |
<html:select property="courseView.coordinator.id"> |
<html:select onchange="alertPermissions()" property="courseView.coordinator.id"> |
<html:option value="0"> |
<bean:message key="none"/> |
</html:option> |
144,7 → 156,7 |
<bean:message key="course.director"/> |
</th> |
<td> |
<html:select property="courseView.director.id"> |
<html:select onchange="alertPermissions()" property="courseView.director.id"> |
<html:option value="0"> |
<bean:message key="none"/> |
</html:option> |
178,7 → 190,7 |
request.setAttribute("targetRoles",targetRoles); |
%> |
<td> |
<html:select property="courseView.validationRole"> |
<html:select onchange="alertPermissions()" property="courseView.validationRole"> |
<logic:iterate id="role" name="targetRoles"> |
<html:option value="${role}" key="user.role.${role}"/> |
</logic:iterate> |
191,10 → 203,9 |
<tr> |
<td> |
<th> |
<bean:message key="course.externalSite"/> |
</td> |
</th> |
<td> |
<html:select property="courseView.externalSiteServer"> |
<html:option value="estgp">ESTG</html:option> |
/impl/src/web/admin/courseunits/courseunit.jsp |
---|
12,6 → 12,17 |
<%@ 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" %> |
<script> |
function alertPermissions() |
{ |
alert("Este procedimento afecta as permissões atuais no sistema de ficheiros da intranet. Após salvar estas alterações, por favor gere o BAT de geração de pastas e corra-o novamente na raiz do servidor IONLINE") |
} |
function alertFolders(place) |
{ |
alert("Caro administrador, lembramos-lhe que alterar o " + place + " de uma unidade curricular implica trocar a pasta de ficheiros da intranet do " + place + " onde esta se encontrava para o " + place + " onde actualmente se encontra. O BACO irá actualizar a nova LOCALIZAÇÃO da pasta de ficheiros na sua base de dados. Mas a pasta terá de ser fisicamente alterada pela administração de sistemas."); |
} |
</script> |
<% |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
62,7 → 73,7 |
<bean:message key="courseunit.course"/> |
</th> |
<td> |
<html:select property="courseUnitView.courseId"> |
<html:select onchange="alertFolders('curso')" property="courseUnitView.courseId"> |
<logic:iterate id="course" name="Courses" type="pt.estgp.estgweb.domain.views.CourseView"> |
<html:option value="${course.id}">(${course.code}) ${course.name}</html:option> |
</logic:iterate> |
82,14 → 93,14 |
<bean:message key="courseunit.semestre"/> |
</th> |
<td> |
<html:select property="courseUnitView.semestre"> |
<html:option value="S1">S1</html:option> |
<html:option value="S2">S2</html:option> |
<html:option value="A">A</html:option> |
<html:option value="T1">T1</html:option> |
<html:option value="T2">T2</html:option> |
<html:option value="T3">T3</html:option> |
<html:option value="T4">T4</html:option> |
<html:select onchange="alertFolders('semestre')" property="courseUnitView.semestre"> |
<html:option value="S1"><bean:message key="courseunit.S1"/></html:option> |
<html:option value="S2"><bean:message key="courseunit.S2"/></html:option> |
<html:option value="A"><bean:message key="courseunit.A"/></html:option> |
<html:option value="T1"><bean:message key="courseunit.T1"/></html:option> |
<html:option value="T2"><bean:message key="courseunit.T2"/></html:option> |
<html:option value="T3"><bean:message key="courseunit.T3"/></html:option> |
<html:option value="T4"><bean:message key="courseunit.T4"/></html:option> |
</html:select> |
</td> |
</tr> |
98,13 → 109,21 |
<bean:message key="courseunit.importYear"/> |
</th> |
<td> |
<html:select property="courseUnitView.importYear"> |
<html:select onchange="alertFolders('ano')" property="courseUnitView.importYear"> |
<logic:iterate id="item" name="CourseUnitsForm" property="importYears"> |
<html:option value="${item}">${item}</html:option> |
</logic:iterate> |
</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"/> |
119,7 → 138,7 |
<bean:message key="courseunit.responsable"/> |
</th> |
<td> |
<html:select property="courseUnitView.responsableId"> |
<html:select onchange="alertPermissions();" property="courseUnitView.responsableId"> |
<html:option value="0"></html:option> |
<logic:iterate id="teacher" name="CourseUnitsForm" property="teachers" type="pt.estgp.estgweb.domain.views.UserView"> |
<html:option value="${teacher.id}">(${teacher.code}) ${teacher.name}</html:option> |
146,7 → 165,7 |
</jomm:option> |
</logic:iterate> |
<input type="button" value="<bean:message key="add"/>" |
onclick="set(this.form,'addTeacher');this.form.submit();"> |
onclick="alertPermissions();set(this.form,'addTeacher');this.form.submit();"> |
</logic:present> |
</html:select> |
<logic:greaterThan name="CourseUnitView" property="teachersSize" value="0"> |
183,7 → 202,7 |
<logic:greaterThan value="0" name="CourseUnitView" property="id"> |
<html:text styleClass="text" property="studentCode"/> |
<input type="button" value="<bean:message key="add"/>" |
onclick="if(this.form.studentCode.value=='0' || this.form.studentCode.value==''){alert('Por favor coloque o numero de aluno antes de adicionar');}else{set(this.form,'addStudent');this.form.submit();}"> |
onclick="if(this.form.studentCode.value=='0' || this.form.studentCode.value==''){alert('Por favor coloque o numero de aluno antes de adicionar');}else{alertPermissions();set(this.form,'addStudent');this.form.submit();}"> |
<logic:greaterThan name="CourseUnitView" property="studentsSize" value="0"> |
<table id="myTable" class="tablesorter dataTable removeButton"> |
/impl/src/web/admin/configuration/tasks.jsp |
---|
88,11 → 88,11 |
<a href="<%=request.getContextPath()%>/user/configurationJobTasks.do" style="float:right" class="btn btn-default"><span class="glyphicon glyphicon-list-alt">Consultar Todos os Logs</span></a> |
<button type="button" style="float:right" class="btn btn-success" onclick="set(form,'new');form.submit();"><span class="glyphicon glyphicon-plus">Agendar</span></button> |
<a href="<%=request.getContextPath()%>/user/configurationTasks.do?dispatch=newTask" style="float:right" class="btn btn-success" onclick="set(form,'new');form.submit();"><span class="glyphicon glyphicon-plus">Agendar</span></a> |
<a href="<%=request.getContextPath()%>/user/configurationSchedulleTasks.do" class="btn btn-info"><span class="glyphicon glyphicon-refresh"></span></a> |
</div> |
<div class="panel-body"> |
<table id="myTable" class="tablesorter"> |
<table id="myTable" class="tablesorter tablesorterfiltered"> |
<thead> |
<tr> |
<th>Agora</th> |
/impl/src/web/admin/configuration/task.jsp |
---|
2,6 → 2,8 |
<%@ page import="pt.estgp.estgweb.domain.JobServiceTaskScheduler" %> |
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %> |
<%@ page import="java.util.List" %> |
<%@ page import="pt.estgp.estgweb.utils.DatesUtils" %> |
<%@ page import="com.sun.mail.handlers.image_gif" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
11,111 → 13,300 |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib prefix="hmlt" uri="http://jakarta.apache.org/struts/tags-html" %> |
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/> |
<jsp:useBean id="SchedulleTasksForm" type="pt.estgp.estgweb.web.form.configuration.SchedulleTasksForm" scope="request"/> |
<jomm:messages/> |
<html:errors/> |
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/variables.less"/> |
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/lavish-bootstrap.css"/> |
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/js/jquerytables/bootstrap/css/bootstrap.css"/> |
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/js/jquerytables/bootstrap/css/bootstrap-theme.css"/> |
<script> |
$(document).ready(function() |
{ |
<logic:equal value="true" name="SchedulleTasksForm" property="jobScheduller.weekly"> |
$("#weekdaySelection").show(); |
$("#monthdaySelection").hide(); |
</logic:equal> |
<logic:equal value="true" name="SchedulleTasksForm" property="jobScheduller.monthly"> |
$("#weekdaySelection").hide(); |
$("#monthdaySelection").show(); |
</logic:equal> |
<logic:equal value="true" name="SchedulleTasksForm" property="jobScheduller.daily"> |
$("#weekdaySelection").hide(); |
$("#monthdaySelection").hide(); |
</logic:equal> |
<logic:equal value="false" name="SchedulleTasksForm" property="jobScheduller.daily"> |
<logic:equal value="false" name="SchedulleTasksForm" property="jobScheduller.monthly"> |
<logic:equal value="false" name="SchedulleTasksForm" property="jobScheduller.weekly"> |
$("#weekdaySelection").hide(); |
$("#monthdaySelection").hide(); |
</logic:equal> |
</logic:equal> |
</logic:equal> |
changeParameters(); |
<script src="<%=request.getContextPath()%>/js/jquerytables/jquery-2.1.4.min.js"></script> |
<script src="<%=request.getContextPath()%>/js/jquerytables/bootstrap/js/bootstrap.min.js"></script> |
} |
); |
function changeForms(calendarization) |
{ |
if(calendarization == "DAILY") |
{ |
$("#weekdaySelection").hide(); |
$("#monthdaySelection").hide(); |
} |
else if(calendarization == "MONTLY") |
{ |
$("#weekdaySelection").hide(); |
$("#monthdaySelection").show(); |
} |
else if(calendarization == "WEEKLY") |
{ |
$("#weekdaySelection").show(); |
$("#monthdaySelection").hide(); |
} |
} |
function changeParameters() |
{ |
$("#jobImportYearKeyPart").hide(); |
$("#jobSemestreKeyPart").hide(); |
$("#jobSendIonlineKeyPart").hide(); |
$("#jobSendEmailKeyPart").hide(); |
$("#jobCloneOnlyNewsKeyPart").hide(); |
$("#jobGenerateAllPdfsKeyPart").hide(); |
$("#jobValidateKeyPart").hide(); |
type = $("#targetService").val(); |
if(type == "pt.estgp.estgweb.services.sigesimports.ImportCourseService") |
{ |
$("#jobImportYearKeyPart").show(); |
} |
else if(type == "pt.estgp.estgweb.services.sigesimports.ImportGradesService") |
{ |
$("#jobImportYearKeyPart").show(); |
} |
else if(type == "pt.estgp.estgweb.services.sigesimports.ImportTeachersService") |
{ |
$("#jobImportYearKeyPart").show(); |
} |
else if(type == "pt.estgp.estgweb.services.sigesimports.ImportStudentsService") |
{ |
$("#jobImportYearKeyPart").show(); |
} |
else if(type == "pt.estgp.estgweb.services.sigesimports.ImportSumariesJson") |
{ |
$("#jobImportYearKeyPart").show(); |
$("#jobSemestreKeyPart").show(); |
$("#jobSendIonlineKeyPart").show(); |
$("#jobSendEmailKeyPart").show(); |
} |
else if(type == "pt.estgp.estgweb.services.sigesimports.SincronizeLastYearCourseUnitProgramsService") |
{ |
$("#jobImportYearKeyPart").show(); |
//$("#jobSemestreKeyPart").show(); |
$("#jobCloneOnlyNewsKeyPart").show(); |
$("#jobGenerateAllPdfsKeyPart").show(); |
$("#jobValidateKeyPart").show(); |
} |
else |
{ |
$("#jobImportYearKeyPart").show(); |
} |
<% |
AbstractDao.getCurrentSession().beginTransaction(); |
List<JobServiceTaskScheduler> schedulledTasks = DaoFactory.getJobServiceTaskSchedulerDaoImpl().findAll(); |
request.setAttribute("tasks",schedulledTasks); |
%> |
} |
</script> |
<div class="container-fluid"> |
<div class="panel panel-default"> |
<div class="panel-heading"> |
<bean:message key="configuration.tasks"/> |
<button type="button" style="float:right" class="btn btn-default" onclick="set(form,'new');form.submit();"><span class="glyphicon glyphicon-list-alt">Consultar Todos os Logs</span></button> |
<button type="button" style="float:right" class="btn btn-success" onclick="set(form,'new');form.submit();"><span class="glyphicon glyphicon-plus">Agendar</span></button> |
<bean:message key="configuration.task"/> |
</div> |
<div class="panel-body"> |
<table class="datatable tablesorter"> |
<thead> |
<tr> |
<th><bean:message key="configuration.task"/></th> |
<th>Tipo</th> |
<th>Calendarização</th> |
<th>Criador</th> |
<th>Parametros</th> |
<th>Última</th> |
<th>Progresso</th> |
<th></th> |
</tr> |
</thead> |
<tbody> |
<logic:iterate id="task" name="tasks" type="pt.estgp.estgweb.domain.JobServiceTaskSchedulerImpl"> |
<tr> |
<td><bean:message key="targetService.${task.targetService}"/></td> |
<td><bean:message key="configuration.task.${task.typeMsgKey}"/></td> |
<td> |
<logic:equal value="true" name="task" property="weekly"> |
<bean:message key="weekday.day"/> <bean:message key="weekday.${task.weekDayMsgKey}"/> |
</logic:equal> |
<logic:equal value="true" name="task" property="monthly"> |
<bean:message key="monthday.day"/> ${task.monthday} |
</logic:equal> |
<bean:message key="day.time"/> |
${task.hour}:${task.minute} |
</td> |
<html:form action="/user/configurationTasks" > |
<input type="hidden" name="dispatch" value="save"/> |
<html:hidden property="jobScheduller.id"/> |
<div class="form-group"> |
<label for="targetService">Tarefa:</label> |
<html:select onchange="changeParameters()" property="jobScheduller.targetService" styleClass="form-control" styleId="targetService"> |
<html:option value="pt.estgp.estgweb.services.sigesimports.ImportCourseService">Importação de Cursos</html:option> |
<html:option value="pt.estgp.estgweb.services.sigesimports.ImportGradesService">Importação de Notas</html:option> |
<html:option value="pt.estgp.estgweb.services.sigesimports.ImportTeachersService">Importação de Docentes</html:option> |
<html:option value="pt.estgp.estgweb.services.sigesimports.ImportStudentsService">Importação de Estudantes</html:option> |
<html:option value="pt.estgp.estgweb.services.sigesimports.ImportSumariesJson">Importação de Sumários</html:option> |
<html:option value="pt.estgp.estgweb.services.sigesimports.SincronizeLastYearCourseUnitProgramsService">Clonagem de Fichas Curriculares</html:option> |
</html:select> |
</div> |
<div class="form-group"> |
<label for="description">Descrição:</label> |
<html:textarea styleClass="form-control" styleId="description" property="jobScheduller.description"/> |
</div> |
<div class="form-group"> |
<label for="description">Calendarização:</label> |
<html:select styleClass="form-control" property="jobScheduller.calendarization" onchange="changeForms(this.value)"> |
<html:option value="DAILY">Diário</html:option> |
<html:option value="WEEKLY">Semanal</html:option> |
<html:option value="MONTLY">Mensal</html:option> |
</html:select> |
</div> |
<div class="form-group" id="weekdaySelection"> |
<label for="weekday">Dia da Semana:</label> |
<html:select styleClass="form-control" styleId="weekday" property="jobScheduller.weekday"> |
<% |
for(int i=1;i<=7;i++) |
{ |
request.setAttribute("i",i); |
%> |
<html:option value="${i}"><bean:message key="weekday.${i}"/></html:option> |
<% |
} |
%> |
</html:select> |
</div> |
<div class="form-group" id="monthdaySelection"> |
<label for="monthday">Dia do Mês:</label> |
<html:select styleClass="form-control" styleId="monthday" property="jobScheduller.monthday"> |
<% |
for(int i=1;i<31;i++) |
{ |
request.setAttribute("i",i); |
%> |
<html:option value="${i}">${i}</html:option> |
<% |
} |
%> |
</html:select> |
</div> |
<div class="form-group"> |
<div class="row"> |
<div class="col-sm-4"> |
<label for="hour">Hora:</label> |
<html:select styleClass="form-control" styleId="hour" property="jobScheduller.hour"> |
<% |
for(int i=0;i<24;i++) |
{ |
request.setAttribute("i",i); |
%> |
<html:option value="${i}">${i}</html:option> |
<% |
} |
%> |
</html:select> |
</div> |
<div class="col-sm-4"> |
<label for="minute">Minuto:</label> |
<html:select styleClass="form-control" styleId="minute" property="jobScheduller.minute"> |
<% |
for(int i=0;i<60;i++) |
{ |
request.setAttribute("i",i); |
%> |
<html:option value="${i}">${i}</html:option> |
<% |
} |
%> |
</html:select> |
</div> |
<div class="col-sm-4"> |
<label for="second">Segundo:</label> |
<html:select styleClass="form-control" styleId="second" property="jobScheduller.second"> |
<% |
for(int i=0;i<60;i++) |
{ |
request.setAttribute("i",i); |
%> |
<html:option value="${i}">${i}</html:option> |
<% |
} |
%> |
</html:select> |
</div> |
</div> |
</div> |
<!-- |
; |
<td>${task.createdBy.username}</td> |
<td> |
<table cellspacing="0" cellspadding="0"> |
<logic:iterate id="taskParam" name="task" property="serviceTaskSchedulerParameters" type="pt.estgp.estgweb.domain.JobServiceTaskSchedulerParameter"> |
<tr> |
<td> |
${taskParam.name} |
</td> |
<td> |
${taskParam.object} |
</td> |
</tr> |
</logic:iterate> |
</table> |
</td> |
<td class="jobStatus${task.lastJobServiceTask.status}"> |
<logic:notEmpty name="task" property="lastJobServiceTask"> |
<bean:message key="job.status.${task.lastJobServiceTask.status}"/> |
</logic:notEmpty> |
</td> |
<td style="text-align: right"> |
<logic:notEmpty name="task" property="lastJobServiceTask"> |
${task.lastJobServiceTask.progress} % |
</logic:notEmpty> |
</td> |
<td> |
<button type="button" class="btn btn-default"> |
<span class="glyphicon glyphicon-list-alt"></span> |
</button> |
private String jobGenerateAllPdfsKey; |
private String jobValidateKey;--> |
<div class="form-group" id="jobImportYearKeyPart"> |
<label for="jobImportYearKey">Ano:</label> |
<% |
List<String> years = DatesUtils.getImportYears(10); |
%> |
<html:select styleClass="form-control" styleId="jobImportYearKey" property="jobImportYearKey"> |
<% |
for(String year:years) |
{ |
request.setAttribute("year",year); |
%> |
<html:option value="${year}">${year}</html:option> |
<% |
} |
%> |
</html:select> |
</div> |
<div class="form-group" id="jobSemestreKeyPart"> |
<label for="jobSemestreKey">Semestre:</label> |
<html:select styleClass="form-control" styleId="jobSemestreKey" property="jobSemestreKey"> |
<html:option value="A">Anual</html:option> |
<html:option value="S1">Semestre 1</html:option> |
<html:option value="S2">Semestre 2</html:option> |
<html:option value="T1">Trimestre 1</html:option> |
<html:option value="T2">Trimestre 2</html:option> |
<html:option value="T3">Trimestre 3</html:option> |
<html:option value="T4">Trimestre 4</html:option> |
</html:select> |
</div> |
</td> |
<div class="form-group" id="jobSendIonlineKeyPart"> |
<label for="jobSendIonlineKey">Enviar para a pasta do DTP:</label> |
<html:select styleClass="form-control" styleId="jobSendIonlineKey" property="jobSendIonlineKey"> |
<html:option value="true">Sim</html:option> |
<html:option value="false">Não</html:option> |
</html:select> |
</div> |
</tr> |
</logic:iterate> |
</tbody> |
<div class="form-group" id="jobSendEmailKeyPart"> |
<label for="jobSendEmailKey">Enviar email de notificação:</label> |
<html:select styleClass="form-control" styleId="jobSendEmailKey" property="jobSendEmailKey"> |
<html:option value="true">Sim</html:option> |
<html:option value="false">Não</html:option> |
</html:select> |
</div> |
</table> |
<div class="form-group" id="jobCloneOnlyNewsKeyPart"> |
<label for="jobCloneOnlyNewsKey">Clonar apenas quando não existe ficha (Se escolher não irá clonar também fichas inválidas):</label> |
<html:select styleClass="form-control" styleId="jobCloneOnlyNewsKey" property="jobCloneOnlyNewsKey"> |
<html:option value="true">Sim</html:option> |
<html:option value="false">Não</html:option> |
</html:select> |
</div> |
<div class="form-group" id="jobGenerateAllPdfsKeyPart"> |
<label for="jobGenerateAllPdfsKey">Gerar PDF's mesmo que não clone as fichas:</label> |
<html:select styleClass="form-control" styleId="jobGenerateAllPdfsKey" property="jobGenerateAllPdfsKey"> |
<html:option value="true">Sim</html:option> |
<html:option value="false">Não</html:option> |
</html:select> |
</div> |
<div class="form-group" id="jobValidateKeyPart"> |
<label for="jobValidateKey">Validar Fichas ao Clonar:</label> |
<html:select styleClass="form-control" styleId="jobValidateKey" property="jobValidateKey"> |
<html:option value="true">Sim</html:option> |
<html:option value="false">Não</html:option> |
</html:select> |
</div> |
<button type="submit" class="btn btn-default"><bean:message key="confirm"/></button> |
</html:form> |
</div> |
</div> |
</div> |
<% |
AbstractDao.getCurrentSession().getTransaction().commit(); |
%> |
</div> |
/impl/src/web/css/intranet.css |
---|
9,10 → 9,10 |
{ |
background-color: lightsteelblue; |
} |
td.icons |
.icons a img |
{ |
width: 60px; |
white-space: nowrap; |
width: 60px !important; |
white-space: nowrap !important; |
} |
#headerIntranet td.links |
/impl/src/web/ping.jsp |
---|
New file |
0,0 → 1,4 |
<%-- |
Serviço de PING para manter a sessao online |
--%> |
{"result" : "PING OK"} |
/impl/src/web/layout/scripts.jsp |
---|
1,6 → 1,7 |
<%@ page import="pt.estgp.estgweb.web.filters.TopImageFilter" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<meta name="viewport" content="width=device-width, initial-scale=1"> |
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/yui/build/menu/assets/skins/sam/menu.css" /> |
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/yui/build/button/assets/skins/sam/button.css" /> |
8,13 → 9,20 |
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/yui/build/container/assets/skins/sam/container.css" /> |
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/yui/build/editor/assets/skins/sam/editor.css" /> |
<!--OFF CANVAS É PARA METER O BODY ABAIXO DO MENU DESLIZANTE DE TOPO--> |
<!--<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/offcanvas.css"/>--> |
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/style.css"/> |
<script type="text/javascript" src="<%=request.getContextPath()%>/js/functions.js"></script> |
<script type="text/javascript" src="<%=request.getContextPath()%>/js/ajax.js"></script> |
<script type="text/javascript" src="<%=request.getContextPath()%>/js/compactedPopup.js"></script> |
<!-- |
<style> |
body |
{ |
background: url('http://www.ist.utl.pt/img/page/cubes.png') |
} |
</style>--> |
<!-- |
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/js/jquery/style.css"/> |
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery-latest.js"></script> |
<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery.tablesorter.js"></script> |
56,7 → 64,78 |
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/variables.less"/> |
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/lavish-bootstrap.css"/> |
<script type="text/javascript" language="JavaScript"> |
var cal = new CalendarPopup(); |
/* |
//TABLE SORTER |
$(document).ready(function() |
{ |
$("#myTable").tablesorter(); |
} |
); |
*/ |
function isBreakpoint( alias ) { |
return $('.device-' + alias).is(':visible'); |
} |
$(document).ready( |
function(){ |
$("#network").hide(); |
$("#network2").hide(); |
$("#network").mouseleave( |
function(){ |
$("#network").animate({ |
height: 'hide' |
}); |
} |
); |
$("#network2").mouseleave( |
function(){ |
$("#network2").animate({ |
height: 'hide' |
}); |
} |
); |
} |
); |
function openNetwork(){ |
$("#network2").animate({ |
height: 'hide' |
}); |
$("#network").animate({ |
height: 'toggle' |
}); |
} |
function openNetwork2(){ |
$("#network").animate({ |
height: 'hide' |
}); |
$("#network2").animate({ |
height: 'toggle' |
}); |
} |
</script> |
<script language="javascript"> |
function ping() |
{ |
$.getJSON( "<%=request.getContextPath()%>/ping.jsp", function( data ) { |
setTimeout("ping()",10000); |
}); |
} |
$(document).ready(function() |
{ |
if($("#myTable")) |
231,7 → 310,7 |
widgets: ["zebra","filter"], |
ignoreCase: false, |
widthFixed : true, |
widgetOptions : {filter_reset : 'button.reset',filter_columnFilters : false}, |
widgetOptions : {filter_reset : 'button.reset',filter_columnFilters : true}, |
textExtraction: function(node) { |
// extract data from markup and return it |
if($(node).find(':input').size()>0) |
248,6 → 327,7 |
} |
); |
} |
if($(".tablesorterfiltered")) |
{ |
$(".tablesorterfiltered").tablesorter({ |
277,9 → 357,38 |
} |
); |
} |
if($(".tablesorterfiltered")) |
{ |
$(".tablesorterfiltered").tablesorter({ |
theme: 'blue', |
sortMultiSortKey: 'altKey', |
//sortList: [[0,0]], |
widgets: ["zebra","filter"], |
ignoreCase: false, |
widthFixed : true, |
widgetOptions : {filter_reset : 'button.reset',filter_columnFilters : true}, |
textExtraction: function(node) { |
// extract data from markup and return it |
if($(node).find(':input').size()>0) |
{ |
var values = $(node).find(":input").map(function() { |
return $(this).val() |
}).get().join(","); |
return values; |
} |
return $(node).text(); |
} |
} |
); |
} |
// External search |
// buttons set up like this: |
// <button type="button" data-filter-column="4" data-filter-text="2?%">Saved Search</button> |
300,6 → 409,10 |
if($('.tablesorterfiltered')) |
$.tablesorter.setFilters( $('.tablesorterfiltered'), filters, true ); // new v2.9 |
/* |
if($('.tablesorterfiltered')) |
$.tablesorter.setFilters( $('.tablesorterfiltered'), filters, true ); // new v2.9 |
*/ |
/** old method (prior to tablsorter v2.9 *** |
var filters = $('table.tablesorter').find('input.tablesorter-filter'); |
filters.val(''); // clear all filters |
/impl/src/web/layout/navigationLeftMenu.jsp |
---|
23,7 → 23,7 |
</li> |
<baco:isAuthenticated> |
<li> |
<a href=" http://mail.google.com/a/estgp.pt." target="_blank"> |
<a href=" http://mail.google.com/a/estgp.pt" target="_blank"> |
Webmail [Nova Plataforma] |
</a> |
</li> |
/impl/src/web/public/profile/profileGrades.jsp |
---|
100,7 → 100,7 |
total+=nota; |
float media = total/((float)unidadeNota.size()); |
%> |
Média: <%=media%> |
<%--Média: <%=media%>--%> |
</div> |
<table id="myTable" class="dataTable tablesorter"> |
<thead> |
112,6 → 112,9 |
<bean:message key="course.unit"/> |
</th> |
<th> |
<bean:message key="course.label"/> |
</th> |
<th> |
<bean:message key="grade"/> |
</th> |
<th> |
135,6 → 138,9 |
${grade.courseUnit.name} |
</td> |
<td> |
${grade.courseUnit.courseName} |
</td> |
<td> |
<logic:greaterThan value="0" name="grade" property="grade"> |
${grade.grade} |
</logic:greaterThan> |
/impl/src/web/user/courses/directedCoordinatedCoursesCourseView.jsp |
---|
18,6 → 18,17 |
<jsp:useBean id="SEMESTRE" type="java.lang.String" scope="request"/> |
<jsp:useBean id="courseView" type="pt.estgp.estgweb.domain.views.CourseView" scope="request"/> |
<style> |
td .icons |
{ |
white-space: nowrap !important; |
} |
td .icons a img |
{ |
width: 15px !important; |
} |
</style> |
<% |
boolean canChange = false; |
%> |
176,6 → 187,7 |
<td>${courseUnitView.code}</td> |
<td>${courseUnitView.name}</td> |
<td>${courseUnitView.cdTurma}</td> |
<td>${courseUnitView.cdTurma}</td> |
<td>${courseUnitView.teachersSnipet}</td> |
<td class="icons"> |
<a href="<%=request.getContextPath()%>/user/startLoadCourseUnitFromHome.do?id=${courseUnitView.id}"><img src="<%=request.getContextPath()%>/imgs/home.png"/></a> |
/impl/src/web/user/courseunits/courseunitworks.jsp |
---|
158,6 → 158,9 |
</td> |
<td> |
<a href="javascript:showOrHideOne('assignement${work.id}')">${work.title}</a> |
<div style="padding:5px;border:1px solid gray" id="assignement${work.id}" style="<%=Globals.HIDDEN%>"> |
${work.formatedDescription} |
</div> |
</td> |
<td> |
<logic:notEmpty name="work" property="workFile"> |
289,11 → 292,6 |
</td> |
</logic:notEmpty> |
</tr> |
<tr id="assignement${work.id}" style="<%=Globals.HIDDEN%>"> |
<td colspan="${colspanAssignement}"> |
${work.formatedDescription} |
</td> |
</tr> |
</logic:iterate> |
</tbody> |
</table> |
305,4 → 303,4 |
</div> |
</div> |
</div> |
</div> |
/impl/src/web/user/courseunits/courseunitEvaluation.jsp |
---|
24,6 → 24,11 |
<html:errors/> |
<jomm:messages/> |
<script> |
//Manter a sessão activa para os docentes não perderem os dados |
ping(); |
</script> |
<% |
IServiceManager sm = ServiceManager.getInstance(); |
/impl/src/web/user/courseunits/courseunitProgram.jsp |
---|
20,6 → 20,10 |
<div id="contentPane"> |
<html:errors/> |
<jomm:messages/> |
<script> |
//Manter a sessão activa para os docentes não perderem os dados |
ping(); |
</script> |
<% |
IServiceManager sm = ServiceManager.getInstance(); |
/impl/src/web/user/home/courseComission.jsp |
---|
107,14 → 107,14 |
{ |
%> |
<h2><a href="javascript:showOrHide('evaluationValidate<%=mis.course.getId()%>')"><%=mis.course.getName()%> / <%=mis.course.getCode()%></a> (<%=mis.courseUnits.size()%>)</h2> |
<h2><a href="javascript:showOrHide('evaluationValidate<%=mis.course.getId()%>')"><%=mis.course.getName()%> / <%=mis.course.getCode()%> </a> (<%=mis.courseUnits.size()%>)</h2> |
<div id="evaluationValidate<%=mis.course.getId()%>" style="display: none"> |
<ul> |
<% |
for(CourseUnit cu: mis.courseUnits) |
{ |
%> |
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%> / <%=cu.getCode()%></a></li> |
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%> / <%=cu.getCode()%> / <%=cu.getCdTurma()%></a></li> |
<% |
} |
%> |
170,7 → 170,7 |
for(CourseUnit cu: mis.courseUnits) |
{ |
%> |
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%> / <%=cu.getCode()%></a></li> |
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%> / <%=cu.getCode()%> / <%=cu.getCdTurma()%></a></li> |
<% |
} |
%> |
/impl/src/web/user/home/teacher.jsp |
---|
173,7 → 173,7 |
for(CourseUnit cu: programs) |
{ |
%> |
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%>/<%=cu.getCode()%> (<%=cu.getCourseName() + "/" +cu.getCourseCode()%>)</a></li> |
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitEvaluation.do?courseUnitId=<%=cu.getId()%>"><%=cu.getName()%>/<%=cu.getCode()%> (<%=cu.getCourseName() + "/" +cu.getCourseCode() +"/" + cu.getCdTurma()%>)</a></li> |
<% |
} |
%> |
211,7 → 211,7 |
for(CourseUnit cu: evaluations) |
{ |
%> |
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitFromHome.do?id=<%=cu.getId()%>"><%=cu.getName()%>/<%=cu.getCode()%> (<%=cu.getCourseName() + "/" +cu.getCourseCode()%>)</a></li> |
<li><a href="<%=request.getContextPath()%>/user/startLoadCourseUnitFromHome.do?id=<%=cu.getId()%>"><%=cu.getName()%>/<%=cu.getCode()%> (<%=cu.getCourseName() + "/" +cu.getCourseCode()+"/" + cu.getCdTurma()%>)</a></li> |
<% |
} |
%> |