package me.maker56.survivalgames.statistics; import java.sql.ResultSet; import java.sql.SQLException; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import me.maker56.survivalgames.commands.messages.MessageHandler; import me.maker56.survivalgames.database.sql.DatabaseManager; import me.maker56.survivalgames.database.sql.DatabaseResponse; import me.maker56.survivalgames.database.sql.DatabaseTask; import me.maker56.survivalgames.database.sql.DatabaseThread; import me.maker56.survivalgames.user.UserState; public class StatisticLoader { public static void load(UserState state) { DatabaseTask task = new DatabaseTask("SELECT * FROM `" + DatabaseManager.tablePrefix + "players` WHERE uuid = '" + state.getUUID() + "'", true, rHandler); task.obj = new Object[] { state }; DatabaseThread.addTask(task); } public static void load(CommandSender p, String name) { DatabaseTask task = new DatabaseTask("SELECT * FROM `" + DatabaseManager.tablePrefix + "players` WHERE lastname = '" + name + "'", true, rHandler); task.obj = new Object[] { p, name }; DatabaseThread.addTask(task); } private static DatabaseResponse rHandler = new ResponseHandler(); } class ResponseHandler implements DatabaseResponse { @Override public void response(DatabaseTask task, ResultSet rs) { try { int kills = 0, deaths = 0, points = 0, wins = 0, played = 0; float kdr = 0F; UserState state = null; CommandSender p = null; String name, uuid = null; if(task.obj.length == 1) { state = (UserState) task.obj[0]; if(state == null || state.getPlayer() == null) return; name = state.getName(); uuid = state.getUUID(); } else { p = (Player) task.obj[0]; if(p == null) return; name = (String) task.obj[1]; } if(rs.next()) { kills = rs.getInt("kills"); deaths = rs.getInt("deaths"); points = rs.getInt("points"); wins = rs.getInt("wins"); played = rs.getInt("played"); kdr = rs.getFloat("kdr"); if(uuid == null) uuid = rs.getString("uuid"); } else { Player pl = Bukkit.getPlayer(name); if(p != null && pl == null) { p.sendMessage(MessageHandler.getMessage("stats-player-not-found").replace("%0%", name)); return; } else if(uuid == null) { uuid = pl.getUniqueId().toString(); } DatabaseThread.addTask(new DatabaseTask("INSERT INTO `" + DatabaseManager.tablePrefix + "players`(`uuid`, `lastname`) VALUES ('" + uuid + "','" + name + "')")); } StatisticData sd = new StatisticData(name, uuid, kills, deaths, points, wins, played, kdr); if(state != null) { StatisticManager.stats.remove(name.toLowerCase()); state.setStatistics(sd); } else { StatisticManager.setStatistics(p, sd); } } catch (SQLException e) { e.printStackTrace(); } } }