CronScheduleLogManager.java 1.51 KB
package com.sitech.ibnms.config.sync.adaptor;


import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

import com.sitech.ibnms.config.sync.service.CronScheduleLogService;
import com.sitech.ismp.messageObject.ScheduleLog;

public class CronScheduleLogManager implements Runnable {

    protected static Logger logger = Logger.getLogger("LOGGER");

    private boolean isRun = true;

    private static List<ScheduleLog> queue = new ArrayList<ScheduleLog>();

    private CronScheduleLogService logService = new CronScheduleLogService();


    @Override
    public void run() {

        while(isRun){

            try {
                refresh();
            } catch (Exception e) {
                logger.error("Exception while refresh CronScheduleLog", e);
            }

            try {
                Thread.sleep(3000L);
            } catch (InterruptedException e) {
                logger.error("Exception while CronScheduleLogManager sleeping",e);
            }

        }

    }

    public static void save(ScheduleLog log) {
        synchronized (queue) {
            queue.add(log);
        }
    }

    private List<ScheduleLog> poll() {
        List<ScheduleLog> temp = new ArrayList<ScheduleLog>();
        synchronized (queue) {
            temp.addAll(queue);
            queue.clear();
        }
        return temp;
    }

    private void refresh(){
        List<ScheduleLog> logs = poll();
        for(ScheduleLog log:logs){
            logService.insertCronScheduleLogs(log);
        }
    }

}