Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.enervate.lobby;
- import java.sql.*;
- import java.util.concurrent.*;
- import org.bukkit.Bukkit;
- import org.bukkit.plugin.Plugin;
- @SuppressWarnings("ALL")
- public class SQLUtil {
- private static SQLUtil util;
- private Connection connection;
- private Plugin plugin;
- private String dbLocation;
- private String connect;
- private String host;
- private String port;
- private String database;
- private String user;
- private String pass;
- private ExecutorService service = Executors.newFixedThreadPool(1);
- public SQLUtil(Plugin main) {
- util = this;
- plugin = main;
- host = plugin.getConfig().getString("mysql.host");
- port = plugin.getConfig().getString("mysql.port");
- database = plugin.getConfig().getString("mysql.database");
- user = plugin.getConfig().getString("mysql.user");
- pass = plugin.getConfig().getString("mysql.pass");
- connect = "jdbc:mysql://" + host + ":" + port + "/" + database + "?useUnicode=true&" + "user=" + user + "&password=" + pass;
- }
- public static SQLUtil getInstance() {
- return util;
- }
- public synchronized void openConnection() {
- try {
- Class.forName("com.mysql.jdbc.Driver").newInstance();
- connection = DriverManager.getConnection(connect);
- } catch(Exception e) {
- Bukkit.getLogger().info("####################################################");
- Bukkit.getLogger().info(" ");
- Bukkit.getLogger().info("[SQLUtil]: Check your config! Plugin can not connect to the database!");
- Bukkit.getLogger().info(" ");
- Bukkit.getLogger().info("####################################################");
- }
- }
- public void closeConnection() {
- try {
- connection.close();
- connection = null;
- plugin = null;
- dbLocation = null;
- connect = null;
- host = null;
- port = null;
- database = null;
- user = null;
- pass = null;
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public synchronized void execute(final String query, final Object... values) {
- new SQLThread(query, values).start();
- }
- public synchronized ResultSet executeQuery(final String query, final Object... values) {
- final Future<ResultSet> f = service.submit(new SQLTask(query, values));
- /*while(!f.isDone()) {
- // nothing... ugh
- }*/
- try {
- return f.get();
- } catch (Exception e1) {
- return null;
- }
- }
- private class StartThread extends Thread {
- public void run() {
- openConnection();
- }
- }
- private class SQLThread extends Thread {
- private String query;
- private Object[] values;
- public SQLThread(final String query, final Object... values) {
- this.query = query;
- this.values = values;
- }
- public void run() {
- try {
- if(connection == null || connection.isClosed()) {
- openConnection();
- }
- PreparedStatement ps = connection.prepareStatement(query);
- for (int i = 0; i < values.length; i++) {
- ps.setObject(i + 1, values[i]);
- }
- ps.executeUpdate();
- ps.close();
- } catch (Exception e) {
- System.out.println("SQLUtil Exception!");
- System.out.println(" ");
- e.printStackTrace();
- }
- }
- }
- private class SQLTask implements Callable<ResultSet> {
- private String query;
- private Object[] values;
- public SQLTask(final String query, final Object... values) {
- this.query = query;
- this.values = values;
- }
- @Override
- public ResultSet call() {
- try {
- if (connection == null || connection.isClosed()) {
- openConnection();
- }
- PreparedStatement ps = connection.prepareStatement(query);
- for (int i = 0; i < values.length; i++) {
- ps.setObject(i + 1, values[i]);
- }
- return ps.executeQuery();
- } catch (Exception e1) {
- System.out.println("SQLUtil Exception!");
- System.out.println(" ");
- e1.printStackTrace();
- return null;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement