Advertisement
Guest User

Untitled

a guest
Dec 16th, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.56 KB | None | 0 0
  1. package io.github.Leonardo0013YT.EggWars.data;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.sql.Connection;
  6. import java.sql.DriverManager;
  7. import java.sql.PreparedStatement;
  8. import java.sql.ResultSet;
  9. import java.sql.SQLException;
  10. import java.sql.Statement;
  11. import java.util.TimeZone;
  12.  
  13. import org.bukkit.Bukkit;
  14. import org.bukkit.ChatColor;
  15. import org.bukkit.entity.Player;
  16. import org.bukkit.scheduler.BukkitRunnable;
  17.  
  18. import io.github.Leonardo0013YT.EggWars.Main;
  19. import io.github.Leonardo0013YT.EggWars.tops.BoardType;
  20. import io.github.Leonardo0013YT.EggWars.tops.Top;
  21.  
  22. public class Database {
  23.  
  24. public Main plugin;
  25. private Connection connection;
  26.  
  27. public Database(Main plugin) {
  28. this.plugin = plugin;
  29. conectar();
  30. }
  31.  
  32. public void conectar() {
  33. if (plugin.getConfig().getBoolean("MySQL.enabled")){
  34. try {
  35. Class.forName("com.mysql.jdbc.Driver");
  36. connection = DriverManager.getConnection("jdbc:mysql://" + (plugin.getConfig().getString("MySQL.host") +":"+ plugin.getConfig().getString("MySQL.port")) + "/" + plugin.getConfig().getString("MySQL.database") + "?serverTimezone=" + TimeZone.getDefault().getID() + "&autoReconnect=true&wait_timeout=31536000&interactive_timeout=31536000", plugin.getConfig().getString("MySQL.username"), plugin.getConfig().getString("MySQL.password"));
  37. Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "[EggWars] MySQL conectada.");
  38. newTables();
  39. } catch (Exception e) {
  40. e.printStackTrace();
  41. }
  42. } else {
  43. File DataFile = new File(plugin.getDataFolder(), "/EggWars.db");
  44. if (!DataFile.exists()) {
  45. try {
  46. DataFile.createNewFile();
  47. } catch (IOException ex) {
  48. ex.printStackTrace();
  49. Bukkit.getPluginManager().disablePlugin(plugin);
  50. }
  51. }
  52. try {
  53. Class.forName("org.sqlite.JDBC");
  54. try {
  55. connection = DriverManager.getConnection("jdbc:sqlite:" + DataFile);
  56. Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "[EggWars] SQLLite conectado.");
  57. newTables();
  58. } catch (SQLException ex2) {
  59. ex2.printStackTrace();
  60. Bukkit.getPluginManager().disablePlugin(plugin);
  61. }
  62. } catch (ClassNotFoundException ex3) {
  63. ex3.printStackTrace();
  64. Bukkit.getPluginManager().disablePlugin(plugin);
  65. }
  66. }
  67. }
  68.  
  69. public void checkConnection() {
  70. try {
  71. if (connection.isClosed() || connection == null){
  72. conectar();
  73. }
  74. } catch (SQLException e) {
  75. e.printStackTrace();
  76. }
  77. }
  78.  
  79. public void loadKills() {
  80. new BukkitRunnable() {
  81. @Override
  82. public void run() {
  83. Connection connection = getConnection();
  84. PreparedStatement preparedStatement = null;
  85. ResultSet resultSet = null;
  86. try {
  87. StringBuilder queryBuilder = new StringBuilder();
  88. queryBuilder.append("SELECT `UUID`, `Name`, `Kills` ");
  89. queryBuilder.append("FROM `EW_Data` ");
  90. queryBuilder.append("GROUP BY `UUID` ");
  91. queryBuilder.append("ORDER BY `Kills` DESC LIMIT 10;");
  92. preparedStatement = connection.prepareStatement(queryBuilder.toString());
  93. resultSet = preparedStatement.executeQuery();
  94. while (resultSet.next()) {
  95. new Top(resultSet.getString(2), resultSet.getInt(3), BoardType.KILLS);
  96. }
  97. } catch (SQLException sqlException) {
  98. sqlException.printStackTrace();
  99. } finally {
  100. if (resultSet != null) {
  101. try {
  102. resultSet.close();
  103. } catch (SQLException ignored) {
  104. }
  105. }
  106. if (preparedStatement != null) {
  107. try {
  108. preparedStatement.close();
  109. } catch (SQLException ignored) {
  110. }
  111. }
  112. }
  113. Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
  114. @Override
  115. public void run() {
  116. if (plugin.getLM().getKills() != null) {
  117. plugin.getTOP().createTop(plugin.getLM().getKills(), BoardType.KILLS);
  118. }
  119. }
  120. }, 0);
  121.  
  122. }
  123. }.runTaskAsynchronously(plugin);
  124. }
  125.  
  126. public void loadWins() {
  127. new BukkitRunnable() {
  128. @Override
  129. public void run() {
  130. Connection connection = getConnection();
  131. PreparedStatement preparedStatement = null;
  132. ResultSet resultSet = null;
  133. try {
  134. StringBuilder queryBuilder = new StringBuilder();
  135. queryBuilder.append("SELECT `UUID`, `Name`, `Wins` ");
  136. queryBuilder.append("FROM `EW_Data` ");
  137. queryBuilder.append("GROUP BY `UUID` ");
  138. queryBuilder.append("ORDER BY `Wins` DESC LIMIT 10;");
  139. preparedStatement = connection.prepareStatement(queryBuilder.toString());
  140. resultSet = preparedStatement.executeQuery();
  141. while (resultSet.next()) {
  142. new Top(resultSet.getString(2), resultSet.getInt(3), BoardType.WINS);
  143. }
  144. } catch (SQLException sqlException) {
  145. sqlException.printStackTrace();
  146. } finally {
  147. if (resultSet != null) {
  148. try {
  149. resultSet.close();
  150. } catch (SQLException ignored) {
  151. }
  152. }
  153. if (preparedStatement != null) {
  154. try {
  155. preparedStatement.close();
  156. } catch (SQLException ignored) {
  157. }
  158. }
  159. }
  160. Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
  161. @Override
  162. public void run() {
  163. if (plugin.getLM().getWins() != null) {
  164. plugin.getTOP().createTop(plugin.getLM().getWins(), BoardType.WINS);
  165. }
  166. }
  167. }, 0);
  168. }
  169. }.runTaskAsynchronously(plugin);
  170. }
  171.  
  172. public void loadEggs() {
  173. new BukkitRunnable() {
  174. @Override
  175. public void run() {
  176. Connection connection = getConnection();
  177. PreparedStatement preparedStatement = null;
  178. ResultSet resultSet = null;
  179. try {
  180. StringBuilder queryBuilder = new StringBuilder();
  181. queryBuilder.append("SELECT `UUID`, `Name`, `Eggs` ");
  182. queryBuilder.append("FROM `EW_Data` ");
  183. queryBuilder.append("GROUP BY `UUID` ");
  184. queryBuilder.append("ORDER BY `Eggs` DESC LIMIT 10;");
  185. preparedStatement = connection.prepareStatement(queryBuilder.toString());
  186. resultSet = preparedStatement.executeQuery();
  187. while (resultSet.next()) {
  188. new Top(resultSet.getString(2), resultSet.getInt(3), BoardType.EGGS);
  189. }
  190. } catch (SQLException sqlException) {
  191. sqlException.printStackTrace();
  192. } finally {
  193. if (resultSet != null) {
  194. try {
  195. resultSet.close();
  196. } catch (SQLException ignored) {
  197. }
  198. }
  199. if (preparedStatement != null) {
  200. try {
  201. preparedStatement.close();
  202. } catch (SQLException ignored) {
  203. }
  204. }
  205. }
  206. Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
  207. @Override
  208. public void run() {
  209. if (plugin.getLM().getEggs() != null) {
  210. plugin.getTOP().createTop(plugin.getLM().getEggs(), BoardType.EGGS);
  211. }
  212. }
  213. }, 0);
  214. }
  215. }.runTaskAsynchronously(plugin);
  216. }
  217.  
  218. public void createNewPlayer(String fId, String name) {
  219. PreparedStatement preparedStatement = null;
  220. try {
  221. StringBuilder queryBuilder = new StringBuilder();
  222. queryBuilder.append("INSERT INTO `EW_Data` ");
  223. queryBuilder.append("(`UUID`, `Name`, `Kills`, `Wins`, `Eggs`, `Kit`, `Glass`, `Coins`, `Played`, `Shots`, `Successhots`, `Broken`, `Placed`, `Walked`, `Deaths`, `Time`, `Trail`) ");
  224. queryBuilder.append("VALUES ");
  225. queryBuilder.append("(?, ?, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);");
  226. preparedStatement = connection.prepareStatement(queryBuilder.toString());
  227. preparedStatement.setString(1, fId);
  228. preparedStatement.setString(2, name);
  229. preparedStatement.executeUpdate();
  230. } catch (final SQLException sqlException) {
  231. sqlException.printStackTrace();
  232.  
  233. } finally {
  234. if (preparedStatement != null) {
  235. try {
  236. preparedStatement.close();
  237. } catch (final SQLException ignored) {
  238. }
  239. }
  240. }
  241. }
  242.  
  243. public boolean hasPlayer(Player p, String uuid) {
  244. PreparedStatement statement = null;
  245. try {
  246. statement = this.connection.prepareStatement("SELECT UUID FROM EW_Data WHERE UUID ='" + uuid + "'");
  247. ResultSet result = statement.executeQuery();
  248. if (result.next()) {
  249. return true;
  250. }
  251. } catch (SQLException e) {
  252. e.printStackTrace();
  253. if (statement != null) {
  254. try {
  255. statement.close();
  256. }
  257. catch (SQLException e2) {
  258. e2.printStackTrace();
  259. }
  260. return false;
  261. }
  262. return false;
  263. } finally {
  264. if (statement != null) {
  265. try {
  266. statement.close();
  267. }
  268. catch (SQLException e2) {
  269. e2.printStackTrace();
  270. }
  271. }
  272. }
  273. if (statement != null) {
  274. try {
  275. statement.close();
  276. }
  277. catch (SQLException e2) {
  278. e2.printStackTrace();
  279. }
  280. }
  281. return false;
  282. }
  283.  
  284. public void loadData(PlayerStat stat) {
  285. new BukkitRunnable() {
  286. @Override
  287. public void run() {
  288. Connection connection = getConnection();
  289. if (!hasPlayer(stat.getPlayer(), stat.getUUID())) {
  290. createNewPlayer(stat.getUUID(), stat.getPlayer().getName());
  291. loadData(stat);
  292. return;
  293. }
  294. PreparedStatement preparedStatement = null;
  295. ResultSet resultSet = null;
  296. try {
  297. StringBuilder queryBuilder = new StringBuilder();
  298. queryBuilder.append("SELECT `Kit`, `Glass`, `Kills`, `Wins`, `Eggs`, `Coins`, `Played`, `Shots`, `Successhots`, `Broken`, `Placed`, `Walked`, `Deaths`, `Time`, `Trail` ");
  299. queryBuilder.append("FROM `EW_Data` ");
  300. queryBuilder.append("WHERE `UUID` = ? ");
  301. queryBuilder.append("LIMIT 1;");
  302. preparedStatement = connection.prepareStatement(queryBuilder.toString());
  303. preparedStatement.setString(1, stat.getUUID().toString());
  304. resultSet = preparedStatement.executeQuery();
  305. if (resultSet != null && resultSet.next()) {
  306. stat.setKit(resultSet.getInt("Kit"));
  307. stat.setGlass(resultSet.getInt("Glass"));
  308. stat.setKills(resultSet.getInt("Kills"));
  309. stat.setWins(resultSet.getInt("Wins"));
  310. stat.setEggs(resultSet.getInt("Eggs"));
  311. stat.setCoins(resultSet.getInt("Coins"));
  312. stat.setPlayed(resultSet.getInt("Played"));
  313. stat.setShots(resultSet.getInt("Shots"));
  314. stat.setSuccesshots(resultSet.getInt("Successhots"));
  315. stat.setBroken(resultSet.getInt("Broken"));
  316. stat.setPlaced(resultSet.getInt("Placed"));
  317. stat.setWalked(resultSet.getInt("Walked"));
  318. stat.setDeaths(resultSet.getInt("Deaths"));
  319. stat.setTime(resultSet.getDouble("Time"));
  320. stat.setTrail(resultSet.getInt("Trail"));
  321. }
  322. } catch (SQLException sqlException) {
  323. sqlException.printStackTrace();
  324. } finally {
  325. if (resultSet != null) {
  326. try {
  327. resultSet.close();
  328. } catch (SQLException ignored) {
  329. }
  330. }
  331. if (preparedStatement != null) {
  332. try {
  333. preparedStatement.close();
  334. } catch (SQLException ignored) {
  335. }
  336. }
  337. }
  338. }
  339. }.runTaskAsynchronously(plugin);
  340. }
  341.  
  342. public void saveData(PlayerStat stat) {
  343. checkConnection();
  344. Connection connection = getConnection();
  345. PreparedStatement preparedStatement = null;
  346. try {
  347. StringBuilder queryBuilder = new StringBuilder();
  348. queryBuilder.append("UPDATE `EW_Data` SET ");
  349. queryBuilder.append("`Kit` = ?, `Glass` = ?, `Kills` = ?, `Wins` = ?, `Eggs` = ?, `Coins` = ?, `Played` = ?, `Shots` = ?, `Successhots` = ?, `Broken` = ?, `Placed` = ?, `Walked` = ?, `Deaths` = ?, `Time` = ?, `Trail` = ? ");
  350. queryBuilder.append("WHERE `UUID` = ?;");
  351. preparedStatement = connection.prepareStatement(queryBuilder.toString());
  352. preparedStatement.setInt(1, stat.getKit());
  353. preparedStatement.setInt(2, stat.getGlass());
  354. preparedStatement.setInt(3, stat.getKills());
  355. preparedStatement.setInt(4, stat.getWins());
  356. preparedStatement.setInt(5, stat.getEggs());
  357. preparedStatement.setInt(6, stat.getCoins());
  358. preparedStatement.setInt(7, stat.getPlayed());
  359. preparedStatement.setInt(8, stat.getShots());
  360. preparedStatement.setInt(9, stat.getSuccesshots());
  361. preparedStatement.setInt(10, stat.getBroken());
  362. preparedStatement.setInt(11, stat.getPlaced());
  363. preparedStatement.setInt(12, stat.getWalked());
  364. preparedStatement.setInt(13, stat.getDeaths());
  365. preparedStatement.setDouble(14, stat.getTime());
  366. preparedStatement.setInt(15, stat.getTrail());
  367. preparedStatement.setString(16, stat.getUUID());
  368. preparedStatement.executeUpdate();
  369. } catch (SQLException sqlException) {
  370. sqlException.printStackTrace();
  371.  
  372. } finally {
  373. if (preparedStatement != null) {
  374. try {
  375. preparedStatement.close();
  376. } catch (SQLException ignored) {
  377. }
  378. }
  379. }
  380. }
  381.  
  382. public Connection getConnection() {
  383. return connection;
  384. }
  385.  
  386. public void newTables() {
  387. Connection connection = getConnection();
  388. try {
  389. Statement statement = connection.createStatement();
  390. try {
  391. statement.executeUpdate("CREATE TABLE IF NOT EXISTS EW_Data (UUID VARCHAR(60), Name VARCHAR(60), Kills INT, Wins INT, Eggs INT, Kit INT, Glass INT, Coins INT, Played INT, Shots INT, Successhots INT, Broken INT, Placed INT, Walked INT, Deaths INT, Time DOUBLE, Trail INT)");
  392. } catch (SQLException ex) {
  393. try {
  394. if (statement != null) {
  395. statement.close();
  396. }
  397. } catch (SQLException ex2) {
  398. }
  399. return;
  400. } finally {
  401. try {
  402. if (statement != null) {
  403. statement.close();
  404. }
  405. } catch (SQLException ex3) {
  406. }
  407. } try {
  408. if (statement != null) {
  409. statement.close();
  410. }
  411. } catch (SQLException ex4) {
  412. }
  413. } catch (SQLException ex5) {
  414. }
  415. }
  416.  
  417. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement