AdmMono/src/java/com/rjconsultores/ventaboletos/web/utilerias/MyAppInit.java

215 lines
5.7 KiB
Java
Raw Blame History

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.rjconsultores.ventaboletos.web.utilerias;
import javax.servlet.ServletContext;
import javax.sql.DataSource;
import org.apache.log4j.Logger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.zkoss.util.resource.Labels;
import org.zkoss.zk.ui.WebApp;
import com.rjconsultores.ventaboletos.FlyWay;
import com.rjconsultores.ventaboletos.entidad.Constante;
import com.rjconsultores.ventaboletos.service.ConstanteService;
import com.rjconsultores.ventaboletos.web.gui.controladores.job.GeneracionCorridaJob;
import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext;
/**
*
* @author gleimar
*/
public class MyAppInit implements org.zkoss.zk.ui.util.WebAppInit {
private static Logger log = Logger.getLogger(MyAppInit.class);
SchedulerFactory schedFact = new StdSchedulerFactory();
Scheduler sched;
public Scheduler getSched() {
return sched;
}
public void setSched(Scheduler sched) {
this.sched = sched;
}
public SchedulerFactory getSchedFact() {
return schedFact;
}
public void setSchedFact(SchedulerFactory schedFact) {
this.schedFact = schedFact;
}
@Override
public void init(WebApp wapp) throws Exception {
Labels.register(new MyLabelLocatorGeneral((ServletContext) wapp.getNativeContext()));
Labels.register(new MyLabelLocatorCliente((ServletContext) wapp.getNativeContext()));
boolean ipBloqueadoGeracaoServico = ipBloqueadoGeracaoServico();
log.info("ipBloqueadoGeracaoServico=" + ipBloqueadoGeracaoServico);
if (!ipBloqueadoGeracaoServico) {
log.info("ip liberado");
// Generacion Automatica de Corridas
jobGeneracionCorridas();
}
executeFlyway();
}
/**
* Executa os sqls novos na base de dados
*/
private void executeFlyway() {
FlyWay.getInstance().defineDataSource(getDataSoure());
FlyWay.getInstance().start();
// log.info("Executando Flyway...");
//
// try{
// final Flyway flyway = new Flyway();
//
// flyway.setDataSource(getDataSoure());
// flyway.setValidateOnMigrate(false);
// flyway.setIgnoreFutureMigrations(true);
// flyway.setOutOfOrder(true);
// flyway.setBaselineOnMigrate(true);
//
// flyway.migrate();
// }catch(Throwable t){
// log.error("Erro ao executar o flyway",t);
// }
//
// log.info("Flyway executado.");
}
private boolean ipBloqueadoGeracaoServico() {
Constante constanteServidorException = getConstanteService().buscarPorNomeConstante("SERVIDOR_EXCEPCION_GENERACION_CORRIDA");
String ipConstante = constanteServidorException == null ? "" : constanteServidorException.getValorconstante();
if (ipConstante.equals("")) {
return false;
}
String ipExternalAWS = IPValidatorUtileria.getIpExternalAWS();
if (ipConstante.equals(IPValidatorUtileria.getIpExternalAWS())) {
log.info(" IP capturado: " + ipExternalAWS);
log.info(" IP: " + ipConstante);
return true;
} else {
return false;
}
}
private Integer[] horaExecucion() {
Constante constante = getConstanteService().buscarPorNomeConstante("HORA_GENERACION_CORRIDA");
Integer[] arrayHoraMinuto = new Integer[2];
arrayHoraMinuto[0] = 1;
arrayHoraMinuto[1] = 0;
if ((constante == null) || (constante.getValorconstante() == null)) {
return null;
}
int hora = 1;
int minuto = 0;
try {
String[] vlrContante = constante.getValorconstante().split(":");
hora = Integer.parseInt(vlrContante[0]);
minuto = Integer.parseInt(vlrContante[1]);
if (hora < 0 || hora > 23) {
hora = 1;
}
if (minuto < 0 || minuto > 59) {
minuto = 0;
}
arrayHoraMinuto[0] = hora;
arrayHoraMinuto[1] = minuto;
} catch (Exception e) {
log.error("Param hora geracion corrida invalido : " + constante.getValorconstante());
arrayHoraMinuto[0] = 1;
arrayHoraMinuto[1] = 0;
}
return arrayHoraMinuto;
}
private void jobGeneracionCorridas() {
try {
sched = schedFact.getScheduler();
JobDetail jobDetail = new JobDetail("GeneracionCorridas", null, GeneracionCorridaJob.class);
Integer[] hora = horaExecucion();
if (hora == null) {
log.info("constante HORA_GENERACION_CORRIDA n<>o habilitada.");
return;
}
log.info("Horario de geracao de corrida : " + hora[0] + ":" + hora[1]);
Trigger trigger = TriggerUtils.makeDailyTrigger("generacionCorridasTrigger", hora[0], hora[1]);
// TESTE TRIGGER
// Trigger trigger = TriggerUtils.makeImmediateTrigger("generacionCorridasTrigger", 1, 1000);
trigger.setName("generacionCorridasTrigger");
JobDetail job = sched.getJobDetail(jobDetail.getName(), jobDetail.getGroup());
log.info("Job=" + jobDetail.getName() + "." + jobDetail.getGroup());
if (job != null) {
log.info("Job ya existia");
boolean deleted = sched.deleteJob(job.getName(), Scheduler.DEFAULT_GROUP);
log.info("Deleted=" + deleted);
}
sched.scheduleJob(jobDetail, trigger);
sched.start();
} catch (SchedulerException ex) {
log.error(ex);
}
}
private DataSource getDataSoure() {
ApplicationContext appContext = AppContext.getApplicationContext();
BeanFactory factory = (BeanFactory) appContext;
DataSource ds = (DataSource) factory.getBean("dataSource");
return ds;
}
private ConstanteService getConstanteService() {
ApplicationContext appContext = AppContext.getApplicationContext();
BeanFactory factory = (BeanFactory) appContext;
ConstanteService cs = (ConstanteService) factory.getBean("constanteService");
return cs;
}
}