protected StatusDetail toStatusDetail ( final List < JobInfo > jobInfos , final JobDefinition jobDefinition ) { final Status status ; final String message ; final JobInfo currentJob = jobInfos . get ( 0 ) ; final JobInfo lastJob = ( ! currentJob . getStopped ( ) . isPresent ( ) && currentJob . getStatus ( ) == JobStatus . OK && jobInfos . size ( ) > 1 ) ? jobInfos . get ( 1 ) : jobInfos . get ( 0 ) ; final JobMeta jobMeta = getJobMeta ( jobDefinition . jobType ( ) ) ; long numFailedJobs = getNumFailedJobs ( jobInfos ) ; if ( ! jobMeta . isDisabled ( ) ) { switch ( lastJob . getStatus ( ) ) { case OK : case SKIPPED : if ( jobTooOld ( lastJob , jobDefinition ) ) { status = WARNING ; message = jobAgeMessage ( jobDefinition ) ; } else if ( numFailedJobs > maxFailedJobs ) { status = WARNING ; message = format ( TOO_MANY_JOBS_FAILED_MESSAGE , numFailedJobs , jobInfos . size ( ) ) ; } else { status = OK ; message = SUCCESS_MESSAGE ; } break ; case ERROR : if ( numFailedJobs > maxFailedJobs ) { status = ERROR ; } else { status = WARNING ; } if ( numberOfJobs == 1 && maxFailedJobs <= 1 ) { message = ERROR_MESSAGE ; } else { message = format ( TOO_MANY_JOBS_FAILED_MESSAGE , numFailedJobs , jobInfos . size ( ) ) ; } break ; case DEAD : default : status = WARNING ; message = DEAD_MESSAGE ; } } else { status = OK ; message = format ( JOB_DEACTIVATED_MESSAGE , jobMeta . getDisabledComment ( ) ) ; } return StatusDetail . statusDetail ( jobDefinition . jobName ( ) , status , message , asList ( link ( REL_JOB , String . format ( "%s/jobs/%s" , managementContextPath , lastJob . getJobId ( ) ) , "Details" ) ) , runningDetailsFor ( lastJob ) ) ; }
Calculates the StatusDetail from the last job executions .