From 97da4f7809efef209a02bfca09855fb7522d0151 Mon Sep 17 00:00:00 2001 From: Craftinators Date: Mon, 27 Feb 2023 12:53:51 -0500 Subject: [PATCH] feat: add `SQLData` class --- .../database/types/MySQLData.java | 56 ++-------------- .../hmccosmetics/database/types/SQLData.java | 65 +++++++++++++++++++ .../database/types/SQLiteData.java | 60 ++--------------- 3 files changed, 73 insertions(+), 108 deletions(-) create mode 100644 common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/SQLData.java diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/MySQLData.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/MySQLData.java index b663dc5d..9b19e507 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/MySQLData.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/MySQLData.java @@ -2,19 +2,14 @@ package com.hibiscusmc.hmccosmetics.database.types; import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; import com.hibiscusmc.hmccosmetics.config.DatabaseSettings; -import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic; -import com.hibiscusmc.hmccosmetics.cosmetic.CosmeticSlot; -import com.hibiscusmc.hmccosmetics.user.CosmeticUser; import org.bukkit.Bukkit; -import org.bukkit.Color; import org.jetbrains.annotations.NotNull; import java.sql.*; -import java.util.Map; import java.util.Properties; import java.util.UUID; -public class MySQLData extends Data { +public class MySQLData extends SQLData { // Connection Information private String host; @@ -53,51 +48,6 @@ public class MySQLData extends Data { throw new RuntimeException(e); } } - @Override - public void save(CosmeticUser user) { - Runnable run = () -> { - try (PreparedStatement preparedSt = preparedStatement("REPLACE INTO COSMETICDATABASE(UUID,COSMETICS) VALUES(?,?);")) { - preparedSt.setString(1, user.getUniqueId().toString()); - preparedSt.setString(2, serializeData(user)); - preparedSt.executeUpdate(); - } catch (SQLException e) { - throw new RuntimeException(e); - } - }; - if (!HMCCosmeticsPlugin.isDisable()) { - Bukkit.getScheduler().runTaskAsynchronously(HMCCosmeticsPlugin.getInstance(), run); - } else { - run.run(); - } - } - - @Override - public CosmeticUser get(UUID uniqueId) { - CosmeticUser user = new CosmeticUser(uniqueId); - - Bukkit.getScheduler().runTaskAsynchronously(HMCCosmeticsPlugin.getInstance(), () -> { - try { - PreparedStatement preparedStatement = preparedStatement("SELECT * FROM COSMETICDATABASE WHERE UUID = ?;"); - preparedStatement.setString(1, uniqueId.toString()); - ResultSet rs = preparedStatement.executeQuery(); - if (rs.next()) { - String rawData = rs.getString("COSMETICS"); - Map> cosmetics = deserializeData(user, rawData); - for (Map cosmeticColors : cosmetics.values()) { - for (Cosmetic cosmetic : cosmeticColors.keySet()) { - Bukkit.getScheduler().runTask(HMCCosmeticsPlugin.getInstance(), () -> { - // This can not be async. - user.addPlayerCosmetic(cosmetic, cosmeticColors.get(cosmetic)); - }); - } - } - } - } catch (SQLException e) { - e.printStackTrace(); - } - }); - return user; - } @Override public void clear(UUID uniqueId) { @@ -110,7 +60,8 @@ public class MySQLData extends Data { e.printStackTrace(); } }); - // TODO + + // TODO (Something) } private void openConnection() throws SQLException { @@ -162,6 +113,7 @@ public class MySQLData extends Data { } } + @Override public PreparedStatement preparedStatement(String query) { PreparedStatement ps = null; diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/SQLData.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/SQLData.java new file mode 100644 index 00000000..78713e9d --- /dev/null +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/SQLData.java @@ -0,0 +1,65 @@ +package com.hibiscusmc.hmccosmetics.database.types; + +import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; +import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic; +import com.hibiscusmc.hmccosmetics.cosmetic.CosmeticSlot; +import com.hibiscusmc.hmccosmetics.user.CosmeticUser; +import org.bukkit.Bukkit; +import org.bukkit.Color; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Map; +import java.util.UUID; + +public abstract class SQLData extends Data { + @Override + @SuppressWarnings("Duplicates") // Duplicate is from deprecated InternalData + public CosmeticUser get(UUID uniqueId) { + CosmeticUser user = new CosmeticUser(uniqueId); + + Bukkit.getScheduler().runTaskAsynchronously(HMCCosmeticsPlugin.getInstance(), () -> { + try (PreparedStatement preparedStatement = preparedStatement("SELECT * FROM COSMETICDATABASE WHERE UUID = ?;")) { + preparedStatement.setString(1, uniqueId.toString()); + ResultSet rs = preparedStatement.executeQuery(); + if (rs.next()) { + String rawData = rs.getString("COSMETICS"); + Map> cosmetics = deserializeData(user, rawData); + for (Map cosmeticColors : cosmetics.values()) { + for (Cosmetic cosmetic : cosmeticColors.keySet()) { + Bukkit.getScheduler().runTask(HMCCosmeticsPlugin.getInstance(), () -> { + // This can not be async. + user.addPlayerCosmetic(cosmetic, cosmeticColors.get(cosmetic)); + }); + } + } + } + } catch (SQLException e) { + e.printStackTrace(); + } + }); + + return user; + } + + @Override + public void save(CosmeticUser user) { + Runnable run = () -> { + try (PreparedStatement preparedSt = preparedStatement("REPLACE INTO COSMETICDATABASE(UUID,COSMETICS) VALUES(?,?);")) { + preparedSt.setString(1, user.getUniqueId().toString()); + preparedSt.setString(2, serializeData(user)); + preparedSt.executeUpdate(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + }; + if (!HMCCosmeticsPlugin.isDisable()) { + Bukkit.getScheduler().runTaskAsynchronously(HMCCosmeticsPlugin.getInstance(), run); + } else { + run.run(); + } + } + + public abstract PreparedStatement preparedStatement(String query); +} diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/SQLiteData.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/SQLiteData.java index 1c4928c4..3446576a 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/SQLiteData.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/SQLiteData.java @@ -1,21 +1,16 @@ package com.hibiscusmc.hmccosmetics.database.types; import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin; -import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic; -import com.hibiscusmc.hmccosmetics.cosmetic.CosmeticSlot; -import com.hibiscusmc.hmccosmetics.user.CosmeticUser; import com.hibiscusmc.hmccosmetics.util.MessagesUtil; import org.bukkit.Bukkit; -import org.bukkit.Color; import java.io.File; import java.io.IOException; import java.sql.*; -import java.util.Map; import java.util.UUID; import java.util.logging.Level; -public class SQLiteData extends Data { +public class SQLiteData extends SQLData { private Connection connection; @@ -39,60 +34,11 @@ public class SQLiteData extends Data { "(UUID varchar(36) PRIMARY KEY, " + "COSMETICS MEDIUMTEXT " + ");").execute(); - - } catch (SQLException e) { throw new RuntimeException(e); } } - @Override - public void save(CosmeticUser user) { - Runnable run = () -> { - try { - PreparedStatement preparedSt = preparedStatement("REPLACE INTO COSMETICDATABASE(UUID,COSMETICS) VALUES(?,?);"); - preparedSt.setString(1, user.getUniqueId().toString()); - preparedSt.setString(2, serializeData(user)); - preparedSt.executeUpdate(); - } catch (SQLException e) { - throw new RuntimeException(e); - } - }; - if (!HMCCosmeticsPlugin.isDisable()) { - Bukkit.getScheduler().runTaskAsynchronously(HMCCosmeticsPlugin.getInstance(), run); - } else { - run.run(); - } - } - - @Override - public CosmeticUser get(UUID uniqueId) { - CosmeticUser user = new CosmeticUser(uniqueId); - - Bukkit.getScheduler().runTaskAsynchronously(HMCCosmeticsPlugin.getInstance(), () -> { - try { - PreparedStatement preparedStatement = preparedStatement("SELECT * FROM COSMETICDATABASE WHERE UUID = ?;"); - preparedStatement.setString(1, uniqueId.toString()); - ResultSet rs = preparedStatement.executeQuery(); - if (rs.next()) { - String rawData = rs.getString("COSMETICS"); - Map> cosmetics = deserializeData(user, rawData); - for (Map cosmeticColors : cosmetics.values()) { - for (Cosmetic cosmetic : cosmeticColors.keySet()) { - Bukkit.getScheduler().runTask(HMCCosmeticsPlugin.getInstance(), () -> { - // This can not be async. - user.addPlayerCosmetic(cosmetic, cosmeticColors.get(cosmetic)); - }); - } - } - } - } catch (SQLException e) { - e.printStackTrace(); - } - }); - return user; - } - @Override public void clear(UUID uniqueId) { Bukkit.getScheduler().runTaskAsynchronously(HMCCosmeticsPlugin.getInstance(), () -> { @@ -105,7 +51,6 @@ public class SQLiteData extends Data { }); } - private void openConnection() throws SQLException { // Bukkit.getScheduler().runTaskAsynchronously(HMCCosmeticsPlugin.getInstance(), () -> { // ... @@ -126,16 +71,19 @@ public class SQLiteData extends Data { } } + @Override public PreparedStatement preparedStatement(String query) { PreparedStatement ps = null; if (!isConnectionOpen()) { HMCCosmeticsPlugin.getInstance().getLogger().info("Connection is not open"); } + try { ps = connection.prepareStatement(query); } catch (SQLException e) { e.printStackTrace(); } + return ps; }