Reformat Galleries with a builder

This commit is contained in:
Aleksei 2020-07-23 19:40:38 -04:00
parent 7ce2f97acf
commit 7abd82f77a
3 changed files with 78 additions and 44 deletions

View File

@ -29,12 +29,12 @@ public class CreateGalleryCommand extends Command { // TODO: This command needs
@Override public Collection<String> aliases() { return new ArrayList<>(Arrays.asList("creategallery", "addgallery", "newgallery")); } @Override public Collection<String> aliases() { return new ArrayList<>(Arrays.asList("creategallery", "addgallery", "newgallery")); }
@Override @Override
public void onCommand(CommandContext ctx) { // TODO: Might need some logic help... public void onCommand(CommandContext ctx) {
if (ctx.isPrivateMessage()) { 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. ctx.reply("This command can only be used in a server!"); // TODO: Stop this. Turn this into a preset no-no embed.
return; return;
} }
if (ctx.getArgs().length != 1) { if (ctx.getArgs().length < 1) {
ctx.reply("Args are incorrect"); ctx.reply("Args are incorrect");
return; return;
} }
@ -50,27 +50,25 @@ public class CreateGalleryCommand extends Command { // TODO: This command needs
String tag = ctx.getArgs()[0]; String tag = ctx.getArgs()[0];
GalleryChannel gallery = new GalleryChannel(); GalleryChannel.GalleryBuilder galleryBuilder = new GalleryChannel.GalleryBuilder();
gallery.channelId = channelId; galleryBuilder.setChannelId(channelId);
gallery.tag = tag; galleryBuilder.setTag(tag);
gallery.emoji = ":heartpulse:"; galleryBuilder.setEmoji(":heartpulse:");
ctx.getServer().ifPresent(server -> { ctx.getServer().ifPresent(server -> {
gallery.serverId = server.getIdAsString(); galleryBuilder.setServerId(server.getIdAsString());
gallery.serverName = server.getName(); 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 GalleryController.insert(gallery).exceptionally(ExceptionLogger.get()); // TODO: Make a discord exception logger for the thingos
EmbedBuilder embed = new EmbedBuilder() EmbedBuilder embed = new EmbedBuilder()
.setColor(Color.GREEN) .setColor(Color.GREEN)
.addField("Success", "Gallery has been created:") .addField("Success", "Gallery has been created:")
.addField("Channel Name:", gallery.channelName) .addField("Channel Id:", gallery.getChannelId())
.addField("Channel Id:", gallery.channelId)
.addField("Tag:", tag) .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)); .addField("End:", String.format("This channel is now being tracked under: %s", tag));
ctx.getChannel().sendMessage(embed); ctx.getChannel().sendMessage(embed);
} }

View File

@ -57,14 +57,13 @@ public class GalleryController {
} }
// TODO: Refactor for proper Java-ing, add GalleryBuilder // TODO: Refactor for proper Java-ing, add GalleryBuilder
private static void insertExec(GalleryChannel gallery) throws SQLException { 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(?, ?, ?, ?, ?)", "VALUES(?, ?, ?, ?, ?)",
gallery.serverId, gallery.getServerId(),
gallery.serverName, gallery.getChannelId(),
gallery.channelId, gallery.getChannelId(),
gallery.channelName, gallery.getTag(),
gallery.tag, gallery.getEmoji()
gallery.emoji
); );
} }
@ -105,14 +104,12 @@ public class GalleryController {
} }
private static GalleryChannel mapObject(ResultSet rs) throws SQLException { // TODO: Builder this private static GalleryChannel mapObject(ResultSet rs) throws SQLException { // TODO: Builder this
GalleryChannel gallery = new GalleryChannel(); return new GalleryChannel.GalleryBuilder()
gallery.serverId = rs.getString("server_id"); .setServerId(rs.getString("server_id"))
gallery.serverName = rs.getString("server_name"); .setServerName(rs.getString("server_name"))
gallery.channelId = rs.getString("channel_id"); .setChannelId(rs.getString("channel_id"))
gallery.channelName = rs.getString("channel_name"); .setTag(rs.getString("tag"))
gallery.tag = rs.getString("tag"); .setEmoji(rs.getString("emoji"))
gallery.emoji = rs.getString("emoji"); .build();
return gallery;
} }
} }

View File

@ -8,18 +8,21 @@ package dev.salmonllama.fsbot.database.models;
import dev.salmonllama.fsbot.database.DatabaseModel; import dev.salmonllama.fsbot.database.DatabaseModel;
public class GalleryChannel extends DatabaseModel { public class GalleryChannel extends DatabaseModel {
public String serverId; private final String serverId;
public String serverName; private final String serverName;
public String channelId; private final String channelId;
public String channelName; private final String tag;
public String tag;
// Normal emojis will be stored in plain text as :emoji: // Normal emojis will be stored in plain text as :emoji:
// Server emojis will be stored in plain text as <:emoji:emoji-id> // Server emojis will be stored in plain text as <:emoji:emoji-id>
// This can be acquired through CustomEmoji#getMentionTag() // This can be acquired through CustomEmoji#getMentionTag()
public String emoji; private final String emoji;
public GalleryChannel() {
public GalleryChannel(GalleryBuilder builder) {
serverId = builder.serverId;
serverName = builder.serverName;
channelId = builder.channelId;
tag = builder.tag;
emoji = builder.emoji;
} }
public String getServerId() { public String getServerId() {
@ -34,9 +37,6 @@ public class GalleryChannel extends DatabaseModel {
return channelId; return channelId;
} }
public String getChannelName() {
return channelName;
}
public String getTag() { public String getTag() {
return tag; return tag;
@ -50,15 +50,54 @@ public class GalleryChannel extends DatabaseModel {
return "CREATE TABLE IF NOT EXISTS galleries (" + return "CREATE TABLE IF NOT EXISTS galleries (" +
"server_id TEXT," + "server_id TEXT," +
"server_name TEXT," + "server_name TEXT," +
"channel_id TEXT," + // TODO: PRIMARY KEY? There can only be one gallery per channel. "channel_id TEXT," +
"channel_name TEXT," +
"emoji TEXT," + "emoji TEXT," +
"tag TEXT)"; "tag TEXT)";
} }
@Override @Override
public String toString() { public String toString() {
return String.format("Gallery: [server id: %s, server name: %s, channel id: %s, channel name: %s, tag: %s, emoji: %s]", return String.format("Gallery: [server id: %s, server name: %s, channel id: %s, tag: %s, emoji: %s]",
serverId, serverName, channelId, channelName, tag, emoji); 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);
}
} }
} }