changed context handling for command models for logging

added method to convert the user initiated context to a concrete command model
added method to find if a template exists
added method to render a context aware model
added banid command
This commit is contained in:
Sheldan
2020-03-20 09:34:37 +01:00
parent ec21305725
commit c978c1c677
68 changed files with 412 additions and 254 deletions

View File

@@ -28,7 +28,7 @@ public class Echo implements Command {
commandContext.getParameters().getParameters().forEach(o -> {
sb.append(o.toString());
});
EchoModel model = EchoModel.parentBuilder().parent(commandContext.getCommandTemplateContext()).text(sb.toString()).build();
EchoModel model = EchoModel.builder().text(sb.toString()).build();
commandContext.getChannel().sendMessage(templateService.renderTemplate(TEMPLATE_NAME, model)).queue();
return Result.fromSuccess();
}

View File

@@ -20,7 +20,7 @@ public class Ping implements Command {
@Override
public Result execute(CommandContext commandContext) {
long ping = commandContext.getJda().getGatewayPing();
PingModel model = PingModel.parentBuilder().parent(commandContext.getCommandTemplateContext()).latency(ping).build();
PingModel model = PingModel.builder().latency(ping).build();
String text = templateService.renderTemplate(PING_TEMPLATE, model);
commandContext.getChannel().sendMessage(text).queue();
return Result.fromSuccess();

View File

@@ -1,17 +1,12 @@
package dev.sheldan.abstracto.core.commands.utility.model;
import dev.sheldan.abstracto.command.execution.CommandTemplateContext;
import dev.sheldan.abstracto.core.models.UserInitiatedServerContext;
import lombok.Builder;
import lombok.Getter;
import lombok.experimental.SuperBuilder;
@Getter
public class EchoModel extends CommandTemplateContext {
@Getter @SuperBuilder
public class EchoModel extends UserInitiatedServerContext {
private String text;
@Builder(builderMethodName = "parentBuilder")
private EchoModel(CommandTemplateContext parent, String text) {
super(parent);
this.text = text;
}
}

View File

@@ -1,16 +1,11 @@
package dev.sheldan.abstracto.core.commands.utility.model;
import dev.sheldan.abstracto.command.execution.CommandTemplateContext;
import dev.sheldan.abstracto.core.models.UserInitiatedServerContext;
import lombok.Builder;
import lombok.Getter;
import lombok.experimental.SuperBuilder;
@Getter
public class PingModel extends CommandTemplateContext {
@Getter @SuperBuilder
public class PingModel extends UserInitiatedServerContext {
private Long latency;
@Builder(builderMethodName = "parentBuilder")
private PingModel(CommandTemplateContext parent, Long latency) {
super(parent);
this.latency = latency;
}
}

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.database.AChannel;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.TextChannel;

View File

@@ -2,7 +2,7 @@ package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.management.PostTargetManagement;
import dev.sheldan.abstracto.core.management.ServerManagementService;
import dev.sheldan.abstracto.core.models.PostTarget;
import dev.sheldan.abstracto.core.models.database.PostTarget;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.TextChannel;

View File

@@ -4,10 +4,10 @@ import dev.sheldan.abstracto.SnowflakeUtils;
import dev.sheldan.abstracto.core.management.ChannelManagementService;
import dev.sheldan.abstracto.core.management.RoleManagementService;
import dev.sheldan.abstracto.core.management.ServerManagementService;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.AChannelType;
import dev.sheldan.abstracto.core.models.ARole;
import dev.sheldan.abstracto.core.models.AServer;
import dev.sheldan.abstracto.core.models.database.ARole;
import dev.sheldan.abstracto.core.models.database.AServer;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Guild;

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.core.service.management;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.AChannelType;
import dev.sheldan.abstracto.core.management.ChannelManagementService;
import dev.sheldan.abstracto.repository.ChannelRepository;

View File

@@ -1,9 +1,9 @@
package dev.sheldan.abstracto.core.service.management;
import dev.sheldan.abstracto.core.exception.PostTargetException;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.AServer;
import dev.sheldan.abstracto.core.models.PostTarget;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.PostTarget;
import dev.sheldan.abstracto.core.management.ChannelManagementService;
import dev.sheldan.abstracto.core.management.PostTargetManagement;
import dev.sheldan.abstracto.core.management.ServerManagementService;

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.core.service.management;
import dev.sheldan.abstracto.core.models.ARole;
import dev.sheldan.abstracto.core.models.database.ARole;
import dev.sheldan.abstracto.core.management.RoleManagementService;
import dev.sheldan.abstracto.repository.RoleRepository;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -1,6 +1,9 @@
package dev.sheldan.abstracto.core.management;
package dev.sheldan.abstracto.core.service.management;
import dev.sheldan.abstracto.core.models.*;
import dev.sheldan.abstracto.core.management.ChannelManagementService;
import dev.sheldan.abstracto.core.management.PostTargetManagement;
import dev.sheldan.abstracto.core.management.ServerManagementService;
import dev.sheldan.abstracto.core.models.database.*;
import dev.sheldan.abstracto.repository.ServerRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

View File

@@ -1,8 +1,10 @@
package dev.sheldan.abstracto.core.management;
package dev.sheldan.abstracto.core.service.management;
import dev.sheldan.abstracto.core.models.AServer;
import dev.sheldan.abstracto.core.models.AUser;
import dev.sheldan.abstracto.core.models.AUserInAServer;
import dev.sheldan.abstracto.core.management.ServerManagementService;
import dev.sheldan.abstracto.core.management.UserManagementService;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUser;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.repository.UserInServerRepository;
import dev.sheldan.abstracto.repository.UserRepository;
import net.dv8tion.jda.api.entities.Member;

View File

@@ -1,7 +1,7 @@
package dev.sheldan.abstracto.listener;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.AServer;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.repository.ServerRepository;
import net.dv8tion.jda.api.entities.TextChannel;
import net.dv8tion.jda.api.events.channel.text.TextChannelCreateEvent;

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.listener;
import dev.sheldan.abstracto.core.models.PostTarget;
import dev.sheldan.abstracto.core.models.database.PostTarget;
import dev.sheldan.abstracto.core.management.PostTargetManagement;
import dev.sheldan.abstracto.core.service.PostTargetService;
import dev.sheldan.abstracto.core.management.ServerManagementService;

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.repository;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.database.AChannel;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.repository;
import dev.sheldan.abstracto.core.models.PostTarget;
import dev.sheldan.abstracto.core.models.database.PostTarget;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.repository;
import dev.sheldan.abstracto.core.models.ARole;
import dev.sheldan.abstracto.core.models.database.ARole;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.repository;
import dev.sheldan.abstracto.core.models.AServer;
import dev.sheldan.abstracto.core.models.database.AServer;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

View File

@@ -1,8 +1,8 @@
package dev.sheldan.abstracto.repository;
import dev.sheldan.abstracto.core.models.AServer;
import dev.sheldan.abstracto.core.models.AUser;
import dev.sheldan.abstracto.core.models.AUserInAServer;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUser;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.repository;
import dev.sheldan.abstracto.core.models.AUser;
import dev.sheldan.abstracto.core.models.database.AUser;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<AUser, Long> {

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.core.management;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.AChannelType;
public interface ChannelManagementService {

View File

@@ -1,8 +1,8 @@
package dev.sheldan.abstracto.core.management;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.AServer;
import dev.sheldan.abstracto.core.models.PostTarget;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.PostTarget;
public interface PostTargetManagement {
void createPostTarget(String name, AChannel targetChanel, AServer server);

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.core.management;
import dev.sheldan.abstracto.core.models.ARole;
import dev.sheldan.abstracto.core.models.database.ARole;
public interface RoleManagementService {
ARole createRole(Long id);

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.core.management;
import dev.sheldan.abstracto.core.models.*;
import dev.sheldan.abstracto.core.models.database.*;
public interface ServerManagementService {
AServer createServer(Long id);

View File

@@ -1,8 +1,8 @@
package dev.sheldan.abstracto.core.management;
import dev.sheldan.abstracto.core.models.AServer;
import dev.sheldan.abstracto.core.models.AUser;
import dev.sheldan.abstracto.core.models.AUserInAServer;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUser;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import net.dv8tion.jda.api.entities.Member;
public interface UserManagementService {

View File

@@ -0,0 +1,5 @@
package dev.sheldan.abstracto.core.models;
public interface ContextAware {
String getTemplateSuffix();
}

View File

@@ -0,0 +1,24 @@
package dev.sheldan.abstracto.core.models;
import dev.sheldan.abstracto.core.models.database.AServer;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import net.dv8tion.jda.api.entities.Guild;
@Getter
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
@Setter
public class ServerContext implements ContextAware{
private Guild guild;
private AServer server;
@Override
public String getTemplateSuffix() {
return "server";
}
}

View File

@@ -0,0 +1,27 @@
package dev.sheldan.abstracto.core.models;
import dev.sheldan.abstracto.core.models.database.AChannel;
import dev.sheldan.abstracto.core.models.database.AUser;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.TextChannel;
@Getter @NoArgsConstructor
@Setter
@SuperBuilder
public class UserInitiatedServerContext extends ServerContext {
private AChannel channel;
private TextChannel textChannel;
private Member member;
private AUser user;
private AUserInAServer aUserInAServer;
@Override
public String getTemplateSuffix() {
return "";
}
}

View File

@@ -1,5 +1,7 @@
package dev.sheldan.abstracto.core.models;
package dev.sheldan.abstracto.core.models.database;
import dev.sheldan.abstracto.core.models.AChannelType;
import dev.sheldan.abstracto.core.models.SnowFlake;
import lombok.*;
import net.dv8tion.jda.api.entities.ChannelType;

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.core.models;
package dev.sheldan.abstracto.core.models.database;
import dev.sheldan.abstracto.core.models.SnowFlake;
import lombok.*;
import javax.persistence.Column;

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.core.models;
package dev.sheldan.abstracto.core.models.database;
import dev.sheldan.abstracto.core.models.SnowFlake;
import lombok.*;
import javax.persistence.*;

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.core.models;
package dev.sheldan.abstracto.core.models.database;
import lombok.*;

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.core.models;
package dev.sheldan.abstracto.core.models.database;
import lombok.Builder;
import lombok.Getter;

View File

@@ -1,9 +1,8 @@
package dev.sheldan.abstracto.core.models;
package dev.sheldan.abstracto.core.models.database;
import lombok.*;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.database.AChannel;
public interface ChannelService {
void sendTextInAChannel(String text, AChannel channel);

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.models.PostTarget;
import dev.sheldan.abstracto.core.models.database.PostTarget;
public interface PostTargetService {
void sendTextInPostTarget(String text, PostTarget target);