package org.arkham.cs.handler; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.UUID; import org.arkham.cs.db.SQLConnectionThread; import org.arkham.cs.db.SQLQueryThread; import org.arkham.cs.interfaces.Button; import org.bukkit.entity.Player; public class PurchaseHandler { private static HashMap<UUID, List<Button>> purchases = new HashMap<>(); public static void addPurchase(Player player, Button button){ if(hasPurchased(player, button)){ return; } String name = "'" + player.getUniqueId().toString() + "'"; List<Button> buttons = purchases.get(player.getUniqueId()); if(buttons == null){ buttons = purchased(player); } buttons.add(button); purchases.put(player.getUniqueId(), buttons); String query1 = "SELECT `buttons` FROM `purchases` WHERE `player` =" + name + ""; String query = "UPDATE `purchases` SET `buttons`='" + Button.serialze(buttons)+ "' WHERE `player`=" + name; ResultSet res = SQLConnectionThread.getResultSet(query1); try { if(!res.next()){ query = "INSERT INTO `purchases` VALUES(" + name + ", '" + button.getPermission() + "')"; } } catch (SQLException e) { e.printStackTrace(); } SQLQueryThread.addQuery(query); } public static boolean hasPurchased(Player player, Button button){ if(player.isOp()){ return true; } if(player.hasPermission("cosmetics.*")){ return true; } if(purchases.get(player.getUniqueId()) == null){ return false; } return purchases.get(player.getUniqueId()).contains(button); } public static List<Button> purchased(Player player){ List<Button> buttons = purchases.get(player.getUniqueId()); if(buttons == null){ buttons = new ArrayList<>(); String uuid = "'" + player.getUniqueId().toString() + "'"; String query = "SELECT * FROM `purchases` WHERE `player` =" + uuid + ""; ResultSet res = SQLConnectionThread.getResultSet(query); try { if(res.next()){ buttons.addAll(Button.deserialize(res.getString("buttons"))); } } catch (SQLException e) { e.printStackTrace(); } } return buttons; } public static void setUpPurchases(Player player){ List<Button> buttons = new ArrayList<>(); String uuid = "'" + player.getUniqueId().toString() + "'"; String query = "SELECT * FROM `purchases` WHERE `player` =" + uuid + ""; ResultSet res = SQLConnectionThread.getResultSet(query); try { if(res.next()){ buttons.addAll(Button.deserialize(res.getString("buttons"))); } } catch (SQLException e) { e.printStackTrace(); } purchases.put(player.getUniqueId(), buttons); } }