· 8 years ago · Jul 24, 2018, 09:36 AM
1 public StatsHelper(String table, Value[] values, boolean autoPoints) {
2 MySQL mysql = StatsAPI.getApi().getMySQL();
3
4 this.worktable = table.toLowerCase();
5 this.userUtil = new UserUtil(mysql);
6
7 Bukkit.getPluginManager().registerEvents(userUtil, StatsAPI.getApi());
8
9 if (autoPoints) {
10 Value[] tempValues = new Value[values.length + 1];
11 System.arraycopy(values, 0, tempValues, 0, values.length);
12 tempValues[values.length] = new Value("points", VT.INT);
13 values = tempValues;
14 }
15
16 int l = values.length;
17 boolean alter = mysql.tableExist(worktable);
18 boolean execute = alter ? false : true;
19 HashMap<String, String> columns_delete = alter ? mysql.getTableColumns(worktable) : null;
20 String query = alter ? "ALTER TABLE " + worktable + " " : "CREATE TABLE IF NOT EXISTS " + worktable + "(uuid VARCHAR(36), ";
21
22 for (int i = 0; i < l; i++) {
23 Value v = values[i];
24 String valueName = v.getName();
25 try {
26 validateValue(v);
27 } catch (Exception e) {
28 e.printStackTrace();
29 break;
30 }
31 this.values.put(valueName, v);
32 if (alter)
33 if (!columns_delete.keySet().contains(valueName)) {
34 execute = true;
35 if (i != 0)
36 query += ", ";
37 query += "ADD " + valueName + " " + v.getSQLString();
38 } else {
39 if (!v.getDataTypeName().equals(columns_delete.get(v.getName()))) {
40 execute = true;
41 if (i != 0)
42 query += ", ";
43 query += "MODIFY " + v.getName() + " " + v.getSQLString();
44 }
45 columns_delete.remove(v.getName());
46 }
47 else {
48 query += valueName + " " + v.getSQLString();
49 if (i < l - 1)
50 query += ", ";
51 else if (i == l - 1)
52 query += ");";
53 }
54 }
55 if (alter)
56 if (columns_delete.size() != 0) {
57 for (String s : columns_delete.keySet()) {
58 if (!s.equals("uuid")) {
59 query += execute ? ", DROP " + s : "DROP " + s;
60 execute = true;
61 }
62 }
63 query += ";";
64 }
65
66 // Hello. Im a debug print
67 // System.out.println("\nEXECUTE QS: " + execute + "\nQUERY STRING: \n" +
68 // query);
69 if (execute)
70 StatsAPI.getApi().getMySQL().update(query);
71 }