public static List generateScheduleTimeOfDay()

in src/main/java/com/google/gcs/sdrs/service/worker/rule/impl/StsRuleExecutor.java [633:678]


  public static List<TimeOfDay> generateScheduleTimeOfDay(RetentionRuleType retentionRuleType) {
    int numberOfJobs = 0;
    List<TimeOfDay> result = new ArrayList<>();
    LocalTime now = LocalTime.now();
    LocalTime timeOfDay = LocalTime.of(0, now.getMinute(), now.getSecond());

    if (retentionRuleType == null) {
      return result;
    }

    switch (retentionRuleType) {
      case USER:
        numberOfJobs =
            Integer.parseInt(
                SdrsApplication.getAppConfigProperty(
                    "sts.jobPoolOnDemand." + RetentionRuleType.USER.toString().toLowerCase(),
                    StsUtil.DEFAULT_STS_JOB_POOL_NUMBER));
        numberOfJobs = Math.min(numberOfJobs, StsUtil.MAX_USER_STS_JOB_POOL_NUMBER);
        break;
      case DATASET:
        numberOfJobs =
            Integer.parseInt(
                SdrsApplication.getAppConfigProperty(
                    "sts.jobPoolOnDemand." + RetentionRuleType.DATASET.toString().toLowerCase(),
                    StsUtil.DEFAULT_STS_JOB_POOL_NUMBER));
        numberOfJobs = Math.min(numberOfJobs, StsUtil.MAX_DATASET_STS_JOB_POOL_NUMBER);
        break;
      case DEFAULT:
        numberOfJobs = 1;
        timeOfDay = LocalTime.of(23, 59, 59);
        break;
      default:
        // shouldn't happen
        return result;
    }

    result.add(StsUtil.convertToTimeOfDay(timeOfDay));
    // incremental in minutes within 24 hours.
    int increment = 24 * 60 / numberOfJobs;
    for (int i = 1; i < numberOfJobs; i++) {
      timeOfDay = timeOfDay.plusMinutes(increment);
      result.add(StsUtil.convertToTimeOfDay(timeOfDay));
    }

    return result;
  }