· 9 years ago · Jun 26, 2017, 09:06 PM
1package me.videria.lobbysystem.utils.mysql;
2
3import java.sql.ResultSet;
4
5import org.bukkit.Bukkit;
6
7public class MySQL {
8
9 public static MySQLBuilder con;
10
11 public static void connect(String host, int port, String database, String user, String password){
12
13 MySQLBuilder mbuilder = new MySQLBuilder(host,"" + port, database, user, password);
14 con = mbuilder;
15 try {
16 con.connect();
17 Bukkit.broadcastMessage("§aMySQL vom LobbySystem stats verbunden");
18 } catch (Exception e) {
19 System.out.println("§cMySQL Verbindung Fehlerhaft!");
20 }
21 }
22
23 public static void disconnect(){
24 con.close();
25 }
26
27 public static boolean hasConnection(){
28
29 if(con != null){
30 return true;
31 }
32 return false;
33 }
34
35 public static ResultSet Query(String string) {
36 // TODO Auto-generated method stub
37 return null;
38 }
39
40}
41
42
43
44
45package me.videria.lobbysystem.utils.mysql;
46
47import java.sql.Array;
48import java.sql.Connection;
49import java.sql.DriverManager;
50import java.sql.ResultSet;
51import java.sql.SQLException;
52import java.sql.Statement;
53import java.util.ArrayList;
54import java.util.HashMap;
55
56import org.bukkit.Bukkit;
57import org.bukkit.entity.Player;
58
59import me.videria.lobbysystem.Plugin;
60
61public class MySQLBuilder implements MySQLClass {
62
63 private static Connection connection;
64 private String[] s;
65 private String host;
66 private String port;
67 private String database;
68 private String user;
69 private String pass;
70
71 // REQUESTS
72 private int requests = 0;
73 private boolean show = false;
74
75 public MySQLBuilder(String host, String port, String database, String user,
76 String pass) {
77 this.host = host;
78 this.port = port;
79 this.database = database;
80 this.user = user;
81 this.pass = pass;
82 }
83
84 public void showRequestDebug() {
85 show = true;
86 }
87
88 public void showRequestDebug(boolean boo) {
89 show = boo;
90 }
91
92 private void _connect() throws SQLException, ClassNotFoundException {
93 Class.forName("com.mysql.jdbc.Driver");
94 connection = DriverManager
95 .getConnection("jdbc:mysql://" + host + ":" + port + "/"
96 + database + "?user=" + user + "&password=" + pass);
97
98 requests++;
99 if (show) {
100 System.out.println("[MySQL Wrapper/Debug] Request #" + requests);
101 System.out.println("[MySQL Wrapper/Debug] Connection establish");
102 }
103 }
104
105 private void _close() throws SQLException {
106 connection.close();
107
108 requests++;
109 if (show) {
110 System.out.println("[MySQL Wrapper/Debug] Request #" + requests);
111 System.out.println("[MySQL Wrapper/Debug] Connection close");
112 }
113 }
114
115 private boolean _isConnected() {
116 if (connection != null) {
117 return true;
118 }
119 return false;
120 }
121
122 /*
123 * private void _doQuery(String sql) throws SQLException{ Statement stmt =
124 * connection.createStatement(); stmt.executeQuery(sql); }
125 */
126
127 private void _doUpdate(String sql) throws SQLException {
128 Statement stmt = connection.createStatement();
129 stmt.executeUpdate(sql);
130
131 requests++;
132 if (show) {
133 System.out.println("[MySQL Wrapper/Debug] Request #" + requests);
134 System.out.println("[MySQL Wrapper/Debug] Query: " + sql);
135 }
136 }
137
138 private String _getString(String sql, int row) throws SQLException {
139 ResultSet rs = getResultSet(sql);
140 String s = null;
141 if (rs.next()) {
142 s = rs.getString(row);
143 }
144
145 return s;
146 }
147
148 private String[] _getStringList(String sql, int row) throws SQLException {
149 ResultSet rs = getResultSet(sql);
150 int i = 0;
151 while (rs.next()) {
152 s[i] = rs.getString(row);
153 i++;
154 }
155 return s;
156 }
157
158 private float _getFloat(String sql, int row) throws SQLException {
159 ResultSet rs = getResultSet(sql);
160 float f = 0;
161 if (rs.next()) {
162 f = rs.getFloat(row);
163 }
164 return f;
165 }
166
167 private int _getInt(String sql, int row) throws SQLException {
168 ResultSet rs = getResultSet(sql);
169 int i = 0;
170 if (rs.next()) {
171 i = rs.getInt(row);
172 }
173 return i;
174 }
175
176 private Array _getArray(String sql, int row) throws SQLException {
177 ResultSet rs = getResultSet(sql);
178 Array a = null;
179 if (rs.next()) {
180 a = rs.getArray(row);
181 }
182 return a;
183 }
184
185 private int _columnSize(String sql) throws SQLException {
186 ResultSet rs = getResultSet(sql);
187 int size = 0;
188 while (rs.next()) {
189 size++;
190 }
191 return size;
192 }
193
194 private ResultSet _getResultSet(String sql) throws SQLException {
195 Statement stmt = connection.createStatement();
196
197 requests++;
198 if (show) {
199 System.out.println("[MySQL Wrapper/Debug] Request #" + requests);
200 System.out.println("[MySQL Wrapper/Debug] Query: " + sql);
201 }
202
203 return stmt.executeQuery(sql);
204 }
205
206 private void _createTable(String name, String[] fieldname, String[] type)
207 throws SQLException {
208 StringBuilder sb = new StringBuilder();
209 sb.append("CREATE TABLE IF NOT EXISTS " + name + " (");
210 int size = fieldname.length;
211 if (size != type.length)
212 return;
213 for (int i = 0; i < size; i++) {
214 String f = fieldname[i];
215 String t = type[i];
216 sb.append(f + " " + t);
217 if ((size - i) > 1) {
218 sb.append(", ");
219 }
220 }
221 sb.append(") ENGINE=InnoDB DEFAULT CHARSET=utf8;");
222 doUpdate(sb.toString());
223 }
224
225 private boolean _existsTable(String table) throws SQLException {
226 ResultSet rs;
227 try {
228 rs = _getResultSet("SELECT ´*´ FROM ´" + table + "´");
229 } catch (SQLException e) {
230 return false;
231 }
232 return rs.next();
233 }
234
235 public void connect() {
236 try {
237 _connect();
238 } catch (ClassNotFoundException | SQLException e) {
239 System.out.println("[MySQL Wrapper] Couldn't connect to MySQL");
240 e.printStackTrace();
241 }
242 }
243
244 public void close() {
245 try {
246 _close();
247 } catch (SQLException e) {
248 System.out
249 .println("[MySQL Wrapper] Couldn't close MySQL-Connection (Maybe there wasn't one to close?)");
250 e.printStackTrace();
251 }
252 }
253
254 public boolean isConnected() {
255 return _isConnected();
256 }
257
258 @Deprecated
259 public void doQuery(String sql) {
260 /*
261 * try { _doQuery(sql); } catch (SQLException e) { System.out.println(
262 * "[MySQL Wrapper] An error occured while trying to execute query: " +
263 * sql); e.printStackTrace(); }
264 */
265 doUpdate(sql);
266 }
267
268public static HashMap<Player, ArrayList<String>> PlayerCacher = new HashMap<Player, ArrayList<String>>();
269
270 public void doUpdate(String sql, Player p) {
271 if(!PlayerCacher.containsKey(p)) {
272 PlayerCacher.put(p, new ArrayList<String>());
273 }
274 ArrayList<String> list = PlayerCacher.get(p);
275 list.add(sql);
276 PlayerCacher.remove(p);
277 PlayerCacher.put(p, list);
278 }
279
280 public void doUpdate(Player p) {
281 if(PlayerCacher.containsKey(p)) {
282 ArrayList<String> list = PlayerCacher.get(p);
283 for(String SQL : list) {
284 doUpdate(SQL);
285 }
286 PlayerCacher.remove(p);
287 }
288 }
289
290 public void doUpdate(String sql) {
291 try {
292 _doUpdate(sql);
293 } catch (SQLException e) {
294 System.out
295 .println("[MySQL Wrapper] An error occured while trying to update query: " + sql);
296 e.printStackTrace();
297 }
298 }
299
300 public String getString(String sql, int row) {
301 try {
302 return _getString(sql, row);
303 } catch (SQLException e) {
304 System.out
305 .println("[MySQL Wrapper] An error occured while trying to execute query: "
306 + sql);
307 e.printStackTrace();
308 return "";
309 }
310 }
311
312 public String[] getStringList(String sql, int row) {
313 try {
314 return _getStringList(sql, row);
315 } catch (SQLException e) {
316 System.out
317 .println("[MySQL Wrapper] An error occured while trying to execute query: "
318 + sql);
319 e.printStackTrace();
320 return null;
321 }
322 }
323
324 public float getFloat(String sql, int row) {
325 try {
326 return _getFloat(sql, row);
327 } catch (SQLException e) {
328 System.out
329 .println("[MySQL Wrapper] An error occured while trying to execute query: "
330 + sql);
331 e.printStackTrace();
332 return -1;
333 }
334 }
335
336 public int getInt(String sql, int row) {
337 try {
338 return _getInt(sql, row);
339 } catch (SQLException e) {
340 System.out
341 .println("[MySQL Wrapper] An error occured while trying to execute query: "
342 + sql);
343 e.printStackTrace();
344 return -1;
345 }
346 }
347
348 public Array getArray(String sql, int row) {
349 try {
350 return _getArray(sql, row);
351 } catch (SQLException e) {
352 System.out
353 .println("[MySQL Wrapper] An error occured while trying to execute query: "
354 + sql);
355 e.printStackTrace();
356 return null;
357 }
358 }
359
360 public int columnSize(String sql) {
361 try {
362 return _columnSize(sql);
363 } catch (SQLException e) {
364 System.out
365 .println("[MySQL Wrapper] An error occured while trying to execute query: "
366 + sql);
367 e.printStackTrace();
368 return -1;
369 }
370 }
371
372 public ResultSet getResultSet(String sql) {
373 try {
374 return _getResultSet(sql);
375 } catch (SQLException e) {
376 System.out
377 .println("[MySQL Wrapper] An error occured while trying to execute query: "
378 + sql);
379 e.printStackTrace();
380 return null;
381 }
382 }
383
384 public void createTable(String name, String[] fieldname, String[] type) {
385 try {
386 _createTable(name, fieldname, type);
387 } catch (SQLException e) {
388 System.out
389 .println("[MySQL Wrapper] An error occured while trying to create a new table!");
390 e.printStackTrace();
391 }
392 }
393
394 public boolean existsTable(String table) {
395 try {
396 return _existsTable(table);
397 } catch (SQLException e) {
398 System.out
399 .println("[MySQL Wrapper] An error occured while checking table: "
400 + table);
401 e.printStackTrace();
402 }
403
404 return false;
405 }
406
407 public void keepAlive(int seconds, final String getQuery) {
408 Bukkit.getScheduler().scheduleSyncRepeatingTask(
409 Plugin.getInstance(),
410 new Runnable() {
411 public void run() {
412 getString(getQuery, 1);
413 }
414 }, 0L, seconds * 20L);
415 }
416}
417
418
419
420
421
422
423
424
425package me.videria.lobbysystem.utils.mysql;
426
427import java.sql.Array;
428import java.sql.ResultSet;
429
430public interface MySQLClass {
431
432 public void connect();
433 public void close();
434
435 public boolean isConnected();
436
437 public void showRequestDebug();
438 public void showRequestDebug(boolean show);
439
440 public void keepAlive(int seconds, final String getQuery);
441
442 public void createTable(String name, String[] fieldnames, String[] fieldtype);
443 public boolean existsTable(String table);
444 @Deprecated
445 public void doQuery(String sql);
446 public void doUpdate(String sql);
447 public String getString(String sql, int row);
448 public int getInt(String sql, int row);
449 public Array getArray(String sql, int row);
450 public String[] getStringList(String sql, int row);
451 public int columnSize(String sql);
452 public ResultSet getResultSet(String sql);
453}