diff --git a/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/service/AssignableRolePlaceServiceBean.java b/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/service/AssignableRolePlaceServiceBean.java index 6efa0841c..fdb666991 100644 --- a/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/service/AssignableRolePlaceServiceBean.java +++ b/abstracto-application/abstracto-modules/assignable-roles/assignable-roles-impl/src/main/java/dev/sheldan/abstracto/assignableroles/service/AssignableRolePlaceServiceBean.java @@ -685,35 +685,29 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic @Transactional public CompletableFuture addEmotes(List> assignablePlacePostsMessageFutures, String placeKey) { - try { - Message firstMessage = assignablePlacePostsMessageFutures.get(0).get(); - Long serverId = firstMessage.getGuild().getIdLong(); + Message firstMessage = assignablePlacePostsMessageFutures.get(0).join(); + Long serverId = firstMessage.getGuild().getIdLong(); - AServer innerServer = serverManagementService.loadOrCreate(serverId); - AssignableRolePlace innerRolePlace = rolePlaceManagementService.findByServerAndKey(innerServer, placeKey); + AServer innerServer = serverManagementService.loadOrCreate(serverId); + AssignableRolePlace innerRolePlace = rolePlaceManagementService.findByServerAndKey(innerServer, placeKey); - List roleStream = innerRolePlace.getAssignableRoles().stream().sorted(Comparator.comparingInt(AssignableRole::getPosition)).collect(Collectors.toList()); - List> reactionFutures = new ArrayList<>(); - int usedEmotes = 0; - for (CompletableFuture messageCompletableFuture : assignablePlacePostsMessageFutures) { - Message sentMessage = messageCompletableFuture.get(); - // this uses the actual embed count as a limit, so this relies on fields to be used for description, if this changes, this needs to be changed - MessageEmbed embed = sentMessage.getEmbeds().get(0); - List firstRoles = roleStream.subList(usedEmotes, usedEmotes + embed.getFields().size()); - usedEmotes += embed.getFields().size(); - List usedEmoteIds = firstRoles.stream().map(assignableRole -> assignableRole.getEmote().getId()).collect(Collectors.toList()); - CompletableFuture firstMessageFuture = createAssignableRolePlacePost(sentMessage, serverId, usedEmoteIds); - reactionFutures.add(firstMessageFuture); - } - return CompletableFuture.allOf(reactionFutures.toArray(new CompletableFuture[0])).thenCompose(aVoid -> { - self.storeCreatedAssignableRolePlacePosts(placeKey, serverId, assignablePlacePostsMessageFutures); - return CompletableFuture.completedFuture(null); - }); - } catch (InterruptedException | ExecutionException e) { - log.error("Failed to process future from sending assignable place posts messages.", e); - throw new AbstractoRunTimeException(e); + List roleStream = innerRolePlace.getAssignableRoles().stream().sorted(Comparator.comparingInt(AssignableRole::getPosition)).collect(Collectors.toList()); + List> reactionFutures = new ArrayList<>(); + int usedEmotes = 0; + for (CompletableFuture messageCompletableFuture : assignablePlacePostsMessageFutures) { + Message sentMessage = messageCompletableFuture.join(); + // this uses the actual embed count as a limit, so this relies on fields to be used for description, if this changes, this needs to be changed + MessageEmbed embed = sentMessage.getEmbeds().get(0); + List firstRoles = roleStream.subList(usedEmotes, usedEmotes + embed.getFields().size()); + usedEmotes += embed.getFields().size(); + List usedEmoteIds = firstRoles.stream().map(assignableRole -> assignableRole.getEmote().getId()).collect(Collectors.toList()); + CompletableFuture firstMessageFuture = createAssignableRolePlacePost(sentMessage, serverId, usedEmoteIds); + reactionFutures.add(firstMessageFuture); } - + return CompletableFuture.allOf(reactionFutures.toArray(new CompletableFuture[0])).thenCompose(aVoid -> { + self.storeCreatedAssignableRolePlacePosts(placeKey, serverId, assignablePlacePostsMessageFutures); + return CompletableFuture.completedFuture(null); + }); } @Transactional diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ServerManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ServerManagementServiceBean.java index da03795ee..c9c80b264 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ServerManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/ServerManagementServiceBean.java @@ -30,11 +30,8 @@ public class ServerManagementServiceBean implements ServerManagementService { @Override public AServer loadOrCreate(Long id) { - if(repository.existsById(id)) { - return repository.findById(id).get(); - } else { - return createServer(id); - } + Optional optional = repository.findById(id); + return optional.orElseGet(() -> createServer(id)); } @Override diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/UserManagementServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/UserManagementServiceBean.java index ab8661bf9..80ac5d363 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/UserManagementServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/management/UserManagementServiceBean.java @@ -7,6 +7,8 @@ import net.dv8tion.jda.api.entities.Member; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.Optional; + @Component @Slf4j public class UserManagementServiceBean implements UserManagementService { @@ -29,10 +31,7 @@ public class UserManagementServiceBean implements UserManagementService { @Override public AUser loadUser(Long userId) { - if(userRepository.existsById(userId)) { - return userRepository.findById(userId).get(); - } else { - return this.createUser(userId); - } + Optional optional = userRepository.findById(userId); + return optional.orElseGet(() -> this.createUser(userId)); } }