public void publish()

in src/main/java/com/epam/digital/data/platform/user/service/UserPublishingService.java [73:128]


  public void publish(String id) {
    if(id.isEmpty()) {
      log.info("FileId is empty string. Nothing to do");
      return;
    }
    // get file 
    var fileObject = fileService.getFile(id);
    
    // decryptFile
    var csv = vaultService.decrypt(new String(fileObject.getContent(), StandardCharsets.UTF_8));

    // convert to csvUsers
    List<CsvUser> csvUsers; 
    try {
      csvUsers = userService.getCsvUsers(csv);
    } catch (MappingException e) {
      fileService.deleteFile(fileObject);
      log.error("Error while parsing csv file", e);
      return;
    }
    var statistics = new Statistics(csvUsers.size());

    // validate users
    boolean isValid = validate(fileObject, csvUsers);
    if(!isValid) {
      return;
    }

    List<User> users = userService.convertToKeycloakUsers(csvUsers);

    // find users to be skipped
    var usersToBeSkipped = skippingService.check(users);
    statistics.addSkippedUsers(usersToBeSkipped.size());

    // print users to be skipped to log.warn
    skippingService.printResults(usersToBeSkipped);

    // remove users to be skipped
    List<EnumerableUser> enumerableUsers = userService.convertToEnumerableUsers(users);
    var filteredUsers = removeUsersToBeSkipped(enumerableUsers, usersToBeSkipped.keySet());
    
    // collapse KATOTTG codes to prefixes
    statistics.addCollapsedKatottg(userService.collapseKatottg(filteredUsers));

    // import users
    statistics.addStatistics(importUsers(fileObject, filteredUsers));

    // move file to archive 
    if (statistics.getImportedUsers() != 0) {
      fileService.moveToArchive(fileObject);
    } else {
      fileService.deleteFile(fileObject);
    }
    
    printStatistics(statistics);
  }