Package org.javaee7.batch.samples.scheduling

Source Code of org.javaee7.batch.samples.scheduling.MyManagedScheduledBatchBean

package org.javaee7.batch.samples.scheduling;

import javax.annotation.Resource;
import javax.batch.runtime.BatchRuntime;
import javax.batch.runtime.BatchStatus;
import javax.ejb.Local;
import javax.ejb.Stateless;
import javax.enterprise.concurrent.LastExecution;
import javax.enterprise.concurrent.ManagedScheduledExecutorService;
import javax.enterprise.concurrent.Trigger;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;

/**
* @author arungupta
*/
@Stateless
@Local(MyManagedScheduledBatch.class)
public class MyManagedScheduledBatchBean implements MyManagedScheduledBatch {
    @Resource
    private ManagedScheduledExecutorService executor;

    @Override
    public void runJob() {
        executor.schedule(createJob(), new Trigger() {

            @Override
            public Date getNextRunTime(LastExecution lastExecutionInfo, Date taskScheduledTime) {
                if (MyJob.executedBatchs.size() >= 3) {
                    return null;
                }

                Calendar cal = Calendar.getInstance();

                if (lastExecutionInfo == null) {
                    cal.setTime(taskScheduledTime);
                } else {
                    cal.setTime(lastExecutionInfo.getRunStart());
                }

                cal.add(Calendar.SECOND, 10);
                return cal.getTime();
            }

            @Override
            public boolean skipRun(LastExecution lastExecutionInfo, Date scheduledRunTime) {
                List<Long> executedBatchs = MyJob.executedBatchs;

                for (Long executedBatch : executedBatchs) {
                    if (!BatchRuntime.getJobOperator().getJobExecution(executedBatch).getBatchStatus().equals(
                            BatchStatus.COMPLETED)) {
                        return true;
                    }
                }

                return false;
            }

        });
    }

    public void runJob2() {
        executor.scheduleWithFixedDelay(new MyJob(), 1, 2, TimeUnit.MINUTES);
    }

    protected MyJob createJob() {
        return new MyJob();
    }
}
TOP

Related Classes of org.javaee7.batch.samples.scheduling.MyManagedScheduledBatchBean

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.