restructured packages - aligned the whole project to use a similar package layout for classes with similar purpose

removed context aware template support
This commit is contained in:
Sheldan
2020-04-07 23:27:48 +02:00
parent 523aaaae2a
commit da28831ff9
187 changed files with 446 additions and 419 deletions

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.core.command;
import dev.sheldan.abstracto.core.command.execution.CommandConfiguration;
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.core.listener.FeatureAware;

View File

@@ -1,9 +0,0 @@
package dev.sheldan.abstracto.core.command;
import dev.sheldan.abstracto.core.command.module.ModuleInfo;
public interface ModuleInterface {
ModuleInfo getInfo();
String getParentModule();
}

View File

@@ -1,6 +0,0 @@
package dev.sheldan.abstracto.core.command;
public interface Templatable {
String getTemplateName();
Object getTemplateModel();
}

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.core.command;
package dev.sheldan.abstracto.core.command.condition;
import dev.sheldan.abstracto.core.service.ChannelService;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -1,6 +1,7 @@
package dev.sheldan.abstracto.core.command;
package dev.sheldan.abstracto.core.command.condition;
import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.core.command.execution.CommandContext;
public interface CommandCondition {

View File

@@ -1,7 +1,8 @@
package dev.sheldan.abstracto.core.command;
package dev.sheldan.abstracto.core.command.condition;
import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.core.command.models.ACommand;
import dev.sheldan.abstracto.core.command.models.database.ACommand;
import dev.sheldan.abstracto.core.command.service.ChannelGroupCommandService;
import dev.sheldan.abstracto.core.command.service.management.CommandManagementService;
import org.springframework.beans.factory.annotation.Autowired;

View File

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

View File

@@ -1,4 +1,6 @@
package dev.sheldan.abstracto.core.command;
package dev.sheldan.abstracto.core.command.condition;
import dev.sheldan.abstracto.core.command.Command;
import java.util.List;

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.core.command;
package dev.sheldan.abstracto.core.command.condition;
import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService;
import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -1,6 +1,5 @@
package dev.sheldan.abstracto.core.command.module;
package dev.sheldan.abstracto.core.command.config;
import dev.sheldan.abstracto.core.command.ModuleInterface;
import org.springframework.stereotype.Service;
@Service

View File

@@ -1,6 +1,5 @@
package dev.sheldan.abstracto.core.command.execution;
package dev.sheldan.abstracto.core.command.config;
import dev.sheldan.abstracto.core.command.HelpInfo;
import lombok.Builder;
import lombok.Getter;

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.core.command;
package dev.sheldan.abstracto.core.command.config;
import dev.sheldan.abstracto.core.command.Command;
import lombok.Builder;
import lombok.Getter;

View File

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

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.core.command.module;
package dev.sheldan.abstracto.core.command.config;
import lombok.Builder;
import lombok.Getter;

View File

@@ -0,0 +1,9 @@
package dev.sheldan.abstracto.core.command.config;
import dev.sheldan.abstracto.core.command.config.ModuleInfo;
public interface ModuleInterface {
ModuleInfo getInfo();
String getParentModule();
}

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.core.command;
package dev.sheldan.abstracto.core.command.config;
import dev.sheldan.abstracto.core.command.Command;
import lombok.Builder;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.core.command.execution;
package dev.sheldan.abstracto.core.command.config;
import lombok.Builder;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.core.command.execution;
package dev.sheldan.abstracto.core.command.config;
import lombok.Builder;
import lombok.Getter;

View File

@@ -0,0 +1,9 @@
package dev.sheldan.abstracto.core.command.exception;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
public class ChannelGroupException extends AbstractoRunTimeException {
public ChannelGroupException(String message) {
super(message);
}
}

View File

@@ -0,0 +1,9 @@
package dev.sheldan.abstracto.core.command.exception;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
public class CommandException extends AbstractoRunTimeException {
public CommandException(String message) {
super(message);
}
}

View File

@@ -0,0 +1,21 @@
package dev.sheldan.abstracto.core.command.exception;
import dev.sheldan.abstracto.templating.Templatable;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
public class CommandNotFound extends AbstractoRunTimeException implements Templatable {
public CommandNotFound(String s) {
super(s);
}
@Override
public String getTemplateName() {
return "command_not_found";
}
@Override
public Object getTemplateModel() {
return null;
}
}

View File

@@ -0,0 +1,34 @@
package dev.sheldan.abstracto.core.command.exception;
import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.templating.Templatable;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import java.util.HashMap;
public class IncorrectParameter extends AbstractoRunTimeException implements Templatable {
private Command command;
private String parameterName;
private Class clazz;
public IncorrectParameter(String s, Command command, Class expected, String parameterName) {
super(s);
this.command = command;
this.parameterName = parameterName;
this.clazz = expected;
}
@Override
public String getTemplateName() {
return "incorrect_parameters";
}
@Override
public Object getTemplateModel() {
HashMap<String, Object> model = new HashMap<>();
model.put("parameterName", parameterName);
model.put("class", this.clazz);
return model;
}
}

View File

@@ -0,0 +1,33 @@
package dev.sheldan.abstracto.core.command.exception;
import dev.sheldan.abstracto.templating.Templatable;
import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import lombok.Getter;
import java.util.HashMap;
@Getter
public class InsufficientParameters extends AbstractoRunTimeException implements Templatable {
private Command command;
private String parameterName;
public InsufficientParameters(String s, Command command, String parameterName) {
super(s);
this.command = command;
this.parameterName = parameterName;
}
@Override
public String getTemplateName() {
return "insufficient_parameters";
}
@Override
public Object getTemplateModel() {
HashMap<String, Object> model = new HashMap<>();
model.put("parameterName", parameterName);
return model;
}
}

View File

@@ -0,0 +1,39 @@
package dev.sheldan.abstracto.core.command.exception;
import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.templating.Templatable;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import java.util.HashMap;
public class ParameterTooLong extends AbstractoRunTimeException implements Templatable {
private Command command;
private String parameterName;
private Integer actualLength;
private Integer maximumLength;
public ParameterTooLong(String s, Command command, String parameterName, Integer actualLength, Integer maximumLength) {
super(s);
this.command = command;
this.parameterName = parameterName;
this.actualLength = actualLength;
this.maximumLength = maximumLength;
}
@Override
public String getTemplateName() {
return "parameter_too_long";
}
@Override
public Object getTemplateModel() {
HashMap<String, Object> model = new HashMap<>();
model.put("parameterName", parameterName);
model.put("actualLength", actualLength);
model.put("maximumLength", maximumLength);
model.put("command", command);
return model;
}
}

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.core.command.execution;
import dev.sheldan.abstracto.core.command.config.Parameters;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import lombok.Builder;
import lombok.Getter;

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.core.command.service;
import dev.sheldan.abstracto.core.command.models.ACommand;
import dev.sheldan.abstracto.core.command.models.database.ACommand;
import dev.sheldan.abstracto.core.models.database.AChannel;
public interface ChannelGroupCommandService {

View File

@@ -1,9 +1,9 @@
package dev.sheldan.abstracto.core.command.meta;
package dev.sheldan.abstracto.core.command.service;
import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.core.command.ModuleInterface;
import dev.sheldan.abstracto.core.command.module.ModuleInfo;
import dev.sheldan.abstracto.core.command.config.ModuleInterface;
import dev.sheldan.abstracto.core.command.execution.UnParsedCommandParameter;
import net.dv8tion.jda.api.entities.Message;
import java.util.List;

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.core.command.service;
import dev.sheldan.abstracto.core.command.models.ACommand;
import dev.sheldan.abstracto.core.command.models.database.ACommand;
public interface CommandService {
ACommand createCommand(String name, String moduleName);

View File

@@ -1,8 +1,8 @@
package dev.sheldan.abstracto.core.command.service;
import dev.sheldan.abstracto.core.command.CommandHierarchy;
import dev.sheldan.abstracto.core.command.ModuleInterface;
import dev.sheldan.abstracto.core.command.config.CommandHierarchy;
import dev.sheldan.abstracto.core.command.config.ModuleInterface;
import java.util.List;

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.core.command.service.management;
import dev.sheldan.abstracto.core.command.models.ACommand;
import dev.sheldan.abstracto.core.command.models.database.ACommand;
import dev.sheldan.abstracto.core.models.database.AChannelGroup;
import dev.sheldan.abstracto.core.models.database.AChannelGroupCommand;

View File

@@ -1,7 +1,7 @@
package dev.sheldan.abstracto.core.command.service.management;
import dev.sheldan.abstracto.core.command.models.ACommand;
import dev.sheldan.abstracto.core.command.models.AModule;
import dev.sheldan.abstracto.core.command.models.database.ACommand;
import dev.sheldan.abstracto.core.command.models.database.AModule;
public interface CommandManagementService {
ACommand createCommand(String name, String moduleName);

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.core.command.service.management;
import dev.sheldan.abstracto.core.command.models.AModule;
import dev.sheldan.abstracto.core.command.models.database.AModule;
public interface ModuleManagementService {
AModule createModule(String name);

View File

@@ -9,7 +9,7 @@ import lombok.Setter;
@Getter
@Setter
@Builder
public class AServerChannelMessage {
public class AServerAChannelMessage {
private AServer server;
private AChannel channel;
private Long messageId;

View File

@@ -10,7 +10,7 @@ import net.dv8tion.jda.api.entities.TextChannel;
@Getter
@Setter
@Builder
public class ServerChannelUser {
public class GuildChannelMember {
public Guild guild;
private TextChannel textChannel;
private Member member;

View File

@@ -1,16 +0,0 @@
package dev.sheldan.abstracto.core.models;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import net.dv8tion.jda.api.entities.MessageEmbed;
import java.util.List;
@Getter
@Setter
@Builder
public class MessageToSend {
private List<MessageEmbed> embeds;
private String message;
}

View File

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

View File

@@ -13,12 +13,8 @@ import net.dv8tion.jda.api.entities.Guild;
@AllArgsConstructor
@NoArgsConstructor
@Setter
public class ServerContext implements ContextAware{
public class ServerContext {
private Guild guild;
private AServer server;
@Override
public String getTemplateSuffix() {
return "server";
}
}

View File

@@ -20,8 +20,4 @@ public class UserInitiatedServerContext extends ServerContext {
private AUser user;
private AUserInAServer aUserInAServer;
@Override
public String getTemplateSuffix() {
return "";
}
}

View File

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

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.core.models.command;
package dev.sheldan.abstracto.core.models.template.commands;
import dev.sheldan.abstracto.core.models.database.AChannel;
import lombok.Builder;

View File

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

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.core.models.command;
package dev.sheldan.abstracto.core.models.template.commands;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.core.models.command;
package dev.sheldan.abstracto.core.models.template.commands;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.core.models.command;
package dev.sheldan.abstracto.core.models.template.commands;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.core.models.command;
package dev.sheldan.abstracto.core.models.template.commands;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.core.listener.models;
package dev.sheldan.abstracto.core.models.template.listener;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.models.ServerChannelUser;
import dev.sheldan.abstracto.core.models.GuildChannelMember;
import dev.sheldan.abstracto.core.models.database.AEmote;
import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Emote;
@@ -17,7 +17,7 @@ import java.util.concurrent.CompletableFuture;
public interface Bot {
void login() throws LoginException;
JDA getInstance();
ServerChannelUser getServerChannelUser(Long serverId, Long channelId, Long userId);
GuildChannelMember getServerChannelUser(Long serverId, Long channelId, Long userId);
Member getMemberInServer(Long serverId, Long memberId);
CompletableFuture<Void> deleteMessage(Long serverId, Long channelId, Long messageId);
Optional<Emote> getEmote(Long serverId, AEmote emote);

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.models.MessageToSend;
import dev.sheldan.abstracto.templating.model.MessageToSend;
import dev.sheldan.abstracto.core.models.database.AChannel;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.TextChannel;

View File

@@ -1,7 +1,7 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.models.database.PostTarget;
import dev.sheldan.abstracto.core.models.MessageToSend;
import dev.sheldan.abstracto.templating.model.MessageToSend;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.MessageEmbed;

View File

@@ -4,7 +4,7 @@ import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
import dev.sheldan.abstracto.core.service.management.UserManagementService;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.core.models.ServerChannelUser;
import dev.sheldan.abstracto.core.models.GuildChannelMember;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.core.service.Bot;
@@ -33,15 +33,15 @@ public class ContextUtils {
public <T extends UserInitiatedServerContext> UserInitiatedServerContext fromMessage(CachedMessage message, Class<T> clazz) {
Method m = null;
ServerChannelUser serverChannelUser = bot.getServerChannelUser(message.getServerId(), message.getChannelId(), message.getAuthorId());
GuildChannelMember guildChannelMember = bot.getServerChannelUser(message.getServerId(), message.getChannelId(), message.getAuthorId());
try {
m = clazz.getMethod("builder");
UserInitiatedServerContext.UserInitiatedServerContextBuilder<?, ?> builder = (UserInitiatedServerContext.UserInitiatedServerContextBuilder) m.invoke(null, null);
AUserInAServer aUserInAServer = userManagementService.loadUser(message.getServerId(), message.getAuthorId());
return builder
.member(serverChannelUser.getMember())
.guild(serverChannelUser.getGuild())
.messageChannel(serverChannelUser.getTextChannel())
.member(guildChannelMember.getMember())
.guild(guildChannelMember.getGuild())
.messageChannel(guildChannelMember.getTextChannel())
.channel(channelManagementService.loadChannel(message.getChannelId()))
.server(serverManagementService.loadOrCreate(message.getServerId()))
.aUserInAServer(aUserInAServer)