From d49eef46d072d1352596df396ebcc73a7c3e7f38 Mon Sep 17 00:00:00 2001 From: duncte123 Date: Mon, 22 Feb 2021 10:15:07 +0100 Subject: [PATCH] Add support for multiple bdays on the same day --- .../me/duncte123/hirobot/database/Database.java | 4 +--- .../hirobot/database/SQLiteDatabase.java | 12 ++++++------ .../hirobot/events/FanServerEventHandler.java | 17 ++++++++++------- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/main/java/me/duncte123/hirobot/database/Database.java b/src/main/java/me/duncte123/hirobot/database/Database.java index 987c6b3..c209908 100644 --- a/src/main/java/me/duncte123/hirobot/database/Database.java +++ b/src/main/java/me/duncte123/hirobot/database/Database.java @@ -21,7 +21,6 @@ import me.duncte123.hirobot.database.objects.Birthday; import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.time.LocalDate; import java.util.List; @@ -44,6 +43,5 @@ public interface Database { void removeBirthday(long userId); - @Nullable - Birthday getBirthday(LocalDate date); + List getBirthdays(LocalDate date); } diff --git a/src/main/java/me/duncte123/hirobot/database/SQLiteDatabase.java b/src/main/java/me/duncte123/hirobot/database/SQLiteDatabase.java index 7229ff3..7657319 100644 --- a/src/main/java/me/duncte123/hirobot/database/SQLiteDatabase.java +++ b/src/main/java/me/duncte123/hirobot/database/SQLiteDatabase.java @@ -22,7 +22,6 @@ import com.zaxxer.hikari.HikariDataSource; import me.duncte123.hirobot.database.objects.Birthday; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -197,9 +196,10 @@ public void removeBirthday(long userId) { } } - @Nullable @Override - public Birthday getBirthday(LocalDate date) { + public List getBirthdays(LocalDate date) { + final List birthdays = new ArrayList<>(); + try (final Connection conn = ds.getConnection()) { try (final PreparedStatement smt = // language=SQLite @@ -208,10 +208,10 @@ public Birthday getBirthday(LocalDate date) { try (final ResultSet resultSet = smt.executeQuery()) { if (resultSet.next()) { - return new Birthday( + birthdays.add(new Birthday( resultSet.getLong("user_id"), resultSet.getString("date") - ); + )); } } } @@ -219,7 +219,7 @@ public Birthday getBirthday(LocalDate date) { e.printStackTrace(); } - return null; + return birthdays; } private String pre0(int in) { diff --git a/src/main/java/me/duncte123/hirobot/events/FanServerEventHandler.java b/src/main/java/me/duncte123/hirobot/events/FanServerEventHandler.java index 5150ff7..ce719c7 100644 --- a/src/main/java/me/duncte123/hirobot/events/FanServerEventHandler.java +++ b/src/main/java/me/duncte123/hirobot/events/FanServerEventHandler.java @@ -39,6 +39,7 @@ import java.time.LocalDate; import java.time.ZoneId; import java.time.ZonedDateTime; +import java.util.List; import java.util.Objects; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -194,17 +195,19 @@ public void initBdayTimer() { } private void handleBirthday(ZoneId zone) { - final Birthday birthday = this.database.getBirthday(LocalDate.now(zone)); + final List birthdays = this.database.getBirthdays(LocalDate.now(zone)); - if (birthday == null) { + if (birthdays.isEmpty()) { return; } - final int i = ThreadLocalRandom.current().nextInt(BDAY_MESSAGES.length); + for (final Birthday birthday : birthdays) { + final int i = ThreadLocalRandom.current().nextInt(BDAY_MESSAGES.length); - //noinspection ConstantConditions - this.hiro.jda.getTextChannelById(GENERAL_CHANNEL_ID) - .sendMessageFormat(BDAY_MESSAGES[i], birthday.getUserId()) - .queue(); + //noinspection ConstantConditions + this.hiro.jda.getTextChannelById(GENERAL_CHANNEL_ID) + .sendMessageFormat(BDAY_MESSAGES[i], birthday.getUserId()) + .queue(); + } } }