From 268dae902f8db02ed0c4d3ff06218c8174545ca5 Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Wed, 16 Aug 2017 18:38:19 +0300 Subject: [PATCH 1/2] Rename VARCHAR to varchar --- .../djrapitops/plan/database/sql/Select.java | 39 +++++++++++++++++++ .../com/djrapitops/plan/database/sql/Sql.java | 6 ++- .../plan/database/sql/TableSqlParser.java | 10 +++++ .../plan/database/tables/CommandUseTable.java | 2 +- .../plan/database/tables/IPsTable.java | 2 +- .../plan/database/tables/KillsTable.java | 2 +- .../plan/database/tables/NicknamesTable.java | 2 +- .../plan/database/tables/SecurityTable.java | 4 +- .../plan/database/tables/UsersTable.java | 10 ++--- .../plan/database/tables/WorldTable.java | 2 +- 10 files changed, 66 insertions(+), 13 deletions(-) create mode 100644 Plan/src/main/java/com/djrapitops/plan/database/sql/Select.java diff --git a/Plan/src/main/java/com/djrapitops/plan/database/sql/Select.java b/Plan/src/main/java/com/djrapitops/plan/database/sql/Select.java new file mode 100644 index 000000000..54bdbd029 --- /dev/null +++ b/Plan/src/main/java/com/djrapitops/plan/database/sql/Select.java @@ -0,0 +1,39 @@ +package main.java.com.djrapitops.plan.database.sql; + +import main.java.com.djrapitops.plan.Log; + +public class Select extends SqlParser { + + private int conditions = 0; + + public Select(String start) { + super(start); + } + + public static Select from(String table, String... columns) { + Select parser = new Select("SELECT "); + int size = columns.length; + for (int i = 0; i < size; i++) { + if (size > 1 && i > 0) { + parser.append(", "); + } + parser.append(columns[i]); + } + + parser.append(" FROM ").append(table); + Log.debug(parser.toString()); + return parser; + } + + public Select where(String... conditions) { + append(" WHERE "); + for (int i = 0; i < conditions.length; i++) { + if (this.conditions > 0) { + append(" AND "); + } + append("(").append(conditions[i]).append(")"); + this.conditions++; + } + return this; + } +} diff --git a/Plan/src/main/java/com/djrapitops/plan/database/sql/Sql.java b/Plan/src/main/java/com/djrapitops/plan/database/sql/Sql.java index 33dcf5800..87d563770 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/sql/Sql.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/sql/Sql.java @@ -6,7 +6,11 @@ public class Sql { public static final String LONG = "bigint"; public static final String BOOL = "boolean"; - public static String VARCHAR(int length) { + private Sql() { + throw new IllegalStateException("Variable Class"); + } + + public static String varchar(int length) { return "varchar("+length+")"; } } diff --git a/Plan/src/main/java/com/djrapitops/plan/database/sql/TableSqlParser.java b/Plan/src/main/java/com/djrapitops/plan/database/sql/TableSqlParser.java index ad4960ddd..523ff9a09 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/sql/TableSqlParser.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/sql/TableSqlParser.java @@ -93,6 +93,16 @@ public class TableSqlParser extends SqlParser { return this; } + /** + * Used for ALTER TABLE sql statements. + * + * @param column column to modify + * @return TableSqlParser object + */ + public static TableSqlParser newColumn(String column, String type) { + return new TableSqlParser("").column(column, type); + } + @Override public String toString() { append(")"); diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/CommandUseTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/CommandUseTable.java index 04f2755aa..dab6450a0 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/CommandUseTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/CommandUseTable.java @@ -38,7 +38,7 @@ public class CommandUseTable extends Table { public boolean createTable() { try { execute(TableSqlParser.createTable(tableName) - .column(columnCommand, Sql.VARCHAR(20)).notNull() + .column(columnCommand, Sql.varchar(20)).notNull() .column(columnTimesUsed, Sql.INT).notNull() .toString() ); diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java index c08c65281..c2cd9d055 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/IPsTable.java @@ -40,7 +40,7 @@ public class IPsTable extends UserIDTable { try { execute(TableSqlParser.createTable(tableName) .column(columnUserID, Sql.INT).notNull() - .column(columnIP, Sql.VARCHAR(20)).notNull() + .column(columnIP, Sql.varchar(20)).notNull() .foreignKey(columnUserID, usersTable.getTableName(), usersTable.getColumnID()) .toString() ); diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java index 5a9f2f900..9028b5fd7 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java @@ -45,7 +45,7 @@ public class KillsTable extends Table { execute(TableSqlParser.createTable(tableName) .column(columnKillerUserID, Sql.INT).notNull() .column(columnVictimUserID, Sql.INT).notNull() - .column(columnWeapon, Sql.VARCHAR(30)).notNull() + .column(columnWeapon, Sql.varchar(30)).notNull() .column(columnDate, Sql.LONG).notNull() .foreignKey(columnKillerUserID, usersTable.getTableName(), usersTable.getColumnID()) .foreignKey(columnVictimUserID, usersTable.getTableName(), usersTable.getColumnID()) diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java index 976ef5393..63b221fcf 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/NicknamesTable.java @@ -40,7 +40,7 @@ public class NicknamesTable extends UserIDTable { try { execute(TableSqlParser.createTable(tableName) .column(columnUserID, Sql.INT).notNull() - .column(columnNick, Sql.VARCHAR(75)).notNull() + .column(columnNick, Sql.varchar(75)).notNull() .column(columnCurrent, Sql.BOOL).notNull().defaultValue(false) .foreignKey(columnUserID, usersTable.getTableName(), usersTable.getColumnID()) .toString() diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/SecurityTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/SecurityTable.java index 7a9cdbdab..ee3acf084 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/SecurityTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/SecurityTable.java @@ -37,8 +37,8 @@ public class SecurityTable extends Table { public boolean createTable() { try { execute(TableSqlParser.createTable(tableName) - .column(columnUser, Sql.VARCHAR(100)).notNull().unique() - .column(columnSaltedHash, Sql.VARCHAR(100)).notNull().unique() + .column(columnUser, Sql.varchar(100)).notNull().unique() + .column(columnSaltedHash, Sql.varchar(100)).notNull().unique() .column(columnPermLevel, Sql.INT).notNull() .toString() ); diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/UsersTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/UsersTable.java index 4af049c05..da7248f34 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/UsersTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/UsersTable.java @@ -99,9 +99,9 @@ public class UsersTable extends Table { try { execute(TableSqlParser.createTable(tableName) .primaryKeyIDColumn(usingMySQL, columnID, Sql.INT) - .column(columnUUID, Sql.VARCHAR(36)).notNull().unique() - .column(columnGeolocation, Sql.VARCHAR(50)).notNull() - .column(columnLastGM, Sql.VARCHAR(15)).notNull() + .column(columnUUID, Sql.varchar(36)).notNull().unique() + .column(columnGeolocation, Sql.varchar(50)).notNull() + .column(columnLastGM, Sql.varchar(15)).notNull() .column(columnLastGMSwapTime, Sql.LONG).notNull() .column(columnPlayTime, Sql.LONG).notNull() .column(columnLoginTimes, Sql.INT).notNull() @@ -110,10 +110,10 @@ public class UsersTable extends Table { .column(columnMobKills, Sql.INT).notNull() .column(columnRegistered, Sql.LONG).notNull() .column(columnOP, Sql.BOOL).notNull().defaultValue(false) - .column(columnName, Sql.VARCHAR(16)).notNull() + .column(columnName, Sql.varchar(16)).notNull() .column(columnBanned, Sql.BOOL).notNull().defaultValue(false) .column(columnContainsBukkitData, Sql.BOOL).notNull().defaultValue(false) - .column(columnLastWorld, Sql.VARCHAR(255)).notNull() + .column(columnLastWorld, Sql.varchar(255)).notNull() .column(columnLastWorldSwapTime, Sql.LONG).notNull() .primaryKey(usingMySQL, columnID) .toString() diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/WorldTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/WorldTable.java index 9cdf6eec1..1059e408d 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/WorldTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/WorldTable.java @@ -43,7 +43,7 @@ public class WorldTable extends Table { try { execute(TableSqlParser.createTable(tableName) .primaryKeyIDColumn(usingMySQL, columnWorldId, Sql.INT) - .column(columnWorldName, Sql.VARCHAR(100)).notNull() + .column(columnWorldName, Sql.varchar(100)).notNull() .primaryKey(usingMySQL, columnWorldId) .toString() ); From 40c5834a8ebf60ee4bf860d93f2f86b84356270b Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Wed, 16 Aug 2017 19:15:30 +0300 Subject: [PATCH 2/2] Reduce complexity --- .../plan/database/tables/KillsTable.java | 30 +++++++++---------- .../ui/html/tables/PlayersTableCreator.java | 13 ++++---- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java b/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java index 9028b5fd7..d18da1cbc 100644 --- a/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java +++ b/Plan/src/main/java/com/djrapitops/plan/database/tables/KillsTable.java @@ -200,7 +200,7 @@ public class KillsTable extends Table { * @throws SQLException */ public void savePlayerKills(Map> kills, Map uuids) throws SQLException { - if (kills == null || kills.isEmpty()) { + if (Verify.isEmpty(kills)) { return; } @@ -219,27 +219,17 @@ public class KillsTable extends Table { for (Map.Entry> entrySet : kills.entrySet()) { Integer id = entrySet.getKey(); List playerKills = entrySet.getValue(); - + playerKills.removeIf(Objects::isNull); List s = saved.get(id); if (s != null) { playerKills.removeAll(s); } - playerKills.stream().filter(Objects::nonNull).forEach(killData -> { - int victimUserID = killData.getVictimUserID(); - if (victimUserID == -1) { - try { - int newVictimID = db.getUsersTable().getUserId(killData.getVictim()); - killData.setVictimUserID(newVictimID); - } catch (SQLException e) { - Log.toLog(this.getClass().getName(), e); - return; - } - } - }); + findMissingIDs(playerKills); + for (KillData kill : playerKills) { - if (kill == null || kill.getVictimUserID() == -1) { + if (kill.getVictimUserID() == -1) { continue; } statement.setInt(1, id); @@ -259,4 +249,14 @@ public class KillsTable extends Table { Benchmark.stop("Database", "Save Kills multiple"); } } + + private void findMissingIDs(List playerKills) throws SQLException { + for (KillData killData : playerKills) { + int victimUserID = killData.getVictimUserID(); + if (victimUserID == -1) { + int newVictimID = db.getUsersTable().getUserId(killData.getVictim()); + killData.setVictimUserID(newVictimID); + } + } + } } diff --git a/Plan/src/main/java/com/djrapitops/plan/ui/html/tables/PlayersTableCreator.java b/Plan/src/main/java/com/djrapitops/plan/ui/html/tables/PlayersTableCreator.java index 0f07d71a1..f9fb368c2 100644 --- a/Plan/src/main/java/com/djrapitops/plan/ui/html/tables/PlayersTableCreator.java +++ b/Plan/src/main/java/com/djrapitops/plan/ui/html/tables/PlayersTableCreator.java @@ -43,10 +43,7 @@ public class PlayersTableCreator { boolean isUnknown = uData.getLoginTimes() == 1; boolean isActive = AnalysisUtils.isActive(now, uData.getLastPlayed(), uData.getPlayTime(), uData.getLoginTimes()); - String activityString = isBanned ? "Banned" - : isUnknown ? "Unknown" - : isActive ? "Active" - : "Inactive"; + String activityString = getActivityString(isBanned, isUnknown, isActive); String img = showImages ? Html.MINOTAR_SMALL_IMG.parse(uData.getName()) : ""; @@ -60,7 +57,6 @@ public class PlayersTableCreator { String.valueOf(uData.getGeolocation()) )); } catch (NullPointerException ignored) { - /* ignored */ } i++; @@ -68,4 +64,11 @@ public class PlayersTableCreator { return html.toString(); } + + private static String getActivityString(boolean isBanned, boolean isUnknown, boolean isActive) { + return isBanned ? "Banned" + : (isUnknown ? "Unknown" + : (isActive ? "Active" + : "Inactive")); + } }