Refactor of all addFromCsv in Deteils complete
Co-authored-by: AndiBuls<andreas.buls@uni-duesseldorf.de>
This commit is contained in:
@ -129,11 +129,7 @@ public class WebController {
|
|||||||
@RequestParam("group_id") String groupId,
|
@RequestParam("group_id") String groupId,
|
||||||
@RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
|
@RequestParam(value = "file", required = false) MultipartFile file) throws IOException {
|
||||||
Account account = keyCloakService.createAccountFromPrincipal(token);
|
Account account = keyCloakService.createAccountFromPrincipal(token);
|
||||||
List<User> userList = new ArrayList<>();
|
controllerService.addUsersFromCsv(account, file, groupId);
|
||||||
Group group = userService.getGroupById(UUID.fromString(groupId));
|
|
||||||
userList = validationService.checkFile(file, userList, groupId, group, account);
|
|
||||||
UUID groupUUID = controllerService.getUUID(groupId);
|
|
||||||
controllerService.addUserList(userList, groupUUID);
|
|
||||||
return "redirect:/gruppen2/details/members/" + groupId;
|
return "redirect:/gruppen2/details/members/" + groupId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -92,6 +92,22 @@ public class ControllerService {
|
|||||||
addUserList(newUsers, groupId);
|
addUserList(newUsers, groupId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addUsersFromCsv(Account account, MultipartFile file, String groupId) throws IOException{
|
||||||
|
Group group = userService.getGroupById(UUID.fromString(groupId));
|
||||||
|
|
||||||
|
List<User> newUserList = readCsvFile(file);
|
||||||
|
removeOldUsersFromNewUsers(group.getMembers(), newUserList);
|
||||||
|
|
||||||
|
UUID groupUUID = getUUID(groupId);
|
||||||
|
|
||||||
|
Long newUserMaximum = adjustUserMaximum((long) newUserList.size(), (long) group.getMembers().size(), group.getUserMaximum());
|
||||||
|
if (newUserMaximum > group.getUserMaximum()){
|
||||||
|
updateMaxUser(account, groupUUID, newUserMaximum);
|
||||||
|
}
|
||||||
|
|
||||||
|
addUserList(newUserList, groupUUID);
|
||||||
|
}
|
||||||
|
|
||||||
private void removeOldUsersFromNewUsers(List<User> oldUsers, List<User> newUsers) {
|
private void removeOldUsersFromNewUsers(List<User> oldUsers, List<User> newUsers) {
|
||||||
for (User oldUser : oldUsers) {
|
for (User oldUser : oldUsers) {
|
||||||
newUsers.remove(oldUser);
|
newUsers.remove(oldUser);
|
||||||
@ -153,8 +169,8 @@ public class ControllerService {
|
|||||||
eventService.saveEvent(addUserEvent);
|
eventService.saveEvent(addUserEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addUserList(List<User> users, UUID groupId) {
|
public void addUserList(List<User> newUsers, UUID groupId) {
|
||||||
for (User user : users) {
|
for (User user : newUsers) {
|
||||||
Group group = userService.getGroupById(groupId);
|
Group group = userService.getGroupById(groupId);
|
||||||
if (group.getMembers().contains(user)) {
|
if (group.getMembers().contains(user)) {
|
||||||
logger.info("Benutzer " + user.getId() + " ist bereits in Gruppe");
|
logger.info("Benutzer " + user.getId() + " ist bereits in Gruppe");
|
||||||
|
|||||||
@ -108,20 +108,6 @@ public class ValidationService {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<User> checkFile(MultipartFile file, List<User> userList, String groupId, Group group, Account account) {
|
|
||||||
if (!file.isEmpty()) {
|
|
||||||
try {
|
|
||||||
userList = CsvService.read(file.getInputStream());
|
|
||||||
if (userList.size() + group.getMembers().size() > group.getUserMaximum()) {
|
|
||||||
controllerService.updateMaxUser(account, UUID.fromString(groupId), (long) userList.size() + group.getMembers().size());
|
|
||||||
}
|
|
||||||
} catch (IOException ex) {
|
|
||||||
throw new WrongFileException(file.getOriginalFilename());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return userList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Überprüft ob alle Felder richtig gesetzt sind.
|
* Überprüft ob alle Felder richtig gesetzt sind.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user