From d5b04f735e1d77417479bbebde3ce2a15f4b8a55 Mon Sep 17 00:00:00 2001 From: Christopher Vieira Date: Mon, 26 Feb 2024 19:48:07 -0500 Subject: [PATCH 1/6] WIP - Start for creating test command --- .../Alathra/AlathraSkills/AlathraSkills.java | 2 + .../AlathraSkills/command/CommandHandler.java | 2 + .../AlathraSkills/db/DatabaseQueries.java | 10 ++-- .../AlathraSkills/db/jooq/JooqContext.java | 2 +- .../db/testing/TestGetExerienceCommand.java | 54 +++++++++++++++++++ src/main/resources/config.yml | 2 +- 6 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java diff --git a/src/main/java/io/github/Alathra/AlathraSkills/AlathraSkills.java b/src/main/java/io/github/Alathra/AlathraSkills/AlathraSkills.java index 9aaa33f..3eee9e5 100644 --- a/src/main/java/io/github/Alathra/AlathraSkills/AlathraSkills.java +++ b/src/main/java/io/github/Alathra/AlathraSkills/AlathraSkills.java @@ -7,9 +7,11 @@ import io.github.alathra.alathraskills.command.CommandHandler; import io.github.alathra.alathraskills.config.ConfigHandler; import io.github.alathra.alathraskills.db.DatabaseHandler; +import io.github.alathra.alathraskills.db.testing.TestGetExerienceCommand; import io.github.alathra.alathraskills.hooks.VaultHook; import io.github.alathra.alathraskills.listeners.ListenerHandler; import io.github.alathra.alathraskills.utility.Logger; + import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/io/github/Alathra/AlathraSkills/command/CommandHandler.java b/src/main/java/io/github/Alathra/AlathraSkills/command/CommandHandler.java index 21de71a..e782e55 100644 --- a/src/main/java/io/github/Alathra/AlathraSkills/command/CommandHandler.java +++ b/src/main/java/io/github/Alathra/AlathraSkills/command/CommandHandler.java @@ -2,6 +2,7 @@ import io.github.alathra.alathraskills.AlathraSkills; import io.github.alathra.alathraskills.Reloadable; +import io.github.alathra.alathraskills.db.testing.TestGetExerienceCommand; import dev.jorel.commandapi.CommandAPI; import dev.jorel.commandapi.CommandAPIBukkitConfig; @@ -25,6 +26,7 @@ public void onEnable() { CommandAPI.onEnable(); // Register commands here + new TestGetExerienceCommand(); new ExampleCommand(); } diff --git a/src/main/java/io/github/Alathra/AlathraSkills/db/DatabaseQueries.java b/src/main/java/io/github/Alathra/AlathraSkills/db/DatabaseQueries.java index a81e15b..d373c36 100644 --- a/src/main/java/io/github/Alathra/AlathraSkills/db/DatabaseQueries.java +++ b/src/main/java/io/github/Alathra/AlathraSkills/db/DatabaseQueries.java @@ -9,10 +9,10 @@ import org.jooq.Record1; import org.jooq.Record2; import org.jooq.Result; +import org.jooq.exception.DataAccessException; import java.nio.ByteBuffer; import java.sql.Connection; -import java.sql.SQLException; import java.util.UUID; import static io.github.alathra.alathraskills.db.schema.Tables.PLAYER_SKILLCATEGORYINFO; @@ -51,7 +51,7 @@ public static void saveSkillCategoryExperience(UUID uuid, int skillCategoryId, F .onDuplicateKeyUpdate() .set(PLAYER_SKILLCATEGORYINFO.EXPERIENCE, experience.doubleValue()) .execute(); - } catch (SQLException e) { + } catch (DataAccessException e) { Logger.get().error("SQL Query threw an error!", e); } } @@ -82,7 +82,7 @@ public static void saveSkillInfo(UUID uuid, int skillId) { skillId ) .execute(); - } catch (SQLException e) { + } catch (DataAccessException e) { Logger.get().error("SQL Query threw an error!", e); } } @@ -111,7 +111,7 @@ public static Record1 getSkillCategoryExperience(UUID uuid, int skillCat .where(PLAYER_SKILLCATEGORYINFO.UUID.equal(convertUUIDToBytes(uuid))) .and(PLAYER_SKILLCATEGORYINFO.SKILLCATEGORYID.equal(skillCategoryId)) .fetchOne(); - } catch (SQLException e) { + } catch (DataAccessException e) { Logger.get().error("SQL Query threw an error!", e); return null; } @@ -156,7 +156,7 @@ public static Boolean doesPlayerHaveSkill(UUID uuid, int skillId) { .selectFrom(PLAYER_SKILLINFO) .where(PLAYER_SKILLINFO.UUID.equal(convertUUIDToBytes(uuid))) .and(PLAYER_SKILLINFO.SKILLID.equal(skillId))); - } catch (SQLException e) { + } catch (DataAccessException e) { Logger.get().error("SQL Query threw an error!", e); return null; } diff --git a/src/main/java/io/github/Alathra/AlathraSkills/db/jooq/JooqContext.java b/src/main/java/io/github/Alathra/AlathraSkills/db/jooq/JooqContext.java index 36e91d2..aaecdfd 100644 --- a/src/main/java/io/github/Alathra/AlathraSkills/db/jooq/JooqContext.java +++ b/src/main/java/io/github/Alathra/AlathraSkills/db/jooq/JooqContext.java @@ -18,7 +18,7 @@ public final class JooqContext { JooqLogger.globalThreshold(Log.Level.ERROR); // Silence JOOQ warnings } - private static final String TABLE_PREFIX = Cfg.get().getOrDefault("db.prefix", "alathras_skills_"); // The table prefix as grabbed from config + private static final String TABLE_PREFIX = Cfg.get().getOrDefault("db.prefix", "alathra_skills_"); // The table prefix as grabbed from config private static final Pattern MATCH_ALL_EXCEPT_INFORMATION_SCHEMA = Pattern.compile("^(?!INFORMATION_SCHEMA)(.*?)$"); private static final Pattern MATCH_ALL = Pattern.compile("^(.*?)$"); private static final String REPLACEMENT = "%s$0".formatted(TABLE_PREFIX); // diff --git a/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java b/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java new file mode 100644 index 0000000..9715e81 --- /dev/null +++ b/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java @@ -0,0 +1,54 @@ +package io.github.alathra.alathraskills.db.testing; + +import org.bukkit.entity.Player; + +import com.github.milkdrinkers.colorparser.ColorParser; + +import dev.jorel.commandapi.CommandAPICommand; +import dev.jorel.commandapi.arguments.IntegerArgument; +import dev.jorel.commandapi.executors.CommandArguments; +import io.github.alathra.alathraskills.db.DatabaseQueries; + +public class TestGetExerienceCommand { + + public TestGetExerienceCommand() { + new CommandAPICommand("testGetExperience") + .withArguments(new IntegerArgument("skillCategoryID")) + .withFullDescription("Get Experience For a Given Skill Category.") + .withShortDescription("Get Experience") + .withPermission("example.command") + .executesPlayer(this::runCommand) + .register(); + } + + private void runCommand(Player player, CommandArguments args) { + player.sendMessage( + ColorParser.of("Read more about CommandAPI &9here.") + .parseLegacy() // Parse legacy color codes + .build() + ); + if (args.get(0) == null) { + player.sendMessage( + ColorParser.of("Provide a value after the command to indicate skill category.") + .parseLegacy() // Parse legacy color codes + .build() + ); + return; + } + DatabaseQueries.saveSkillCategoryExperience(player, (Integer) args.get(0), 20); + float dbReturnValue = DatabaseQueries.getSkillCategoryExperienceFloat(player, (Integer) args.get(0)); + String returnString = + "Player with ID " + + player.getUniqueId() + + " has an experience value of " + + Float.toString(dbReturnValue) + + " in skill category " + + args.get(0) + + "."; + player.sendMessage( + ColorParser.of(returnString) + .parseLegacy() // Parse legacy color codes + .build() + ); + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index ab73270..b23c464 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,7 +1,7 @@ # Database Settings db: type: "hsqldb" # Available types: "hsqldb", "h2", "mysql", "mariadb" - prefix: "example_" # The table prefix + prefix: "alathra_skills_" # The table prefix host: "127.0.0.1" port: 3306 database: "database_name" From a6af917c7759ca47ceb5b29a3b31eb38f62ab27e Mon Sep 17 00:00:00 2001 From: Christopher Vieira Date: Mon, 26 Feb 2024 19:52:06 -0500 Subject: [PATCH 2/6] Fix - Error on removing SQLException --- .../Alathra/AlathraSkills/db/DatabaseQueries.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/io/github/Alathra/AlathraSkills/db/DatabaseQueries.java b/src/main/java/io/github/Alathra/AlathraSkills/db/DatabaseQueries.java index d373c36..1083751 100644 --- a/src/main/java/io/github/Alathra/AlathraSkills/db/DatabaseQueries.java +++ b/src/main/java/io/github/Alathra/AlathraSkills/db/DatabaseQueries.java @@ -13,6 +13,7 @@ import java.nio.ByteBuffer; import java.sql.Connection; +import java.sql.SQLException; import java.util.UUID; import static io.github.alathra.alathraskills.db.schema.Tables.PLAYER_SKILLCATEGORYINFO; @@ -53,6 +54,8 @@ public static void saveSkillCategoryExperience(UUID uuid, int skillCategoryId, F .execute(); } catch (DataAccessException e) { Logger.get().error("SQL Query threw an error!", e); + } catch (SQLException e) { + Logger.get().error("SQL Query threw an error!", e); } } @@ -84,6 +87,8 @@ public static void saveSkillInfo(UUID uuid, int skillId) { .execute(); } catch (DataAccessException e) { Logger.get().error("SQL Query threw an error!", e); + } catch (SQLException e) { + Logger.get().error("SQL Query threw an error!", e); } } @@ -114,6 +119,9 @@ public static Record1 getSkillCategoryExperience(UUID uuid, int skillCat } catch (DataAccessException e) { Logger.get().error("SQL Query threw an error!", e); return null; + } catch (SQLException e) { + Logger.get().error("SQL Query threw an error!", e); + return null; } } @@ -159,6 +167,9 @@ public static Boolean doesPlayerHaveSkill(UUID uuid, int skillId) { } catch (DataAccessException e) { Logger.get().error("SQL Query threw an error!", e); return null; + } catch (SQLException e) { + Logger.get().error("SQL Query threw an error!", e); + return null; } } From 85eeebeeaf9c5c11e36ae9ee7742152c02717d5e Mon Sep 17 00:00:00 2001 From: Christopher Vieira Date: Mon, 26 Feb 2024 20:55:02 -0500 Subject: [PATCH 3/6] feat - Added set command and fixed DB setup --- .../AlathraSkills/command/CommandHandler.java | 2 + .../AlathraSkills/db/DatabaseQueries.java | 6 +- .../db/testing/TestGetExerienceCommand.java | 6 -- .../db/testing/TestSetExerienceCommand.java | 56 +++++++++++++++++++ src/main/resources/config.yml | 8 +-- 5 files changed, 67 insertions(+), 11 deletions(-) create mode 100644 src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java diff --git a/src/main/java/io/github/Alathra/AlathraSkills/command/CommandHandler.java b/src/main/java/io/github/Alathra/AlathraSkills/command/CommandHandler.java index e782e55..138f72e 100644 --- a/src/main/java/io/github/Alathra/AlathraSkills/command/CommandHandler.java +++ b/src/main/java/io/github/Alathra/AlathraSkills/command/CommandHandler.java @@ -3,6 +3,7 @@ import io.github.alathra.alathraskills.AlathraSkills; import io.github.alathra.alathraskills.Reloadable; import io.github.alathra.alathraskills.db.testing.TestGetExerienceCommand; +import io.github.alathra.alathraskills.db.testing.TestSetExerienceCommand; import dev.jorel.commandapi.CommandAPI; import dev.jorel.commandapi.CommandAPIBukkitConfig; @@ -27,6 +28,7 @@ public void onEnable() { // Register commands here new TestGetExerienceCommand(); + new TestSetExerienceCommand(); new ExampleCommand(); } diff --git a/src/main/java/io/github/Alathra/AlathraSkills/db/DatabaseQueries.java b/src/main/java/io/github/Alathra/AlathraSkills/db/DatabaseQueries.java index 1083751..b9b1378 100644 --- a/src/main/java/io/github/Alathra/AlathraSkills/db/DatabaseQueries.java +++ b/src/main/java/io/github/Alathra/AlathraSkills/db/DatabaseQueries.java @@ -138,7 +138,11 @@ public static Record1 getSkillCategoryExperience(Player p, int skillCate */ public static float getSkillCategoryExperienceFloat(UUID uuid, int skillCategoryId) { - return (float) getSkillCategoryExperience(uuid, skillCategoryId).getValue("EXP"); + Record1 returnRecord = getSkillCategoryExperience(uuid, skillCategoryId); + if (returnRecord == null) { + return 0; + } + return ((Double) returnRecord.getValue("EXPERIENCE")).floatValue(); } public static float getSkillCategoryExperienceFloat(Player p, int skillCategoryId) { diff --git a/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java b/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java index 9715e81..7f1c771 100644 --- a/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java +++ b/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java @@ -22,11 +22,6 @@ public TestGetExerienceCommand() { } private void runCommand(Player player, CommandArguments args) { - player.sendMessage( - ColorParser.of("Read more about CommandAPI &9here.") - .parseLegacy() // Parse legacy color codes - .build() - ); if (args.get(0) == null) { player.sendMessage( ColorParser.of("Provide a value after the command to indicate skill category.") @@ -35,7 +30,6 @@ private void runCommand(Player player, CommandArguments args) { ); return; } - DatabaseQueries.saveSkillCategoryExperience(player, (Integer) args.get(0), 20); float dbReturnValue = DatabaseQueries.getSkillCategoryExperienceFloat(player, (Integer) args.get(0)); String returnString = "Player with ID " + diff --git a/src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java b/src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java new file mode 100644 index 0000000..47db89c --- /dev/null +++ b/src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java @@ -0,0 +1,56 @@ +package io.github.alathra.alathraskills.db.testing; + +import org.bukkit.entity.Player; + +import com.github.milkdrinkers.colorparser.ColorParser; + +import dev.jorel.commandapi.CommandAPICommand; +import dev.jorel.commandapi.arguments.FloatArgument; +import dev.jorel.commandapi.arguments.IntegerArgument; +import dev.jorel.commandapi.executors.CommandArguments; +import io.github.alathra.alathraskills.db.DatabaseQueries; + +public class TestSetExerienceCommand { + + public TestSetExerienceCommand() { + new CommandAPICommand("testSetExperience") + .withArguments(new IntegerArgument("skillCategoryID"), new FloatArgument("Experience")) + .withFullDescription("Set Experience For a Given Skill Category.") + .withShortDescription("Set Experience") + .withPermission("example.command") + .executesPlayer(this::runCommand) + .register(); + } + + private void runCommand(Player player, CommandArguments args) { + if (args.get(0) == null) { + player.sendMessage( + ColorParser.of("Provide a value after the command to indicate skill category.") + .parseLegacy() // Parse legacy color codes + .build() + ); + } + if (args.get(1) == null) { + player.sendMessage( + ColorParser.of("Provide a value after the skill category to indicate experience amount.") + .parseLegacy() // Parse legacy color codes + .build() + ); + return; + } + DatabaseQueries.saveSkillCategoryExperience(player, (Integer) args.get(0), (float) args.get(1)); + String returnString = + "Player with ID " + + player.getUniqueId() + + " has had an experience value of " + + args.get(1) + + " set in skill category " + + args.get(0) + + "."; + player.sendMessage( + ColorParser.of(returnString) + .parseLegacy() // Parse legacy color codes + .build() + ); + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index b23c464..927ef3b 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,10 +1,10 @@ # Database Settings db: - type: "hsqldb" # Available types: "hsqldb", "h2", "mysql", "mariadb" + type: "mariadb" # Available types: "hsqldb", "h2", "mysql", "mariadb" prefix: "alathra_skills_" # The table prefix host: "127.0.0.1" port: 3306 - database: "database_name" - user: "name" - pass: "123" + database: "alathra" + user: "root" + pass: "" repair: false From d311f04a68bfd350354e6c77777eff65a71975a1 Mon Sep 17 00:00:00 2001 From: Christopher Vieira Date: Mon, 26 Feb 2024 20:56:03 -0500 Subject: [PATCH 4/6] Added todo comments --- .../alathraskills/db/testing/TestGetExerienceCommand.java | 1 + .../alathraskills/db/testing/TestSetExerienceCommand.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java b/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java index 7f1c771..a49b685 100644 --- a/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java +++ b/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java @@ -30,6 +30,7 @@ private void runCommand(Player player, CommandArguments args) { ); return; } + // TODO Make Async float dbReturnValue = DatabaseQueries.getSkillCategoryExperienceFloat(player, (Integer) args.get(0)); String returnString = "Player with ID " + diff --git a/src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java b/src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java index 47db89c..7fafc97 100644 --- a/src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java +++ b/src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java @@ -38,6 +38,7 @@ private void runCommand(Player player, CommandArguments args) { ); return; } + // TODO Make Async DatabaseQueries.saveSkillCategoryExperience(player, (Integer) args.get(0), (float) args.get(1)); String returnString = "Player with ID " + From e4357048189c10f6711e9b6456a6130f4fcc5b75 Mon Sep 17 00:00:00 2001 From: Christopher Vieira Date: Tue, 27 Feb 2024 18:34:32 -0500 Subject: [PATCH 5/6] fix - make changes according to PR comments --- .../alathraskills/db/testing/TestGetExerienceCommand.java | 2 +- .../alathraskills/db/testing/TestSetExerienceCommand.java | 6 +++--- src/main/resources/config.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java b/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java index a49b685..c47ab18 100644 --- a/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java +++ b/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java @@ -31,7 +31,7 @@ private void runCommand(Player player, CommandArguments args) { return; } // TODO Make Async - float dbReturnValue = DatabaseQueries.getSkillCategoryExperienceFloat(player, (Integer) args.get(0)); + float dbReturnValue = DatabaseQueries.getSkillCategoryExperienceFloat(player, (Integer) args.get("skillCategoryID")); String returnString = "Player with ID " + player.getUniqueId() + diff --git a/src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java b/src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java index 7fafc97..dc00a18 100644 --- a/src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java +++ b/src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java @@ -39,14 +39,14 @@ private void runCommand(Player player, CommandArguments args) { return; } // TODO Make Async - DatabaseQueries.saveSkillCategoryExperience(player, (Integer) args.get(0), (float) args.get(1)); + DatabaseQueries.saveSkillCategoryExperience(player, (Integer) args.get("skillCategoryID"), (float) args.get("Experience")); String returnString = "Player with ID " + player.getUniqueId() + " has had an experience value of " + - args.get(1) + + args.get("Experience") + " set in skill category " + - args.get(0) + + args.get("skillCategoryID") + "."; player.sendMessage( ColorParser.of(returnString) diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 927ef3b..bbef92c 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,6 +1,6 @@ # Database Settings db: - type: "mariadb" # Available types: "hsqldb", "h2", "mysql", "mariadb" + type: "mariadb" # Available types: "mysql", "mariadb" prefix: "alathra_skills_" # The table prefix host: "127.0.0.1" port: 3306 From abf3b46a0f6ccb2bb34beab6cda1ee9e9c95d9b0 Mon Sep 17 00:00:00 2001 From: Christopher Vieira Date: Tue, 27 Feb 2024 18:35:47 -0500 Subject: [PATCH 6/6] fix - resolve remaining issue --- .../alathraskills/db/testing/TestGetExerienceCommand.java | 2 +- .../alathraskills/db/testing/TestSetExerienceCommand.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java b/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java index c47ab18..aa68139 100644 --- a/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java +++ b/src/main/java/io/github/alathra/alathraskills/db/testing/TestGetExerienceCommand.java @@ -22,7 +22,7 @@ public TestGetExerienceCommand() { } private void runCommand(Player player, CommandArguments args) { - if (args.get(0) == null) { + if (args.get("skillCategoryID") == null) { player.sendMessage( ColorParser.of("Provide a value after the command to indicate skill category.") .parseLegacy() // Parse legacy color codes diff --git a/src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java b/src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java index dc00a18..bd4d841 100644 --- a/src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java +++ b/src/main/java/io/github/alathra/alathraskills/db/testing/TestSetExerienceCommand.java @@ -23,14 +23,14 @@ public TestSetExerienceCommand() { } private void runCommand(Player player, CommandArguments args) { - if (args.get(0) == null) { + if (args.get("skillCategoryID") == null) { player.sendMessage( ColorParser.of("Provide a value after the command to indicate skill category.") .parseLegacy() // Parse legacy color codes .build() ); } - if (args.get(1) == null) { + if (args.get("Experience") == null) { player.sendMessage( ColorParser.of("Provide a value after the skill category to indicate experience amount.") .parseLegacy() // Parse legacy color codes