From 7abd82f77a3cd3a507320caeef1240c5aa5f2d8a Mon Sep 17 00:00:00 2001 From: Aleksei Date: Thu, 23 Jul 2020 19:40:38 -0400 Subject: [PATCH] Reformat Galleries with a builder --- .../developer/CreateGalleryCommand.java | 24 +++---- .../controllers/GalleryController.java | 29 ++++---- .../fsbot/database/models/GalleryChannel.java | 69 +++++++++++++++---- 3 files changed, 78 insertions(+), 44 deletions(-) diff --git a/src/main/java/dev/salmonllama/fsbot/commands/developer/CreateGalleryCommand.java b/src/main/java/dev/salmonllama/fsbot/commands/developer/CreateGalleryCommand.java index 06afbb3..07c3732 100644 --- a/src/main/java/dev/salmonllama/fsbot/commands/developer/CreateGalleryCommand.java +++ b/src/main/java/dev/salmonllama/fsbot/commands/developer/CreateGalleryCommand.java @@ -29,12 +29,12 @@ public class CreateGalleryCommand extends Command { // TODO: This command needs @Override public Collection aliases() { return new ArrayList<>(Arrays.asList("creategallery", "addgallery", "newgallery")); } @Override - public void onCommand(CommandContext ctx) { // TODO: Might need some logic help... + public void onCommand(CommandContext ctx) { if (ctx.isPrivateMessage()) { ctx.reply("This command can only be used in a server!"); // TODO: Stop this. Turn this into a preset no-no embed. return; } - if (ctx.getArgs().length != 1) { + if (ctx.getArgs().length < 1) { ctx.reply("Args are incorrect"); return; } @@ -50,27 +50,25 @@ public class CreateGalleryCommand extends Command { // TODO: This command needs String tag = ctx.getArgs()[0]; - GalleryChannel gallery = new GalleryChannel(); - gallery.channelId = channelId; - gallery.tag = tag; - gallery.emoji = ":heartpulse:"; + GalleryChannel.GalleryBuilder galleryBuilder = new GalleryChannel.GalleryBuilder(); + galleryBuilder.setChannelId(channelId); + galleryBuilder.setTag(tag); + galleryBuilder.setEmoji(":heartpulse:"); ctx.getServer().ifPresent(server -> { - gallery.serverId = server.getIdAsString(); - gallery.serverName = server.getName(); + galleryBuilder.setServerId(server.getIdAsString()); + galleryBuilder.setServerName(server.getName()); }); - ctx.getChannel().asServerTextChannel().ifPresent(channel -> gallery.channelName = channel.getName()); - + GalleryChannel gallery = galleryBuilder.build(); GalleryController.insert(gallery).exceptionally(ExceptionLogger.get()); // TODO: Make a discord exception logger for the thingos EmbedBuilder embed = new EmbedBuilder() .setColor(Color.GREEN) .addField("Success", "Gallery has been created:") - .addField("Channel Name:", gallery.channelName) - .addField("Channel Id:", gallery.channelId) + .addField("Channel Id:", gallery.getChannelId()) .addField("Tag:", tag) - .addField("Emoji:", EmojiManager.getByUnicode(gallery.emoji).toString()) + .addField("Emoji:", EmojiManager.getByUnicode(gallery.getEmoji()).toString()) .addField("End:", String.format("This channel is now being tracked under: %s", tag)); ctx.getChannel().sendMessage(embed); } diff --git a/src/main/java/dev/salmonllama/fsbot/database/controllers/GalleryController.java b/src/main/java/dev/salmonllama/fsbot/database/controllers/GalleryController.java index 75d88d0..e4dad23 100644 --- a/src/main/java/dev/salmonllama/fsbot/database/controllers/GalleryController.java +++ b/src/main/java/dev/salmonllama/fsbot/database/controllers/GalleryController.java @@ -57,14 +57,13 @@ public class GalleryController { } // TODO: Refactor for proper Java-ing, add GalleryBuilder private static void insertExec(GalleryChannel gallery) throws SQLException { - FSDB.get().insert("INSERT INTO galleries('server_id', 'server_name', 'channel_id', 'channel_name', 'tag', 'emoji')" + + FSDB.get().insert("INSERT INTO galleries('server_id', 'server_name', 'channel_id', 'tag', 'emoji')" + "VALUES(?, ?, ?, ?, ?)", - gallery.serverId, - gallery.serverName, - gallery.channelId, - gallery.channelName, - gallery.tag, - gallery.emoji + gallery.getServerId(), + gallery.getChannelId(), + gallery.getChannelId(), + gallery.getTag(), + gallery.getEmoji() ); } @@ -105,14 +104,12 @@ public class GalleryController { } private static GalleryChannel mapObject(ResultSet rs) throws SQLException { // TODO: Builder this - GalleryChannel gallery = new GalleryChannel(); - gallery.serverId = rs.getString("server_id"); - gallery.serverName = rs.getString("server_name"); - gallery.channelId = rs.getString("channel_id"); - gallery.channelName = rs.getString("channel_name"); - gallery.tag = rs.getString("tag"); - gallery.emoji = rs.getString("emoji"); - - return gallery; + return new GalleryChannel.GalleryBuilder() + .setServerId(rs.getString("server_id")) + .setServerName(rs.getString("server_name")) + .setChannelId(rs.getString("channel_id")) + .setTag(rs.getString("tag")) + .setEmoji(rs.getString("emoji")) + .build(); } } diff --git a/src/main/java/dev/salmonllama/fsbot/database/models/GalleryChannel.java b/src/main/java/dev/salmonllama/fsbot/database/models/GalleryChannel.java index c92b8f8..c771776 100644 --- a/src/main/java/dev/salmonllama/fsbot/database/models/GalleryChannel.java +++ b/src/main/java/dev/salmonllama/fsbot/database/models/GalleryChannel.java @@ -8,18 +8,21 @@ package dev.salmonllama.fsbot.database.models; import dev.salmonllama.fsbot.database.DatabaseModel; public class GalleryChannel extends DatabaseModel { - public String serverId; - public String serverName; - public String channelId; - public String channelName; - public String tag; + private final String serverId; + private final String serverName; + private final String channelId; + private final String tag; // Normal emojis will be stored in plain text as :emoji: // Server emojis will be stored in plain text as <:emoji:emoji-id> // This can be acquired through CustomEmoji#getMentionTag() - public String emoji; - - public GalleryChannel() { + private final String emoji; + public GalleryChannel(GalleryBuilder builder) { + serverId = builder.serverId; + serverName = builder.serverName; + channelId = builder.channelId; + tag = builder.tag; + emoji = builder.emoji; } public String getServerId() { @@ -34,9 +37,6 @@ public class GalleryChannel extends DatabaseModel { return channelId; } - public String getChannelName() { - return channelName; - } public String getTag() { return tag; @@ -50,15 +50,54 @@ public class GalleryChannel extends DatabaseModel { return "CREATE TABLE IF NOT EXISTS galleries (" + "server_id TEXT," + "server_name TEXT," + - "channel_id TEXT," + // TODO: PRIMARY KEY? There can only be one gallery per channel. - "channel_name TEXT," + + "channel_id TEXT," + "emoji TEXT," + "tag TEXT)"; } @Override public String toString() { - return String.format("Gallery: [server id: %s, server name: %s, channel id: %s, channel name: %s, tag: %s, emoji: %s]", - serverId, serverName, channelId, channelName, tag, emoji); + return String.format("Gallery: [server id: %s, server name: %s, channel id: %s, tag: %s, emoji: %s]", + serverId, serverName, channelId, tag, emoji); + } + + public static class GalleryBuilder { + private String serverId; + private String serverName; + private String channelId; + private String tag; + private String emoji; + + public GalleryBuilder() { + + } + public GalleryBuilder setServerId(String serverId) { + this.serverId = serverId; + return this; + } + + public GalleryBuilder setServerName(String serverName) { + this.serverName = serverName; + return this; + } + + public GalleryBuilder setChannelId(String channelId) { + this.channelId = channelId; + return this; + } + + public GalleryBuilder setTag(String tag) { + this.tag = tag; + return this; + } + + public GalleryBuilder setEmoji(String emoji) { + this.emoji = emoji; + return this; + } + + public GalleryChannel build() { + return new GalleryChannel(this); + } } }