Map<String, Object> jobInfo = new HashMap<>();
int jobParamIndex = -1;
StringTokenizer st = new StringTokenizer("", "");
String[] cfData = new String[getOutputHeaders().length];
JobOperator jobOperator = BatchRuntime.getJobOperator();
for (int index = 0; index < getOutputHeaders().length; index++) {
Object data = null;
switch (getOutputHeaders()[index]) {
case JOB_NAME:
data = jobOperator.getJobInstance(
je.getInstanceId() <= 0 ? Long.valueOf(instanceId) : je.getInstanceId()).getJobName();
break;
case EXECUTION_ID:
data = "" + je.getExecutionId();
break;
case BATCH_STATUS:
data = je.getBatchStatus();
break;
case EXIT_STATUS:
data = je.getExitStatus();
break;
case START_TIME:
data = je.getStartTime().getTime();
cfData[index] = je.getStartTime().toString();
break;
case END_TIME:
data = je.getEndTime().getTime();
cfData[index] = je.getEndTime().toString();
break;
case JOB_PARAMETERS:
data = je.getJobParameters() == null ? new Properties() : je.getJobParameters();
jobParamIndex = index;
ColumnFormatter cf = new ColumnFormatter(new String[]{"KEY", "VALUE"});
for (Map.Entry e : ((Properties) data).entrySet())
cf.addRow(new String[]{e.getKey().toString(), e.getValue().toString()});
st = new StringTokenizer(cf.toString(), "\n");
break;
case STEP_COUNT:
long exeId = executionId == null ? je.getExecutionId() : Long.valueOf(executionId);
data = jobOperator.getStepExecutions(exeId) == null
? 0 : jobOperator.getStepExecutions(exeId).size();
break;
default:
throw new IllegalArgumentException("Unknown header: " + getOutputHeaders()[index]);
}
jobInfo.put(getOutputHeaders()[index], data);