Advertisement
Guest User

Untitled

a guest
Mar 18th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.88 KB | None | 0 0
  1. package mysql;
  2.  
  3. import java.sql.Connection;
  4. import java.util.concurrent.ExecutorService;
  5. import java.util.concurrent.Executors;
  6.  
  7. import mysql.impl.Donation;
  8. import mysql.impl.Voting;
  9.  
  10. import com.mysql.jdbc.PreparedStatement;
  11. import com.server.GameSettings;
  12. /**
  13. * @author Gabriel Hannason
  14. */
  15. @SuppressWarnings({ "unchecked", "rawtypes" })
  16. public class MySQLController {
  17.  
  18. public static final ExecutorService SQL_SERVICE = Executors.newSingleThreadExecutor();
  19.  
  20. public static void toggle() {
  21. if(GameSettings.MYSQL_ENABLED) {
  22. MySQLProcessor.terminate();
  23.  
  24. CONTROLLER = null;
  25. DATABASES = null;
  26. GameSettings.MYSQL_ENABLED = false;
  27. } else if(!GameSettings.MYSQL_ENABLED) {
  28. init();
  29. GameSettings.MYSQL_ENABLED = false;
  30. }
  31. }
  32.  
  33. private static MySQLController CONTROLLER;
  34. private static Donation STORE;
  35. private static Voting VOTE;
  36.  
  37. public static void init() {
  38. try {
  39. Class.forName("com.mysql.jdbc.Driver");
  40. } catch(Exception e) {
  41. e.printStackTrace();
  42. }
  43. CONTROLLER = new MySQLController();
  44. }
  45.  
  46. public static MySQLController getController() {
  47. return CONTROLLER;
  48. }
  49.  
  50. public static Donation getStore() {
  51. return STORE;
  52. }
  53.  
  54. public enum Database {
  55. HIGHSCORES,
  56. RECOVERY,
  57. GRAND_EXCHANGE;
  58.  
  59. public boolean init() {
  60. // TODO Auto-generated method stub
  61. return false;
  62. }
  63.  
  64. public PreparedStatement prepare(String string) {
  65. // TODO Auto-generated method stub
  66. return null;
  67. }
  68.  
  69. public void destroyAll() {
  70. // TODO Auto-generated method stub
  71.  
  72. }
  73. }
  74.  
  75. /* NON STATIC CLASS START */
  76.  
  77. private static MySQLDatabase[] DATABASES = new MySQLDatabase[2];
  78.  
  79. public MySQLDatabase getDatabase(Database database) {
  80. return DATABASES[database.ordinal()];
  81. }
  82.  
  83.  
  84. public MySQLController() {
  85. /* DATABASES */
  86. DATABASES = new MySQLDatabase[]{
  87.  
  88. };
  89.  
  90.  
  91. MySQLProcessor.process();
  92. }
  93.  
  94. private static class MySQLProcessor {
  95.  
  96. private static boolean running;
  97.  
  98. private static void terminate() {
  99. running = false;
  100. }
  101.  
  102. public static void process() {
  103. if(running) {
  104. return;
  105. }
  106. running = true;
  107. SQL_SERVICE.submit(new Runnable() {
  108. public void run() {
  109. try {
  110. while(running) {
  111. if(!GameSettings.MYSQL_ENABLED) {
  112. terminate();
  113. return;
  114. }
  115. for(MySQLDatabase database : DATABASES) {
  116.  
  117. if(!database.active) {
  118. continue;
  119. }
  120.  
  121. if(database.connectionAttempts >= 5) {
  122. database.active = false;
  123. }
  124.  
  125. Connection connection = database.getConnection();
  126. try {
  127. connection.createStatement().execute("/* ping */ SELECT 1");
  128. } catch (Exception e) {
  129. database.createConnection();
  130. }
  131. }
  132. Thread.sleep(25000);
  133. }
  134. } catch(Exception e) {
  135. e.printStackTrace();
  136. }
  137. }
  138. });
  139. }
  140. }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement