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.service.SnapshotWindowService;
import net.techreadiness.plugin.service.object.SnapshotWindow;
import net.techreadiness.plugin.service.reports.ReportsService;
import net.techreadiness.service.ScopeService;
import net.techreadiness.service.ServiceContext;
import net.techreadiness.service.object.Scope;
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 NightlyReportBatchJobTasklet extends BaseTasklet implements Tasklet {
@Inject
private ScopeService scopeService;
@Inject
private ServiceContext serviceContext;
@Inject
private SnapshotWindowService snapshotWindowService;
@Inject
private ReportsService reportsService;
private Logger log = LoggerFactory.getLogger(NightlyReportBatchJobTasklet.class);
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
Long executeTime = (Long) chunkContext.getStepContext().getJobParameters().get("executeTime");
log.debug("********************** Nightly Report Generation Run ************************");
log.debug("Execute time: " + new Date(executeTime).toString());
log.debug("*****************************************************************************");
Scope scope = scopeService.getByScopePath(ReportsService.READINESS_SCOPE_PATH);
serviceContext.setScope(scope);
// Next find the child scopes for readiness
List<Scope> childScopes = scopeService.findDescendantScopes(serviceContext, false);
for (Scope s : childScopes) {
SnapshotWindow snapshotWindow = snapshotWindowService.getByScopeIdAndName(serviceContext, s.getScopeId(),
ReportsService.DEFAULT_SNAPSHOT_WINDOW);
reportsService.createSnapshotRollup(snapshotWindow.getSnapshotWindowId(), true);
}
log.debug("********************** Nightly Report Generation Run --Complete-- ************************");
log.debug("Finish time: " + new Date(System.currentTimeMillis()).toString());
log.debug("*****************************************************************************");
return RepeatStatus.FINISHED;
}
}