mirror of
https://gitee.com/dromara/MaxKey.git
synced 2025-12-06 08:59:10 +08:00
Update SynchronizerJob.java
This commit is contained in:
parent
885dd27e6e
commit
901ed9b537
@ -17,8 +17,11 @@
|
||||
|
||||
package org.maxkey.synchronizer;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.apache.mybatis.jpa.util.WebContext;
|
||||
import org.maxkey.entity.Synchronizers;
|
||||
import org.maxkey.persistence.service.SynchronizersService;
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.slf4j.Logger;
|
||||
@ -27,6 +30,7 @@ import org.slf4j.LoggerFactory;
|
||||
public class SynchronizerJob implements Job {
|
||||
final static Logger _logger = LoggerFactory.getLogger(SynchronizerJob.class);
|
||||
|
||||
SynchronizersService synchronizersService;
|
||||
|
||||
public static class JOBSTATUS{
|
||||
public static int STOP = 0;
|
||||
@ -34,35 +38,49 @@ public class SynchronizerJob implements Job {
|
||||
public static int FINISHED = 2;
|
||||
}
|
||||
|
||||
private static int jobStatus = JOBSTATUS.STOP;
|
||||
private static HashMap<String,Integer> jobStatus = new HashMap<String,Integer>();
|
||||
|
||||
@Override
|
||||
public void execute(JobExecutionContext context){
|
||||
if(jobStatus == JOBSTATUS.RUNNING) {
|
||||
Synchronizers synchronizer = readSynchronizer(context);
|
||||
if(jobStatus.get(synchronizer.getId()) ==null ) {
|
||||
//init
|
||||
jobStatus.put(synchronizer.getId(), JOBSTATUS.STOP) ;
|
||||
}else if(jobStatus.get(synchronizer.getId())== JOBSTATUS.RUNNING) {
|
||||
_logger.info("SynchronizerJob is in running . " );
|
||||
return;
|
||||
}
|
||||
|
||||
_logger.debug("SynchronizerJob is running ... " );
|
||||
jobStatus = JOBSTATUS.RUNNING;
|
||||
jobStatus.put(synchronizer.getId(), JOBSTATUS.RUNNING) ;
|
||||
try {
|
||||
Synchronizers synchronizer = (Synchronizers)context.getMergedJobDataMap().get("synchronizer");
|
||||
|
||||
_logger.debug("synchronizer : " + synchronizer.getName()+"("+synchronizer.getId()+"_"+synchronizer.getSourceType()+")");
|
||||
_logger.debug("synchronizer service : " + synchronizer.getService());
|
||||
_logger.debug("synchronizer Scheduler : " + synchronizer.getScheduler());
|
||||
ISynchronizerService service = (ISynchronizerService)WebContext.getBean(synchronizer.getService());
|
||||
service.setSynchronizer(synchronizer);
|
||||
service.sync();
|
||||
|
||||
jobStatus.put(synchronizer.getId(), JOBSTATUS.FINISHED);
|
||||
_logger.debug("SynchronizerJob is success " );
|
||||
}catch(Exception e) {
|
||||
_logger.error("Exception " ,e);
|
||||
jobStatus = JOBSTATUS.STOP;
|
||||
jobStatus.put(synchronizer.getId(), JOBSTATUS.STOP);
|
||||
}
|
||||
jobStatus = JOBSTATUS.FINISHED;
|
||||
_logger.debug("SynchronizerJob is finished . " );
|
||||
}
|
||||
|
||||
|
||||
public Synchronizers readSynchronizer(JobExecutionContext context) {
|
||||
Synchronizers jobSynchronizer = (Synchronizers)context.getMergedJobDataMap().get("synchronizer");
|
||||
if(synchronizersService == null) {
|
||||
synchronizersService = (SynchronizersService)WebContext.getBean("synchronizersService");
|
||||
}
|
||||
//read synchronizer by id from database
|
||||
Synchronizers synchronizer = synchronizersService.get(jobSynchronizer.getId());
|
||||
_logger.trace("synchronizer " + synchronizer);
|
||||
return synchronizer;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user