Advertisement
Guest User

Untitled

a guest
Jan 14th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.04 KB | None | 0 0
  1. package net.forsteve.death.data;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8. import java.util.UUID;
  9.  
  10. import org.bukkit.scheduler.BukkitRunnable;
  11.  
  12. import net.forsteve.death.Main;
  13. import net.forsteve.death.data.object.User;
  14. import net.forsteve.death.data.object.UserManager;
  15.  
  16. public class MySQL
  17. {
  18.     private static Connection conn;
  19.     private static String base = "forsteve_death";
  20.  
  21.     public MySQL()
  22.     {
  23.         new BukkitRunnable()
  24.         {
  25.             public void run()
  26.             {
  27.                 openConnection();
  28.             }
  29.         }.runTaskAsynchronously(Main.getPlugin);
  30.  
  31.         new BukkitRunnable()
  32.         {
  33.             @Override
  34.             public void run()
  35.             {
  36.                 createTable();
  37.                 downloadUsers();
  38.             }
  39.         }.runTaskLater(Main.getPlugin, 40);
  40.         saveDatabase();
  41.     }
  42.    
  43.     private void saveDatabase()
  44.     {
  45.         new BukkitRunnable()
  46.         {
  47.             @Override
  48.             public void run()
  49.             {
  50.                 saveUsers();
  51.                 //System.out.println("[DeathMySQL] Zapisuje dane.");
  52.             }
  53.         }.runTaskTimer(Main.getPlugin, 120, Config.mysql_interval * 20);
  54.     }
  55.    
  56.     public synchronized static void openConnection()
  57.     {
  58.         String url = "jdbc:mysql://" + Config.mysql_ip + ":" + Config.mysql_port + "/";
  59.        
  60.         try { conn = DriverManager.getConnection(url + Config.mysql_database, Config.mysql_user, Config.mysql_password); }     
  61.         catch (Exception e) { e.printStackTrace(); }
  62.     }
  63.    
  64.    
  65.     public static void createTable()
  66.     {
  67.         try
  68.         {          
  69.             Statement st = conn.createStatement();
  70.             String new_table = "CREATE TABLE IF NOT EXISTS " + base + "(uuid VARCHAR(36), nick VARCHAR(32), kills MEDIUMTEXT, deaths MEDIUMTEXT, PRIMARY KEY (uuid)) DEFAULT CHARSET=cp1250 collate cp1250_polish_ci";
  71.             st.execute(new_table);
  72.             st.close();
  73.         } catch (SQLException e) {
  74.             e.printStackTrace();
  75.         }
  76.     }
  77.    
  78.     public static void downloadUsers()
  79.     {
  80.         try
  81.         {
  82.             Statement st = conn.createStatement();
  83.  
  84.             ResultSet rs = st.executeQuery("SELECT * FROM " + base);
  85.             while (rs.next())
  86.             {
  87.                 UUID    uuid  = UUID.fromString(rs.getString("uuid"));
  88.                 String  name  = rs.getString("nick");
  89.                 String  kills = rs.getString("kills");
  90.                 String  deaths = rs.getString("deaths");
  91.  
  92.                 User user = new User(uuid);
  93.                 user.setName(name);
  94.                 user.setKills(kills);
  95.                 user.setDeaths(deaths);
  96.                
  97.                 UserManager.addUser(user);
  98.             }
  99.             st.close();        
  100.         } catch (SQLException e)
  101.         {
  102.             e.printStackTrace();
  103.         }
  104.     }
  105.    
  106.     public static void saveUsers()
  107.     {
  108.         try
  109.         {
  110.             Statement st = conn.createStatement();
  111.  
  112.             for(User u : UserManager.getUsers())
  113.             {
  114.                 String nick  = u.getName();
  115.                 UUID   uuid  = u.getUuid();
  116.                 String kills = u.getKills();
  117.                 String deaths = u.getDeaths();
  118.  
  119.                 String sql = "INSERT INTO " + base + " (uuid, nick, kills, deaths)"
  120.                         + " VALUES ('" + uuid + "', '" + nick + "', '" + kills + "', '" + deaths + "')"
  121.                         + " ON DUPLICATE KEY UPDATE kills='" + kills + "', deaths='" + deaths + "'"
  122.                         ;
  123.                 st.executeUpdate(sql);
  124.             }
  125.             st.close();
  126.         } catch (Exception e) {
  127.             e.printStackTrace();
  128.         }
  129.     }
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement