package net.techreadiness.plugin.batch; import java.util.Date; import java.util.List; import javax.inject.Inject; import net.techreadiness.batch.jobs.BaseTasklet; import net.techreadiness.plugin.persistence.dao.SnapshotWindowDao; import net.techreadiness.plugin.persistence.domain.SnapshotWindowDO; import net.techreadiness.plugin.service.reports.ReportsService; import net.techreadiness.service.ScopeService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.batch.core.StepContribution; import org.springframework.batch.core.scope.context.ChunkContext; import org.springframework.batch.core.step.tasklet.Tasklet; import org.springframework.batch.repeat.RepeatStatus; import org.springframework.stereotype.Component; @Component public class SnapshotBatchJobTasklet extends BaseTasklet implements Tasklet { @Inject ScopeService scopeService; @Inject ReportsService reportsService; @Inject SnapshotWindowDao snapshotWindowDao; private Logger log = LoggerFactory.getLogger(SnapshotBatchJobTasklet.class); @Override public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception { Long executeTime = (Long) chunkContext.getStepContext().getJobParameters().get("executeTime"); log.debug("********************** Snapshot Generation Run ************************"); log.debug("Execute time: " + new Date(executeTime).toString()); log.debug("*****************************************************************************"); List<SnapshotWindowDO> snapshots = snapshotWindowDao.findUnexecutedSnapshots(); for (SnapshotWindowDO snapshotWindowDO : snapshots) { reportsService.createSnapshotRollup(snapshotWindowDO.getSnapshotWindowId(), true); } log.debug("********************** Snapshot Generation Run --Complete-- ************************"); log.debug("Finish time: " + new Date(System.currentTimeMillis()).toString()); log.debug("*****************************************************************************"); return RepeatStatus.FINISHED; } }