public List executeDefaultRule()

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


  public List<RetentionJob> executeDefaultRule(
      RetentionRule globalDefaultRule,
      Collection<RetentionRule> defaultRules,
      Collection<RetentionRule> datasetRules,
      ZonedDateTime scheduledTime,
      String projectId) {
    List<RetentionJob> defaultRuleJobs = new ArrayList<>();
    Map<String, Set<String>> prefixesToExcludeMap = buildDefaultStsJobPrefixMap(datasetRules);
    Map<String, RetentionRule> defaultRuleMap = buildDefaultRuleMap(defaultRules);

    Set<String> bucketsToProcess = new HashSet<>();
    bucketsToProcess.addAll(prefixesToExcludeMap.keySet());
    bucketsToProcess.addAll(defaultRuleMap.keySet());

    for (String bucketName : bucketsToProcess) {
      String fullSourceBucket = ValidationConstants.STORAGE_PREFIX + bucketName;
      String destinationBucket = StsUtil.buildDestinationBucketName(bucketName);
      List<String> prefixesToExclude = buildPrefixesToExclude(prefixesToExcludeMap, bucketName);

      RetentionRule defaultRule = defaultRuleMap.get(bucketName);

      if (defaultRule == null) {
        // use global default rule if a default rule is not set on a bucket.
        defaultRule = globalDefaultRule;
      }

      if (defaultRule != null) {
        TransferJob transferJob =
            applyDefaultRulePerBucket(
                defaultRule,
                scheduledTime,
                projectId,
                bucketName,
                destinationBucket,
                prefixesToExclude);

        String jobName = null;
        if (transferJob != null) {
          jobName = transferJob.getName();
        }

        if (defaultRule.getType() == RetentionRuleType.GLOBAL) {
          // Save the job with the actual projectId it is being created for, not the fake global
          // projectId that is set on the global default rule. Same for data storage.
          defaultRule.setProjectId(projectId);
          defaultRule.setDataStorageName(fullSourceBucket);
        }
        RetentionJob defaultRetentionJob =
            buildRetentionJobEntity(
                jobName, defaultRule, StsUtil.convertPrefixToString(prefixesToExclude), null);
        defaultRuleJobs.add(defaultRetentionJob);
      }
    }

    return defaultRuleJobs;
  }