[AB-77] moving the templating module into the core module

adding a possibility to overlay specific templates for particular servers
adding commands to configure templates
adding file parameter support
This commit is contained in:
Sheldan
2021-02-19 16:27:27 +01:00
parent 909dc87d94
commit 43eca33113
361 changed files with 2158 additions and 2591 deletions

View File

@@ -16,7 +16,6 @@ import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
import net.dv8tion.jda.api.entities.MessageChannel;
import net.dv8tion.jda.api.entities.TextChannel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -40,7 +39,7 @@ public class CreateAssignableRolePost extends AbstractConditionableCommand {
public CommandResult execute(CommandContext commandContext) {
List<Object> parameters = commandContext.getParameters().getParameters();
String name = (String) parameters.get(0);
MessageChannel channel = (TextChannel) parameters.get(1);
TextChannel channel = (TextChannel) parameters.get(1);
String text = (String) parameters.get(2);
AChannel chosenChannel = channelManagementService.loadChannel(channel.getIdLong());
AServer server = serverManagementService.loadServer(commandContext.getGuild());

View File

@@ -22,8 +22,8 @@ import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.service.*;
import dev.sheldan.abstracto.core.service.management.*;
import dev.sheldan.abstracto.core.utils.FutureUtils;
import dev.sheldan.abstracto.templating.model.MessageToSend;
import dev.sheldan.abstracto.templating.service.TemplateService;
import dev.sheldan.abstracto.core.templating.model.MessageToSend;
import dev.sheldan.abstracto.core.templating.service.TemplateService;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.*;
import org.apache.commons.lang3.BooleanUtils;
@@ -174,7 +174,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
.forceNewMessage(forceNewMessage)
.build();
model.getRoles().add(newAssignableRole);
MessageToSend messageToSend = templateService.renderEmbedTemplate(ASSIGNABLE_ROLES_POST_TEMPLATE_KEY, model);
MessageToSend messageToSend = templateService.renderEmbedTemplate(ASSIGNABLE_ROLES_POST_TEMPLATE_KEY, model, server.getId());
// add it to the last currently existing post
Optional<TextChannel> channelOptional = channelService.getTextChannelFromServerOptional(server.getId(), latestPost.getUsedChannel().getId());
if(channelOptional.isPresent()) {
@@ -547,7 +547,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
}
@Override
public CompletableFuture<Void> testAssignableRolePlace(AServer server, String name, MessageChannel channel) {
public CompletableFuture<Void> testAssignableRolePlace(AServer server, String name, TextChannel channel) {
AssignableRolePlace place = rolePlaceManagementService.findByServerAndKey(server, name);
MessageToSend messageToSend = renderAssignablePlacePosts(place);
log.info("Testing assignable role place {} in channel {} on server {}.", place.getId(), channel.getId(), server.getId());
@@ -556,7 +556,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
}
@Override
public void showAssignablePlaceConfig(AServer server, String name, MessageChannel channel) {
public void showAssignablePlaceConfig(AServer server, String name, TextChannel channel) {
AssignableRolePlace place = rolePlaceManagementService.findByServerAndKey(server, name);
List<AssignablePostConfigRole> roles = new ArrayList<>();
Guild guild = guildService.getGuildById(server.getId());
@@ -581,7 +581,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
.roles(roles)
.place(place)
.build();
channelService.sendEmbedTemplateInChannel(ASSIGNABLE_ROLES_CONFIG_POST_TEMPLATE_KEY, configModel, channel);
channelService.sendEmbedTemplateInTextChannelList(ASSIGNABLE_ROLES_CONFIG_POST_TEMPLATE_KEY, configModel, channel);
}
@Override
@@ -652,11 +652,11 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
}
@Override
public CompletableFuture<Void> showAllAssignableRolePlaces(AServer server, MessageChannel channel) {
public CompletableFuture<Void> showAllAssignableRolePlaces(AServer server, TextChannel channel) {
List<AssignableRolePlace> assignableRolePlaces = rolePlaceManagementService.findAllByServer(server);
AssignablePlaceOverview overViewModel = AssignablePlaceOverview.builder().places(assignableRolePlaces).build();
log.info("Showing overview over all assignable role places for server {} in channel {}.", server.getId(), channel.getId());
List<CompletableFuture<Message>> promises = channelService.sendEmbedTemplateInChannel(ASSIGNABLE_ROLE_PLACES_OVERVIEW_TEMPLATE_KEY, overViewModel, channel);
List<CompletableFuture<Message>> promises = channelService.sendEmbedTemplateInTextChannelList(ASSIGNABLE_ROLE_PLACES_OVERVIEW_TEMPLATE_KEY, overViewModel, channel);
return CompletableFuture.allOf(promises.toArray(new CompletableFuture[0]));
}
@@ -671,7 +671,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
);
}
private List<CompletableFuture<Message>> sendAssignablePostMessages(AssignableRolePlace place, MessageChannel channel) {
private List<CompletableFuture<Message>> sendAssignablePostMessages(AssignableRolePlace place, TextChannel channel) {
MessageToSend messageToSend = renderAssignablePlacePosts(place);
return channelService.sendMessageToSendToChannel(messageToSend, channel);
}
@@ -728,7 +728,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
AssignableRolePlace assignableRolePlace = rolePlaceManagementService.findByPlaceId(assignablePlaceId);
Optional<TextChannel> channelOptional = channelService.getTextChannelFromServerOptional(serverId, assignableRolePlace.getChannel().getId());
if(channelOptional.isPresent()) {
MessageChannel channel = channelOptional.get();
TextChannel channel = channelOptional.get();
log.info("Sending assignable role place posts for place {} in channel {} in server {}.", assignableRolePlace.getId(), channel.getId(), serverId);
List<CompletableFuture<Message>> messageFutures = sendAssignablePostMessages(assignableRolePlace, channel);
return CompletableFuture.allOf(messageFutures.toArray(new CompletableFuture[0]))

View File

@@ -10,12 +10,5 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>assignable-roles-int</artifactId>
<dependencies>
<dependency>
<groupId>dev.sheldan.abstracto.templating</groupId>
<artifactId>templating-interface</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View File

@@ -2,7 +2,7 @@ package dev.sheldan.abstracto.assignableroles.exceptions;
import dev.sheldan.abstracto.assignableroles.models.exception.AssignableRolePlacePostNotFoundExceptionModel;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import dev.sheldan.abstracto.templating.Templatable;
import dev.sheldan.abstracto.core.templating.Templatable;
public class AssignablePlacePostNotFoundException extends AbstractoRunTimeException implements Templatable {

View File

@@ -3,7 +3,7 @@ package dev.sheldan.abstracto.assignableroles.exceptions;
import dev.sheldan.abstracto.assignableroles.models.exception.AssignableRoleAlreadyDefinedExceptionModel;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import dev.sheldan.abstracto.core.models.FullEmote;
import dev.sheldan.abstracto.templating.Templatable;
import dev.sheldan.abstracto.core.templating.Templatable;
public class AssignableRoleAlreadyDefinedException extends AbstractoRunTimeException implements Templatable {
private final AssignableRoleAlreadyDefinedExceptionModel model;

View File

@@ -3,7 +3,7 @@ package dev.sheldan.abstracto.assignableroles.exceptions;
import dev.sheldan.abstracto.assignableroles.models.exception.AssignableRoleNotUsableExceptionModel;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import dev.sheldan.abstracto.core.models.FullRole;
import dev.sheldan.abstracto.templating.Templatable;
import dev.sheldan.abstracto.core.templating.Templatable;
import net.dv8tion.jda.api.entities.Guild;
public class AssignableRoleNotUsableException extends AbstractoRunTimeException implements Templatable {

View File

@@ -2,7 +2,7 @@ package dev.sheldan.abstracto.assignableroles.exceptions;
import dev.sheldan.abstracto.assignableroles.models.exception.AssignableRolePlaceAlreadyExistsExceptionModel;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import dev.sheldan.abstracto.templating.Templatable;
import dev.sheldan.abstracto.core.templating.Templatable;
public class AssignableRolePlaceAlreadyExistsException extends AbstractoRunTimeException implements Templatable {

View File

@@ -2,7 +2,7 @@ package dev.sheldan.abstracto.assignableroles.exceptions;
import dev.sheldan.abstracto.assignableroles.models.exception.AssignableRolePlaceChannelDoesNotExistExceptionModel;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import dev.sheldan.abstracto.templating.Templatable;
import dev.sheldan.abstracto.core.templating.Templatable;
public class AssignableRolePlaceChannelDoesNotExist extends AbstractoRunTimeException implements Templatable {

View File

@@ -2,7 +2,7 @@ package dev.sheldan.abstracto.assignableroles.exceptions;
import dev.sheldan.abstracto.assignableroles.models.exception.AssignableRolePlaceNotFoundExceptionModel;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import dev.sheldan.abstracto.templating.Templatable;
import dev.sheldan.abstracto.core.templating.Templatable;
public class AssignableRolePlaceNotFoundException extends AbstractoRunTimeException implements Templatable {

View File

@@ -3,7 +3,7 @@ package dev.sheldan.abstracto.assignableroles.exceptions;
import dev.sheldan.abstracto.assignableroles.models.exception.AssignedUserNotFoundExceptionModel;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.templating.Templatable;
import dev.sheldan.abstracto.core.templating.Templatable;
public class AssignedUserNotFoundException extends AbstractoRunTimeException implements Templatable {

View File

@@ -3,7 +3,7 @@ package dev.sheldan.abstracto.assignableroles.exceptions;
import dev.sheldan.abstracto.assignableroles.models.exception.EmoteNotInAssignableRolePlaceExceptionModel;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import dev.sheldan.abstracto.core.models.FullEmote;
import dev.sheldan.abstracto.templating.Templatable;
import dev.sheldan.abstracto.core.templating.Templatable;
public class EmoteNotInAssignableRolePlaceException extends AbstractoRunTimeException implements Templatable {

View File

@@ -2,7 +2,7 @@ package dev.sheldan.abstracto.assignableroles.models.exception;
import dev.sheldan.abstracto.assignableroles.models.database.AssignableRolePlace;
import dev.sheldan.abstracto.core.models.FullUserInServer;
import dev.sheldan.abstracto.templating.Templatable;
import dev.sheldan.abstracto.core.templating.Templatable;
import lombok.Builder;
import lombok.Getter;

View File

@@ -8,7 +8,6 @@ import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AEmote;
import dev.sheldan.abstracto.core.models.database.ARole;
import dev.sheldan.abstracto.core.models.database.AServer;
import net.dv8tion.jda.api.entities.MessageChannel;
import net.dv8tion.jda.api.entities.TextChannel;
import java.util.concurrent.CompletableFuture;
@@ -53,8 +52,8 @@ public interface AssignableRolePlaceService {
void keepReactionsAssignableRolePlace(AssignableRolePlace place);
void swapPositions(AServer server, String name, FullEmote firstEmote, FullEmote secondEmote);
CompletableFuture<Void> testAssignableRolePlace(AServer server, String name, MessageChannel channel);
void showAssignablePlaceConfig(AServer server, String name, MessageChannel channel);
CompletableFuture<Void> testAssignableRolePlace(AServer server, String name, TextChannel channel);
void showAssignablePlaceConfig(AServer server, String name, TextChannel channel);
void moveAssignableRolePlace(AServer server, String name, TextChannel newChannel);
void changeAssignablePlaceDescription(AServer server, String name, String newDescription);
CompletableFuture<Void> deleteAssignableRolePlace(AServer server, String name);
@@ -69,5 +68,5 @@ public interface AssignableRolePlaceService {
CompletableFuture<Void> removeExistingReactionsAndRoles(AssignableRolePlace place, AssignedRoleUser user);
CompletableFuture<Void> changeConfiguration(AServer server, String name, AssignableRolePlaceParameterKey keyToChange, Object newValue);
CompletableFuture<Void> showAllAssignableRolePlaces(AServer server, MessageChannel channel);
CompletableFuture<Void> showAllAssignableRolePlaces(AServer server, TextChannel channel);
}