Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1081 → Rev 1084

/impl/conf/language/MessageResources.properties
504,6 → 504,7
 
##TAREFAS AGENDADAS
 
configuration.jobtask=Tarefa Executada
configuration.jobtasks=Tarefas Executadas
configuration.tasks=Tarefas Agendadas
configuration.task=Tarefa Agendada
527,6 → 528,7
configuration.task.FINISHED=Terminada
configuration.task.FAILED=Falhada
configuration.task.UNKNOWN_ERROR=Terminada com erro desconhecido
configuration.task.unknown=Desconhecido
 
targetService.pt.estgp.estgweb.services.sigesimports.ImportTeachersService=Importação de Professores
targetService.pt.estgp.estgweb.services.sigesimports.ImportStudentsService=Importação de Alunos
547,7 → 549,10
weekday.day=às
day.time=às
 
 
job.schedule.inactive=Tarefa está inativa
job.schedule.active=Tarefa reativada
job.schedule.deleted=Tarefa apagada das agendadas
job.schedule.for.now=Agendada para correr assim que for possivel
job.status.PENDING=Pendente
job.status.STARTED=Iniciado
job.status.FINISHED=Terminado
/impl/conf/berserk/sd.xml
2175,6 → 2175,47
</filterChains>
</service>
 
<service>
<name>RunNowJobServiceTaskScheduller</name>
<implementationClass>pt.estgp.estgweb.services.jobs.JobScheduleService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>runNow</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Admins"/>
</filterChains>
</service>
<service>
<name>ToggleActiveJobServiceTaskScheduller</name>
<implementationClass>pt.estgp.estgweb.services.jobs.JobScheduleService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>toggleActive</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Admins"/>
</filterChains>
</service>
<service>
<name>DeleteJobServiceTaskScheduller</name>
<implementationClass>pt.estgp.estgweb.services.jobs.JobScheduleService</implementationClass>
<description></description>
<isTransactional>true</isTransactional>
<defaultMethod>delete</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="Admins"/>
</filterChains>
</service>
 
 
 
 
 
 
 
</serviceDefinitions>
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportStudentsService.java
188,8 → 188,7
logger.error(e,e);
logMessages.addMessage(new DefaultLogMessage("import.error",e.toString(), "see log for details", LogMessageTypeEnum.ERROR));
serviceLogError(e.toString(),e);
String cause = e.getCause() == null ? "" : e.getCause().toString();
sendNotificationAdmin("Erro de importacao de alunos",cause);
sendNotificationAdmin("Erro de importacao de alunos",e.toString());
}
 
 
/impl/src/java/pt/estgp/estgweb/services/jobs/JobServiceInterfaces.java
18,7 → 18,7
 
 
/*Class regular log*/
private static final Logger logger = Logger.getLogger("JobServiceTaskLog");
private static final Logger logger = Logger.getLogger(JobServiceInterfaces.class);
 
 
public JobServiceTaskSchedulerImpl loadJobServiceTaskScheduler(Long id, UserSession sess)
/impl/src/java/pt/estgp/estgweb/services/jobs/JobScheduleService.java
1,6 → 1,7
package pt.estgp.estgweb.services.jobs;
 
import jomm.dao.impl.AbstractDao;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.sigesimports.*;
18,6 → 19,8
public class JobScheduleService implements IService
{
 
private static final Logger logger = Logger.getLogger(JobScheduleService.class);
 
private static JobScheduleService instance = new JobScheduleService();
 
public static JobScheduleService getInstance()
103,6 → 106,43
}
}
 
public void runNow(Long schedulerId, UserSession sess)
{
JobServiceTaskScheduler persistent = DaoFactory.getJobServiceTaskSchedulerDaoImpl().load(schedulerId);
logger.info("Will run now task " + persistent.getTargetService() + " id:" + schedulerId);
persistent.setNow(true);
}
 
public JobServiceTaskScheduler toggleActive(Long schedulerId, UserSession sess)
{
JobServiceTaskScheduler persistent = DaoFactory.getJobServiceTaskSchedulerDaoImpl().load(schedulerId);
if(persistent.isActive())
logger.info("Will deactivate task " + persistent.getTargetService() + " id:" + schedulerId);
else
logger.info("Will activate task " + persistent.getTargetService() + " id:" + schedulerId);
persistent.setActive(!persistent.isActive());
return persistent;
}
 
public void delete(Long schedulerId, UserSession sess)
{
 
JobServiceTaskScheduler persistent = DaoFactory.getJobServiceTaskSchedulerDaoImpl().load(schedulerId);
logger.warn("Will delete task " + persistent.getTargetService() + " id:" + schedulerId);
Set<JobServiceTaskSchedulerParameter> params = persistent.getServiceTaskSchedulerParameters();
if(params != null)
{
Iterator<JobServiceTaskSchedulerParameter> iterParam = params.iterator();
while(iterParam.hasNext()) {
JobServiceTaskSchedulerParameter next = iterParam.next();
next.setJobServiceTaskScheduler(null);
iterParam.remove();
DaoFactory.getJobServiceTaskSchedulerParameterDaoImpl().delete(next);
}
}
DaoFactory.getJobServiceTaskSchedulerDaoImpl().delete(persistent);
}
 
public static void main(String[] args) throws SQLException
{
AbstractDao.getCurrentSession().beginTransaction();
/impl/src/java/pt/estgp/estgweb/services/jobs/JobDeamon.java
120,6 → 120,7
jobServiceTask.setRequestStop(false);
jobServiceTask.setOwner(schedule.getCreatedBy());
jobServiceTask.setJobHandler(new SerializableNullJobHandler());
jobServiceTask.setProgress(0);
DaoFactory.getJobServiceTaskDaoImpl().save(jobServiceTask);
schedule.setLastJobServiceTask(jobServiceTask);
try {
148,17 → 149,18
//a partir do momento que e' agendado o trabalho ele vai correr portanto
//e' esta a hora que se considera para a corrida
schedule.setLastScheduleDate(new Date());
if(schedule.isNow())
{
schedule.setNow(false);
}
}
//Remove Now Schedules
if(schedule.isNow())
{
DaoFactory.getJobServiceTaskSchedulerDaoImpl().delete(schedule);
}
}
}
 
private boolean isRunnableNow(JobServiceTaskScheduler schedule,Date lastDate)
{
if(!schedule.isActive())
return false;
if(lastDate == null)
lastDate = new Date(0);
GregorianCalendar gC = new GregorianCalendar();
/impl/src/java/pt/estgp/estgweb/web/controllers/configuration/SchedulerTasksController.java
5,6 → 5,7
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.web.UserSessionProxy;
40,10 → 41,7
throws Throwable
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("ci"))
{
return mapping.findForward("error401");
}
 
SchedulleTasksForm sf = (SchedulleTasksForm) form;
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
73,10 → 71,7
throws Throwable
{
 
if(!UserSessionProxy.loadUserSessionFromRequest(request).getUser().isAdmin() && !UserSessionProxy.loadUserSessionFromRequest(request).getUser().hasRole("ci"))
{
return mapping.findForward("error401");
}
 
SchedulleTasksForm sf = (SchedulleTasksForm) form;
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
101,6 → 96,105
else
return mapping.findForward("taskLog");
}
 
public ActionForward runNow(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.getId()};
 
try
{
sm.execute(RequestUtils.getRequester(request, response), "RunNowJobServiceTaskScheduller", args, names);
addMessage(request,"job.schedule.for.now");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
return mapping.findForward("tasks");
}
 
public ActionForward toggleActive(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.getId()};
 
try
{
JobServiceTaskScheduler scheduler = (JobServiceTaskScheduler) sm.execute(RequestUtils.getRequester(request, response), "ToggleActiveJobServiceTaskScheduller", args, names);
if(scheduler.isActive())
addMessage(request,"job.schedule.active");
else
addMessage(request,"job.schedule.inactive");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
return mapping.findForward("tasks");
}
 
public ActionForward delete(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.getId()};
 
try
{
sm.execute(RequestUtils.getRequester(request, response), "DeleteJobServiceTaskScheduller", args, names);
addMessage(request,"job.schedule.deleted");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
return mapping.findForward("tasks");
}
 
 
 
 
 
 
 
 
 
 
public ActionForward addLeaf(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
/impl/src/hbm/pt/estgp/estgweb/domain/Job.hbm.xml
62,6 → 62,9
<property name="description" type="string"/>
 
<!--ScheduleInformation-->
<property name="active" type="boolean">
<column name="active" default="true"/>
</property>
<property name="now" type="boolean"/>
<property name="daily" type="boolean"/>
<property name="weekly" type="boolean"/>
/impl/src/web/admin/configuration/taskLog.jsp
46,7 → 46,7
$(".progress-bar").attr("aria-valuenow",data.progress);
$(".progress-bar").html(data.progress + "%");
 
if(data.status == "STARTED" || data.status == "PENDDING")
if(data.status == "STARTED" || data.status == "PENDING")
setTimeout("updateStatus()",2000);
});
 
/impl/src/web/admin/configuration/tasks.jsp
15,8 → 15,6
<html:errors/>
 
 
<!--<jsp:include page="/layout/scriptsBootstrapSoft.jsp"/>-->
 
<%
AbstractDao.getCurrentSession().beginTransaction();
List<JobServiceTaskScheduler> schedulledTasks = DaoFactory.getJobServiceTaskSchedulerDaoImpl().findAll();
29,13 → 27,17
<div class="panel panel-default">
<div class="panel-heading">
<bean:message key="configuration.tasks"/>
 
 
<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/configurationSchedulleTasks.do" class="btn btn-success"><span class="glyphicon glyphicon-refresh"></span></a>
</div>
<div class="panel-body">
<table id="myTable" class="tablesorter">
<thead>
<tr>
<th>Agora</th>
<th><bean:message key="configuration.task"/></th>
<th>Tipo</th>
<th>Calendarização</th>
50,6 → 52,11
<tbody>
<logic:iterate id="task" name="tasks" type="pt.estgp.estgweb.domain.JobServiceTaskSchedulerImpl">
<tr>
<td>
<a href="<%=request.getContextPath()%>/user/configurationTasks.do?dispatch=runNow&id=${task.id}" class="btn btn-default">
<span class="glyphicon glyphicon-play"></span>
</a>
</td>
<td><bean:message key="targetService.${task.targetService}"/></td>
<td><bean:message key="configuration.task.${task.typeMsgKey}"/></td>
<td>
96,7 → 103,20
</a>
</logic:notEmpty>
 
<logic:equal value="true" name="task" property="active">
<a alt="Desactivar" class="btn btn-success" href="<%=request.getContextPath()%>/user/configurationTasks.do?dispatch=toggleActive&id=${task.id}" >
<span class="glyphicon glyphicon-ok"></span>
</a>
</logic:equal>
<logic:equal value="false" name="task" property="active">
<a alt="Activar" class="btn btn-warning" href="<%=request.getContextPath()%>/user/configurationTasks.do?dispatch=toggleActive&id=${task.id}" >
<span class="glyphicon glyphicon-ban-circle"></span>
</a>
</logic:equal>
 
<a alt="Apagar" class="btn btn-danger" onclick="return confirm('Tem a certeza que deseja apagar esta tarefa? <bean:message key="targetService.${task.targetService}"/>')" href="<%=request.getContextPath()%>/user/configurationTasks.do?dispatch=delete&id=${task.id}">
<span class="glyphicon glyphicon-remove"></span>
</a>
</td>
 
</tr>
/impl/src/web/admin/configuration/jobTasks.jsp
35,7 → 35,7
<table id="myTable" class="tablesorter">
<thead>
<tr>
<th class="filter-true"><bean:message key="configuration.jobtask"/></th>
<th class="filter-true"><bean:message key="configuration.jobtasks"/></th>
<th class="filter-true">Data Inicio</th>
<th class="filter-true">Criador</th>
<th class="filter-true">Parametros</th>