/**
   * @param context
   * @param jobException
   * @see org.quartz.JobListener#jobWasExecuted(JobExecutionContext, JobExecutionException) Called
   *     by the Scheduler after a JobDetail has been executed, and be for the associated Trigger's
   *     triggered method has been called
   */
  @Override
  public void jobWasExecuted(JobExecutionContext context, JobExecutionException jobException) {
    try {
      String ipAddress = getIpAddress();
      Trigger trigger = context.getTrigger();

      Object[] args;

      if (jobException != null) {
        /*if (!getLog().isWarnEnabled()) {
        return;
        }*/

        String errMsg = jobException.getMessage();
        args =
            new Object[] {
              context.getFireInstanceId(),
              context.getJobDetail().getKey().getName(),
              context.getJobDetail().getKey().getGroup(),
              jobDataMapToString(context.getJobDetail().getJobDataMap()),
              new java.util.Date(),
              trigger.getKey().getName(),
              trigger.getKey().getGroup(),
              trigger.getPreviousFireTime() != null ? trigger.getPreviousFireTime() : new Date(0),
              trigger.getNextFireTime() != null ? trigger.getNextFireTime() : new Date(0),
              Integer.toString(context.getRefireCount()),
              errMsg,
              context.getScheduler().getSchedulerInstanceId(),
              context.getScheduler().getSchedulerName(),
              ipAddress != null ? ipAddress : "",
              "FAILED",
              "LoggingJobHistoryPluginCustom",
              "INFO"
            };
        // getLog().warn(MessageFormat.format(getJobFailedMessage(), args), jobException);
        // log data and set progress value as null because it has not to be updated in the database
        // row
        logToDatabase(args, MessageFormat.format(getJobFailedMessage(), args), true, null);
      } else {
        /*if (!getLog().isInfoEnabled()) {
        return;
        }*/

        String result = String.valueOf(context.getResult());
        args =
            new Object[] {
              context.getFireInstanceId(),
              context.getJobDetail().getKey().getName(),
              context.getJobDetail().getKey().getGroup(),
              jobDataMapToString(context.getJobDetail().getJobDataMap()),
              new java.util.Date(),
              trigger.getKey().getName(),
              trigger.getKey().getGroup(),
              trigger.getPreviousFireTime() != null ? trigger.getPreviousFireTime() : new Date(0),
              trigger.getNextFireTime() != null ? trigger.getNextFireTime() : new Date(0),
              Integer.toString(context.getRefireCount()),
              result, // truncateResult(result) truncate result if too long to insert in the
                      // database
              context.getScheduler().getSchedulerInstanceId(),
              context.getScheduler().getSchedulerName(),
              ipAddress != null ? ipAddress : "",
              "SUCCESS",
              "LoggingJobHistoryPluginCustom",
              "INFO"
            };
        // getLog().info(MessageFormat.format(getJobSuccessMessage(), args));
        // log data and set progress value as 100 because the job completed successfully
        logToDatabase(args, MessageFormat.format(getJobSuccessMessage(), args), true, "100");
      }
    } catch (SQLException | SchedulerException e) {
      e.printStackTrace();
    }
  }