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);
}