Guest User

Untitled

a guest
May 2nd, 2017
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.87 KB | None | 0 0
  1. package me.uhc.api.objects;
  2.  
  3. import me.uhc.api.Main;
  4. import me.uhc.api.managers.ConfigManager;
  5. import me.uhc.api.managers.MySQLManager;
  6. import me.uhc.api.managers.UserManager;
  7. import me.uhc.api.utils.BukkitSerializationUtils;
  8. import me.uhc.api.utils.Utils;
  9. import me.uhc.guilds.managers.GuildManager;
  10. import me.uhc.guilds.objects.Guild;
  11. import org.bukkit.Bukkit;
  12. import org.bukkit.OfflinePlayer;
  13. import org.bukkit.plugin.Plugin;
  14.  
  15. import java.sql.Connection;
  16. import java.sql.DriverManager;
  17. import java.sql.ResultSet;
  18. import java.sql.SQLException;
  19. import java.sql.PreparedStatement;
  20. import java.util.ArrayList;
  21. import java.util.List;
  22. import java.util.UUID;
  23.  
  24. /**
  25. * Created by mikigal on 2016-03-30.
  26. */
  27. public class MySQL {
  28.  
  29. private String host;
  30. private int port;
  31. private String user;
  32. private String pass;
  33. private String database;
  34. private String url;
  35. private Connection conn;
  36.  
  37. public MySQL(String host, int port, String user, String pass, String database){
  38. this.host = host;
  39. this.port = port;
  40. this.user = user;
  41. this.pass = pass;
  42. this.database = database;
  43. this.buildURL();
  44. this.connect();
  45. }
  46.  
  47. public void buildURL(){
  48. this.url = "jdbc:mysql://" + this.host + ":" + this.port + "/" + this.database;
  49. }
  50.  
  51. public boolean isConnected(){
  52. if(conn == null){
  53. return false;
  54. }
  55. return true;
  56. }
  57.  
  58. public boolean connect(){
  59. try {
  60. Utils.sendMsgToConsole(Main.getInst(), "&aUsing url to connect: " + this.url);
  61. conn = DriverManager.getConnection(this.url, this.user, this.pass);
  62. Utils.sendMsgToConsole(Main.getInst(), "&aPolaczono z baza danych MySQL!");
  63. return true;
  64. } catch (SQLException e) {
  65. Utils.sendMsgToConsole(Main.getInst(), "&c" + e.getMessage());
  66. }
  67. return false;
  68. }
  69.  
  70. public boolean disconnect(){
  71. if(isConnected()){
  72. try {
  73. this.conn.close();
  74. return true;
  75. } catch (SQLException e) {
  76. Utils.sendMsgToConsole(Main.getInst(), "&c" + e.getMessage());
  77. }
  78. }
  79. return false;
  80. }
  81.  
  82. public void send(String sql){
  83. if(!isConnected()){
  84. connect();
  85. }
  86. Bukkit.getScheduler().runTaskAsynchronously(Main.getInst(), () -> {
  87. try {
  88. PreparedStatement ps = conn.prepareStatement(sql);
  89. ps.execute();
  90. } catch (SQLException e) {
  91. Utils.sendMsgToConsole(Main.getInst(), "&c" + e.getMessage());
  92. e.printStackTrace();
  93. }
  94. });
  95. }
  96.  
  97. public ResultSet query(String sql){
  98. if(!isConnected()){
  99. connect();
  100. }
  101. try {
  102. return this.conn.createStatement().executeQuery(sql);
  103. } catch (SQLException e) {
  104. Utils.sendMsgToConsole(Main.getInst(), "&c" + e.getMessage());
  105. }
  106. return null;
  107. }
  108.  
  109. public void createUsersFromDatabase(){
  110. try{
  111. int i = 0;
  112. ResultSet rs = query("SELECT * FROM `tools`");
  113. while(rs.next()){
  114. UUID uuid = UUID.fromString(rs.getString("uuid"));
  115. int kills = (int) get("pvp_rank", "kills", uuid);
  116. int deaths = (int) get("pvp_rank", "deaths", uuid);
  117. double kd = (double) get("pvp_rank", "kd", uuid);
  118. int rank = (int) get("pvp_rank", "rank", uuid);
  119. String killHistory = (String) get("pvp_rank", "killHistory", uuid);
  120. long firstJoinTime = (long) get("tools", "firstJoinTime", uuid);
  121. String password = (String) get("auth", "password", uuid);
  122. List<UUID> ignored = new ArrayList<>();
  123. for(String s : rs.getString("ignored").split("/")){
  124. if(s.length() > 2){
  125. ignored.add(UUID.fromString(s));
  126. }
  127. }
  128. int blockAmount = rs.getInt("blockAmount");
  129. int dropLevel = rs.getInt("dropLevel");
  130. String invBackup = rs.getString("invBackup");
  131. String armorBackup = rs.getString("armorBackup");
  132.  
  133. long timeOnServer = (long) get("stats", "timeOnServer", uuid);
  134. int kox = (int) get("stats", "kox", uuid);
  135. int ref = (int) get("stats", "ref", uuid);
  136. int pearl = (int) get("stats", "pearl", uuid);
  137. int obsidian = (int) get("stats", "obsidian", uuid);
  138. int meat = (int) get("stats", "meat", uuid);
  139. int arrow = (int) get("stats", "arrow", uuid);
  140.  
  141. String registerIp = (String) get("auth", "ip", uuid);
  142. User u = UserManager.createUser(uuid, kills, deaths, kd, rank, killHistory, firstJoinTime, registerIp, password, ignored, invBackup, armorBackup, blockAmount, dropLevel, timeOnServer, kox, ref, pearl, obsidian, meat, arrow, true);
  143. i++;
  144. }
  145. Utils.sendMsgToConsole(Main.getInst(), "&aZaladowany: &c" + i + " &agraczy z bazy danych!");
  146. Main.getMySQL().createBansFromDatabase();
  147. }catch(SQLException e){
  148. Utils.sendMsgToConsole(Main.getInst(), "&c" + e.getMessage());
  149. }
  150. }
  151. public void createBansFromDatabase(){
  152. try{
  153. int i = 0;
  154. ResultSet rs = query("SELECT * FROM `bans`");
  155. while(rs.next()){
  156. UUID uuid = UUID.fromString(rs.getString("uuid"));
  157. String admin = rs.getString("admin");
  158. String reason = rs.getString("reason");
  159. long banDate = rs.getLong("banDate");
  160. long time = rs.getLong("time");
  161.  
  162. User u = UserManager.getUser(uuid);
  163. Ban ban = new Ban(uuid, admin, reason, banDate, time);
  164. u.setBan(ban);
  165. i++;
  166. }
  167. Utils.sendMsgToConsole(Main.getInst(), "&aZaladowany: &c" + i + " &abanow z bazy danych!");
  168. }catch(SQLException e){
  169. Utils.sendMsgToConsole(Main.getInst(), "&c" + e.getMessage());
  170. }
  171. }
  172.  
  173. public User createUserFromDatabase(UUID uuid){
  174.  
  175. int kills = (int) get("pvp_rank", "kills", uuid);
  176. int deaths = (int) get("pvp_rank", "deaths", uuid);
  177. double kd = (double) get("pvp_rank", "kd", uuid);
  178. int rank = (int) get("pvp_rank", "rank", uuid);
  179. String killHistory = (String) get("pvp_rank", "killHistory", uuid);
  180. long firstJoinTime = (long) get("tools", "firstJoinTime", uuid);
  181. String password = (String) get("auth", "password", uuid);
  182. List<UUID> ignored = new ArrayList<>();
  183.  
  184. String rawIgnored = (String) get("tools", "ignored", uuid);
  185.  
  186. for(String s : rawIgnored.split("/")){
  187. if(s.length() > 2){
  188. ignored.add(UUID.fromString(s));
  189. }
  190. }
  191. int blockAmount = (int) get("tools", "blockAmount", uuid);
  192. int dropLevel = (int) get("tools", "dropLevel", uuid);
  193. String invBackup = (String) get("tools", "invBackup", uuid);
  194. String armorBackup = (String) get("tools", "armorBackup", uuid);
  195.  
  196. long timeOnServer = (long) get("stats", "timeOnServer", uuid);
  197. int kox = (int) get("stats", "kox", uuid);
  198. int ref = (int) get("stats", "ref", uuid);
  199. int pearl = (int) get("stats", "pearl", uuid);
  200. int obsidian = (int) get("stats", "obsidian", uuid);
  201. int meat = (int) get("stats", "meat", uuid);
  202. int arrow = (int) get("stats", "arrow", uuid);
  203.  
  204. String registerIp = (String) get("auth", "ip", uuid);
  205. return UserManager.createUser(uuid, kills, deaths, kd, rank, killHistory, firstJoinTime, registerIp, password, ignored, invBackup, armorBackup, blockAmount, dropLevel, timeOnServer, kox, ref, pearl, obsidian, meat, arrow, true);
  206.  
  207. }
  208.  
  209. public Object get(String tableName, String columnName, UUID uuid){
  210. try {
  211. PreparedStatement ps = conn.prepareStatement("SELECT * FROM `" + tableName + "` WHERE uuid = ?");
  212. ps.setString(1, uuid.toString());
  213. ResultSet rs = ps.executeQuery();
  214. rs.last();
  215. if (rs.getRow() != 0) {
  216. rs.first();
  217. return rs.getObject(columnName);
  218. }
  219. } catch (SQLException e) {
  220. Utils.sendMsgToConsole(Main.getInst(), "&c" + e.getMessage());
  221. }
  222. return null;
  223. }
  224.  
  225. public Object get(String tableName, String columnName, String whereColumn, Object whereValue){
  226. try {
  227. PreparedStatement ps = conn.prepareStatement("SELECT * FROM `" + tableName + "` WHERE " + whereColumn + " = ?");
  228. ps.setObject(1, whereValue);
  229. ResultSet rs = ps.executeQuery();
  230. rs.last();
  231. if (rs.getRow() != 0) {
  232. rs.first();
  233. return rs.getObject(columnName);
  234. }
  235. } catch (SQLException e) {
  236. Utils.sendMsgToConsole(Main.getInst(), "&c" + e.getMessage());
  237. }
  238. return null;
  239. }
  240.  
  241. public void set(String tableName, String columnName, Object newValue, UUID uuid){
  242. Bukkit.getScheduler().runTaskAsynchronously(Main.getInst(), () -> {
  243. try {
  244. PreparedStatement ps = conn.prepareStatement("UPDATE `" + tableName + "` SET `" + columnName + "`='" + newValue + "' WHERE uuid = ?");
  245. ps.setString(1, uuid.toString());
  246. ps.executeUpdate();
  247. ps.close();
  248. } catch (SQLException e) {
  249. e.printStackTrace();
  250. }
  251. });
  252. }
  253.  
  254. public void setFromTag(String tableName, String columnName, Object newValue, String tag){
  255. Bukkit.getScheduler().runTaskAsynchronously(Main.getInst(), () -> {
  256. try {
  257. PreparedStatement ps = conn.prepareStatement("UPDATE `" + tableName + "` SET `" + columnName + "`='" + newValue + "' WHERE tag = ?");
  258. ps.setString(1, tag);
  259. ps.executeUpdate();
  260. ps.close();
  261. } catch (SQLException e) {
  262. e.printStackTrace();
  263. }
  264. });
  265. }
  266.  
  267. public void saveDefaultData(User u){
  268. boolean newPlayer = get("tools", "name", u.getUuid()) == null;
  269. if(newPlayer){
  270. this.send("INSERT INTO `tools` VALUES ('" + String.valueOf(u.getUuid()) + "','" + u.getName() + "','NO_BACKUP','NO_BACKUP','" + System.currentTimeMillis() + "',' ', '0', '0')");
  271. this.send("INSERT INTO `pvp_rank` VALUES ('" + String.valueOf(u.getUuid()) + "','0','0','1.0','1000','');");
  272. this.send("INSERT INTO `auth` VALUES ('" + u.getUuid() + "','xxx','" + u.getRegisterIp() + "');");
  273. this.send("INSERT INTO `stats` VALUES ('" + u.getUuid() + "','0','0','0','0','0','0','0');");
  274. }
  275. }
  276.  
  277. public void ban(User u, Ban b){
  278. this.send("INSERT INTO `bans` VALUES ('" + u.getUuid() + "','" + b.getAdmin() + "','" + b.getReason() + "','" + b.getBanDate() + "','" + b.getTime() + "');");
  279. }
  280. public void unban(User user) {
  281. Bukkit.getScheduler().runTaskAsynchronously(Main.getInst(), () -> {
  282. try {
  283. PreparedStatement ps = conn.prepareStatement("DELETE FROM `bans` WHERE uuid = ?");
  284. ps.setString(1, user.getUuid().toString());
  285. ps.executeUpdate();
  286. ps.close();
  287. } catch (SQLException e) {
  288. e.printStackTrace();
  289. }
  290. });
  291. }
  292.  
  293. public List<UUID> getTopRanks(){
  294. List<UUID> uu = new ArrayList<UUID>();
  295. UUID uuid;
  296. try{
  297. PreparedStatement ps = conn.prepareStatement("SELECT * FROM pvp_rank ORDER BY rank DESC LIMIT 15;");
  298. ResultSet rs = ps.executeQuery();
  299. while(rs.next()){
  300. uuid = UUID.fromString(rs.getString("uuid"));
  301. uu.add(uuid);
  302. }
  303. }catch(SQLException e){
  304. Utils.sendMsgToConsole(Main.getInst(), "&c" + e.getMessage());
  305. }
  306. return uu;
  307. }
  308. public List<UUID> getTopDrops(){
  309. List<UUID> uu = new ArrayList<UUID>();
  310. UUID uuid;
  311. try{
  312. PreparedStatement ps = conn.prepareStatement("SELECT * FROM tools ORDER BY blockAmount DESC LIMIT 10;");
  313. ResultSet rs = ps.executeQuery();
  314. while(rs.next()){
  315. uuid = UUID.fromString(rs.getString("uuid"));
  316. uu.add(uuid);
  317. }
  318. }catch(SQLException e){
  319. Utils.sendMsgToConsole(Main.getInst(), "&c" + e.getMessage());
  320. }
  321. return uu;
  322. }
  323. public List<Guild> getTopGuilds(){
  324. List<Guild> gg = new ArrayList<>();
  325. try{
  326. PreparedStatement ps = conn.prepareStatement("SELECT * FROM guilds_guilds ORDER BY points DESC LIMIT 15;");
  327. ResultSet rs = ps.executeQuery();
  328. while(rs.next()){
  329. gg.add(GuildManager.getGuild(rs.getString("tag")));
  330. }
  331. }catch(SQLException e){
  332. Utils.sendMsgToConsole(Main.getInst(), "&c" + e.getMessage());
  333. }
  334. return gg;
  335. }
  336.  
  337. public void reconnect(){
  338. try {
  339. this.conn.prepareStatement("SELECT * FROM `tools`").executeQuery();
  340. } catch (SQLException e) {
  341. Utils.sendMsgToConsole(Main.getInst(), "&c" + e.getMessage());
  342. }
  343. }
  344. public void sendOnMainThread(String sql){
  345. try {
  346. if(!isConnected()){
  347. connect();
  348. }
  349. PreparedStatement ps = conn.prepareStatement(sql);
  350. ps.execute();
  351. } catch (SQLException e) {
  352. Utils.sendMsgToConsole(Main.getInst(), "&c" + e.getMessage());
  353. }
  354. }
  355. }
Add Comment
Please, Sign In to add comment