package net.techreadiness.batch.device; import java.util.Locale; import javax.inject.Inject; import net.techreadiness.batch.listener.JobCompletionListener; import org.springframework.batch.core.JobExecution; import org.springframework.batch.core.StepExecution; import org.springframework.context.MessageSource; public class DeviceJobCompletionListener extends JobCompletionListener { @Inject private MessageSource messageSource; @Override protected String getStatusMessage(JobExecution execution) { return getMessage(execution); } @Override protected String getFailedMessage(JobExecution execution) { return getMessage(execution); } private String getMessage(JobExecution execution) { int orgCount = execution.getExecutionContext().getInt("device.org.delete.count", 0); int writeCount = execution.getExecutionContext().getInt("file.status.write.count"); int errorCount = execution.getExecutionContext().getInt("file.status.error.count"); int totalRecordCount = writeCount + errorCount; StringBuilder sb = new StringBuilder(); for (StepExecution step : execution.getStepExecutions()) { if (step.getStepName().equalsIgnoreCase("deviceItemEraser")) { sb.append(messageSource.getMessage("ready.device.file.final.status.delete", new Object[] { orgCount }, Locale.getDefault())); sb.append(" "); break; } } sb.append(messageSource.getMessage("file.generic.write.status", new Object[] { totalRecordCount, errorCount }, Locale.getDefault())); return sb.toString(); } }