Advertisement
Guest User

Untitled

a guest
Jun 10th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.31 KB | None | 0 0
  1. package me.foxeik.bans.data.database;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.util.UUID;
  8.  
  9. import me.foxeik.bans.data.cfg.Settings;
  10. import me.foxeik.bans.data.ut.DataManager;
  11. import me.foxeik.bans.objects.Ban;
  12. import me.foxeik.bans.objects.User;
  13. import me.foxeik.bans.objects.utils.BanUtils;
  14. import me.foxeik.bans.objects.utils.UserUtils;
  15. import me.foxeik.bans.utils.Logger;
  16. import me.foxeik.bans.utils.enums.BanType;
  17.  
  18. public class MySQLData implements DataManager{
  19.  
  20. private static Connection conn;
  21.  
  22.  
  23.  
  24. public MySQLData(){
  25. checkTables();
  26. }
  27.  
  28. @Override
  29. public void loadData(boolean log){
  30. clearLists();
  31. loadUsers(log);
  32. loadBans(log);
  33. checkObjects(log);
  34. }
  35.  
  36. @Override
  37. public void loadUsers(boolean log){
  38. openConnection();
  39. int loaded = 0;
  40. try{
  41. ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM `users`");
  42. while(rs.next()){
  43. User u = User.get(rs.getString("name"));
  44. try {
  45. u.setUuid(UUID.fromString(rs.getString("uuid")));
  46. u.setName(rs.getString("name"));
  47. u.setAdmin(rs.getBoolean("admin"));
  48. u.setBanned(rs.getInt("banned"));
  49. u.setBan(new Ban(rs.getString("ban")));
  50. loaded++;
  51. } catch (Exception e) {
  52. Logger.error("Ladowanie usera "+u.getName()+" nie powiodlo sie!");
  53. UserUtils.removeUser(u);
  54. }
  55. }
  56. } catch (SQLException e){
  57. e.printStackTrace();
  58. }
  59. if(log) Logger.info("Zaladowane "+loaded+" graczy!");
  60. closeConnection();
  61. }
  62.  
  63. @Override
  64. public void loadBans(boolean log){
  65. openConnection();
  66. int loaded = 0;
  67. try {
  68. ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM `bans`");
  69. while(rs.next()){
  70. Ban b = Ban.get(rs.getString("name"));
  71. try {
  72. b.setName(rs.getString("name"));
  73. b.setReason(rs.getString("reason"));
  74. b.setType(BanType.valueOf(rs.getString("type")));
  75. b.setAdmin(User.get(rs.getString("admin")));
  76. b.setUser(User.get(rs.getString("user")));
  77. b.setBanTime(rs.getLong("banTime"));
  78. b.setUnbanTime(rs.getLong("unbanTime"));
  79. loaded++;
  80. } catch (Exception e) {
  81. Logger.error("Ladowanie bana "+b.getName()+" nie powiodlo sie!");
  82. BanUtils.removeBan(b);
  83. }
  84. }
  85. } catch (SQLException e) {
  86. e.printStackTrace();
  87. }
  88. if(log) Logger.info("Zaladowane "+loaded+" banow!");
  89. closeConnection();
  90. }
  91.  
  92. @Override
  93. public void saveData(boolean log){
  94. saveUsers(log);
  95. saveBans(log);
  96. }
  97.  
  98. @Override
  99. public void saveUsers(boolean log){
  100. int users = 0;
  101. for(User u : UserUtils.getUsers()){
  102. saveUser(u);
  103. users++;
  104. }
  105. if(log) Logger.info("Zapisano "+users+" graczy!");
  106. }
  107.  
  108. @Override
  109. public void saveUser(User u){
  110. openConnection();
  111. StringBuilder sb = new StringBuilder();
  112. sb.append("INSERT INTO users(uuid, name, admin, banned, ban) VALUES (");
  113. sb.append("'" + u.getUuid().toString() + "'");
  114. sb.append("'" + u.getName() + "'");
  115. sb.append("'" + u.isAdmin() + "'");
  116. sb.append("'" + u.getBanned() + "'");
  117. if(u.getBan()==null){
  118. sb.append("'" + null + "'");
  119. } else{
  120. sb.append("'" + u.getBan().getName() + "'");
  121. }
  122. sb.append(") ON DUPLICATE KEY UPDATE ");
  123. sb.append("admin='" + u.isAdmin() + "',");
  124. sb.append("banned='" + u.getBanned() + "',");
  125. if(u.getBan()==null){
  126. sb.append("ban='" + null + "'");
  127. } else{
  128. sb.append("ban='" + u.getBan().getName() + "'");
  129. }
  130. try {
  131. conn.createStatement().executeUpdate(sb.toString());
  132. } catch (SQLException e) {
  133. e.printStackTrace();
  134. }
  135. closeConnection();
  136. }
  137.  
  138. @Override
  139. public void saveBans(boolean log){
  140. int bans = 0;
  141. for(Ban b : BanUtils.getBans()){
  142. saveBan(b);
  143. bans++;
  144. }
  145. if(log) Logger.info("Zapisano "+bans+" banow!");
  146. }
  147.  
  148. @Override
  149. public void saveBan(Ban b){
  150. openConnection();
  151. StringBuilder sb = new StringBuilder();
  152. sb.append("INSERT INTO bans(name, reason, type, admin, user, banTime, unbanTime) VALUES (");
  153. sb.append("'" + b.getName() + "'");
  154. sb.append("'" + b.getReason() + "'");
  155. sb.append("'" + b.getType().toString() + "'");
  156. sb.append("'" + b.getAdmin().getName() + "'");
  157. sb.append("'" + b.getUser().getName() + "'");
  158. sb.append("'" + b.getBanTime() + "'");
  159. sb.append("'" + b.getUnbanTime() + "')");
  160. try {
  161. conn.createStatement().executeUpdate(sb.toString());
  162. } catch (SQLException e) {
  163. e.printStackTrace();
  164. }
  165. closeConnection();
  166. }
  167.  
  168. @Override
  169. public void checkObjects(boolean log){
  170. int users = 0;
  171. int bans = 0;
  172. for(User u : UserUtils.getUsers()){
  173. if(u.getName() == null){
  174. users++;
  175. UserUtils.removeUser(u);
  176. }
  177. }
  178. for(Ban b : BanUtils.getBans()){
  179. if(b.getName()==null || b.getReason() == null || b.getUser() == null || b.getAdmin()==null){
  180. bans++;
  181. BanUtils.removeBan(b);
  182. }
  183. }
  184. if(log){
  185. if(users>0) Logger.warn("Pominieto "+users+" userow przy ladowaniu!");
  186. if(bans>0) Logger.warn("Pominieto "+bans+" banow przy ladowaniu!");
  187. }
  188. }
  189.  
  190. @Override
  191. public void clearLists() {
  192. UserUtils.getUsers().clear();
  193. BanUtils.getBans().clear();
  194. }
  195.  
  196. //========================================================================
  197. private boolean isConnected(){
  198. try{
  199. if(conn == null) return false;
  200. if(conn.isClosed()) return false;
  201. } catch (SQLException e){
  202. e.printStackTrace();
  203. }
  204. return true;
  205. }
  206.  
  207. private void openConnection(){
  208. if(!isConnected()){
  209. try {
  210. conn = DriverManager.getConnection("jdbc:mysql://"+Settings.getMsqlHostname()+":"+Settings.getMsqlPort()+"/"+Settings.getMsqlDatabase()+"?user="+Settings.getMsqlUser()+"&password="+Settings.getMsqlPassword());
  211. //conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/kaybans?user=rooot&password=");
  212. } catch (SQLException e) {
  213. e.printStackTrace();
  214. }
  215. }
  216. }
  217.  
  218. private void closeConnection(){
  219. if(isConnected()){
  220. try {
  221. conn.close();
  222. } catch (SQLException e) {
  223. e.printStackTrace();
  224. }
  225. }
  226. }
  227. //========================================================================
  228.  
  229.  
  230. //========================================================================
  231. private void checkTables(){
  232. openConnection();
  233. //users
  234. StringBuilder sb = new StringBuilder();
  235. sb.append("create table if not exists users(");
  236. sb.append("uuid varchar(50) not null,");
  237. sb.append("name varchar(24) not null,");
  238. sb.append("admin BOOLEAN not null,");
  239. sb.append("banned int(10) not null,");
  240. sb.append("ban varchar(24),");
  241. sb.append("primary key(uuid));");
  242. try {
  243. conn.createStatement().executeUpdate(sb.toString());
  244. } catch (SQLException e) {
  245. e.printStackTrace();
  246. }
  247. sb = new StringBuilder();
  248. //bans
  249. sb.append("create table if not exists bans(");
  250. sb.append("name varchar(24) not null,");
  251. sb.append("reason varchar(200) not null,");
  252. sb.append("type varchar(4) not null,");
  253. sb.append("admin varchar(16) not null,");
  254. sb.append("user varchar(24) not null,");
  255. sb.append("banTime long not null,");
  256. sb.append("unbanTime long not null,");
  257. sb.append("primary key(name));");
  258. try {
  259. conn.createStatement().executeUpdate(sb.toString());
  260. } catch (SQLException e) {
  261. e.printStackTrace();
  262. }
  263. closeConnection();
  264. }
  265. //========================================================================
  266.  
  267. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement