Convert several other data classes to be immutable

This commit is contained in:
NovaFox161
2020-04-05 20:23:14 -05:00
parent ec9d8adbbd
commit f504696229
26 changed files with 310 additions and 364 deletions

View File

@@ -120,11 +120,11 @@ public class AnnouncementCreator {
if (a.hasRequiredValues()) {
if (DatabaseManager.getManager().updateAnnouncement(a)) {
terminate(guildId);
return new AnnouncementCreatorResponse(true, a);
return new AnnouncementCreatorResponse(true, a, null);
}
}
}
return new AnnouncementCreatorResponse(false);
return new AnnouncementCreatorResponse(false, null, null);
}
//Getters

View File

@@ -139,24 +139,22 @@ public class CalendarCreator {
scope.setType("default");
rule.setScope(scope).setRole("reader");
service.acl().insert(confirmed.getId(), rule).execute();
CalendarData calendarData = new CalendarData(settings.getGuildID(), 1);
calendarData.setCalendarId(confirmed.getId());
calendarData.setCalendarAddress(confirmed.getId());
CalendarData calendarData = CalendarData
.fromData(settings.getGuildID(), 1, confirmed.getId(),
confirmed.getId(), false);
DatabaseManager.getManager().updateCalendar(calendarData);
CalendarCreatorResponse response = new CalendarCreatorResponse(true, confirmed);
response.setEdited(false);
response.setCreatorMessage(preCalendar.getCreatorMessage());
CalendarCreatorResponse response = new CalendarCreatorResponse(true,
confirmed, preCalendar.getCreatorMessage(), false);
terminate(settings.getGuildID());
return response;
} catch (Exception ex) {
Logger.getLogger().exception(e.getMember().get(), "Failed to confirm calendar.", ex, true, this.getClass());
CalendarCreatorResponse response = new CalendarCreatorResponse(false);
response.setEdited(false);
response.setCreatorMessage(preCalendar.getCreatorMessage());
return response;
return new CalendarCreatorResponse(false, null,
preCalendar.getCreatorMessage(), false);
}
} else {
//Editing calendar...
@@ -175,24 +173,21 @@ public class CalendarCreator {
rule.setScope(scope).setRole("reader");
service.acl().insert(confirmed.getId(), rule).execute();
CalendarCreatorResponse response = new CalendarCreatorResponse(true, confirmed);
response.setEdited(true);
response.setCreatorMessage(preCalendar.getCreatorMessage());
CalendarCreatorResponse response = new CalendarCreatorResponse(true,
confirmed, preCalendar.getCreatorMessage(), true);
terminate(settings.getGuildID());
return response;
} catch (Exception ex) {
Logger.getLogger().exception(e.getMember().get(), "Failed to update calendar.", ex, true, this.getClass());
CalendarCreatorResponse response = new CalendarCreatorResponse(false);
response.setEdited(true);
response.setCreatorMessage(preCalendar.getCreatorMessage());
return response;
return new CalendarCreatorResponse(false, null,
preCalendar.getCreatorMessage(), true);
}
}
}
}
return new CalendarCreatorResponse(false);
return new CalendarCreatorResponse(false, null, null, false);
}
//Getters

View File

@@ -12,6 +12,7 @@ import org.dreamexposure.discal.core.enums.event.EventColor;
import org.dreamexposure.discal.core.logger.Logger;
import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.object.event.EventCreatorResponse;
import org.dreamexposure.discal.core.object.event.EventData;
import org.dreamexposure.discal.core.object.event.PreEvent;
import org.dreamexposure.discal.core.utils.EventUtils;
import org.dreamexposure.discal.core.utils.PermissionChecker;
@@ -233,51 +234,55 @@ public class EventCreator {
Event confirmed = CalendarAuth.getCalendarService(settings).events().insert(calendarId, event).execute();
if (preEvent.getEventData().shouldBeSaved()) {
preEvent.getEventData().setEventId(confirmed.getId());
preEvent.getEventData().setEventEnd(confirmed.getEnd().getDateTime().getValue());
DatabaseManager.getManager().updateEventData(preEvent.getEventData());
EventData toSave = EventData.fromImage(
settings.getGuildID(),
confirmed.getId(),
confirmed.getEnd().getDateTime().getValue(),
preEvent.getEventData().getImageLink()
);
DatabaseManager.getManager().updateEventData(toSave);
}
EventCreatorResponse response = new EventCreatorResponse(true, confirmed);
response.setCreatorMessage(getCreatorMessage(settings.getGuildID()));
response.setEdited(false);
EventCreatorResponse response = new EventCreatorResponse(true, confirmed,
getCreatorMessage(settings.getGuildID()), false);
terminate(settings.getGuildID());
return response;
} catch (Exception ex) {
Logger.getLogger().exception(e.getMember().get(), "Failed to create event.", ex, true, this.getClass());
EventCreatorResponse response = new EventCreatorResponse(false);
response.setCreatorMessage(getCreatorMessage(settings.getGuildID()));
response.setEdited(false);
return response;
return new EventCreatorResponse(false, null,
getCreatorMessage(settings.getGuildID()), false);
}
} else {
try {
Event confirmed = CalendarAuth.getCalendarService(settings).events().update(calendarId, preEvent.getEventId(), event).execute();
if (preEvent.getEventData().shouldBeSaved()) {
preEvent.getEventData().setEventId(confirmed.getId());
preEvent.getEventData().setEventEnd(confirmed.getEnd().getDateTime().getValue());
DatabaseManager.getManager().updateEventData(preEvent.getEventData());
EventData toSave = EventData.fromImage(
settings.getGuildID(),
confirmed.getId(),
confirmed.getEnd().getDateTime().getValue(),
preEvent.getEventData().getImageLink()
);
DatabaseManager.getManager().updateEventData(toSave);
}
EventCreatorResponse response = new EventCreatorResponse(true, confirmed);
response.setCreatorMessage(getCreatorMessage(settings.getGuildID()));
response.setEdited(true);
EventCreatorResponse response = new EventCreatorResponse(true, confirmed,
getCreatorMessage(settings.getGuildID()), true);
terminate(settings.getGuildID());
return response;
} catch (Exception ex) {
Logger.getLogger().exception(e.getMember().get(), "Failed to update event.", ex, true, this.getClass());
EventCreatorResponse response = new EventCreatorResponse(false);
response.setCreatorMessage(getCreatorMessage(settings.getGuildID()));
response.setEdited(true);
return response;
return new EventCreatorResponse(false, null,
getCreatorMessage(settings.getGuildID()), true);
}
}
}
}
return new EventCreatorResponse(false);
return new EventCreatorResponse(false, null, null, false);
}
//Getters

View File

@@ -23,7 +23,7 @@ import discord4j.core.event.domain.message.MessageCreateEvent;
* Website: www.cloudcraftgaming.com
* For Project: DisCal
*/
@SuppressWarnings({"OptionalGetWithoutIsPresent", "ConstantConditions"})
@SuppressWarnings({"OptionalGetWithoutIsPresent"})
public class AddCalendarCommand implements ICommand {
/**
* Gets the command this Object is responsible for.
@@ -57,11 +57,11 @@ public class AddCalendarCommand implements ICommand {
*/
@Override
public CommandInfo getCommandInfo() {
CommandInfo info = new CommandInfo("addCalendar");
info.setDescription("Starts the process of adding an external calendar");
info.setExample("!addCalendar (calendar ID)");
return info;
return new CommandInfo(
"addCalendar",
"Starts the process of adding an external calendar",
"!addCalendar (calendar ID)"
);
}
/**
@@ -102,10 +102,9 @@ public class AddCalendarCommand implements ICommand {
}
if (valid) {
//Update and save.
CalendarData data = new CalendarData(event.getGuild().block().getId(), 1);
data.setCalendarId(args[0]);
data.setCalendarAddress(args[0]);
data.setExternal(true);
CalendarData data = CalendarData.fromData(settings.getGuildID(),
1, args[0], args[0], true);
DatabaseManager.getManager().updateCalendar(data);
//Update guild settings

View File

@@ -78,9 +78,11 @@ public class AnnouncementCommand implements ICommand {
*/
@Override
public CommandInfo getCommandInfo() {
CommandInfo info = new CommandInfo("announcement");
info.setDescription("Used for all announcement functions.");
info.setExample("!announcement <function> (value(s))");
CommandInfo info = new CommandInfo(
"announcement",
"Used for all announcement functions.",
"!announcement <function> (value(s))"
);
info.getSubCommands().put("create", "Starts the announcement creator.");
info.getSubCommands().put("copy", "Copies an existing announcement.");

View File

@@ -60,9 +60,11 @@ public class CalendarCommand implements ICommand {
*/
@Override
public CommandInfo getCommandInfo() {
CommandInfo info = new CommandInfo("calendar");
info.setDescription("Used for direct interaction with your DisCal Calendar.");
info.setExample("!calendar <subCommand> (value)");
CommandInfo info = new CommandInfo(
"calendar",
"Used for direct interaction with your DisCal Calendar.",
"!calendar <subCommand> (value)"
);
info.getSubCommands().put("create", "Starts the creation of a new calendar.");
info.getSubCommands().put("cancel", "Cancels the creator/editor");

View File

@@ -73,9 +73,12 @@ public class DevCommand implements ICommand {
*/
@Override
public CommandInfo getCommandInfo() {
CommandInfo ci = new CommandInfo("dev");
ci.setDescription("Used for developer commands. Only able to be used by registered developers");
ci.setExample("!dev <function> (value)");
CommandInfo ci = new CommandInfo(
"dev",
"Used for developer commands. Only able to be used by registered developers",
"!dev <function> (value)"
);
ci.getSubCommands().put("reloadLangs", "Reloads the lang files across the network.");
ci.getSubCommands().put("patron", "Sets a guild as a patron.");
ci.getSubCommands().put("dev", "Sets a guild as a test/dev guild.");

View File

@@ -60,9 +60,11 @@ public class DisCalCommand implements ICommand {
*/
@Override
public CommandInfo getCommandInfo() {
CommandInfo info = new CommandInfo("event");
info.setDescription("Used to configure DisCal");
info.setExample("!DisCal (function) (value)");
CommandInfo info = new CommandInfo(
"event",
"Used to configure DisCal",
"!DisCal (function) (value)"
);
info.getSubCommands().put("settings", "Displays the bot's settings.");
info.getSubCommands().put("role", "Sets the control role for the bot.");

View File

@@ -16,6 +16,7 @@ import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.object.calendar.CalendarData;
import org.dreamexposure.discal.core.object.command.CommandInfo;
import org.dreamexposure.discal.core.object.event.EventCreatorResponse;
import org.dreamexposure.discal.core.object.event.EventData;
import org.dreamexposure.discal.core.object.event.PreEvent;
import org.dreamexposure.discal.core.utils.EventUtils;
import org.dreamexposure.discal.core.utils.GeneralUtils;
@@ -75,9 +76,10 @@ public class EventCommand implements ICommand {
*/
@Override
public CommandInfo getCommandInfo() {
CommandInfo info = new CommandInfo("event");
info.setDescription("Used for all event related functions");
info.setExample("!event <function> (value(s))");
CommandInfo info = new CommandInfo("event",
"User for all event related functions",
"!event <function> (value(s))"
);
info.getSubCommands().put("create", "Creates a new event");
info.getSubCommands().put("copy", "Copies an existing event");
@@ -814,7 +816,7 @@ public class EventCommand implements ICommand {
if (EventCreator.getCreator().hasPreEvent(settings.getGuildID())) {
if (value.equalsIgnoreCase("delete") || value.equalsIgnoreCase("remove") || value.equalsIgnoreCase("clear")) {
//Delete picture from event
EventCreator.getCreator().getPreEvent(settings.getGuildID()).getEventData().setImageLink(null);
EventCreator.getCreator().getPreEvent(settings.getGuildID()).setEventData(EventData.empty());
if (EventCreator.getCreator().hasCreatorMessage(settings.getGuildID())) {
MessageManager.deleteMessage(event);
@@ -824,7 +826,16 @@ public class EventCommand implements ICommand {
MessageManager.sendMessageAsync(MessageManager.getMessage("Creator.Event.Attachment.Delete", settings), event);
}
} else if (ImageUtils.validate(value, settings.isPatronGuild())) {
EventCreator.getCreator().getPreEvent(settings.getGuildID()).getEventData().setImageLink(value);
PreEvent preEvent = EventCreator.getCreator().getPreEvent(settings.getGuildID());
EventData eventData = EventData.fromImage(
settings.getGuildID(),
preEvent.getEventId(),
preEvent.getEndDateTime().getDateTime().getValue(),
value
);
preEvent.setEventData(eventData);
if (EventCreator.getCreator().hasCreatorMessage(settings.getGuildID())) {
MessageManager.deleteMessage(event);

View File

@@ -4,7 +4,7 @@ import com.google.api.client.util.DateTime;
import com.google.api.services.calendar.Calendar;
import com.google.api.services.calendar.model.Event;
import com.google.api.services.calendar.model.Events;
import discord4j.core.event.domain.message.MessageCreateEvent;
import org.dreamexposure.discal.client.message.EventMessageFormatter;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
@@ -17,6 +17,8 @@ import org.dreamexposure.discal.core.object.command.CommandInfo;
import java.util.ArrayList;
import java.util.List;
import discord4j.core.event.domain.message.MessageCreateEvent;
/**
* Created by Nova Fox on 1/3/2017.
* Website: www.cloudcraftgaming.com
@@ -53,9 +55,11 @@ public class EventListCommand implements ICommand {
*/
@Override
public CommandInfo getCommandInfo() {
CommandInfo info = new CommandInfo("events");
info.setDescription("Lists the specified amount of events from the guild calendar.");
info.setExample("!events (number or function) (other args if applicable)");
CommandInfo info = new CommandInfo(
"events",
"Lists the specified amount of events from the guild calendar.",
"!events (number or function) (other args if applicable)"
);
info.getSubCommands().put("search", "Searches for events based on specific criteria rather than just the next upcoming events");
return info;

View File

@@ -1,7 +1,5 @@
package org.dreamexposure.discal.client.module.command;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.spec.EmbedCreateSpec;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.object.command.CommandInfo;
@@ -10,6 +8,9 @@ import org.dreamexposure.discal.core.utils.GlobalConst;
import java.util.ArrayList;
import java.util.function.Consumer;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.spec.EmbedCreateSpec;
/**
* Created by Nova Fox on 1/3/2017.
* Website: www.cloudcraftgaming.com
@@ -46,11 +47,9 @@ public class HelpCommand implements ICommand {
*/
@Override
public CommandInfo getCommandInfo() {
CommandInfo info = new CommandInfo("help");
info.setDescription("Displays help (duh).");
info.setExample("!help (command) (sub-command)");
return info;
return new CommandInfo("help",
"Displays help (duh)",
"!help (command) (sub-command)");
}
/**

View File

@@ -1,12 +1,13 @@
package org.dreamexposure.discal.client.module.command;
import discord4j.core.event.domain.message.MessageCreateEvent;
import org.dreamexposure.discal.core.object.GuildSettings;
import org.dreamexposure.discal.core.object.command.CommandInfo;
import java.util.ArrayList;
import java.util.List;
import discord4j.core.event.domain.message.MessageCreateEvent;
/**
* @author NovaFox161
* Date Created: 9/10/2018
@@ -29,9 +30,11 @@ public interface ICommand {
}
default CommandInfo getCommandInfo() {
CommandInfo info = new CommandInfo("COMMAND_NAME");
info.setDescription("COMMAND_DESCRIPTION");
info.setExample("!command <sub> (sub2)");
CommandInfo info = new CommandInfo(
"COMMAND_NAME",
"COMMAND_DESCRIPTION",
"!command <sub> (sub2)"
);
info.getSubCommands().put("a", "b");

View File

@@ -1,7 +1,7 @@
package org.dreamexposure.discal.client.module.command;
import com.google.api.services.calendar.model.Calendar;
import discord4j.core.event.domain.message.MessageCreateEvent;
import org.dreamexposure.discal.client.message.CalendarMessageFormatter;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
@@ -13,6 +13,8 @@ import org.dreamexposure.discal.core.object.command.CommandInfo;
import java.util.ArrayList;
import discord4j.core.event.domain.message.MessageCreateEvent;
/**
* Created by Nova Fox on 1/3/2017.
* Website: www.cloudcraftgaming.com
@@ -54,10 +56,11 @@ public class LinkCalendarCommand implements ICommand {
*/
@Override
public CommandInfo getCommandInfo() {
CommandInfo info = new CommandInfo("linkCalendar");
info.setDescription("Links the guild's calendar in a pretty embed!");
info.setExample("!linkCalendar");
return info;
return new CommandInfo(
"linkCalendar",
"Links the guild's calendar in a pretty embed!",
"!linkCalendar"
);
}
/**

View File

@@ -1,10 +1,5 @@
package org.dreamexposure.discal.client.module.command;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.entity.Member;
import discord4j.core.object.util.Image;
import discord4j.core.spec.EmbedCreateSpec;
import org.dreamexposure.discal.client.DisCalClient;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.database.DatabaseManager;
@@ -19,6 +14,12 @@ import org.dreamexposure.discal.core.utils.UserUtils;
import java.util.ArrayList;
import java.util.function.Consumer;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.entity.Member;
import discord4j.core.object.util.Image;
import discord4j.core.spec.EmbedCreateSpec;
/**
* Created by Nova Fox on 8/31/17.
* Website: www.cloudcraftgaming.com
@@ -55,9 +56,11 @@ public class RsvpCommand implements ICommand {
*/
@Override
public CommandInfo getCommandInfo() {
CommandInfo info = new CommandInfo("rsvp");
info.setDescription("Confirms attendance to an event");
info.setExample("!rsvp <subCommand> <eventId>");
CommandInfo info = new CommandInfo(
"rsvp",
"Confirms attendance to an event",
"!rsvp <subCommand> <eventId>"
);
info.getSubCommands().put("onTime", "Marks you are going to event");
info.getSubCommands().put("late", "Marks that you will be late to event");

View File

@@ -1,10 +1,7 @@
package org.dreamexposure.discal.client.module.command;
import com.google.api.services.calendar.model.Calendar;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.util.Image;
import discord4j.core.spec.EmbedCreateSpec;
import org.dreamexposure.discal.client.message.CalendarMessageFormatter;
import org.dreamexposure.discal.client.message.MessageManager;
import org.dreamexposure.discal.core.calendar.CalendarAuth;
@@ -21,6 +18,11 @@ import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.function.Consumer;
import discord4j.core.event.domain.message.MessageCreateEvent;
import discord4j.core.object.entity.Guild;
import discord4j.core.object.util.Image;
import discord4j.core.spec.EmbedCreateSpec;
/**
* Created by Nova Fox on 6/16/17.
* Website: www.cloudcraftgaming.com
@@ -58,10 +60,11 @@ public class TimeCommand implements ICommand {
*/
@Override
public CommandInfo getCommandInfo() {
CommandInfo info = new CommandInfo("time");
info.setDescription("Displays the current time for the calendar in its respective TimeZone.");
info.setExample("!time");
return info;
return new CommandInfo(
"time",
"Displays the current time for the calendar in its respective TimeZone.",
"!time"
);
}
/**

View File

@@ -60,9 +60,23 @@ public class DatabaseManager {
*/
public void connectToMySQL() {
try {
DatabaseSettings masterSettings = new DatabaseSettings(BotSettings.SQL_MASTER_HOST.get(), BotSettings.SQL_MASTER_PORT.get(), BotSettings.SQL_DB.get(), BotSettings.SQL_MASTER_USER.get(), BotSettings.SQL_MASTER_PASS.get(), BotSettings.SQL_PREFIX.get());
DatabaseSettings masterSettings = new DatabaseSettings(
BotSettings.SQL_MASTER_HOST.get(),
BotSettings.SQL_MASTER_PORT.get(),
BotSettings.SQL_DB.get(),
BotSettings.SQL_MASTER_USER.get(),
BotSettings.SQL_MASTER_PASS.get(),
BotSettings.SQL_PREFIX.get()
);
DatabaseSettings slaveSettings = new DatabaseSettings(BotSettings.SQL_SLAVE_HOST.get(), BotSettings.SQL_SLAVE_PORT.get(), BotSettings.SQL_DB.get(), BotSettings.SQL_SLAVE_USER.get(), BotSettings.SQL_SLAVE_PASS.get(), BotSettings.SQL_PREFIX.get());
DatabaseSettings slaveSettings = new DatabaseSettings(
BotSettings.SQL_SLAVE_HOST.get(),
BotSettings.SQL_SLAVE_PORT.get(),
BotSettings.SQL_DB.get(),
BotSettings.SQL_SLAVE_USER.get(),
BotSettings.SQL_SLAVE_PASS.get(),
BotSettings.SQL_PREFIX.get()
);
masterInfo = org.dreamexposure.novautils.database.DatabaseManager.connectToMySQL(masterSettings);
slaveInfo = org.dreamexposure.novautils.database.DatabaseManager.connectToMySQL(slaveSettings);
@@ -396,15 +410,16 @@ public class DatabaseManager {
public boolean updateEventData(EventData data) {
try (final Connection masterConnection = masterInfo.getSource().getConnection()) {
String eventTableName = String.format("%sevents", masterInfo.getSettings().getPrefix());
String idToUse = data.getEventId();
if (data.getEventId().contains("_")) {
data.setEventId(data.getEventId().split("_")[0]);
idToUse = data.getEventId().split("_")[0];
}
String query = "SELECT * FROM " + eventTableName + " WHERE EVENT_ID = ?";
final Connection slaveConnection = slaveInfo.getSource().getConnection();
PreparedStatement statement = slaveConnection.prepareStatement(query);
statement.setString(1, data.getEventId());
statement.setString(1, idToUse);
ResultSet res = statement.executeQuery();
@@ -417,7 +432,7 @@ public class DatabaseManager {
" VALUES (?, ?, ?, ?)";
PreparedStatement ps = masterConnection.prepareStatement(insertCommand);
ps.setString(1, data.getGuildId().asString());
ps.setString(2, data.getEventId());
ps.setString(2, idToUse);
ps.setLong(3, data.getEventEnd());
ps.setString(4, data.getImageLink());
@@ -434,7 +449,7 @@ public class DatabaseManager {
ps.setString(1, data.getImageLink());
ps.setLong(2, data.getEventEnd());
ps.setString(3, data.getEventId());
ps.setString(3, idToUse);
ps.executeUpdate();
@@ -580,12 +595,8 @@ public class DatabaseManager {
settings.setDmAnnouncementsFromString(res.getString("DM_ANNOUNCEMENTS"));
settings.setTwelveHour(res.getBoolean("12_HOUR"));
settings.setBranded(res.getBoolean("BRANDED"));
statement.close();
} else {
//Data not present.
statement.close();
}
statement.close();
} catch (SQLException e) {
Logger.getLogger().exception(null, "Failed to get Guild Settings.", e, true, this.getClass());
}
@@ -599,7 +610,6 @@ public class DatabaseManager {
}
public CalendarData getMainCalendar(Snowflake guildId) {
CalendarData calData = new CalendarData(guildId, 1);
try (final Connection connection = slaveInfo.getSource().getConnection()) {
String calendarTableName = String.format("%scalendars", slaveInfo.getSettings().getPrefix());
@@ -611,19 +621,21 @@ public class DatabaseManager {
boolean hasStuff = res.next();
if (hasStuff && res.getString("GUILD_ID") != null) {
calData.setCalendarId(res.getString("CALENDAR_ID"));
calData.setCalendarAddress(res.getString("CALENDAR_ADDRESS"));
calData.setExternal(res.getBoolean("EXTERNAL"));
String calId = res.getString("CALENDAR_ID");
String calAddr = res.getString("CALENDAR_ADDRESS");
boolean external = res.getBoolean("EXTERNAL");
statement.close();
return CalendarData.fromData(guildId, 1, calId, calAddr, external);
}
statement.close();
} catch (SQLException e) {
Logger.getLogger().exception(null, "Failed to get calendar settings.", e, true, this.getClass());
}
return calData;
return CalendarData.empty();
}
public CalendarData getCalendar(Snowflake guildId, int calendarNumber) {
CalendarData calData = new CalendarData(guildId, calendarNumber);
try (final Connection connection = slaveInfo.getSource().getConnection()) {
String calendarTableName = String.format("%scalendars", slaveInfo.getSettings().getPrefix());
@@ -636,16 +648,19 @@ public class DatabaseManager {
boolean hasStuff = res.next();
if (hasStuff && res.getString("GUILD_ID") != null) {
calData.setCalendarId(res.getString("CALENDAR_ID"));
calData.setCalendarAddress(res.getString("CALENDAR_ADDRESS"));
calData.setExternal(res.getBoolean("EXTERNAL"));
String calId = res.getString("CALENDAR_ID");
String calAddr = res.getString("CALENDAR_ADDRESS");
boolean external = res.getBoolean("EXTERNAL");
statement.close();
return CalendarData.fromData(guildId, calendarNumber, calId, calAddr, external);
}
statement.close();
} catch (SQLException e) {
Logger.getLogger().exception(null, "Failed to get calendar data", e, true, this.getClass());
}
return calData;
return CalendarData.empty();
}
public ArrayList<CalendarData> getAllCalendars(Snowflake guildId) {
@@ -660,11 +675,11 @@ public class DatabaseManager {
ResultSet res = statement.executeQuery();
while (res.next()) {
CalendarData calData = new CalendarData(guildId, res.getInt("CALENDAR_NUMBER"));
calData.setCalendarId(res.getString("CALENDAR_ID"));
calData.setCalendarAddress(res.getString("CALENDAR_ADDRESS"));
calData.setExternal(res.getBoolean("EXTERNAL"));
calendars.add(calData);
String calId = res.getString("CALENDAR_ID");
String calAddr = res.getString("CALENDAR_ADDRESS");
boolean external = res.getBoolean("EXTERNAL");
calendars.add(CalendarData.fromData(guildId, 1, calId, calAddr, external));
}
statement.close();
} catch (SQLException e) {
@@ -697,14 +712,9 @@ public class DatabaseManager {
}
public EventData getEventData(Snowflake guildId, String eventId) {
EventData data = new EventData(guildId);
if (eventId.contains("_"))
eventId = eventId.split("_")[0];
data.setEventId(eventId);
try (final Connection connection = slaveInfo.getSource().getConnection()) {
String eventTableName = String.format("%sevents", slaveInfo.getSettings().getPrefix());
@@ -716,16 +726,19 @@ public class DatabaseManager {
while (res.next()) {
if (res.getString("EVENT_ID").equals(eventId)) {
data.setEventEnd(res.getLong("EVENT_END"));
data.setImageLink(res.getString("IMAGE_LINK"));
break;
long end = res.getLong("EVENT_END");
String imageLink = res.getString("IMAGE_LINK");
statement.close();
return EventData.fromImage(guildId, eventId, end, imageLink);
}
}
statement.close();
} catch (SQLException e) {
Logger.getLogger().exception(null, "Failed to get event data", e, true, this.getClass());
}
return data;
return EventData.empty();
}
public RsvpData getRsvpData(Snowflake guildId, String eventId) {

View File

@@ -9,28 +9,14 @@ import discord4j.core.object.entity.Message;
*/
public class AnnouncementCreatorResponse {
private final boolean successful;
private final Announcement announcement;
private final Message creatorMessage;
private Announcement announcement;
private Message creatorMessage;
/**
* Creates an AnnouncementCreatorResponse.
*
* @param _successful Whether or not the creator was successful.
*/
public AnnouncementCreatorResponse(boolean _successful) {
successful = _successful;
}
/**
* Creates an AnnouncementCreatorResponse.
*
* @param _successful Whether or not the creator was successful.
* @param _announcement The announcement involved.
*/
public AnnouncementCreatorResponse(boolean _successful, Announcement _announcement) {
successful = _successful;
announcement = _announcement;
public AnnouncementCreatorResponse(boolean successful, Announcement announcement,
Message creatorMessage) {
this.successful = successful;
this.announcement = announcement;
this.creatorMessage = creatorMessage;
}
//Getters
@@ -56,19 +42,4 @@ public class AnnouncementCreatorResponse {
public Message getCreatorMessage() {
return creatorMessage;
}
//Setters
/**
* Sets the announcement involved.
*
* @param _announcement The Announcement involved.
*/
public void setAnnouncement(Announcement _announcement) {
announcement = _announcement;
}
public void setCreatorMessage(Message creatorMessage) {
this.creatorMessage = creatorMessage;
}
}

View File

@@ -1,6 +1,7 @@
package org.dreamexposure.discal.core.object.calendar;
import com.google.api.services.calendar.model.Calendar;
import discord4j.core.object.entity.Message;
/**
@@ -10,29 +11,16 @@ import discord4j.core.object.entity.Message;
*/
public class CalendarCreatorResponse {
private final boolean successful;
private final boolean edited;
private final Message creatorMessage;
private final Calendar calendar;
private boolean edited;
private Message creatorMessage;
private Calendar calendar;
/**
* Creates a new response.
*
* @param _successful Whether or not the creation was successful.
*/
public CalendarCreatorResponse(boolean _successful) {
successful = _successful;
}
/**
* Creates a new response.
*
* @param _successful Whether or not the creation was successful.
* @param _calendar The calendar created.
*/
public CalendarCreatorResponse(boolean _successful, Calendar _calendar) {
successful = _successful;
calendar = _calendar;
public CalendarCreatorResponse(boolean successful, Calendar calendar, Message message,
boolean edited) {
this.successful = successful;
this.calendar = calendar;
this.creatorMessage = message;
this.edited = edited;
}
//Getters
@@ -62,23 +50,4 @@ public class CalendarCreatorResponse {
public Message getCreatorMessage() {
return creatorMessage;
}
//Setters
/**
* Sets the calendar involved.
*
* @param _calendar The calendar involved.
*/
public void setCalendar(Calendar _calendar) {
calendar = _calendar;
}
public void setEdited(boolean _edit) {
edited = _edit;
}
public void setCreatorMessage(Message msg) {
creatorMessage = msg;
}
}

View File

@@ -10,26 +10,41 @@ import discord4j.core.object.util.Snowflake;
* For Project: DisCal-Discord-Bot
*/
public class CalendarData {
private Snowflake guildId;
private int calendarNumber;
public static CalendarData fromJson(JSONObject json) {
Snowflake guildId = Snowflake.of(json.getString("guild_id"));
int calendarNumber = json.getInt("calendar_number");
private String calendarId;
private String calendarAddress;
String calendarId = json.getString("calendar_id");
String calendarAddress = json.getString("calendar_address");
boolean external = json.getBoolean("external");
private boolean external;
public CalendarData(Snowflake _guildID, int _calendarNumber) {
guildId = _guildID;
calendarNumber = _calendarNumber;
calendarId = "primary";
calendarAddress = "primary";
external = false;
return new CalendarData(guildId, calendarNumber, calendarId, calendarAddress, external);
}
public CalendarData() {
public static CalendarData fromData(Snowflake gId, int calNum, String calId,
String calAddr, boolean ext) {
return new CalendarData(gId, calNum, calId, calAddr, ext);
}
public static CalendarData empty() {
return new CalendarData(Snowflake.of(0), 1, "primary", "primary", false);
}
private final Snowflake guildId;
private final int calendarNumber;
private final String calendarId;
private final String calendarAddress;
private final boolean external;
private CalendarData(Snowflake guildId, int calendarNumber, String calendarId,
String calendarAddress, boolean external) {
this.guildId = guildId;
this.calendarNumber = calendarNumber;
this.calendarId = calendarId;
this.calendarAddress = calendarAddress;
this.external = external;
}
//Getters
@@ -53,19 +68,6 @@ public class CalendarData {
return external;
}
//Setters
public void setCalendarId(String _calendarId) {
calendarId = _calendarId;
}
public void setCalendarAddress(String _calendarAddress) {
calendarAddress = _calendarAddress;
}
public void setExternal(boolean _external) {
external = _external;
}
public JSONObject toJson() {
JSONObject json = new JSONObject();
@@ -77,15 +79,4 @@ public class CalendarData {
return json;
}
public CalendarData fromJson(JSONObject json) {
guildId = Snowflake.of(json.getString("guild_id"));
calendarNumber = json.getInt("calendar_number");
calendarId = json.getString("calendar_id");
calendarAddress = json.getString("calendar_address");
external = json.getBoolean("external");
return this;
}
}

View File

@@ -9,13 +9,15 @@ import java.util.HashMap;
*/
public class CommandInfo {
private final String name;
private String description;
private String example;
private final String description;
private final String example;
private HashMap<String, String> subCommands = new HashMap<>();
private final HashMap<String, String> subCommands = new HashMap<>();
public CommandInfo(String _name) {
name = _name;
public CommandInfo(String name, String description, String example) {
this.name = name;
this.description = description;
this.example = example;
}
//Getters
@@ -34,13 +36,4 @@ public class CommandInfo {
public HashMap<String, String> getSubCommands() {
return subCommands;
}
//Setters
public void setDescription(String _description) {
description = _description;
}
public void setExample(String _example) {
example = _example;
}
}

View File

@@ -1,6 +1,7 @@
package org.dreamexposure.discal.core.object.event;
import com.google.api.services.calendar.model.Event;
import discord4j.core.object.entity.Message;
/**
@@ -10,31 +11,16 @@ import discord4j.core.object.entity.Message;
*/
public class EventCreatorResponse {
private final boolean successful;
private final Event event;
private final Message creatorMessage;
private final boolean edited;
private Message creatorMessage;
private Event event;
private boolean edited;
/**
* Creates a new Response.
*
* @param _successful Whether or not the Creator was successful.
*/
public EventCreatorResponse(boolean _successful) {
successful = _successful;
}
/**
* Creates a new Response.
*
* @param _successful Whether or not the Creator was successful.
* @param _event The Event that was created.
*/
public EventCreatorResponse(boolean _successful, Event _event) {
successful = _successful;
event = _event;
edited = false;
public EventCreatorResponse(boolean successful, Event event, Message creatorMessage,
boolean edited) {
this.successful = successful;
this.event = event;
this.creatorMessage = creatorMessage;
this.edited = edited;
}
//Getters
@@ -64,22 +50,4 @@ public class EventCreatorResponse {
public Event getEvent() {
return event;
}
//Setters
public void setCreatorMessage(Message _creatorMessage) {
creatorMessage = _creatorMessage;
}
/**
* Sets the event that was created.
*
* @param _event The event that was created.
*/
public void setEvent(Event _event) {
event = _event;
}
public void setEdited(boolean _edited) {
edited = _edited;
}
}

View File

@@ -2,8 +2,6 @@ package org.dreamexposure.discal.core.object.event;
import org.json.JSONObject;
import javax.annotation.Nullable;
import discord4j.core.object.util.Snowflake;
/**
@@ -12,14 +10,34 @@ import discord4j.core.object.util.Snowflake;
* For Project: DisCal-Discord-Bot
*/
public class EventData {
public static EventData fromJson(JSONObject json) {
return new EventData(
Snowflake.of(json.getString("guild_id")),
json.getString("event_id"),
json.getLong("event_end"),
json.getString("image_link")
);
}
public static EventData fromImage(Snowflake guildId, String eventId, long eventEnd,
String imageLink) {
return new EventData(guildId, eventId, eventEnd, imageLink);
}
public static EventData empty() {
return new EventData(Snowflake.of(0), "", 0, "");
}
private final Snowflake guildId;
private final String eventId;
private final long eventEnd;
private final String imageLink;
private String eventId;
private long eventEnd;
private String imageLink;
public EventData(Snowflake _guildId) {
guildId = _guildId;
private EventData(Snowflake guildId, String eventId, long eventEnd, String imageLink) {
this.guildId = guildId;
this.eventId = eventId;
this.eventEnd = eventEnd;
this.imageLink = imageLink;
}
//Getters
@@ -39,22 +57,9 @@ public class EventData {
return imageLink;
}
//Setters
public void setEventId(String _eventId) {
eventId = _eventId;
}
public void setEventEnd(long _eventEnd) {
eventEnd = _eventEnd;
}
public void setImageLink(@Nullable String _link) {
imageLink = _link;
}
//Boolean/Checkers
public boolean shouldBeSaved() {
return imageLink != null;
return !imageLink.isEmpty();
}
public JSONObject toJson() {
@@ -67,12 +72,4 @@ public class EventData {
return json;
}
public EventData fromJson(JSONObject json) {
eventId = json.getString("event_id");
eventEnd = json.getLong("event_end");
imageLink = json.getString("image_link");
return this;
}
}

View File

@@ -67,7 +67,7 @@ public class PreEvent {
recur = false;
recurrence = new Recurrence();
eventData = new EventData(guildId);
eventData = EventData.empty();
editing = false;
lastEdit = System.currentTimeMillis();

View File

@@ -54,7 +54,7 @@ public class EventEndpoint {
//Okay, now handle actual request.
JSONObject requestBody = new JSONObject(rBody);
Integer daysInMonth = Integer.valueOf(requestBody.getString("DaysInMonth"));
int daysInMonth = Integer.parseInt(requestBody.getString("DaysInMonth"));
long startEpoch = Long.parseLong(requestBody.getString("StartEpoch"));
long endEpoch = startEpoch + (86400000L * daysInMonth);
long guildId = requestBody.getLong("guild_id");
@@ -253,11 +253,14 @@ public class EventEndpoint {
event.setRecurrence(Arrays.asList(rr));
}
EventData ed = new EventData(settings.getGuildID());
EventData ed = EventData.empty();
if (!body.getString("image").equalsIgnoreCase("")) {
ed.setImageLink(body.getString("image"));
ed.setEventId(eventId);
ed.setEventEnd(event.getEnd().getDateTime().getValue());
ed = EventData.fromImage(
Snowflake.of(guildId),
eventId,
end.getDateTime().getValue(),
body.getString("image")
);
if (!ImageUtils.validate(ed.getImageLink(), settings.isPatronGuild())) {
JSONObject respondBody = new JSONObject();
@@ -348,26 +351,27 @@ public class EventEndpoint {
event.setRecurrence(Arrays.asList(rr));
}
EventData ed = new EventData(settings.getGuildID());
ed.setEventId(event.getId());
EventData ed = EventData.empty();
if (!body.getString("image").equalsIgnoreCase("")) {
ed.setImageLink(body.getString("image"));
ed.setEventEnd(event.getEnd().getDateTime().getValue());
ed = EventData.fromImage(
Snowflake.of(guildId),
event.getId(),
end.getDateTime().getValue(),
body.getString("image")
);
if (!ImageUtils.validate(ed.getImageLink(), settings.isPatronGuild())) {
response.setContentType("application/json");
response.setStatus(400);
JSONObject respondBody = new JSONObject();
respondBody.put("Message", "Failed to create event!");
respondBody.put("Message", "Failed to update event!");
respondBody.put("reason", "Invalid image link and/or GIF image not supported.");
response.setContentType("application/json");
response.setStatus(400);
return respondBody.toString();
}
}
if (ed.shouldBeSaved())
DatabaseManager.getManager().updateEventData(ed);

View File

@@ -92,13 +92,16 @@ public class CreateEventEndpoint {
event.setRecurrence(Arrays.asList(rr));
}
EventData eventData = new EventData(settings.getGuildID());
EventData eventData = EventData.empty();
if (requestBody.has("image")) {
if (ImageUtils.validate(requestBody.getString("image"), settings.isPatronGuild())) {
//Link is good...
eventData.setEventId(event.getId());
eventData.setImageLink(requestBody.getString("image"));
eventData.setEventEnd(event.getEnd().getDateTime().getValue());
eventData = EventData.fromImage(
Snowflake.of(guildId),
event.getId(),
event.getEnd().getDateTime().getValue(),
requestBody.getString("image")
);
}
}

View File

@@ -95,9 +95,12 @@ public class UpdateEventEndpoint {
if (requestBody.has("image")) {
if (ImageUtils.validate(requestBody.getString("image"), settings.isPatronGuild())) {
//Link is good...
EventData ed = DatabaseManager.getManager().getEventData(settings.getGuildID(), eventId);
ed.setImageLink(requestBody.getString("image"));
ed.setEventEnd(event.getEnd().getDateTime().getValue());
EventData ed = EventData.fromImage(
Snowflake.of(guildId),
event.getId(),
event.getEnd().getDateTime().getValue(),
requestBody.getString("image")
);
DatabaseManager.getManager().updateEventData(ed);
}