TFGuilds/src/main/java/me/totalfreedom/tfguilds/sql/SQLDatabase.java

114 lines
3.6 KiB
Java

package me.totalfreedom.tfguilds.sql;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import me.totalfreedom.tfguilds.TFGuilds;
import me.totalfreedom.tfguilds.config.ConfigEntry;
public class SQLDatabase
{
private Connection connection;
public SQLDatabase(TFGuilds plugin)
{
String password = ConfigEntry.MYSQL_PASSWORD.getString();
if (password == null)
{
password = "";
}
try
{
if ("mysql".equals(ConfigEntry.CONNECTION_TYPE.getString().toLowerCase()))
{
connection = DriverManager.getConnection(String.format("jdbc:mysql://%s:%d/%s",
ConfigEntry.MYSQL_HOST.getString(),
ConfigEntry.MYSQL_PORT.getInteger(),
ConfigEntry.MYSQL_DATABASE.getString()),
ConfigEntry.MYSQL_USERNAME.getString(),
password);
}
else
{
connection = DriverManager.getConnection("jdbc:sqlite:" + createDBFile(plugin).getAbsolutePath().replace("%20", " "));
}
createTables();
plugin.getLogger().info("Connection to the MySQL server established!");
}
catch (SQLException ex)
{
plugin.getLogger().severe("Could not connect to MySQL server!");
}
}
public Connection getConnection()
{
return connection;
}
private void createTables() throws SQLException
{
connection.prepareStatement("CREATE TABLE IF NOT EXISTS `users` (" +
"`uuid` TEXT," +
"`tag` BOOLEAN," +
"`chat` BOOLEAN," +
"`rowid` INTEGER AUTO_INCREMENT PRIMARY KEY)")
.execute();
connection.prepareStatement("CREATE TABLE IF NOT EXISTS `warps` (" +
"`guild_id` TEXT," +
"`name` TEXT," +
"`x` DOUBLE," +
"`y` DOUBLE," +
"`z` DOUBLE," +
"`world` TEXT," +
"`rowid` INTEGER AUTO_INCREMENT PRIMARY KEY)")
.execute();
connection.prepareStatement("CREATE TABLE IF NOT EXISTS `guilds` (" +
"`id` TEXT," +
"`name` TEXT," +
"`owner` TEXT," +
"`moderators` TEXT," +
"`members` TEXT," +
"`tag` TEXT," +
"`default_rank` TEXT," +
"`state` INT," +
"`motd` TEXT," +
"`x` DOUBLE," +
"`y` DOUBLE," +
"`z` DOUBLE," +
"`world` TEXT," +
"`creation` LONG," +
"`usetag` BOOLEAN," +
"`rowid` INTEGER AUTO_INCREMENT PRIMARY KEY)")
.execute();
connection.prepareStatement("CREATE TABLE IF NOT EXISTS `ranks` (" +
"`guild_id` TEXT," +
"`name` TEXT," +
"`members` TEXT," +
"`rowid` INTEGER AUTO_INCREMENT PRIMARY KEY)")
.execute();
}
private File createDBFile(TFGuilds plugin)
{
File file = new File(plugin.getDataFolder(), "database.db");
if (!file.exists())
{
try
{
file.createNewFile();
plugin.getLogger().info("Creating database.db file");
}
catch (IOException e)
{
e.printStackTrace();
}
}
return file;
}
}