diff --git a/app/build.gradle b/app/build.gradle index fc90a40..1a0e59a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,6 +9,7 @@ plugins { // Apply the application plugin to add support for building a CLI application in Java. id 'application' + id("net.ltgt.errorprone") version "3.1.0" } repositories { @@ -17,6 +18,7 @@ repositories { } dependencies { + errorprone("com.google.errorprone:error_prone_core:2.24.1") implementation 'com.google.apis:google-api-services-youtube:v3-rev222-1.25.0' // Use JUnit test framework. @@ -28,22 +30,8 @@ dependencies { implementation("com.google.guava:guava:33.0.0-jre") } -task fatJar(type: Jar) { - manifest { - attributes 'Main-Class': 'Main' - } - - from { - configurations.compile.collect { - dependency -> - if (dependency.directory) { - return dependency - } else { - return zipTree(dependency) - } - } - } - with jar +tasks.withType(JavaCompile).configureEach { + options.errorprone.disableWarningsInGeneratedCode.set(false) } application { diff --git a/app/src/main/java/musicbot/ButtonInteraction.java b/app/src/main/java/musicbot/ButtonInteraction.java index 4b3fb78..437c81d 100644 --- a/app/src/main/java/musicbot/ButtonInteraction.java +++ b/app/src/main/java/musicbot/ButtonInteraction.java @@ -14,7 +14,7 @@ public interface ButtonInteraction { /** * Executes the interaction logic of the button - * @param event + * @param event the ButtonInteractionEvent */ void execute(ButtonInteractionEvent event); } diff --git a/app/src/main/java/musicbot/ButtonInteractionManager.java b/app/src/main/java/musicbot/ButtonInteractionManager.java index 2925663..2bea8af 100644 --- a/app/src/main/java/musicbot/ButtonInteractionManager.java +++ b/app/src/main/java/musicbot/ButtonInteractionManager.java @@ -23,7 +23,7 @@ public class ButtonInteractionManager extends ListenerAdapter { public void onButtonInteraction(@NotNull ButtonInteractionEvent event) { final String id = event.getComponent().getId(); - final String[] args = id.split("_"); + final String[] args = id.split("_", 0); for (final ButtonInteraction buttonInteraction : buttonInteractions) { if (args[0].equals(buttonInteraction.getName())) { diff --git a/app/src/main/java/musicbot/Paginator.java b/app/src/main/java/musicbot/Paginator.java index fa9fd6e..0d29b71 100644 --- a/app/src/main/java/musicbot/Paginator.java +++ b/app/src/main/java/musicbot/Paginator.java @@ -45,7 +45,7 @@ public class Paginator { } final int maxSize = tracks.size(); - final int maxPage = (int) Math.floor(maxSize / numItemsPerPage); + final int maxPage = Math.round(maxSize / ((float) numItemsPerPage)); final int maxIndex = numItemsPerPage * pageNumber; final int baseIndex = maxIndex - numItemsPerPage; final int nextPage = pageNumber + 1; diff --git a/app/src/main/java/musicbot/RecommendationService.java b/app/src/main/java/musicbot/RecommendationService.java index d6d684c..dc9742f 100644 --- a/app/src/main/java/musicbot/RecommendationService.java +++ b/app/src/main/java/musicbot/RecommendationService.java @@ -1,18 +1,11 @@ package musicbot; import com.google.common.collect.ImmutableList; -import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.entities.MessageEmbed; -import net.dv8tion.jda.api.interactions.commands.OptionMapping; -import net.dv8tion.jda.api.interactions.components.buttons.Button; import se.michaelthelin.spotify.model_objects.specification.Artist; -import se.michaelthelin.spotify.model_objects.specification.ArtistSimplified; import se.michaelthelin.spotify.model_objects.specification.Track; -import java.util.Arrays; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; public class RecommendationService { diff --git a/app/src/main/java/musicbot/SpotifyClient.java b/app/src/main/java/musicbot/SpotifyClient.java index 6f97584..e104e34 100644 --- a/app/src/main/java/musicbot/SpotifyClient.java +++ b/app/src/main/java/musicbot/SpotifyClient.java @@ -3,7 +3,6 @@ package musicbot; import com.google.common.collect.ImmutableList; import org.apache.hc.core5.http.ParseException; import se.michaelthelin.spotify.SpotifyApi; -import se.michaelthelin.spotify.enums.ModelObjectType; import se.michaelthelin.spotify.exceptions.SpotifyWebApiException; import se.michaelthelin.spotify.model_objects.credentials.ClientCredentials; import se.michaelthelin.spotify.model_objects.specification.Artist; @@ -20,8 +19,6 @@ import java.io.IOException; import java.util.Arrays; import java.util.List; import java.util.Optional; -import java.util.stream.Collector; -import java.util.stream.Collectors; public class SpotifyClient { private static final SpotifyApi SPOTIFY_API = new SpotifyApi.Builder() diff --git a/app/src/main/java/musicbot/YoutubeSearch.java b/app/src/main/java/musicbot/YoutubeSearch.java index 8c593ce..3a31ef4 100644 --- a/app/src/main/java/musicbot/YoutubeSearch.java +++ b/app/src/main/java/musicbot/YoutubeSearch.java @@ -48,6 +48,7 @@ public class YoutubeSearch { private HttpRequestInitializer createRequestInitializer() { final HttpRequestInitializer initializer = new HttpRequestInitializer() { + @Override public void initialize(HttpRequest request) throws IOException { } }; diff --git a/app/src/main/java/musicbot/buttonInteractions/MoreGenre.java b/app/src/main/java/musicbot/buttonInteractions/MoreGenre.java index 28e85c1..b78ab6f 100644 --- a/app/src/main/java/musicbot/buttonInteractions/MoreGenre.java +++ b/app/src/main/java/musicbot/buttonInteractions/MoreGenre.java @@ -20,7 +20,7 @@ public class MoreGenre implements ButtonInteraction { final String id = event.getComponent().getId(); final Paginator paginator = new Paginator(); - final String[] args = id.split("_"); + final String[] args = id.split("_", 0); event.deferReply().queue(); final int page = Integer.parseInt(args[1]); diff --git a/app/src/main/java/musicbot/buttonInteractions/MoreRecommendation.java b/app/src/main/java/musicbot/buttonInteractions/MoreRecommendation.java index feb340b..c43e26c 100644 --- a/app/src/main/java/musicbot/buttonInteractions/MoreRecommendation.java +++ b/app/src/main/java/musicbot/buttonInteractions/MoreRecommendation.java @@ -20,7 +20,6 @@ import java.util.stream.Collectors; * after initial /recommend. */ public class MoreRecommendation implements ButtonInteraction { - private static final int INCREMENT = 5; private static final String ARGS_DELIMITER = "_"; private static final String ARTIST_GENRE_DELIMITER = "--"; @@ -33,9 +32,9 @@ public class MoreRecommendation implements ButtonInteraction { public void execute(final ButtonInteractionEvent event) { event.deferReply().queue(); final String id = event.getComponent().getId(); - final String[] args = id.split(ARGS_DELIMITER); + final String[] args = id.split(ARGS_DELIMITER, 0); - final String[] artistGenre = args[1].split(ARTIST_GENRE_DELIMITER); + final String[] artistGenre = args[1].split(ARTIST_GENRE_DELIMITER, 0); final String artist = artistGenre[0]; final String genre = artistGenre.length < 2 ? "" : artistGenre[1]; diff --git a/app/src/main/java/musicbot/buttonInteractions/VideoRecommendation.java b/app/src/main/java/musicbot/buttonInteractions/VideoRecommendation.java index ab48c40..3f4ac6a 100644 --- a/app/src/main/java/musicbot/buttonInteractions/VideoRecommendation.java +++ b/app/src/main/java/musicbot/buttonInteractions/VideoRecommendation.java @@ -15,7 +15,7 @@ public class VideoRecommendation implements ButtonInteraction { public void execute(ButtonInteractionEvent event) { final String id = event.getComponent().getId(); final String label = event.getComponent().getLabel(); - final String[] args = id.split("_"); + final String[] args = id.split("_", 0); event.deferReply().queue(); diff --git a/app/src/main/java/musicbot/commands/Genres.java b/app/src/main/java/musicbot/commands/Genres.java index b2902ef..7184082 100644 --- a/app/src/main/java/musicbot/commands/Genres.java +++ b/app/src/main/java/musicbot/commands/Genres.java @@ -1,23 +1,16 @@ package musicbot.commands; -import com.google.common.collect.Lists; import musicbot.MCommand; import musicbot.Paginator; import musicbot.SpotifyClient; import net.dv8tion.jda.api.EmbedBuilder; -import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent; -import net.dv8tion.jda.api.hooks.ListenerAdapter; import net.dv8tion.jda.api.interactions.commands.build.OptionData; import net.dv8tion.jda.api.interactions.components.buttons.Button; -import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; public class Genres implements MCommand { - @Override public String getName() { return "genres";