Package br.gov.serpro.ouvidoria.agendador

Source Code of br.gov.serpro.ouvidoria.agendador.OuvidoriaScheduler

/*
* Sistema de Ouvidoria: um canal através do qual os usuários
* podem encaminhar suas reclamações, elogios e sugestões.
*
* Copyright (C) 2011 SERPRO
*
* Este programa é software livre; você pode redistribuí-lo e/ou
* modificá-lo sob os termos da Licença Pública Geral GNU, conforme
* publicada pela Free Software Foundation; tanto a versão 2 da
* Licença como (a seu critério) qualquer versão mais nova.
*
* Este programa é distribuído na expectativa de ser útil, mas SEM
* QUALQUER GARANTIA; sem mesmo a garantia implícita de
* COMERCIALIZAÇÃO ou de ADEQUAÇÃO A QUALQUER PROPÓSITO EM
* PARTICULAR. Consulte a Licença Pública Geral GNU para obter mais
* detalhes.
*
* Você deve ter recebido uma cópia da Licença Pública Geral GNU,
* sob o título "LICENCA.txt", junto com esse programa. Se não,
* acesse o Portal do Software Público Brasileiro no endereço
* http://www.softwarepublico.gov.br/ ou escreva para a Fundação do
* Software Livre (FSF) Inc., 51 Franklin St, Fifth Floor, Boston,
* MA 02111-1301, USA.
*
* Contatos através do seguinte endereço internet:
* http://www.serpro.gov.br/sistemaouvidoria/
*/
package br.gov.serpro.ouvidoria.agendador;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.impl.StdSchedulerFactory;

import br.gov.serpro.ouvidoria.dao.DaoFactory;
import br.gov.serpro.ouvidoria.model.ConfiguracoesOrgao;
import br.gov.serpro.ouvidoria.util.Constants;

/**
*
* @author SERPRO
* @version $Revision: 1.1.2.3 $, $Date: 2011/10/18 17:39:43 $
*
*/
public final class OuvidoriaScheduler {

  // Fabrica para criar instancia de Scheduler
  protected static StdSchedulerFactory schedFactory = new StdSchedulerFactory();
  public static Scheduler sched;
  private static Logger log;
  protected DaoFactory daoFactory;

  public static void init(HttpServletRequest request) throws Exception {

    try {

      sched = schedFactory.getScheduler();

      // JobDetail utilizado para configurar as definições da Tareja(Job)

      getLog().info(
          "---------------- Criando Tarefa EnviarAlerta ----------------");

      JobDetail job = new JobDetail("EnviarAlertaJob",
          Scheduler.DEFAULT_GROUP, EnviarAlertaJob.class);

      // Obter parametros a serem utilizados no agendamento

      String osessionId = (String) request.getSession().getAttribute(
          Constants.ID_SESSAO_ORGAO);
      job.getJobDataMap().put(EnviarAlertaJob.ID_ORGAO, osessionId);

      String url = request.getScheme() + "://" + request.getServerName()
          + ":" + request.getServerPort() + request.getContextPath();

      job.getJobDataMap().put(EnviarAlertaJob.URL, url);

      ConfiguracoesOrgao configuracoes = (ConfiguracoesOrgao) request
          .getAttribute("configuracoes");
      String[] horaMinuto = configuracoes.getHoraEnvioNotificacao()
          .split(":");

      String hora = horaMinuto[0];
      String minuto = horaMinuto[1];

      // Criar Trigger para enviar emails de alerta diaramente no horário
      // parametrizado.
      getLog().info("---------------- Criar Gatilho ----------------");
      CronTrigger enviarAlertaTrigger = new CronTrigger(
          "EnviarAlertaTrigger", Scheduler.DEFAULT_GROUP,
          "EnviarAlertaJob", Scheduler.DEFAULT_GROUP, "0 " + minuto
              + " " + hora + " * * ?");

      // Confirgura o Job e a Trigger com o Agendador(Scheduler)
      getLog().info(
          "---------------- Fazer Agendamento do Envio de Alerta ----------------");
      java.util.Date ft = sched.scheduleJob(job, enviarAlertaTrigger);

      getLog().info(
          job.getFullName() + " Foi programado para funcionar em: "
              + ft + " e repete baseado na expressão: "
              + enviarAlertaTrigger.getCronExpression());

      // Iniciar execução do Agendador
      OuvidoriaScheduler.sched.start();

    } catch (Exception e) {

      getLog().info(
          "---------------- Erro ao tentar iniciar OuvidoriaScheduler ----------------");
      getLog().error(e.getMessage(), e);
    }
  }

  public static void restart(HttpServletRequest request) {
    try {

      if (OuvidoriaScheduler.sched == null) {

        sched = schedFactory.getScheduler();
      }
      OuvidoriaScheduler.sched.shutdown(true);

      init(request);

    } catch (Exception ex) {
      getLog().error("Erro ao tentar reiniciar as tarefas");
      getLog().error(ex.getMessage(), ex);
    }
  }

  protected static Logger getLog() {

    if (log == null) {
      log = Logger.getLogger("OuvidoriaScheduler ------> ");
    }
    return log;
  }
}
TOP

Related Classes of br.gov.serpro.ouvidoria.agendador.OuvidoriaScheduler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.