From ca93f18f1e67100ba34e9c110ba6de4cc1f6a9fa Mon Sep 17 00:00:00 2001 From: Aleksei Date: Thu, 13 Feb 2020 23:41:18 -0500 Subject: [PATCH] Refactored CommandContextBuilder as static builder --- .../fsbot/guthix/CommandContext.java | 53 +++++++++++--- .../fsbot/guthix/ContextBuilder.java | 73 ------------------- .../dev/salmonllama/fsbot/guthix/Guthix.java | 20 ++--- 3 files changed, 55 insertions(+), 91 deletions(-) delete mode 100644 src/main/java/dev/salmonllama/fsbot/guthix/ContextBuilder.java diff --git a/src/main/java/dev/salmonllama/fsbot/guthix/CommandContext.java b/src/main/java/dev/salmonllama/fsbot/guthix/CommandContext.java index 0fa5aa3..a8ef137 100644 --- a/src/main/java/dev/salmonllama/fsbot/guthix/CommandContext.java +++ b/src/main/java/dev/salmonllama/fsbot/guthix/CommandContext.java @@ -28,15 +28,15 @@ public class CommandContext { private String usedAlias; private String[] args; - CommandContext(DiscordApi api, Message message, MessageAuthor author, TextChannel channel, Server server, String alias, Command cmd, String[] args) { - this.api = api; - this.message = message; - this.author = author; - this.channel = channel; - this.server = server; - this.usedCommand = cmd; - this.usedAlias = alias; - this.args = args; + private CommandContext(CommandContextBuilder builder) { + this.api = builder.api; + this.message = builder.message; + this.author = builder.author; + this.channel = builder.channel; + this.server = builder.server; + this.usedCommand = builder.usedCommand; + this.usedAlias = builder.usedAlias; + this.args = builder.args; } public DiscordApi getApi() { @@ -96,4 +96,39 @@ public class CommandContext { public CompletableFuture reply(EmbedBuilder embed) { return channel.sendMessage(embed); } + + public static class CommandContextBuilder { + private DiscordApi api; + private Message message; + private MessageAuthor author; + private TextChannel channel; + private Server server; + private Command usedCommand; + private String usedAlias; + private String[] args; + + public CommandContextBuilder( + DiscordApi api, + Message message, + MessageAuthor author, + TextChannel channel, + Server server, + Command usedCommand, + String usedAlias, + String[] args + ) { + this.api = api; + this.message = message; + this.author = author; + this.channel = channel; + this.server = server; + this.usedCommand = usedCommand; + this.usedAlias = usedAlias; + this.args = args; + } + + public CommandContext build() { + return new CommandContext(this); + } + } } diff --git a/src/main/java/dev/salmonllama/fsbot/guthix/ContextBuilder.java b/src/main/java/dev/salmonllama/fsbot/guthix/ContextBuilder.java deleted file mode 100644 index 39f7b04..0000000 --- a/src/main/java/dev/salmonllama/fsbot/guthix/ContextBuilder.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2020. Aleksei Gryczewski - * All rights reserved. - */ - -package dev.salmonllama.fsbot.guthix; - -import org.javacord.api.DiscordApi; -import org.javacord.api.entity.channel.TextChannel; -import org.javacord.api.entity.message.Message; -import org.javacord.api.entity.message.MessageAuthor; -import org.javacord.api.entity.server.Server; - -import java.util.Collection; - -public class ContextBuilder { - private DiscordApi api; - private Message message; - private MessageAuthor author; - private TextChannel channel; - private Server server; - private Command usedCommand; - private String usedAlias; - private String[] args; - - public ContextBuilder() { - - } - - public ContextBuilder setUsedCommand(Command commandUsed) { - this.usedCommand = commandUsed; - return this; - } - - public ContextBuilder setUsedAlias(String alias) { - this.usedAlias = alias; - return this; - } - - public ContextBuilder setArgs(String[] args) { - this.args = args; - return this; - } - - ContextBuilder setMessage(Message message) { - this.message = message; - return this; - } - - ContextBuilder setAuthor(MessageAuthor author) { - this.author = author; - return this; - } - - ContextBuilder setChannel(TextChannel channel) { - this.channel = channel; - return this; - } - - ContextBuilder setServer(Server server) { - this.server = server; - return this; - } - - ContextBuilder setApi(DiscordApi api) { - this.api = api; - return this; - } - - CommandContext build() { - return new CommandContext(api, message, author, channel, server, usedAlias, usedCommand, args); - } -} diff --git a/src/main/java/dev/salmonllama/fsbot/guthix/Guthix.java b/src/main/java/dev/salmonllama/fsbot/guthix/Guthix.java index 469817e..c290ffe 100644 --- a/src/main/java/dev/salmonllama/fsbot/guthix/Guthix.java +++ b/src/main/java/dev/salmonllama/fsbot/guthix/Guthix.java @@ -123,15 +123,17 @@ public class Guthix implements MessageCreateListener { String[] cmdArgs = registry.getCmdArgs(content); Command cmd = registry.findCommand(cmdString).orElse(null); // TODO: default command here - CommandContext ctx = new ContextBuilder().setApi(api) - .setServer(server) - .setAuthor(author) - .setChannel(channel) - .setMessage(msg) - .setArgs(cmdArgs) - .setUsedAlias(cmdString) - .setUsedCommand(cmd) - .build(); + + CommandContext ctx = new CommandContext.CommandContextBuilder( + api, + msg, + author, + channel, + server, + cmd, + cmdString, + cmdArgs + ).build(); if (manager.hasPermission(cmd.permission(), ctx)) {