public void doWork()

in src/main/java/com/google/gcs/sdrs/service/worker/impl/ExecuteRetentionWorker.java [66:115]


  public void doWork() {
    String dataStorageName = getDataStorageName(executionEvent.getTarget());
    String projectId = executionEvent.getProjectId();
    RetentionRule rule;
    try {
      switch (executionEvent.getExecutionEventType()) {
        case USER_COMMANDED:
          executeUserCommandedRule(dataStorageName, projectId);
          break;
        case POLICY:
          boolean dataStorageExists = !dataStorageName.isEmpty();
          boolean projectIdExists = projectId != null && !projectId.isEmpty();

          if (projectIdExists && dataStorageExists) {
            rule = retentionRuleDao.findDatasetRuleByBusinessKey(projectId, dataStorageName);
            if (rule != null) {
              List<RetentionRule> datasetRules = new ArrayList<>();
              datasetRules.add(rule);
              executeDatasetRules(datasetRules, projectId);
            } else {
              String message =
                  String.format(
                      "No policy found for target project: %s, target: %s",
                      projectId, dataStorageName);
              logger.error(message);
              throw new UnsupportedOperationException(message);
            }

          } else if (projectIdExists) {
            executePolicyByProject(executionEvent.getProjectId());
          } else {
            executePolicy();
          }
          break;
        default:
          logger.warn(
              String.format(
                  "%s is not a supported retention execution type",
                  executionEvent.getExecutionEventType().toString()));
      }
      workerResult.setStatus(WorkerResult.WorkerResultStatus.SUCCESS);
    } catch (IOException
        | IllegalArgumentException
        | UnsupportedOperationException
        | NullPointerException
        | SQLException ex) {
      logger.error(String.format("Error executing rule: %s", ex.getMessage()), ex);
      workerResult.setStatus(WorkerResult.WorkerResultStatus.FAILED);
    }
  }