package me.yamas.tools.data.mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.Location; import me.yamas.tools.Main; import me.yamas.tools.objects.User; import me.yamas.tools.objects.utils.UserUtils; import me.yamas.tools.utils.Util; public class MySQL { private static Connection conn; private static void checkTable(){ openConnection(); StringBuilder sb = new StringBuilder(); sb.append("create table if not exists users("); sb.append("uuid varchar(100) not null,"); sb.append("name varchar(50) not null,"); sb.append("god int,"); sb.append("mute bigint,"); sb.append("homeWorld varchar(120),"); sb.append("homeX int,"); sb.append("homeY int,"); sb.append("homeZ int,"); sb.append("primary key(uuid));"); sb.append("create table if not exists bans("); sb.append("uuid varchar(100) not null,"); sb.append("victim varchar(50) not null,"); sb.append("punisher varchar(100),"); sb.append("reason varchar(100),"); sb.append("giveDate bigint,"); sb.append("deleteDate bigint,"); sb.append("primary key(uuid));"); try { conn.createStatement().executeUpdate(sb.toString()); } catch (SQLException e) { e.printStackTrace(); } closeConnection(); } /* * USERS */ private static void loadUsers() throws SQLException{ openConnection(); int i = 0; ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM `users`"); while(rs.next()){ User u = User.get(UUID.fromString(rs.getString(1))); u.setName(rs.getString(2)); int hX = rs.getInt(6); int hY = rs.getInt(7); int hZ = rs.getInt(8); String hWorld = rs.getString(5); long mute = rs.getLong(4); u.setHome(new Location(Bukkit.getWorld(hWorld), hX, hY, hZ)); u.setMute(mute); u.setGod(rs.getInt(3) == 1 ? true : false); i++; } Util.sendMessage(Bukkit.getConsoleSender(), "&8[&4YamasTools&8] &7Zaladowano &c" + i + " &7graczy!"); closeConnection(); } private static void saveUsers() throws SQLException{ openConnection(); int i = 0; for(User u : UserUtils.getUsers()){ StringBuilder sb = new StringBuilder(); sb.append("INSERT INTO users (uuid, name, god, mute, homeWorld, homeX, homeY, homeZ) VALUES ("); sb.append("'" + u.getUUID().toString() +"',"); sb.append("'" + u.getName() +"',"); sb.append("'" + u.isGod() +"',"); sb.append("'" + u.getMute() +"',"); sb.append("'" + u.getHome().getWorld().getName() +"',"); sb.append("'" + u.getHome().getBlockX() +"',"); sb.append("'" + u.getHome().getBlockY() +"',"); sb.append("'" + u.getHome().getBlockZ() +"'"); sb.append(") ON DUPLICATE KEY UPDATE "); sb.append("name='" + u.getName() +"',"); sb.append("god='" + u.isGod() +"',"); sb.append("mute='" + u.getMute() +"',"); sb.append("homeWorld='" + u.getHome().getWorld().getName() +"',"); sb.append("homeX='" + u.getHome().getBlockX() +"',"); sb.append("homeY='" + u.getHome().getBlockY() +"',"); sb.append("homeZ='" + u.getHome().getBlockZ() +"';"); conn.createStatement().executeUpdate(sb.toString()); i++; } Util.sendMessage(Bukkit.getConsoleSender(), "&8[&4YamasTools&8] &7Zapisano &c" + i + " &7graczy!"); closeConnection(); } /* * BANS */ private static void loadBans() throws SQLException{ openConnection(); int i = 0; ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM `bans`"); while(rs.next()){ User u = User.get(UUID.fromString(rs.getString(1))); u.setName(rs.getString(2)); u.setPunisher(rs.getString(3)); u.setReason(rs.getString(4)); u.setBanTime(rs.getLong(4)); u.setValidateTill(rs.getLong(5)); i++; } Util.sendMessage(Bukkit.getConsoleSender(), "&8[&4YamasTools&8] &7Zaladowano &c" + i + " &7banow!"); closeConnection(); } private static void saveBans() throws SQLException{ openConnection(); int i = 0; for(User u : UserUtils.getUsers()){ StringBuilder sb = new StringBuilder(); sb.append("INSERT INTO bans (uuid, victim, punisher, reason, giveDate, deleteDate) VALUES ("); sb.append("'" + u.getUUID().toString() +"',"); sb.append("'" + u.getName() +"',"); sb.append("'" + u.getPunisher() +"',"); sb.append("'" + u.getReason() +"',"); sb.append("'" + u.getBanTime() +"',"); sb.append("'" + u.getValidateTill() +"'"); sb.append(") ON DUPLICATE KEY UPDATE "); sb.append("victim='" + u.getName() +"',"); sb.append("punisher='" + u.getPunisher() +"',"); sb.append("reason='" + u.getReason() +"',"); sb.append("giveDate='" + u.getBanTime() +"',"); sb.append("deleteDate='" + u.getValidateTill() +"';"); conn.createStatement().executeUpdate(sb.toString()); i++; } Util.sendMessage(Bukkit.getConsoleSender(), "&8[&4YamasTools&8] &7Zapisano &c" + i + " &7banow!"); closeConnection(); } private static synchronized void openConnection(){ String host = Main.getInstance().getConfig().getString("mysql.host"); int port = Main.getInstance().getConfig().getInt("mysql.port"); String database = Main.getInstance().getConfig().getString("mysql.database"); String user = Main.getInstance().getConfig().getString("mysql.user"); String password = Main.getInstance().getConfig().getString("mysql.password"); if(!isConnected()){ try{ conn = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database + "?user=" + user + "&password=" + password); } catch(SQLException e){ e.printStackTrace(); } } } private static synchronized void closeConnection(){ if(isConnected()){ try{ conn.close(); } catch(SQLException e){ e.printStackTrace(); } } } public static boolean isConnected() { try{ if(conn == null) return false; if(conn.isClosed()) return false; } catch(SQLException e){ e.printStackTrace(); } return true; } }