org.arkhamnetwork.playersync.managers.SQLManager.java Source code

Java tutorial

Introduction

Here is the source code for org.arkhamnetwork.playersync.managers.SQLManager.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package org.arkhamnetwork.playersync.managers;

import com.google.common.base.Charsets;
import com.google.common.io.Resources;
import java.io.IOException;
import java.net.URL;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import org.arkhamnetwork.playersync.PlayerSync;
import org.arkhamnetwork.playersync.sql.Database;
import org.arkhamnetwork.playersync.sql.MySQL;

/**
 *
 * @author devan_000
 */
public class SQLManager {

    private static final PlayerSync plugin = PlayerSync.get();

    public static MySQL MySQL = null;
    public static Connection C = null;
    public static Database DB = null;

    public static boolean onEnable() {
        MySQL = new MySQL(plugin.getConfig());
        C = (Connection) MySQL.open();

        if (MySQL.shutdown) {
            return false;
        }

        DB = new Database(C, MySQL);

        try {
            setupSQLTables();
        } catch (IOException | SQLException e) {
            plugin.log("Error with SQL connection");
            return false;
        }

        return true;
    }

    private static void setupSQLTables() throws IOException, SQLException {
        URL resource = Resources.getResource(PlayerSync.class, "/tables.sql");
        String[] databaseStructure = Resources.toString(resource, Charsets.UTF_8).split(";");

        if (databaseStructure.length == 0) {
            return;
        }
        Statement statement = null;
        try {
            C.setAutoCommit(false);
            statement = C.createStatement();

            for (String query : databaseStructure) {
                query = query.trim();

                if (query.isEmpty()) {
                    continue;
                }

                statement.execute(query);
            }
            C.commit();
        } finally {
            C.setAutoCommit(true);
            if (statement != null && !statement.isClosed()) {
                statement.close();
            }
        }
    }

}