diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/SQLDB.java b/Plan/common/src/main/java/com/djrapitops/plan/db/SQLDB.java index f92e7c793..13e6087df 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/SQLDB.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/SQLDB.java @@ -155,7 +155,8 @@ public abstract class SQLDB extends AbstractDatabase { new TransferTableRemovalPatch(), new IPAnonPatch(), new BadAFKThresholdValuePatch(), - new DeleteIPHashesPatch() + new DeleteIPHashesPatch(), + new ExtensionShowInPlayersTablePatch() }; } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/patches/ExtensionShowInPlayersTablePatch.java b/Plan/common/src/main/java/com/djrapitops/plan/db/patches/ExtensionShowInPlayersTablePatch.java new file mode 100644 index 000000000..66c12e74a --- /dev/null +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/patches/ExtensionShowInPlayersTablePatch.java @@ -0,0 +1,38 @@ +/* + * This file is part of Player Analytics (Plan). + * + * Plan is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License v3 as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Plan is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Plan. If not, see . + */ +package com.djrapitops.plan.db.patches; + +import com.djrapitops.plan.db.sql.parsing.Sql; +import com.djrapitops.plan.db.sql.tables.ExtensionProviderTable; + +/** + * Patch to add 'show_in_players_table' to 'plan_extension_providers' + * + * @author Rsl1122 + */ +public class ExtensionShowInPlayersTablePatch extends Patch { + + @Override + public boolean hasBeenApplied() { + return hasColumn(ExtensionProviderTable.TABLE_NAME, ExtensionProviderTable.SHOW_IN_PLAYERS_TABLE); + } + + @Override + protected void applyPatch() { + addColumn(ExtensionProviderTable.TABLE_NAME, ExtensionProviderTable.SHOW_IN_PLAYERS_TABLE + ' ' + Sql.BOOL + " NOT NULL DEFAULT 0"); + } +} \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/ExtensionProviderTable.java b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/ExtensionProviderTable.java index cb14fad5e..140863c49 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/ExtensionProviderTable.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/db/sql/tables/ExtensionProviderTable.java @@ -45,6 +45,7 @@ public class ExtensionProviderTable { public static final String PLUGIN_ID = "plugin_id"; public static final String ICON_ID = "icon_id"; public static final String TAB_ID = "tab_id"; // Can be null, related to @Tab + public static final String SHOW_IN_PLAYERS_TABLE = "show_in_players_table"; // default false public static final String HIDDEN = "hidden"; // default false, related to @BooleanProvider public static final String PROVIDED_CONDITION = "provided_condition"; // Can be null, related to @BooleanProvider @@ -71,6 +72,7 @@ public class ExtensionProviderTable { .column(TEXT, Sql.varchar(50)).notNull() .column(DESCRIPTION, Sql.varchar(150)) .column(PRIORITY, INT).notNull().defaultValue("0") + .column(SHOW_IN_PLAYERS_TABLE, BOOL).notNull().defaultValue(false) .column(GROUPABLE, BOOL).notNull().defaultValue(false) .column(CONDITION, Sql.varchar(54)) // 50 + 4 for "not_" .column(PROVIDED_CONDITION, Sql.varchar(50)) diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/ProviderInformation.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/ProviderInformation.java index 0e446f422..a06b625cd 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/ProviderInformation.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/ProviderInformation.java @@ -32,14 +32,16 @@ import java.util.Optional; public class ProviderInformation extends ExtensionDescriptive { private final String pluginName; + private final boolean showInPlayersTable; private final String tab; // can be null private final Conditional condition; // can be null public ProviderInformation( - String pluginName, String name, String text, String description, Icon icon, int priority, String tab, Conditional condition + String pluginName, String name, String text, String description, Icon icon, int priority, boolean showInPlayersTable, String tab, Conditional condition ) { super(name, text, description, icon, priority); this.pluginName = pluginName; + this.showInPlayersTable = showInPlayersTable; this.tab = tab; this.condition = condition; } @@ -48,6 +50,10 @@ public class ProviderInformation extends ExtensionDescriptive { return StringUtils.truncate(pluginName, 50); } + public boolean isShownInPlayersTable() { + return showInPlayersTable; + } + public Optional getTab() { return tab == null || tab.isEmpty() ? Optional.empty() diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/BooleanDataProvider.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/BooleanDataProvider.java index 0673d27af..332c735b0 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/BooleanDataProvider.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/BooleanDataProvider.java @@ -52,7 +52,7 @@ public class BooleanDataProvider extends DataProvider { Icon providerIcon = new Icon(annotation.iconFamily(), annotation.iconName(), annotation.iconColor()); ProviderInformation providerInformation = new ProviderInformation( - pluginName, method.getName(), annotation.text(), annotation.description(), providerIcon, annotation.priority(), tab, condition + pluginName, method.getName(), annotation.text(), annotation.description(), providerIcon, annotation.priority(), annotation.showInPlayerTable(), tab, condition ); dataProviders.put(new BooleanDataProvider(providerInformation, methodWrapper, annotation.conditionName(), annotation.hidden())); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/DoubleDataProvider.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/DoubleDataProvider.java index 204b28c73..ac467983e 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/DoubleDataProvider.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/DoubleDataProvider.java @@ -44,7 +44,7 @@ public class DoubleDataProvider extends DataProvider { Icon providerIcon = new Icon(annotation.iconFamily(), annotation.iconName(), annotation.iconColor()); ProviderInformation providerInformation = new ProviderInformation( - pluginName, method.getName(), annotation.text(), annotation.description(), providerIcon, annotation.priority(), tab, condition + pluginName, method.getName(), annotation.text(), annotation.description(), providerIcon, annotation.priority(), annotation.showInPlayerTable(), tab, condition ); dataProviders.put(new DoubleDataProvider(providerInformation, methodWrapper)); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/NumberDataProvider.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/NumberDataProvider.java index 353dbdd44..c1c41eac0 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/NumberDataProvider.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/NumberDataProvider.java @@ -48,7 +48,7 @@ public class NumberDataProvider extends DataProvider { Icon providerIcon = new Icon(annotation.iconFamily(), annotation.iconName(), annotation.iconColor()); ProviderInformation providerInformation = new ProviderInformation( - pluginName, method.getName(), annotation.text(), annotation.description(), providerIcon, annotation.priority(), tab, condition + pluginName, method.getName(), annotation.text(), annotation.description(), providerIcon, annotation.priority(), annotation.showInPlayerTable(), tab, condition ); dataProviders.put(new NumberDataProvider(providerInformation, methodWrapper, annotation.format())); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/PercentageDataProvider.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/PercentageDataProvider.java index 8aaa4dfd9..6c07db992 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/PercentageDataProvider.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/PercentageDataProvider.java @@ -44,7 +44,7 @@ public class PercentageDataProvider extends DataProvider { Icon providerIcon = new Icon(annotation.iconFamily(), annotation.iconName(), annotation.iconColor()); ProviderInformation providerInformation = new ProviderInformation( - pluginName, method.getName(), annotation.text(), annotation.description(), providerIcon, annotation.priority(), tab, condition + pluginName, method.getName(), annotation.text(), annotation.description(), providerIcon, annotation.priority(), annotation.showInPlayerTable(), tab, condition ); dataProviders.put(new PercentageDataProvider(providerInformation, methodWrapper)); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/StringDataProvider.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/StringDataProvider.java index fa90e00a8..f6293ab96 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/StringDataProvider.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/StringDataProvider.java @@ -47,7 +47,7 @@ public class StringDataProvider extends DataProvider { Icon providerIcon = new Icon(annotation.iconFamily(), annotation.iconName(), annotation.iconColor()); ProviderInformation providerInformation = new ProviderInformation( - pluginName, method.getName(), annotation.text(), annotation.description(), providerIcon, annotation.priority(), tab, condition + pluginName, method.getName(), annotation.text(), annotation.description(), providerIcon, annotation.priority(), annotation.showInPlayerTable(), tab, condition ); boolean playerName = annotation.playerName(); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/TableDataProvider.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/TableDataProvider.java index 77150fe6b..16600ca9e 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/TableDataProvider.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/TableDataProvider.java @@ -50,7 +50,7 @@ public class TableDataProvider extends DataProvider { MethodWrapper
methodWrapper = new MethodWrapper<>(method, Table.class); ProviderInformation providerInformation = new ProviderInformation( - pluginName, method.getName(), null, null, null, 0, tab, condition + pluginName, method.getName(), null, null, null, 0, false, tab, condition ); dataProviders.put(new TableDataProvider(providerInformation, methodWrapper, annotation.tableColor())); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionServerPlayerDataTableQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionServerPlayerDataTableQuery.java index 7bf3f3a45..8a4954064 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionServerPlayerDataTableQuery.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionServerPlayerDataTableQuery.java @@ -68,7 +68,9 @@ public class ExtensionServerPlayerDataTableQuery implements Query>(sql, 1000) { @Override public void prepare(PreparedStatement statement) throws SQLException { statement.setInt(1, xMostRecentPlayers); // Limit to x most recently seen players statement.setString(2, serverUUID.toString()); - statement.setBoolean(3, false); // Don't select player_name String values + statement.setBoolean(3, true); // Select only values that should be shown + statement.setBoolean(4, false); // Don't select player_name String values } @Override @@ -118,12 +120,24 @@ public class ExtensionServerPlayerDataTableQuery implements Query