moved commands into the core, because its a core functionality

This commit is contained in:
Sheldan
2020-04-04 18:08:55 +02:00
parent a957c66905
commit 9b46f8d187
90 changed files with 352 additions and 407 deletions

View File

@@ -1,8 +1,8 @@
package dev.sheldan.abstracto.moderation.command; package dev.sheldan.abstracto.moderation.command;
import dev.sheldan.abstracto.command.AbstractFeatureFlaggedCommand; import dev.sheldan.abstracto.core.command.AbstractFeatureFlaggedCommand;
import dev.sheldan.abstracto.command.HelpInfo; import dev.sheldan.abstracto.core.command.HelpInfo;
import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.moderation.Moderation; import dev.sheldan.abstracto.moderation.Moderation;
import dev.sheldan.abstracto.moderation.config.ModerationFeatures; import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
import dev.sheldan.abstracto.moderation.models.template.BanLog; import dev.sheldan.abstracto.moderation.models.template.BanLog;

View File

@@ -1,8 +1,8 @@
package dev.sheldan.abstracto.moderation.command; package dev.sheldan.abstracto.moderation.command;
import dev.sheldan.abstracto.command.AbstractFeatureFlaggedCommand; import dev.sheldan.abstracto.core.command.AbstractFeatureFlaggedCommand;
import dev.sheldan.abstracto.command.HelpInfo; import dev.sheldan.abstracto.core.command.HelpInfo;
import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.moderation.Moderation; import dev.sheldan.abstracto.moderation.Moderation;
import dev.sheldan.abstracto.moderation.config.ModerationFeatures; import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
import dev.sheldan.abstracto.moderation.models.template.BanIdLog; import dev.sheldan.abstracto.moderation.models.template.BanIdLog;

View File

@@ -1,8 +1,8 @@
package dev.sheldan.abstracto.moderation.command; package dev.sheldan.abstracto.moderation.command;
import dev.sheldan.abstracto.command.AbstractFeatureFlaggedCommand; import dev.sheldan.abstracto.core.command.AbstractFeatureFlaggedCommand;
import dev.sheldan.abstracto.command.HelpInfo; import dev.sheldan.abstracto.core.command.HelpInfo;
import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.moderation.Moderation; import dev.sheldan.abstracto.moderation.Moderation;
import dev.sheldan.abstracto.moderation.config.ModerationFeatures; import dev.sheldan.abstracto.moderation.config.ModerationFeatures;
import dev.sheldan.abstracto.moderation.models.template.KickLogModel; import dev.sheldan.abstracto.moderation.models.template.KickLogModel;

View File

@@ -1,10 +1,10 @@
package dev.sheldan.abstracto.moderation.command; package dev.sheldan.abstracto.moderation.command;
import dev.sheldan.abstracto.command.*; import dev.sheldan.abstracto.core.command.*;
import dev.sheldan.abstracto.command.execution.CommandConfiguration; import dev.sheldan.abstracto.core.command.execution.CommandConfiguration;
import dev.sheldan.abstracto.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.command.execution.Parameter; import dev.sheldan.abstracto.core.command.execution.Parameter;
import dev.sheldan.abstracto.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.core.service.Bot; import dev.sheldan.abstracto.core.service.Bot;
import dev.sheldan.abstracto.moderation.Moderation; import dev.sheldan.abstracto.moderation.Moderation;
import dev.sheldan.abstracto.moderation.config.ModerationFeatures; import dev.sheldan.abstracto.moderation.config.ModerationFeatures;

View File

@@ -1,8 +1,8 @@
package dev.sheldan.abstracto.moderation.command; package dev.sheldan.abstracto.moderation.command;
import dev.sheldan.abstracto.command.AbstractFeatureFlaggedCommand; import dev.sheldan.abstracto.core.command.AbstractFeatureFlaggedCommand;
import dev.sheldan.abstracto.command.HelpInfo; import dev.sheldan.abstracto.core.command.HelpInfo;
import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.core.service.management.UserManagementService; import dev.sheldan.abstracto.core.service.management.UserManagementService;
import dev.sheldan.abstracto.moderation.Moderation; import dev.sheldan.abstracto.moderation.Moderation;
import dev.sheldan.abstracto.moderation.config.ModerationFeatures; import dev.sheldan.abstracto.moderation.config.ModerationFeatures;

View File

@@ -1,11 +1,11 @@
package dev.sheldan.abstracto.moderation; package dev.sheldan.abstracto.moderation;
import dev.sheldan.abstracto.command.Module; import dev.sheldan.abstracto.core.command.ModuleInterface;
import dev.sheldan.abstracto.command.module.ModuleInfo; import dev.sheldan.abstracto.core.command.module.ModuleInfo;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component @Component
public class Moderation implements Module { public class Moderation implements ModuleInterface {
public static final String MODERATION = "moderation"; public static final String MODERATION = "moderation";

View File

@@ -19,16 +19,16 @@
</modules> </modules>
<dependencies> <dependencies>
<dependency>
<groupId>dev.sheldan.abstracto.command</groupId>
<artifactId>command-int</artifactId>
<version>${project.version}</version>
</dependency>
<dependency> <dependency>
<groupId>dev.sheldan.abstracto.core</groupId> <groupId>dev.sheldan.abstracto.core</groupId>
<artifactId>core-interface</artifactId> <artifactId>core-interface</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>dev.sheldan.abstracto.templating</groupId>
<artifactId>templating-interface</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@@ -19,11 +19,6 @@
</modules> </modules>
<dependencies> <dependencies>
<dependency>
<groupId>dev.sheldan.abstracto.command</groupId>
<artifactId>command-int</artifactId>
<version>${project.version}</version>
</dependency>
<dependency> <dependency>
<groupId>dev.sheldan.abstracto.core</groupId> <groupId>dev.sheldan.abstracto.core</groupId>
<artifactId>core-interface</artifactId> <artifactId>core-interface</artifactId>

View File

@@ -1,7 +1,7 @@
package dev.sheldan.abstracto.utility.command; package dev.sheldan.abstracto.utility.command;
import dev.sheldan.abstracto.command.*; import dev.sheldan.abstracto.core.command.*;
import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.templating.TemplateService; import dev.sheldan.abstracto.templating.TemplateService;
import dev.sheldan.abstracto.utility.Utility; import dev.sheldan.abstracto.utility.Utility;
import dev.sheldan.abstracto.utility.config.UtilityFeatures; import dev.sheldan.abstracto.utility.config.UtilityFeatures;

View File

@@ -1,11 +1,11 @@
package dev.sheldan.abstracto.utility.command; package dev.sheldan.abstracto.utility.command;
import dev.sheldan.abstracto.command.AbstractFeatureFlaggedCommand; import dev.sheldan.abstracto.core.command.AbstractFeatureFlaggedCommand;
import dev.sheldan.abstracto.command.HelpInfo; import dev.sheldan.abstracto.core.command.HelpInfo;
import dev.sheldan.abstracto.command.execution.CommandConfiguration; import dev.sheldan.abstracto.core.command.execution.CommandConfiguration;
import dev.sheldan.abstracto.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.command.execution.Parameter; import dev.sheldan.abstracto.core.command.execution.Parameter;
import dev.sheldan.abstracto.core.models.embed.MessageToSend; import dev.sheldan.abstracto.core.models.embed.MessageToSend;
import dev.sheldan.abstracto.templating.TemplateService; import dev.sheldan.abstracto.templating.TemplateService;
import dev.sheldan.abstracto.utility.Utility; import dev.sheldan.abstracto.utility.Utility;

View File

@@ -1,7 +1,7 @@
package dev.sheldan.abstracto.utility.command.remind; package dev.sheldan.abstracto.utility.command.remind;
import dev.sheldan.abstracto.command.*; import dev.sheldan.abstracto.core.command.*;
import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.core.models.database.AUserInAServer; import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.utility.config.UtilityFeatures; import dev.sheldan.abstracto.utility.config.UtilityFeatures;
import dev.sheldan.abstracto.utility.Utility; import dev.sheldan.abstracto.utility.Utility;

View File

@@ -1,8 +1,8 @@
package dev.sheldan.abstracto.utility.command.suggest; package dev.sheldan.abstracto.utility.command.suggest;
import dev.sheldan.abstracto.command.AbstractFeatureFlaggedCommand; import dev.sheldan.abstracto.core.command.AbstractFeatureFlaggedCommand;
import dev.sheldan.abstracto.command.HelpInfo; import dev.sheldan.abstracto.core.command.HelpInfo;
import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.utility.Utility; import dev.sheldan.abstracto.utility.Utility;
import dev.sheldan.abstracto.utility.config.UtilityFeatures; import dev.sheldan.abstracto.utility.config.UtilityFeatures;
import dev.sheldan.abstracto.utility.models.template.SuggestionLog; import dev.sheldan.abstracto.utility.models.template.SuggestionLog;

View File

@@ -1,8 +1,8 @@
package dev.sheldan.abstracto.utility.command.suggest; package dev.sheldan.abstracto.utility.command.suggest;
import dev.sheldan.abstracto.command.AbstractFeatureFlaggedCommand; import dev.sheldan.abstracto.core.command.AbstractFeatureFlaggedCommand;
import dev.sheldan.abstracto.command.HelpInfo; import dev.sheldan.abstracto.core.command.HelpInfo;
import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.utility.Utility; import dev.sheldan.abstracto.utility.Utility;
import dev.sheldan.abstracto.utility.config.UtilityFeatures; import dev.sheldan.abstracto.utility.config.UtilityFeatures;
import dev.sheldan.abstracto.utility.models.template.SuggestionLog; import dev.sheldan.abstracto.utility.models.template.SuggestionLog;

View File

@@ -1,8 +1,8 @@
package dev.sheldan.abstracto.utility.command.suggest; package dev.sheldan.abstracto.utility.command.suggest;
import dev.sheldan.abstracto.command.AbstractFeatureFlaggedCommand; import dev.sheldan.abstracto.core.command.AbstractFeatureFlaggedCommand;
import dev.sheldan.abstracto.command.HelpInfo; import dev.sheldan.abstracto.core.command.HelpInfo;
import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.utility.Utility; import dev.sheldan.abstracto.utility.Utility;
import dev.sheldan.abstracto.utility.config.UtilityFeatures; import dev.sheldan.abstracto.utility.config.UtilityFeatures;
import dev.sheldan.abstracto.utility.models.template.SuggestionLog; import dev.sheldan.abstracto.utility.models.template.SuggestionLog;

View File

@@ -11,4 +11,12 @@
<artifactId>utility-int</artifactId> <artifactId>utility-int</artifactId>
<dependencies>
<dependency>
<groupId>dev.sheldan.abstracto.templating</groupId>
<artifactId>templating-interface</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project> </project>

View File

@@ -1,11 +1,11 @@
package dev.sheldan.abstracto.utility; package dev.sheldan.abstracto.utility;
import dev.sheldan.abstracto.command.Module; import dev.sheldan.abstracto.core.command.ModuleInterface;
import dev.sheldan.abstracto.command.module.ModuleInfo; import dev.sheldan.abstracto.core.command.module.ModuleInfo;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component @Component
public class Utility implements Module { public class Utility implements ModuleInterface {
public static final String UTILITY = "utility"; public static final String UTILITY = "utility";

View File

@@ -1,28 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>dev.sheldan.abstracto.command</groupId>
<artifactId>command</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>command-impl</artifactId>
<dependencies>
<dependency>
<groupId>dev.sheldan.abstracto.command</groupId>
<artifactId>command-int</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>dev.sheldan.abstracto.core</groupId>
<artifactId>core-interface</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@@ -1 +0,0 @@
abstracto.emoteNames.postReaction=warnReaction,successReaction

View File

@@ -1 +0,0 @@
The necessary parameters were not found. A '${class.simpleName}' was expected as '${parameterName}'. Consult help to see the correct syntax.

View File

@@ -1 +0,0 @@
Insufficient parameters: ${parameterName} was not found.

View File

@@ -1 +0,0 @@
The parameter ${parameterName} had a too large value: ${actualLength}. The maximum is: ${maximumLength}

View File

@@ -1,48 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>dev.sheldan.abstracto.command</groupId>
<artifactId>command</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<artifactId>command-int</artifactId>
<dependencies>
<dependency>
<groupId>net.dv8tion</groupId>
<artifactId>JDA</artifactId>
<exclusions>
<exclusion>
<groupId>club.minnced</groupId>
<artifactId>opus-java</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>dev.sheldan.abstracto.templating</groupId>
<artifactId>templating-interface</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>dev.sheldan.abstracto.core</groupId>
<artifactId>core-interface</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>

View File

@@ -1,12 +0,0 @@
package dev.sheldan.abstracto.command;
import dev.sheldan.abstracto.command.execution.CommandConfiguration;
import dev.sheldan.abstracto.command.execution.CommandContext;
import dev.sheldan.abstracto.command.execution.CommandResult;
import dev.sheldan.abstracto.core.listener.FeatureAware;
public interface Command extends FeatureAware {
CommandResult execute(CommandContext commandContext);
CommandConfiguration getConfiguration();
}

View File

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

View File

@@ -1,12 +0,0 @@
package dev.sheldan.abstracto.command.service;
import dev.sheldan.abstracto.command.CommandHierarchy;
import dev.sheldan.abstracto.command.Module;
import java.util.List;
public interface ModuleRegistry {
CommandHierarchy getDetailedModules();
List<Module> getModules();
}

View File

@@ -1,9 +0,0 @@
package dev.sheldan.abstracto.command.service;
import dev.sheldan.abstracto.command.Command;
import dev.sheldan.abstracto.command.execution.CommandContext;
import dev.sheldan.abstracto.command.execution.CommandResult;
public interface PostCommandExecution {
void execute(CommandContext commandContext, CommandResult commandResult, Command command);
}

View File

@@ -1,21 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>dev.sheldan.abstracto</groupId>
<artifactId>abstracto-application</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>dev.sheldan.abstracto.command</groupId>
<artifactId>command</artifactId>
<packaging>pom</packaging>
<modules>
<module>command-int</module>
<module>command-impl</module>
</modules>
</project>

View File

@@ -76,13 +76,6 @@
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>dev.sheldan.abstracto.command</groupId>
<artifactId>command-int</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>dev.sheldan.abstracto.templating</groupId> <groupId>dev.sheldan.abstracto.templating</groupId>
<artifactId>templating-interface</artifactId> <artifactId>templating-interface</artifactId>

View File

@@ -1,13 +1,11 @@
package dev.sheldan.abstracto.commands; package dev.sheldan.abstracto.core.command;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.exception.CommandNotFound;
import dev.sheldan.abstracto.command.Module; import dev.sheldan.abstracto.core.command.exception.InsufficientParameters;
import dev.sheldan.abstracto.command.execution.CommandConfiguration; import dev.sheldan.abstracto.core.command.execution.CommandConfiguration;
import dev.sheldan.abstracto.command.execution.Parameter; import dev.sheldan.abstracto.core.command.execution.Parameter;
import dev.sheldan.abstracto.command.meta.CommandRegistry; import dev.sheldan.abstracto.core.command.meta.CommandRegistry;
import dev.sheldan.abstracto.command.meta.UnParsedCommandParameter; import dev.sheldan.abstracto.core.command.meta.UnParsedCommandParameter;
import dev.sheldan.abstracto.commands.exception.CommandNotFound;
import dev.sheldan.abstracto.commands.exception.InsufficientParameters;
import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.Message;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -78,10 +76,10 @@ public class CommandManager implements CommandRegistry {
} }
@Override @Override
public List<Command> getAllCommandsFromModule(Module module) { public List<Command> getAllCommandsFromModule(ModuleInterface moduleInterface) {
List<Command> commands = new ArrayList<>(); List<Command> commands = new ArrayList<>();
this.getAllCommands().forEach(command -> { this.getAllCommands().forEach(command -> {
if(command.getConfiguration().getModule().equals(module.getInfo().getName())){ if(command.getConfiguration().getModule().equals(moduleInterface.getInfo().getName())){
commands.add(command); commands.add(command);
} }
}); });

View File

@@ -1,13 +1,10 @@
package dev.sheldan.abstracto.commands; package dev.sheldan.abstracto.core.command;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.exception.IncorrectParameter;
import dev.sheldan.abstracto.command.CommandCondition; import dev.sheldan.abstracto.core.command.exception.ParameterTooLong;
import dev.sheldan.abstracto.command.ConditionalCommand; import dev.sheldan.abstracto.core.command.service.PostCommandExecution;
import dev.sheldan.abstracto.command.service.PostCommandExecution; import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.core.command.meta.UnParsedCommandParameter;
import dev.sheldan.abstracto.command.meta.UnParsedCommandParameter;
import dev.sheldan.abstracto.commands.exception.IncorrectParameter;
import dev.sheldan.abstracto.commands.exception.ParameterTooLong;
import dev.sheldan.abstracto.core.Constants; import dev.sheldan.abstracto.core.Constants;
import dev.sheldan.abstracto.core.exception.*; import dev.sheldan.abstracto.core.exception.*;
import dev.sheldan.abstracto.core.service.management.ChannelManagementService; import dev.sheldan.abstracto.core.service.management.ChannelManagementService;

View File

@@ -1,9 +1,7 @@
package dev.sheldan.abstracto.commands; package dev.sheldan.abstracto.core.command;
import dev.sheldan.abstracto.command.*; import dev.sheldan.abstracto.core.command.meta.CommandRegistry;
import dev.sheldan.abstracto.command.Module; import dev.sheldan.abstracto.core.command.service.ModuleRegistry;
import dev.sheldan.abstracto.command.meta.CommandRegistry;
import dev.sheldan.abstracto.command.service.ModuleRegistry;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -14,7 +12,7 @@ import java.util.stream.Collectors;
public class ModuleManager implements ModuleRegistry { public class ModuleManager implements ModuleRegistry {
@Autowired @Autowired
private List<Module> modules; private List<ModuleInterface> moduleInterfaces;
@Autowired @Autowired
private CommandRegistry commandRegistry; private CommandRegistry commandRegistry;
@@ -22,28 +20,28 @@ public class ModuleManager implements ModuleRegistry {
@Override @Override
public CommandHierarchy getDetailedModules() { public CommandHierarchy getDetailedModules() {
List<PackedModule> modulesWithCommands = new ArrayList<>(); List<PackedModule> modulesWithCommands = new ArrayList<>();
List<Module> currentModules = getModules(); List<ModuleInterface> currentModuleInterfaces = getModuleInterfaces();
currentModules.forEach(module -> { currentModuleInterfaces.forEach(module -> {
List<Command> commands = commandRegistry.getAllCommandsFromModule(module); List<Command> commands = commandRegistry.getAllCommandsFromModule(module);
PackedModule packed = PackedModule.builder().commands(commands).module(module).subModules(new ArrayList<>()).build(); PackedModule packed = PackedModule.builder().commands(commands).moduleInterface(module).subModules(new ArrayList<>()).build();
modulesWithCommands.add(packed); modulesWithCommands.add(packed);
}); });
return getHierarchicalPacks(modulesWithCommands, currentModules); return getHierarchicalPacks(modulesWithCommands, currentModuleInterfaces);
} }
private CommandHierarchy getHierarchicalPacks(List<PackedModule> modules, List<Module> currentModules){ private CommandHierarchy getHierarchicalPacks(List<PackedModule> modules, List<ModuleInterface> currentModuleInterfaces){
List<PackedModule> hierarchical = modules.stream().filter(packedModule -> packedModule.getModule().getParentModule() == null).collect(Collectors.toList()); List<PackedModule> hierarchical = modules.stream().filter(packedModule -> packedModule.getModuleInterface().getParentModule() == null).collect(Collectors.toList());
List<PackedModule> subModules = modules.stream().filter(packedModule -> packedModule.getModule().getParentModule() != null).collect(Collectors.toList()); List<PackedModule> subModules = modules.stream().filter(packedModule -> packedModule.getModuleInterface().getParentModule() != null).collect(Collectors.toList());
subModules.forEach(module -> { subModules.forEach(module -> {
List<Module> path = getModulePath(module, currentModules); List<ModuleInterface> path = getModulePath(module, currentModuleInterfaces);
Collections.reverse(path); Collections.reverse(path);
Module rootModule = path.get(0); ModuleInterface rootModuleInterface = path.get(0);
Optional<PackedModule> any = hierarchical.stream().filter(moduleInList -> moduleInList.getModule().getInfo().getName().equals(rootModule.getInfo().getName())).findAny(); Optional<PackedModule> any = hierarchical.stream().filter(moduleInList -> moduleInList.getModuleInterface().getInfo().getName().equals(rootModuleInterface.getInfo().getName())).findAny();
if(any.isPresent()){ if(any.isPresent()){
PackedModule currentNodeInHierarchy = any.get(); PackedModule currentNodeInHierarchy = any.get();
for (int i = 1; i < path.size(); i++) { for (int i = 1; i < path.size(); i++) {
Optional<PackedModule> nextInHierarchy = currentNodeInHierarchy.getSubModules().stream().filter(module1 -> module1.getModule().equals(module.getModule())).findAny(); Optional<PackedModule> nextInHierarchy = currentNodeInHierarchy.getSubModules().stream().filter(module1 -> module1.getModuleInterface().equals(module.getModuleInterface())).findAny();
if(nextInHierarchy.isPresent()){ if(nextInHierarchy.isPresent()){
currentNodeInHierarchy = nextInHierarchy.get(); currentNodeInHierarchy = nextInHierarchy.get();
} else { } else {
@@ -62,17 +60,17 @@ public class ModuleManager implements ModuleRegistry {
private List<Module> getModulePath(PackedModule moduleToPathFor, List<Module> currentModules){ private List<ModuleInterface> getModulePath(PackedModule moduleToPathFor, List<ModuleInterface> currentModuleInterfaces){
List<Module> modulesBetweenRootAndThis = new ArrayList<>(); List<ModuleInterface> modulesBetweenRootAndThis = new ArrayList<>();
Module current = moduleToPathFor.getModule(); ModuleInterface current = moduleToPathFor.getModuleInterface();
modulesBetweenRootAndThis.add(current); modulesBetweenRootAndThis.add(current);
while(current.getParentModule() != null){ while(current.getParentModule() != null){
String parentModule = current.getParentModule(); String parentModule = current.getParentModule();
Optional<Module> possibleModule = currentModules.stream().filter(module1 -> module1.getInfo().getName().equals(parentModule)).findFirst(); Optional<ModuleInterface> possibleModule = currentModuleInterfaces.stream().filter(module1 -> module1.getInfo().getName().equals(parentModule)).findFirst();
if(possibleModule.isPresent()){ if(possibleModule.isPresent()){
Module foundModule = possibleModule.get(); ModuleInterface foundModuleInterface = possibleModule.get();
modulesBetweenRootAndThis.add(foundModule); modulesBetweenRootAndThis.add(foundModuleInterface);
current = foundModule; current = foundModuleInterface;
} else { } else {
break; break;
} }
@@ -82,8 +80,8 @@ public class ModuleManager implements ModuleRegistry {
} }
@Override @Override
public List<Module> getModules() { public List<ModuleInterface> getModuleInterfaces() {
return modules; return moduleInterfaces;
} }
} }

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.commands.config; package dev.sheldan.abstracto.core.command.config;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.PropertySource;

View File

@@ -1,7 +1,7 @@
package dev.sheldan.abstracto.commands.config; package dev.sheldan.abstracto.core.command.config;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.command.service.CommandService; import dev.sheldan.abstracto.core.command.service.CommandService;
import dev.sheldan.abstracto.core.listener.ServerConfigListener; import dev.sheldan.abstracto.core.listener.ServerConfigListener;
import dev.sheldan.abstracto.core.models.database.AServer; import dev.sheldan.abstracto.core.models.database.AServer;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -1,6 +1,6 @@
package dev.sheldan.abstracto.commands.exception; package dev.sheldan.abstracto.core.command.exception;
import dev.sheldan.abstracto.command.Templatable; import dev.sheldan.abstracto.core.command.Templatable;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException; import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
public class CommandNotFound extends AbstractoRunTimeException implements Templatable { public class CommandNotFound extends AbstractoRunTimeException implements Templatable {

View File

@@ -1,7 +1,7 @@
package dev.sheldan.abstracto.commands.exception; package dev.sheldan.abstracto.core.command.exception;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.command.Templatable; import dev.sheldan.abstracto.core.command.Templatable;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException; import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import java.util.HashMap; import java.util.HashMap;

View File

@@ -1,7 +1,7 @@
package dev.sheldan.abstracto.commands.exception; package dev.sheldan.abstracto.core.command.exception;
import dev.sheldan.abstracto.command.Templatable; import dev.sheldan.abstracto.core.command.Templatable;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException; import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import lombok.Getter; import lombok.Getter;

View File

@@ -1,7 +1,7 @@
package dev.sheldan.abstracto.commands.exception; package dev.sheldan.abstracto.core.command.exception;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.command.Templatable; import dev.sheldan.abstracto.core.command.Templatable;
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException; import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import java.util.HashMap; import java.util.HashMap;

View File

@@ -1,11 +1,11 @@
package dev.sheldan.abstracto.commands.post; package dev.sheldan.abstracto.core.command.post;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.command.service.PostCommandExecution; import dev.sheldan.abstracto.core.command.service.PostCommandExecution;
import dev.sheldan.abstracto.command.Templatable; import dev.sheldan.abstracto.core.command.Templatable;
import dev.sheldan.abstracto.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.command.execution.ResultState; import dev.sheldan.abstracto.core.command.execution.ResultState;
import dev.sheldan.abstracto.templating.TemplateService; import dev.sheldan.abstracto.templating.TemplateService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -1,10 +1,10 @@
package dev.sheldan.abstracto.commands.post; package dev.sheldan.abstracto.core.command.post;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.command.service.PostCommandExecution; import dev.sheldan.abstracto.core.command.service.PostCommandExecution;
import dev.sheldan.abstracto.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.command.execution.ResultState; import dev.sheldan.abstracto.core.command.execution.ResultState;
import dev.sheldan.abstracto.core.service.MessageService; import dev.sheldan.abstracto.core.service.MessageService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

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

View File

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

View File

@@ -1,10 +1,10 @@
package dev.sheldan.abstracto.commands.service; package dev.sheldan.abstracto.core.command.service;
import dev.sheldan.abstracto.command.models.ACommand; import dev.sheldan.abstracto.core.command.models.ACommand;
import dev.sheldan.abstracto.command.models.AModule; import dev.sheldan.abstracto.core.command.models.AModule;
import dev.sheldan.abstracto.command.service.CommandService; import dev.sheldan.abstracto.core.command.service.CommandService;
import dev.sheldan.abstracto.command.service.management.CommandManagementService; import dev.sheldan.abstracto.core.command.service.management.CommandManagementService;
import dev.sheldan.abstracto.command.service.management.ModuleManagementService; import dev.sheldan.abstracto.core.command.service.management.ModuleManagementService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;

View File

@@ -1,10 +1,8 @@
package dev.sheldan.abstracto.commands.service.management; package dev.sheldan.abstracto.core.command.service.management;
import dev.sheldan.abstracto.command.models.ACommand; import dev.sheldan.abstracto.core.command.models.ACommand;
import dev.sheldan.abstracto.command.models.AModule; import dev.sheldan.abstracto.core.command.models.AModule;
import dev.sheldan.abstracto.command.service.management.CommandManagementService; import dev.sheldan.abstracto.core.command.repository.CommandRepository;
import dev.sheldan.abstracto.command.service.management.ModuleManagementService;
import dev.sheldan.abstracto.commands.repository.CommandRepository;
import dev.sheldan.abstracto.core.service.management.ServerManagementService; import dev.sheldan.abstracto.core.service.management.ServerManagementService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;

View File

@@ -1,8 +1,7 @@
package dev.sheldan.abstracto.commands.service.management; package dev.sheldan.abstracto.core.command.service.management;
import dev.sheldan.abstracto.command.models.AModule; import dev.sheldan.abstracto.core.command.models.AModule;
import dev.sheldan.abstracto.command.service.management.ModuleManagementService; import dev.sheldan.abstracto.core.command.repository.ModuleRepository;
import dev.sheldan.abstracto.commands.repository.ModuleRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;

View File

@@ -1,12 +1,12 @@
package dev.sheldan.abstracto.core.commands; package dev.sheldan.abstracto.core.commands;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.command.execution.CommandConfiguration; import dev.sheldan.abstracto.core.command.execution.CommandConfiguration;
import dev.sheldan.abstracto.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.command.execution.Parameter; import dev.sheldan.abstracto.core.command.execution.Parameter;
import dev.sheldan.abstracto.config.AbstractoFeatures; import dev.sheldan.abstracto.config.AbstractoFeatures;
import dev.sheldan.abstracto.core.commands.utility.UtilityModule; import dev.sheldan.abstracto.core.commands.utility.UtilityModuleInterface;
import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService; import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -33,7 +33,7 @@ public class Disable implements Command {
List<Parameter> parameters = Arrays.asList(featureName); List<Parameter> parameters = Arrays.asList(featureName);
return CommandConfiguration.builder() return CommandConfiguration.builder()
.name("disable") .name("disable")
.module(UtilityModule.UTILITY) .module(UtilityModuleInterface.UTILITY)
.parameters(parameters) .parameters(parameters)
.description("Disables features for this server.") .description("Disables features for this server.")
.causesReaction(true) .causesReaction(true)

View File

@@ -1,12 +1,12 @@
package dev.sheldan.abstracto.core.commands; package dev.sheldan.abstracto.core.commands;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.command.execution.CommandConfiguration; import dev.sheldan.abstracto.core.command.execution.CommandConfiguration;
import dev.sheldan.abstracto.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.command.execution.Parameter; import dev.sheldan.abstracto.core.command.execution.Parameter;
import dev.sheldan.abstracto.config.AbstractoFeatures; import dev.sheldan.abstracto.config.AbstractoFeatures;
import dev.sheldan.abstracto.core.commands.utility.UtilityModule; import dev.sheldan.abstracto.core.commands.utility.UtilityModuleInterface;
import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService; import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -33,7 +33,7 @@ public class Enable implements Command {
List<Parameter> parameters = Arrays.asList(featureName); List<Parameter> parameters = Arrays.asList(featureName);
return CommandConfiguration.builder() return CommandConfiguration.builder()
.name("enable") .name("enable")
.module(UtilityModule.UTILITY) .module(UtilityModuleInterface.UTILITY)
.parameters(parameters) .parameters(parameters)
.description("Enables features for this server.") .description("Enables features for this server.")
.causesReaction(true) .causesReaction(true)

View File

@@ -1,10 +1,10 @@
package dev.sheldan.abstracto.core.commands.channels; package dev.sheldan.abstracto.core.commands.channels;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.command.execution.CommandConfiguration; import dev.sheldan.abstracto.core.command.execution.CommandConfiguration;
import dev.sheldan.abstracto.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.command.execution.Parameter; import dev.sheldan.abstracto.core.command.execution.Parameter;
import dev.sheldan.abstracto.config.AbstractoFeatures; import dev.sheldan.abstracto.config.AbstractoFeatures;
import dev.sheldan.abstracto.core.service.ChannelGroupService; import dev.sheldan.abstracto.core.service.ChannelGroupService;
import net.dv8tion.jda.api.entities.TextChannel; import net.dv8tion.jda.api.entities.TextChannel;

View File

@@ -1,11 +1,11 @@
package dev.sheldan.abstracto.core.commands.channels; package dev.sheldan.abstracto.core.commands.channels;
import dev.sheldan.abstracto.command.Module; import dev.sheldan.abstracto.core.command.ModuleInterface;
import dev.sheldan.abstracto.command.module.ModuleInfo; import dev.sheldan.abstracto.core.command.module.ModuleInfo;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component @Component
public class ChannelsModule implements Module { public class ChannelsModuleInterface implements ModuleInterface {
@Override @Override
public ModuleInfo getInfo() { public ModuleInfo getInfo() {
return ModuleInfo.builder().name("channels").description("Includes utilities to configure the channel configuration stored in the database").build(); return ModuleInfo.builder().name("channels").description("Includes utilities to configure the channel configuration stored in the database").build();

View File

@@ -1,10 +1,10 @@
package dev.sheldan.abstracto.core.commands.channels; package dev.sheldan.abstracto.core.commands.channels;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.command.execution.CommandConfiguration; import dev.sheldan.abstracto.core.command.execution.CommandConfiguration;
import dev.sheldan.abstracto.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.command.execution.Parameter; import dev.sheldan.abstracto.core.command.execution.Parameter;
import dev.sheldan.abstracto.config.AbstractoFeatures; import dev.sheldan.abstracto.config.AbstractoFeatures;
import dev.sheldan.abstracto.core.service.ChannelGroupService; import dev.sheldan.abstracto.core.service.ChannelGroupService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@@ -1,7 +1,7 @@
package dev.sheldan.abstracto.core.commands.channels; package dev.sheldan.abstracto.core.commands.channels;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.config.AbstractoFeatures; import dev.sheldan.abstracto.config.AbstractoFeatures;
import dev.sheldan.abstracto.core.models.command.PostTargetErrorModel; import dev.sheldan.abstracto.core.models.command.PostTargetErrorModel;
import dev.sheldan.abstracto.core.service.PostTargetService; import dev.sheldan.abstracto.core.service.PostTargetService;

View File

@@ -1,10 +1,10 @@
package dev.sheldan.abstracto.core.commands.channels; package dev.sheldan.abstracto.core.commands.channels;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.command.execution.CommandConfiguration; import dev.sheldan.abstracto.core.command.execution.CommandConfiguration;
import dev.sheldan.abstracto.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.command.execution.Parameter; import dev.sheldan.abstracto.core.command.execution.Parameter;
import dev.sheldan.abstracto.config.AbstractoFeatures; import dev.sheldan.abstracto.config.AbstractoFeatures;
import dev.sheldan.abstracto.core.service.ChannelGroupService; import dev.sheldan.abstracto.core.service.ChannelGroupService;
import net.dv8tion.jda.api.entities.TextChannel; import net.dv8tion.jda.api.entities.TextChannel;

View File

@@ -1,9 +1,9 @@
package dev.sheldan.abstracto.core.commands.help; package dev.sheldan.abstracto.core.commands.help;
import dev.sheldan.abstracto.command.*; import dev.sheldan.abstracto.core.command.*;
import dev.sheldan.abstracto.command.execution.*; import dev.sheldan.abstracto.core.command.execution.*;
import dev.sheldan.abstracto.command.module.ModuleInfo; import dev.sheldan.abstracto.core.command.module.ModuleInfo;
import dev.sheldan.abstracto.command.service.ModuleRegistry; import dev.sheldan.abstracto.core.command.service.ModuleRegistry;
import dev.sheldan.abstracto.config.AbstractoFeatures; import dev.sheldan.abstracto.config.AbstractoFeatures;
import dev.sheldan.abstracto.templating.TemplateService; import dev.sheldan.abstracto.templating.TemplateService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -104,7 +104,7 @@ public class Help implements Command {
if(depth > 0){ if(depth > 0){
intentation = StringUtils.repeat("-", depth) + ">"; intentation = StringUtils.repeat("-", depth) + ">";
} }
ModuleInfo info = module.getModule().getInfo(); ModuleInfo info = module.getModuleInterface().getInfo();
sb.append(String.format(intentation +"**%s** \n", info.getName())); sb.append(String.format(intentation +"**%s** \n", info.getName()));
sb.append(String.format(intentation + "%s \n", info.getDescription())); sb.append(String.format(intentation + "%s \n", info.getDescription()));
if(recursive) { if(recursive) {

View File

@@ -1,11 +1,11 @@
package dev.sheldan.abstracto.core.commands.help; package dev.sheldan.abstracto.core.commands.help;
import dev.sheldan.abstracto.command.Module; import dev.sheldan.abstracto.core.command.ModuleInterface;
import dev.sheldan.abstracto.command.module.ModuleInfo; import dev.sheldan.abstracto.core.command.module.ModuleInfo;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component @Component
public class SupportModule implements Module { public class SupportModuleInterface implements ModuleInterface {
@Override @Override

View File

@@ -1,12 +1,12 @@
package dev.sheldan.abstracto.core.commands.utility; package dev.sheldan.abstracto.core.commands.utility;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.command.CommandCondition; import dev.sheldan.abstracto.core.command.CommandCondition;
import dev.sheldan.abstracto.command.HelpInfo; import dev.sheldan.abstracto.core.command.HelpInfo;
import dev.sheldan.abstracto.command.execution.CommandConfiguration; import dev.sheldan.abstracto.core.command.execution.CommandConfiguration;
import dev.sheldan.abstracto.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.command.execution.Parameter; import dev.sheldan.abstracto.core.command.execution.Parameter;
import dev.sheldan.abstracto.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.config.AbstractoFeatures; import dev.sheldan.abstracto.config.AbstractoFeatures;
import dev.sheldan.abstracto.core.models.command.EchoModel; import dev.sheldan.abstracto.core.models.command.EchoModel;
import dev.sheldan.abstracto.templating.TemplateService; import dev.sheldan.abstracto.templating.TemplateService;

View File

@@ -1,10 +1,10 @@
package dev.sheldan.abstracto.core.commands.utility; package dev.sheldan.abstracto.core.commands.utility;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.command.CommandCondition; import dev.sheldan.abstracto.core.command.CommandCondition;
import dev.sheldan.abstracto.command.execution.CommandConfiguration; import dev.sheldan.abstracto.core.command.execution.CommandConfiguration;
import dev.sheldan.abstracto.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.config.AbstractoFeatures; import dev.sheldan.abstracto.config.AbstractoFeatures;
import dev.sheldan.abstracto.core.models.command.PingModel; import dev.sheldan.abstracto.core.models.command.PingModel;
import dev.sheldan.abstracto.templating.TemplateService; import dev.sheldan.abstracto.templating.TemplateService;

View File

@@ -1,10 +1,10 @@
package dev.sheldan.abstracto.core.commands.utility; package dev.sheldan.abstracto.core.commands.utility;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.command.execution.CommandConfiguration; import dev.sheldan.abstracto.core.command.execution.CommandConfiguration;
import dev.sheldan.abstracto.command.execution.CommandContext; import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.command.execution.CommandResult; import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.command.execution.Parameter; import dev.sheldan.abstracto.core.command.execution.Parameter;
import dev.sheldan.abstracto.config.AbstractoFeatures; import dev.sheldan.abstracto.config.AbstractoFeatures;
import dev.sheldan.abstracto.core.service.EmoteService; import dev.sheldan.abstracto.core.service.EmoteService;
import dev.sheldan.abstracto.core.service.management.EmoteManagementService; import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
@@ -46,7 +46,7 @@ public class SetEmote implements Command {
List<Parameter> parameters = Arrays.asList(emoteKey, emote); List<Parameter> parameters = Arrays.asList(emoteKey, emote);
return CommandConfiguration.builder() return CommandConfiguration.builder()
.name("setEmote") .name("setEmote")
.module(UtilityModule.UTILITY) .module(UtilityModuleInterface.UTILITY)
.parameters(parameters) .parameters(parameters)
.description("Configures the emote key pointing towards a defined emote") .description("Configures the emote key pointing towards a defined emote")
.causesReaction(true) .causesReaction(true)

View File

@@ -1,11 +1,11 @@
package dev.sheldan.abstracto.core.commands.utility; package dev.sheldan.abstracto.core.commands.utility;
import dev.sheldan.abstracto.command.Module; import dev.sheldan.abstracto.core.command.ModuleInterface;
import dev.sheldan.abstracto.command.module.ModuleInfo; import dev.sheldan.abstracto.core.command.module.ModuleInfo;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component @Component
public class UtilityModule implements Module { public class UtilityModuleInterface implements ModuleInterface {
public static final String UTILITY = "utility"; public static final String UTILITY = "utility";

View File

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

View File

@@ -0,0 +1,12 @@
package dev.sheldan.abstracto.core.command;
import dev.sheldan.abstracto.core.command.execution.CommandConfiguration;
import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.core.listener.FeatureAware;
public interface Command extends FeatureAware {
CommandResult execute(CommandContext commandContext);
CommandConfiguration getConfiguration();
}

View File

@@ -1,6 +1,7 @@
package dev.sheldan.abstracto.command; package dev.sheldan.abstracto.core.command;
import dev.sheldan.abstracto.command.execution.CommandContext;
import dev.sheldan.abstracto.core.command.execution.CommandContext;
public interface CommandCondition { public interface CommandCondition {
boolean shouldExecute(CommandContext commandContext, Command command); boolean shouldExecute(CommandContext commandContext, Command command);

View File

@@ -1,10 +1,9 @@
package dev.sheldan.abstracto.command; package dev.sheldan.abstracto.core.command;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import java.util.List; import java.util.List;
import java.util.Optional;
@Getter @Builder @Getter @Builder
public class CommandHierarchy { public class CommandHierarchy {
@@ -21,7 +20,7 @@ public class CommandHierarchy {
} }
private PackedModule getModuleWithName(String name, PackedModule module){ private PackedModule getModuleWithName(String name, PackedModule module){
if(module.getModule().getInfo().getName().equals(name)){ if(module.getModuleInterface().getInfo().getName().equals(name)){
return module; return module;
} else { } else {
for (PackedModule subModule: module.getSubModules()) { for (PackedModule subModule: module.getSubModules()) {

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.command; package dev.sheldan.abstracto.core.command;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
@@ -8,7 +8,7 @@ import java.util.List;
@Builder @Builder
@Getter @Getter
public class PackedModule { public class PackedModule {
private Module module; private ModuleInterface moduleInterface;
private PackedModule parentModule; private PackedModule parentModule;
private List<PackedModule> subModules; private List<PackedModule> subModules;
private List<Command> commands; private List<Command> commands;

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.command; package dev.sheldan.abstracto.core.command;
public interface Templatable { public interface Templatable {
String getTemplateName(); String getTemplateName();

View File

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

View File

@@ -1,10 +1,13 @@
package dev.sheldan.abstracto.command.execution; package dev.sheldan.abstracto.core.command.execution;
import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; import dev.sheldan.abstracto.core.models.UserInitiatedServerContext;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.*; import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.TextChannel;
@Builder @Builder
@Getter @Getter

View File

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

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.command.execution; package dev.sheldan.abstracto.core.command.execution;
import dev.sheldan.abstracto.core.models.UserInitiatedServerContext; import dev.sheldan.abstracto.core.models.UserInitiatedServerContext;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
package dev.sheldan.abstracto.command.execution; package dev.sheldan.abstracto.core.command.execution;
public enum ResultState { public enum ResultState {
ERROR, SUCCESSFUL, IGNORED ERROR, SUCCESSFUL, IGNORED

View File

@@ -1,8 +1,9 @@
package dev.sheldan.abstracto.command.meta; package dev.sheldan.abstracto.core.command.meta;
import dev.sheldan.abstracto.command.Command; import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.command.Module; import dev.sheldan.abstracto.core.command.ModuleInterface;
import dev.sheldan.abstracto.core.command.module.ModuleInfo;
import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.Message;
import java.util.List; import java.util.List;
@@ -11,6 +12,6 @@ public interface CommandRegistry {
Command findCommandByParameters(String name, UnParsedCommandParameter context); Command findCommandByParameters(String name, UnParsedCommandParameter context);
Command findCommand(String message); Command findCommand(String message);
List<Command> getAllCommands(); List<Command> getAllCommands();
List<Command> getAllCommandsFromModule(Module module); List<Command> getAllCommandsFromModule(ModuleInterface module);
boolean isCommand(Message message); boolean isCommand(Message message);
} }

View File

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

View File

@@ -0,0 +1,32 @@
package dev.sheldan.abstracto.core.command.models;
import dev.sheldan.abstracto.core.models.database.AChannelGroup;
import lombok.*;
import javax.persistence.*;
@Entity
@Table(name = "channel_group_command")
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Getter
public class AChannelGroupCommand {
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "command_id", nullable = false)
@Getter
@Setter
@Column
private ACommand command;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "group_id", nullable = false)
@Getter
@Setter
@Column
private AChannelGroup group;
private Boolean enabled;
}

View File

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

View File

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

View File

@@ -1,10 +1,10 @@
package dev.sheldan.abstracto.command.module; package dev.sheldan.abstracto.core.command.module;
import dev.sheldan.abstracto.command.Module; import dev.sheldan.abstracto.core.command.ModuleInterface;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service @Service
public class AbstracatoModule implements Module { public class AbstracatoModuleInterface implements ModuleInterface {
@Override @Override
public ModuleInfo getInfo() { public ModuleInfo getInfo() {
return ModuleInfo.builder().name("default").description("Default module provided by abstracto").build(); return ModuleInfo.builder().name("default").description("Default module provided by abstracto").build();

View File

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

View File

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

View File

@@ -0,0 +1,12 @@
package dev.sheldan.abstracto.core.command.service;
import dev.sheldan.abstracto.core.command.CommandHierarchy;
import dev.sheldan.abstracto.core.command.ModuleInterface;
import java.util.List;
public interface ModuleRegistry {
CommandHierarchy getDetailedModules();
List<ModuleInterface> getModuleInterfaces();
}

View File

@@ -0,0 +1,9 @@
package dev.sheldan.abstracto.core.command.service;
import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.core.command.execution.CommandResult;
public interface PostCommandExecution {
void execute(CommandContext commandContext, CommandResult commandResult, Command command);
}

View File

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

View File

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

View File

@@ -0,0 +1,32 @@
package dev.sheldan.abstracto.core.models.database;
import dev.sheldan.abstracto.core.command.models.ACommand;
import lombok.*;
import javax.persistence.*;
@Entity
@Table(name = "channel_group_command")
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Getter
public class AChannelGroupCommand {
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "command_id", nullable = false)
@Getter
@Setter
@Column
private ACommand command;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "group_id", nullable = false)
@Getter
@Setter
@Column
private AChannelGroup group;
private Boolean enabled;
}

View File

@@ -49,13 +49,6 @@
<scope>runtime</scope> <scope>runtime</scope>
</dependency> </dependency>
<dependency>
<groupId>dev.sheldan.abstracto.command</groupId>
<artifactId>command-impl</artifactId>
<version>${project.version}</version>
<scope>runtime</scope>
</dependency>
<!-- modules containing commands --> <!-- modules containing commands -->
<dependency> <dependency>

View File

@@ -15,7 +15,6 @@
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
<modules> <modules>
<module>command</module>
<module>core</module> <module>core</module>
<module>executable</module> <module>executable</module>
<module>templating</module> <module>templating</module>