Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package mysql;
- import java.sql.Connection;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import mysql.impl.Donation;
- import mysql.impl.Voting;
- import com.mysql.jdbc.PreparedStatement;
- import com.server.GameSettings;
- /**
- * @author Gabriel Hannason
- */
- @SuppressWarnings({ "unchecked", "rawtypes" })
- public class MySQLController {
- public static final ExecutorService SQL_SERVICE = Executors.newSingleThreadExecutor();
- public static void toggle() {
- if(GameSettings.MYSQL_ENABLED) {
- MySQLProcessor.terminate();
- CONTROLLER = null;
- DATABASES = null;
- GameSettings.MYSQL_ENABLED = false;
- } else if(!GameSettings.MYSQL_ENABLED) {
- init();
- GameSettings.MYSQL_ENABLED = false;
- }
- }
- private static MySQLController CONTROLLER;
- private static Donation STORE;
- private static Voting VOTE;
- public static void init() {
- try {
- Class.forName("com.mysql.jdbc.Driver");
- } catch(Exception e) {
- e.printStackTrace();
- }
- CONTROLLER = new MySQLController();
- }
- public static MySQLController getController() {
- return CONTROLLER;
- }
- public static Donation getStore() {
- return STORE;
- }
- public enum Database {
- HIGHSCORES,
- RECOVERY,
- GRAND_EXCHANGE;
- public boolean init() {
- // TODO Auto-generated method stub
- return false;
- }
- public PreparedStatement prepare(String string) {
- // TODO Auto-generated method stub
- return null;
- }
- public void destroyAll() {
- // TODO Auto-generated method stub
- }
- }
- /* NON STATIC CLASS START */
- private static MySQLDatabase[] DATABASES = new MySQLDatabase[2];
- public MySQLDatabase getDatabase(Database database) {
- return DATABASES[database.ordinal()];
- }
- public MySQLController() {
- /* DATABASES */
- DATABASES = new MySQLDatabase[]{
- };
- MySQLProcessor.process();
- }
- private static class MySQLProcessor {
- private static boolean running;
- private static void terminate() {
- running = false;
- }
- public static void process() {
- if(running) {
- return;
- }
- running = true;
- SQL_SERVICE.submit(new Runnable() {
- public void run() {
- try {
- while(running) {
- if(!GameSettings.MYSQL_ENABLED) {
- terminate();
- return;
- }
- for(MySQLDatabase database : DATABASES) {
- if(!database.active) {
- continue;
- }
- if(database.connectionAttempts >= 5) {
- database.active = false;
- }
- Connection connection = database.getConnection();
- try {
- connection.createStatement().execute("/* ping */ SELECT 1");
- } catch (Exception e) {
- database.createConnection();
- }
- }
- Thread.sleep(25000);
- }
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- });
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement