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 eab746ea1..9be83e880 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 @@ -41,14 +41,15 @@ public class ExtensionProviderTable { public static final String DESCRIPTION = "description"; // Can be null public static final String PRIORITY = "priority"; public static final String GROUPABLE = "groupable"; // default false - public static final String CONDITION = "condition_name"; // Can be null + public static final String CONDITION = "condition_name"; // Can be null, related to @Conditional 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 + public static final String TAB_ID = "tab_id"; // Can be null, related to @Tab - public static final String PROVIDED_CONDITION = "provided_condition"; // Can be null - public static final String FORMAT_TYPE = "format_type"; // Can be null - public static final String IS_PLAYER_NAME = "player_name"; // 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 + public static final String FORMAT_TYPE = "format_type"; // Can be null, related to @NumberProvider + public static final String IS_PLAYER_NAME = "player_name"; // default false, related to @StringProvider public static final String STATEMENT_SELECT_PROVIDER_ID = "(" + SELECT + ID + FROM + TABLE_NAME + WHERE + PROVIDER_NAME + "=?" + @@ -70,6 +71,7 @@ public class ExtensionProviderTable { .column(CONDITION, Sql.varchar(54)) // 50 + 4 for "not_" .column(PROVIDED_CONDITION, Sql.varchar(50)) .column(FORMAT_TYPE, Sql.varchar(25)) + .column(HIDDEN, BOOL).notNull().defaultValue(false) .column(IS_PLAYER_NAME, BOOL).notNull().defaultValue(false) .column(PLUGIN_ID, INT).notNull() .column(ICON_ID, INT).notNull() 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 99509ba67..0673d27af 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 @@ -35,11 +35,13 @@ import java.util.Optional; public class BooleanDataProvider extends DataProvider { private final String providedCondition; + private final boolean hidden; - private BooleanDataProvider(ProviderInformation providerInformation, MethodWrapper method, String providedCondition) { + private BooleanDataProvider(ProviderInformation providerInformation, MethodWrapper method, String providedCondition, boolean hidden) { super(providerInformation, method); this.providedCondition = providedCondition; + this.hidden = hidden; } public static void placeToDataProviders( @@ -53,7 +55,7 @@ public class BooleanDataProvider extends DataProvider { pluginName, method.getName(), annotation.text(), annotation.description(), providerIcon, annotation.priority(), tab, condition ); - dataProviders.put(new BooleanDataProvider(providerInformation, methodWrapper, annotation.conditionName())); + dataProviders.put(new BooleanDataProvider(providerInformation, methodWrapper, annotation.conditionName(), annotation.hidden())); } public static Optional getProvidedCondition(DataProvider provider) { @@ -66,4 +68,12 @@ public class BooleanDataProvider extends DataProvider { public Optional getProvidedCondition() { return providedCondition == null || providedCondition.isEmpty() ? Optional.empty() : Optional.of(StringUtils.truncate(providedCondition, 50)); } + + public static boolean isHidden(DataProvider provider) { + return provider instanceof BooleanDataProvider && ((BooleanDataProvider) provider).isHidden(); + } + + public boolean isHidden() { + return hidden; + } } \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/BooleanProviderValueGatherer.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/BooleanProviderValueGatherer.java index 7ec1bc525..6f7f11b59 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/BooleanProviderValueGatherer.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/BooleanProviderValueGatherer.java @@ -81,6 +81,7 @@ class BooleanProviderValueGatherer { } Optional providedCondition = BooleanDataProvider.getProvidedCondition(booleanProvider); + boolean hidden = BooleanDataProvider.isHidden(booleanProvider); MethodWrapper method = booleanProvider.getMethod(); Boolean result = getMethodResult( @@ -104,7 +105,7 @@ class BooleanProviderValueGatherer { satisfied.add(booleanProvider); // Prevents further attempts to call this provider for this player. database.executeTransaction(new StoreIconTransaction(providerInformation.getIcon())); - database.executeTransaction(new StoreBooleanProviderTransaction(booleanProvider, providedCondition.orElse(null), serverUUID)); + database.executeTransaction(new StoreBooleanProviderTransaction(booleanProvider, providedCondition.orElse(null), hidden, serverUUID)); database.executeTransaction(new StorePlayerBooleanResultTransaction(pluginName, serverUUID, method.getMethodName(), playerUUID, result)); } // Remove now satisfied Providers so that they are not called again diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionPlayerDataQuery.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionPlayerDataQuery.java index 5079192ea..7a92480a0 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionPlayerDataQuery.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/queries/ExtensionPlayerDataQuery.java @@ -116,12 +116,14 @@ public class ExtensionPlayerDataQuery implements Query>(sql, 1000) { @Override public void prepare(PreparedStatement statement) throws SQLException { statement.setString(1, playerUUID.toString()); + statement.setBoolean(2, false); // Don't select hidden values } @Override diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreBooleanProviderTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreBooleanProviderTransaction.java index eb9854853..4be87af6e 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreBooleanProviderTransaction.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreBooleanProviderTransaction.java @@ -42,11 +42,13 @@ import static com.djrapitops.plan.db.sql.tables.ExtensionProviderTable.*; public class StoreBooleanProviderTransaction extends Transaction { private final String providedCondition; + private final boolean hidden; private final UUID serverUUID; private final ProviderInformation providerInformation; - public StoreBooleanProviderTransaction(DataProvider booleanProvider, String providedCondition, UUID serverUUID) { + public StoreBooleanProviderTransaction(DataProvider booleanProvider, String providedCondition, boolean hidden, UUID serverUUID) { this.providedCondition = providedCondition; + this.hidden = hidden; this.serverUUID = serverUUID; this.providerInformation = booleanProvider.getProviderInformation(); } @@ -76,7 +78,8 @@ public class StoreBooleanProviderTransaction extends Transaction { TAB_ID + "=" + ExtensionTabTable.STATEMENT_SELECT_TAB_ID + "," + ICON_ID + "=" + ExtensionIconTable.STATEMENT_SELECT_ICON_ID + WHERE + PLUGIN_ID + "=" + ExtensionPluginTable.STATEMENT_SELECT_PLUGIN_ID + - AND + PROVIDER_NAME + "=?"; + AND + PROVIDER_NAME + "=?," + + HIDDEN + "=?"; return new ExecStatement(sql) { @Override @@ -102,6 +105,7 @@ public class StoreBooleanProviderTransaction extends Transaction { ExtensionIconTable.set3IconValuesToStatement(statement, 9, providerInformation.getIcon()); ExtensionPluginTable.set2PluginValuesToStatement(statement, 12, providerInformation.getPluginName(), serverUUID); statement.setString(14, providerInformation.getName()); + statement.setBoolean(15, hidden); } }; } @@ -120,7 +124,7 @@ public class StoreBooleanProviderTransaction extends Transaction { ") VALUES (?,?,?,?,?,?," + ExtensionTabTable.STATEMENT_SELECT_TAB_ID + "," + ExtensionIconTable.STATEMENT_SELECT_ICON_ID + "," + - ExtensionPluginTable.STATEMENT_SELECT_PLUGIN_ID + ")"; + ExtensionPluginTable.STATEMENT_SELECT_PLUGIN_ID + ", ?)"; return new ExecStatement(sql) { @Override public void prepare(PreparedStatement statement) throws SQLException { @@ -145,6 +149,7 @@ public class StoreBooleanProviderTransaction extends Transaction { ExtensionTabTable.set3TabValuesToStatement(statement, 7, providerInformation.getTab().orElse("No Tab"), providerInformation.getPluginName(), serverUUID); ExtensionIconTable.set3IconValuesToStatement(statement, 10, providerInformation.getIcon()); ExtensionPluginTable.set2PluginValuesToStatement(statement, 13, providerInformation.getPluginName(), serverUUID); + statement.setBoolean(15, hidden); } }; }