code: @Override
      public Date nextExecutionTime(TriggerContext triggerContext) {
          if (triggerContext.lastScheduledExecutionTime() == null) {
              return new Date(System.currentTimeMillis() + this.initialDelay);
          } else if (this.fixedRate) {
              return new Date(triggerContext.lastScheduledExecutionTime().getTime() + this.period);
          }
          return new Date(triggerContext.lastCompletionTime().getTime() + this.period);
      }
docs: Returns the time after which a task should run again.
  
  @param triggerContext the trigger context
  @return the date