Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.foxeik.bans.data.database;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.UUID;
- import me.foxeik.bans.data.cfg.Settings;
- import me.foxeik.bans.data.ut.DataManager;
- import me.foxeik.bans.objects.Ban;
- import me.foxeik.bans.objects.User;
- import me.foxeik.bans.objects.utils.BanUtils;
- import me.foxeik.bans.objects.utils.UserUtils;
- import me.foxeik.bans.utils.Logger;
- import me.foxeik.bans.utils.enums.BanType;
- public class MySQLData implements DataManager{
- private static Connection conn;
- public MySQLData(){
- checkTables();
- }
- @Override
- public void loadData(boolean log){
- clearLists();
- loadUsers(log);
- loadBans(log);
- checkObjects(log);
- }
- @Override
- public void loadUsers(boolean log){
- openConnection();
- int loaded = 0;
- try{
- ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM `users`");
- while(rs.next()){
- User u = User.get(rs.getString("name"));
- try {
- u.setUuid(UUID.fromString(rs.getString("uuid")));
- u.setName(rs.getString("name"));
- u.setAdmin(rs.getBoolean("admin"));
- u.setBanned(rs.getInt("banned"));
- u.setBan(new Ban(rs.getString("ban")));
- loaded++;
- } catch (Exception e) {
- Logger.error("Ladowanie usera "+u.getName()+" nie powiodlo sie!");
- UserUtils.removeUser(u);
- }
- }
- } catch (SQLException e){
- e.printStackTrace();
- }
- if(log) Logger.info("Zaladowane "+loaded+" graczy!");
- closeConnection();
- }
- @Override
- public void loadBans(boolean log){
- openConnection();
- int loaded = 0;
- try {
- ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM `bans`");
- while(rs.next()){
- Ban b = Ban.get(rs.getString("name"));
- try {
- b.setName(rs.getString("name"));
- b.setReason(rs.getString("reason"));
- b.setType(BanType.valueOf(rs.getString("type")));
- b.setAdmin(User.get(rs.getString("admin")));
- b.setUser(User.get(rs.getString("user")));
- b.setBanTime(rs.getLong("banTime"));
- b.setUnbanTime(rs.getLong("unbanTime"));
- loaded++;
- } catch (Exception e) {
- Logger.error("Ladowanie bana "+b.getName()+" nie powiodlo sie!");
- BanUtils.removeBan(b);
- }
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- if(log) Logger.info("Zaladowane "+loaded+" banow!");
- closeConnection();
- }
- @Override
- public void saveData(boolean log){
- saveUsers(log);
- saveBans(log);
- }
- @Override
- public void saveUsers(boolean log){
- int users = 0;
- for(User u : UserUtils.getUsers()){
- saveUser(u);
- users++;
- }
- if(log) Logger.info("Zapisano "+users+" graczy!");
- }
- @Override
- public void saveUser(User u){
- openConnection();
- StringBuilder sb = new StringBuilder();
- sb.append("INSERT INTO users(uuid, name, admin, banned, ban) VALUES (");
- sb.append("'" + u.getUuid().toString() + "'");
- sb.append("'" + u.getName() + "'");
- sb.append("'" + u.isAdmin() + "'");
- sb.append("'" + u.getBanned() + "'");
- if(u.getBan()==null){
- sb.append("'" + null + "'");
- } else{
- sb.append("'" + u.getBan().getName() + "'");
- }
- sb.append(") ON DUPLICATE KEY UPDATE ");
- sb.append("admin='" + u.isAdmin() + "',");
- sb.append("banned='" + u.getBanned() + "',");
- if(u.getBan()==null){
- sb.append("ban='" + null + "'");
- } else{
- sb.append("ban='" + u.getBan().getName() + "'");
- }
- try {
- conn.createStatement().executeUpdate(sb.toString());
- } catch (SQLException e) {
- e.printStackTrace();
- }
- closeConnection();
- }
- @Override
- public void saveBans(boolean log){
- int bans = 0;
- for(Ban b : BanUtils.getBans()){
- saveBan(b);
- bans++;
- }
- if(log) Logger.info("Zapisano "+bans+" banow!");
- }
- @Override
- public void saveBan(Ban b){
- openConnection();
- StringBuilder sb = new StringBuilder();
- sb.append("INSERT INTO bans(name, reason, type, admin, user, banTime, unbanTime) VALUES (");
- sb.append("'" + b.getName() + "'");
- sb.append("'" + b.getReason() + "'");
- sb.append("'" + b.getType().toString() + "'");
- sb.append("'" + b.getAdmin().getName() + "'");
- sb.append("'" + b.getUser().getName() + "'");
- sb.append("'" + b.getBanTime() + "'");
- sb.append("'" + b.getUnbanTime() + "')");
- try {
- conn.createStatement().executeUpdate(sb.toString());
- } catch (SQLException e) {
- e.printStackTrace();
- }
- closeConnection();
- }
- @Override
- public void checkObjects(boolean log){
- int users = 0;
- int bans = 0;
- for(User u : UserUtils.getUsers()){
- if(u.getName() == null){
- users++;
- UserUtils.removeUser(u);
- }
- }
- for(Ban b : BanUtils.getBans()){
- if(b.getName()==null || b.getReason() == null || b.getUser() == null || b.getAdmin()==null){
- bans++;
- BanUtils.removeBan(b);
- }
- }
- if(log){
- if(users>0) Logger.warn("Pominieto "+users+" userow przy ladowaniu!");
- if(bans>0) Logger.warn("Pominieto "+bans+" banow przy ladowaniu!");
- }
- }
- @Override
- public void clearLists() {
- UserUtils.getUsers().clear();
- BanUtils.getBans().clear();
- }
- //========================================================================
- private boolean isConnected(){
- try{
- if(conn == null) return false;
- if(conn.isClosed()) return false;
- } catch (SQLException e){
- e.printStackTrace();
- }
- return true;
- }
- private void openConnection(){
- if(!isConnected()){
- try {
- conn = DriverManager.getConnection("jdbc:mysql://"+Settings.getMsqlHostname()+":"+Settings.getMsqlPort()+"/"+Settings.getMsqlDatabase()+"?user="+Settings.getMsqlUser()+"&password="+Settings.getMsqlPassword());
- //conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/kaybans?user=rooot&password=");
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- private void closeConnection(){
- if(isConnected()){
- try {
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- //========================================================================
- //========================================================================
- private void checkTables(){
- openConnection();
- //users
- StringBuilder sb = new StringBuilder();
- sb.append("create table if not exists users(");
- sb.append("uuid varchar(50) not null,");
- sb.append("name varchar(24) not null,");
- sb.append("admin BOOLEAN not null,");
- sb.append("banned int(10) not null,");
- sb.append("ban varchar(24),");
- sb.append("primary key(uuid));");
- try {
- conn.createStatement().executeUpdate(sb.toString());
- } catch (SQLException e) {
- e.printStackTrace();
- }
- sb = new StringBuilder();
- //bans
- sb.append("create table if not exists bans(");
- sb.append("name varchar(24) not null,");
- sb.append("reason varchar(200) not null,");
- sb.append("type varchar(4) not null,");
- sb.append("admin varchar(16) not null,");
- sb.append("user varchar(24) not null,");
- sb.append("banTime long not null,");
- sb.append("unbanTime long not null,");
- sb.append("primary key(name));");
- try {
- conn.createStatement().executeUpdate(sb.toString());
- } catch (SQLException e) {
- e.printStackTrace();
- }
- closeConnection();
- }
- //========================================================================
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement