public void processEventForJobSummary(HistoryEvent event, JobSummary summary, JobId jobId) {
   // context.getJob could be used for some of this info as well.
   switch (event.getEventType()) {
     case JOB_SUBMITTED:
       JobSubmittedEvent jse = (JobSubmittedEvent) event;
       summary.setUser(jse.getUserName());
       summary.setQueue(jse.getJobQueueName());
       summary.setJobSubmitTime(jse.getSubmitTime());
       summary.setJobName(jse.getJobName());
       break;
     case NORMALIZED_RESOURCE:
       NormalizedResourceEvent normalizedResourceEvent = (NormalizedResourceEvent) event;
       if (normalizedResourceEvent.getTaskType() == TaskType.MAP) {
         summary.setResourcesPerMap(normalizedResourceEvent.getMemory());
       } else if (normalizedResourceEvent.getTaskType() == TaskType.REDUCE) {
         summary.setResourcesPerReduce(normalizedResourceEvent.getMemory());
       }
       break;
     case JOB_INITED:
       JobInitedEvent jie = (JobInitedEvent) event;
       summary.setJobLaunchTime(jie.getLaunchTime());
       break;
     case MAP_ATTEMPT_STARTED:
       TaskAttemptStartedEvent mtase = (TaskAttemptStartedEvent) event;
       if (summary.getFirstMapTaskLaunchTime() == 0)
         summary.setFirstMapTaskLaunchTime(mtase.getStartTime());
       break;
     case REDUCE_ATTEMPT_STARTED:
       TaskAttemptStartedEvent rtase = (TaskAttemptStartedEvent) event;
       if (summary.getFirstReduceTaskLaunchTime() == 0)
         summary.setFirstReduceTaskLaunchTime(rtase.getStartTime());
       break;
     case JOB_FINISHED:
       JobFinishedEvent jfe = (JobFinishedEvent) event;
       summary.setJobFinishTime(jfe.getFinishTime());
       summary.setNumFinishedMaps(jfe.getFinishedMaps());
       summary.setNumFailedMaps(jfe.getFailedMaps());
       summary.setNumFinishedReduces(jfe.getFinishedReduces());
       summary.setNumFailedReduces(jfe.getFailedReduces());
       if (summary.getJobStatus() == null)
         summary.setJobStatus(org.apache.hadoop.mapreduce.JobStatus.State.SUCCEEDED.toString());
       // TODO JOB_FINISHED does not have state. Effectively job history does not
       // have state about the finished job.
       setSummarySlotSeconds(summary, jfe.getTotalCounters());
       break;
     case JOB_FAILED:
     case JOB_KILLED:
       JobUnsuccessfulCompletionEvent juce = (JobUnsuccessfulCompletionEvent) event;
       summary.setJobStatus(juce.getStatus());
       summary.setNumFinishedMaps(context.getJob(jobId).getTotalMaps());
       summary.setNumFinishedReduces(context.getJob(jobId).getTotalReduces());
       summary.setJobFinishTime(juce.getFinishTime());
       setSummarySlotSeconds(summary, context.getJob(jobId).getAllCounters());
       break;
   }
 }