diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/ExtensionServiceImplementation.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/ExtensionServiceImplementation.java index d5c93693b..d26d43b07 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/ExtensionServiceImplementation.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/ExtensionServiceImplementation.java @@ -148,7 +148,7 @@ public class ExtensionServiceImplementation implements ExtensionService { } public void updatePlayerValues(ProviderValueGatherer gatherer, UUID playerUUID, String playerName, CallEvents event) { - if (!gatherer.canCallEvent(event)) return; + if (gatherer.shouldSkipEvent(event)) return; if (playerUUID == null && playerName == null) return; try { @@ -190,7 +190,7 @@ public class ExtensionServiceImplementation implements ExtensionService { } public void updateServerValues(ProviderValueGatherer gatherer, CallEvents event) { - if (!gatherer.canCallEvent(event)) return; + if (gatherer.shouldSkipEvent(event)) return; try { logger.getDebugLogger().logOn(DebugChannels.DATA_EXTENSIONS, "Gathering values for server"); 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 332c735b0..1c84849cd 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 @@ -58,7 +58,7 @@ public class BooleanDataProvider extends DataProvider { dataProviders.put(new BooleanDataProvider(providerInformation, methodWrapper, annotation.conditionName(), annotation.hidden())); } - public static Optional getProvidedCondition(DataProvider provider) { + public static Optional getProvidedCondition(DataProvider provider) { if (provider instanceof BooleanDataProvider) { return ((BooleanDataProvider) provider).getProvidedCondition(); } @@ -69,7 +69,7 @@ public class BooleanDataProvider extends DataProvider { return providedCondition == null || providedCondition.isEmpty() ? Optional.empty() : Optional.of(StringUtils.truncate(providedCondition, 50)); } - public static boolean isHidden(DataProvider provider) { + public static boolean isHidden(DataProvider provider) { return provider instanceof BooleanDataProvider && ((BooleanDataProvider) provider).isHidden(); } 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 c1c41eac0..4ba47156c 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 @@ -23,6 +23,7 @@ import com.djrapitops.plan.extension.icon.Icon; import com.djrapitops.plan.extension.implementation.ProviderInformation; import java.lang.reflect.Method; +import java.util.Optional; /** * Represents a DataExtension API method annotated with {@link NumberProvider} annotation. @@ -54,11 +55,11 @@ public class NumberDataProvider extends DataProvider { dataProviders.put(new NumberDataProvider(providerInformation, methodWrapper, annotation.format())); } - public static FormatType getFormatType(DataProvider provider) { + public static Optional getFormatType(DataProvider provider) { if (provider instanceof NumberDataProvider) { - return ((NumberDataProvider) provider).getFormatType(); + return Optional.of(((NumberDataProvider) provider).getFormatType()); } - return FormatType.NONE; + return Optional.empty(); } public FormatType getFormatType() { 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 f6293ab96..bcc0bd5d7 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 @@ -55,7 +55,7 @@ public class StringDataProvider extends DataProvider { dataProviders.put(new StringDataProvider(providerInformation, methodWrapper, playerName)); } - public static boolean isPlayerName(DataProvider provider) { + public static boolean isPlayerName(DataProvider provider) { if (provider instanceof StringDataProvider) { return ((StringDataProvider) provider).isPlayerName(); } 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 b0f447266..eac422f46 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 @@ -24,7 +24,7 @@ import com.djrapitops.plan.extension.implementation.providers.DataProvider; import com.djrapitops.plan.extension.implementation.providers.DataProviders; import com.djrapitops.plan.extension.implementation.providers.MethodWrapper; import com.djrapitops.plan.extension.implementation.storage.transactions.StoreIconTransaction; -import com.djrapitops.plan.extension.implementation.storage.transactions.providers.StoreBooleanProviderTransaction; +import com.djrapitops.plan.extension.implementation.storage.transactions.providers.StoreProviderTransaction; import com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerBooleanResultTransaction; import com.djrapitops.plan.extension.implementation.storage.transactions.results.StoreServerBooleanResultTransaction; import com.djrapitops.plan.storage.database.Database; @@ -121,8 +121,6 @@ class BooleanProviderValueGatherer { } Optional providedCondition = BooleanDataProvider.getProvidedCondition(booleanProvider); - boolean hidden = BooleanDataProvider.isHidden(booleanProvider); - MethodWrapper method = booleanProvider.getMethod(); Boolean result = getMethodResult(methodCaller.apply(method), method); if (result == null) { @@ -143,7 +141,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), hidden, serverUUID)); + database.executeTransaction(new StoreProviderTransaction(booleanProvider, serverUUID)); database.executeTransaction(storeTransactionCreator.apply(method, result)); } return satisfied; diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/DoubleAndPercentageProviderValueGatherer.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/DoubleAndPercentageProviderValueGatherer.java index e02ceb256..668e3b7c9 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/DoubleAndPercentageProviderValueGatherer.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/DoubleAndPercentageProviderValueGatherer.java @@ -24,7 +24,7 @@ import com.djrapitops.plan.extension.implementation.providers.DataProviders; import com.djrapitops.plan.extension.implementation.providers.MethodWrapper; import com.djrapitops.plan.extension.implementation.providers.PercentageDataProvider; import com.djrapitops.plan.extension.implementation.storage.transactions.StoreIconTransaction; -import com.djrapitops.plan.extension.implementation.storage.transactions.providers.StoreDoubleProviderTransaction; +import com.djrapitops.plan.extension.implementation.storage.transactions.providers.StoreProviderTransaction; import com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerDoubleResultTransaction; import com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerPercentageResultTransaction; import com.djrapitops.plan.extension.implementation.storage.transactions.results.StoreServerDoubleResultTransaction; @@ -108,7 +108,7 @@ class DoubleAndPercentageProviderValueGatherer { } database.executeTransaction(new StoreIconTransaction(providerInformation.getIcon())); - database.executeTransaction(new StoreDoubleProviderTransaction(doubleProvider, serverUUID)); + database.executeTransaction(new StoreProviderTransaction(doubleProvider, serverUUID)); if (doubleProvider instanceof PercentageDataProvider) { database.executeTransaction(percStoreTransactionCreator.apply(method, result)); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/GroupProviderValueGatherer.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/GroupProviderValueGatherer.java index 1aee20075..4ade5306d 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/GroupProviderValueGatherer.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/GroupProviderValueGatherer.java @@ -23,7 +23,7 @@ import com.djrapitops.plan.extension.implementation.providers.DataProvider; import com.djrapitops.plan.extension.implementation.providers.DataProviders; import com.djrapitops.plan.extension.implementation.providers.MethodWrapper; import com.djrapitops.plan.extension.implementation.storage.transactions.StoreIconTransaction; -import com.djrapitops.plan.extension.implementation.storage.transactions.providers.StoreGroupProviderTransaction; +import com.djrapitops.plan.extension.implementation.storage.transactions.providers.StoreProviderTransaction; import com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerGroupsResultTransaction; import com.djrapitops.plan.storage.database.Database; @@ -81,7 +81,7 @@ class GroupProviderValueGatherer { } database.executeTransaction(new StoreIconTransaction(providerInformation.getIcon())); - database.executeTransaction(new StoreGroupProviderTransaction(groupProvider, serverUUID)); + database.executeTransaction(new StoreProviderTransaction(groupProvider, serverUUID)); database.executeTransaction(new StorePlayerGroupsResultTransaction(pluginName, serverUUID, method.getMethodName(), playerUUID, result)); } catch (Exception | NoClassDefFoundError | NoSuchFieldError | NoSuchMethodError e) { throw new DataExtensionMethodCallException(e, pluginName, method); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/NumberProviderValueGatherer.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/NumberProviderValueGatherer.java index 61e676346..8ebc5daeb 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/NumberProviderValueGatherer.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/NumberProviderValueGatherer.java @@ -18,14 +18,12 @@ package com.djrapitops.plan.extension.implementation.providers.gathering; import com.djrapitops.plan.exceptions.DataExtensionMethodCallException; import com.djrapitops.plan.extension.DataExtension; -import com.djrapitops.plan.extension.FormatType; import com.djrapitops.plan.extension.implementation.ProviderInformation; import com.djrapitops.plan.extension.implementation.providers.DataProvider; import com.djrapitops.plan.extension.implementation.providers.DataProviders; import com.djrapitops.plan.extension.implementation.providers.MethodWrapper; -import com.djrapitops.plan.extension.implementation.providers.NumberDataProvider; import com.djrapitops.plan.extension.implementation.storage.transactions.StoreIconTransaction; -import com.djrapitops.plan.extension.implementation.storage.transactions.providers.StoreNumberProviderTransaction; +import com.djrapitops.plan.extension.implementation.storage.transactions.providers.StoreProviderTransaction; import com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerNumberResultTransaction; import com.djrapitops.plan.extension.implementation.storage.transactions.results.StoreServerNumberResultTransaction; import com.djrapitops.plan.storage.database.Database; @@ -102,10 +100,8 @@ class NumberProviderValueGatherer { return; // Error during call } - FormatType formatType = NumberDataProvider.getFormatType(numberProvider); - database.executeTransaction(new StoreIconTransaction(providerInformation.getIcon())); - database.executeTransaction(new StoreNumberProviderTransaction(numberProvider, formatType, serverUUID)); + database.executeTransaction(new StoreProviderTransaction(numberProvider, serverUUID)); database.executeTransaction(storeTransactionCreator.apply(method, result)); } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/ProviderValueGatherer.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/ProviderValueGatherer.java index 056c942e9..3db1c4f50 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/ProviderValueGatherer.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/ProviderValueGatherer.java @@ -29,7 +29,7 @@ import com.djrapitops.plan.extension.implementation.providers.MethodWrapper; import com.djrapitops.plan.extension.implementation.storage.transactions.StoreIconTransaction; import com.djrapitops.plan.extension.implementation.storage.transactions.StorePluginTransaction; import com.djrapitops.plan.extension.implementation.storage.transactions.StoreTabInformationTransaction; -import com.djrapitops.plan.extension.implementation.storage.transactions.providers.StoreNumberProviderTransaction; +import com.djrapitops.plan.extension.implementation.storage.transactions.providers.StoreProviderTransaction; import com.djrapitops.plan.extension.implementation.storage.transactions.results.RemoveInvalidResultsTransaction; import com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerNumberResultTransaction; import com.djrapitops.plan.extension.implementation.storage.transactions.results.StoreServerNumberResultTransaction; @@ -104,25 +104,25 @@ public class ProviderValueGatherer { serverNumberGatherer = new Gatherer<>( Long.class, method -> method.callMethod(extension), - StoreNumberProviderTransaction::new, + StoreProviderTransaction::new, (provider, result) -> new StoreServerNumberResultTransaction(provider, serverUUID, result) ); } - public void disableMethodFromUse(MethodWrapper method) { + public void disableMethodFromUse(MethodWrapper method) { dataProviders.removeProviderWithMethod(method); } - public boolean canCallEvent(CallEvents event) { + public boolean shouldSkipEvent(CallEvents event) { if (event == CallEvents.MANUAL) { - return true; + return false; } for (CallEvents accepted : callEvents) { if (event == accepted) { - return true; + return false; } } - return false; + return true; } public String getPluginName() { @@ -153,7 +153,7 @@ public class ProviderValueGatherer { UUID serverUUID = serverInfo.getServerUUID(); playerNumberGatherer = new Gatherer<>( Long.class, method -> method.callMethod(extension, playerUUID, playerName), - StoreNumberProviderTransaction::new, + StoreProviderTransaction::new, (provider, result) -> new StorePlayerNumberResultTransaction(provider, serverUUID, playerUUID, result) ); playerNumberGatherer.gather(conditions); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/StringProviderValueGatherer.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/StringProviderValueGatherer.java index 96f11ef7a..9d8fc7771 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/StringProviderValueGatherer.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/providers/gathering/StringProviderValueGatherer.java @@ -22,9 +22,8 @@ import com.djrapitops.plan.extension.implementation.ProviderInformation; import com.djrapitops.plan.extension.implementation.providers.DataProvider; import com.djrapitops.plan.extension.implementation.providers.DataProviders; import com.djrapitops.plan.extension.implementation.providers.MethodWrapper; -import com.djrapitops.plan.extension.implementation.providers.StringDataProvider; import com.djrapitops.plan.extension.implementation.storage.transactions.StoreIconTransaction; -import com.djrapitops.plan.extension.implementation.storage.transactions.providers.StoreStringProviderTransaction; +import com.djrapitops.plan.extension.implementation.storage.transactions.providers.StoreProviderTransaction; import com.djrapitops.plan.extension.implementation.storage.transactions.results.StorePlayerStringResultTransaction; import com.djrapitops.plan.extension.implementation.storage.transactions.results.StoreServerStringResultTransaction; import com.djrapitops.plan.storage.database.Database; @@ -106,7 +105,7 @@ class StringProviderValueGatherer { result = StringUtils.truncate(result, 50); database.executeTransaction(new StoreIconTransaction(providerInformation.getIcon())); - database.executeTransaction(new StoreStringProviderTransaction(stringProvider, StringDataProvider.isPlayerName(stringProvider), serverUUID)); + database.executeTransaction(new StoreProviderTransaction(stringProvider, serverUUID)); database.executeTransaction(storeTransactionCreator.apply(method, result)); } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreDoubleProviderTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreDoubleProviderTransaction.java deleted file mode 100644 index 1f83da130..000000000 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreDoubleProviderTransaction.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * 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.extension.implementation.storage.transactions.providers; - -import com.djrapitops.plan.extension.implementation.ProviderInformation; -import com.djrapitops.plan.extension.implementation.providers.DataProvider; -import com.djrapitops.plan.storage.database.sql.tables.ExtensionIconTable; -import com.djrapitops.plan.storage.database.sql.tables.ExtensionPluginTable; -import com.djrapitops.plan.storage.database.sql.tables.ExtensionTabTable; -import com.djrapitops.plan.storage.database.transactions.ExecStatement; -import com.djrapitops.plan.storage.database.transactions.Executable; -import com.djrapitops.plan.storage.database.transactions.ThrowawayTransaction; - -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.sql.Types; -import java.util.Optional; -import java.util.UUID; - -import static com.djrapitops.plan.storage.database.sql.building.Sql.AND; -import static com.djrapitops.plan.storage.database.sql.building.Sql.WHERE; -import static com.djrapitops.plan.storage.database.sql.tables.ExtensionProviderTable.*; - -/** - * Transaction to store information about a dobule {@link DataProvider}. - *

- * Includes: - * {@link com.djrapitops.plan.extension.implementation.providers.DoubleDataProvider}. - * {@link com.djrapitops.plan.extension.implementation.providers.PercentageDataProvider}. - * - * @author Rsl1122 - */ -public class StoreDoubleProviderTransaction extends ThrowawayTransaction { - - private final UUID serverUUID; - private final ProviderInformation providerInformation; - - public StoreDoubleProviderTransaction(DataProvider provider, UUID serverUUID) { - this.serverUUID = serverUUID; - this.providerInformation = provider.getProviderInformation(); - } - - @Override - protected void performOperations() { - execute(storeProvider()); - } - - private Executable storeProvider() { - return connection -> { - if (!updateProvider().execute(connection)) { - return insertProvider().execute(connection); - } - return false; - }; - } - - private Executable updateProvider() { - String sql = "UPDATE " + TABLE_NAME + - " SET " + - TEXT + "=?," + - DESCRIPTION + "=?," + - PRIORITY + "=?," + - CONDITION + "=?," + - TAB_ID + "=" + ExtensionTabTable.STATEMENT_SELECT_TAB_ID + "," + - ICON_ID + "=" + ExtensionIconTable.STATEMENT_SELECT_ICON_ID + ',' + - SHOW_IN_PLAYERS_TABLE + "=?" + - WHERE + PLUGIN_ID + "=" + ExtensionPluginTable.STATEMENT_SELECT_PLUGIN_ID + - AND + PROVIDER_NAME + "=?"; - - return new ExecStatement(sql) { - @Override - public void prepare(PreparedStatement statement) throws SQLException { - statement.setString(1, providerInformation.getText()); - Optional description = providerInformation.getDescription(); - if (description.isPresent()) { - statement.setString(2, description.get()); - } else { - statement.setNull(2, Types.VARCHAR); - } - statement.setInt(3, providerInformation.getPriority()); - Optional condition = providerInformation.getCondition(); - if (condition.isPresent()) { - statement.setString(4, condition.get()); - } else { - statement.setNull(4, Types.VARCHAR); - } - ExtensionTabTable.set3TabValuesToStatement(statement, 5, providerInformation.getTab().orElse("No Tab"), providerInformation.getPluginName(), serverUUID); - ExtensionIconTable.set3IconValuesToStatement(statement, 8, providerInformation.getIcon()); - statement.setBoolean(11, providerInformation.isShownInPlayersTable()); - ExtensionPluginTable.set2PluginValuesToStatement(statement, 12, providerInformation.getPluginName(), serverUUID); - statement.setString(14, providerInformation.getName()); - } - }; - } - - private Executable insertProvider() { - String sql = "INSERT INTO " + TABLE_NAME + "(" + - PROVIDER_NAME + "," + - TEXT + "," + - DESCRIPTION + "," + - PRIORITY + "," + - CONDITION + "," + - SHOW_IN_PLAYERS_TABLE + ',' + - TAB_ID + "," + - ICON_ID + "," + - PLUGIN_ID + - ") VALUES (?,?,?,?,?,?," + - ExtensionTabTable.STATEMENT_SELECT_TAB_ID + "," + - ExtensionIconTable.STATEMENT_SELECT_ICON_ID + "," + - ExtensionPluginTable.STATEMENT_SELECT_PLUGIN_ID + ")"; - return new ExecStatement(sql) { - @Override - public void prepare(PreparedStatement statement) throws SQLException { - statement.setString(1, providerInformation.getName()); - statement.setString(2, providerInformation.getText()); - Optional description = providerInformation.getDescription(); - if (description.isPresent()) { - statement.setString(3, description.get()); - } else { - statement.setNull(3, Types.VARCHAR); - } - statement.setInt(4, providerInformation.getPriority()); - Optional condition = providerInformation.getCondition(); - if (condition.isPresent()) { - statement.setString(5, condition.get()); - } else { - statement.setNull(5, Types.VARCHAR); - } - statement.setBoolean(6, providerInformation.isShownInPlayersTable()); - 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); - } - }; - } -} \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreGroupProviderTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreGroupProviderTransaction.java deleted file mode 100644 index e82960da8..000000000 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreGroupProviderTransaction.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * 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.extension.implementation.storage.transactions.providers; - -import com.djrapitops.plan.extension.implementation.ProviderInformation; -import com.djrapitops.plan.extension.implementation.providers.DataProvider; -import com.djrapitops.plan.storage.database.sql.tables.ExtensionIconTable; -import com.djrapitops.plan.storage.database.sql.tables.ExtensionPluginTable; -import com.djrapitops.plan.storage.database.sql.tables.ExtensionTabTable; -import com.djrapitops.plan.storage.database.transactions.ExecStatement; -import com.djrapitops.plan.storage.database.transactions.Executable; -import com.djrapitops.plan.storage.database.transactions.ThrowawayTransaction; - -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.sql.Types; -import java.util.Optional; -import java.util.UUID; - -import static com.djrapitops.plan.storage.database.sql.building.Sql.AND; -import static com.djrapitops.plan.storage.database.sql.building.Sql.WHERE; -import static com.djrapitops.plan.storage.database.sql.tables.ExtensionProviderTable.*; - -/** - * Transaction to store information about a {@link com.djrapitops.plan.extension.implementation.providers.GroupDataProvider}. - * - * @author Rsl1122 - */ -public class StoreGroupProviderTransaction extends ThrowawayTransaction { - - private final UUID serverUUID; - private final ProviderInformation providerInformation; - - public StoreGroupProviderTransaction(DataProvider provider, UUID serverUUID) { - this.serverUUID = serverUUID; - providerInformation = provider.getProviderInformation(); - } - - @Override - protected void performOperations() { - execute(storeProvider()); - } - - private Executable storeProvider() { - return connection -> { - if (!updateProvider().execute(connection)) { - return insertProvider().execute(connection); - } - return false; - }; - } - - private Executable updateProvider() { - String sql = "UPDATE " + TABLE_NAME + - " SET " + - TEXT + "=?," + - CONDITION + "=?," + - 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 + "=?"; - - return new ExecStatement(sql) { - @Override - public void prepare(PreparedStatement statement) throws SQLException { - statement.setString(1, providerInformation.getText()); - Optional condition = providerInformation.getCondition(); - if (condition.isPresent()) { - statement.setString(2, condition.get()); - } else { - statement.setNull(2, Types.VARCHAR); - } - ExtensionTabTable.set3TabValuesToStatement(statement, 3, providerInformation.getTab().orElse("No Tab"), providerInformation.getPluginName(), serverUUID); - ExtensionIconTable.set3IconValuesToStatement(statement, 6, providerInformation.getIcon()); - ExtensionPluginTable.set2PluginValuesToStatement(statement, 9, providerInformation.getPluginName(), serverUUID); - statement.setString(11, providerInformation.getName()); - } - }; - } - - private Executable insertProvider() { - String sql = "INSERT INTO " + TABLE_NAME + "(" + - PROVIDER_NAME + "," + - TEXT + "," + - CONDITION + "," + - SHOW_IN_PLAYERS_TABLE + "," + - TAB_ID + "," + - ICON_ID + "," + - PLUGIN_ID + - ") VALUES (?,?,?,?," + - ExtensionTabTable.STATEMENT_SELECT_TAB_ID + "," + - ExtensionIconTable.STATEMENT_SELECT_ICON_ID + "," + - ExtensionPluginTable.STATEMENT_SELECT_PLUGIN_ID + ")"; - return new ExecStatement(sql) { - @Override - public void prepare(PreparedStatement statement) throws SQLException { - statement.setString(1, providerInformation.getName()); - statement.setString(2, providerInformation.getText()); - Optional condition = providerInformation.getCondition(); - if (condition.isPresent()) { - statement.setString(3, condition.get()); - } else { - statement.setNull(3, Types.VARCHAR); - } - statement.setBoolean(4, providerInformation.isShownInPlayersTable()); - ExtensionTabTable.set3TabValuesToStatement(statement, 5, providerInformation.getTab().orElse("No Tab"), providerInformation.getPluginName(), serverUUID); - ExtensionIconTable.set3IconValuesToStatement(statement, 8, providerInformation.getIcon()); - ExtensionPluginTable.set2PluginValuesToStatement(statement, 11, providerInformation.getPluginName(), serverUUID); - } - }; - } -} \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreNumberProviderTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreNumberProviderTransaction.java deleted file mode 100644 index 2ba907823..000000000 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreNumberProviderTransaction.java +++ /dev/null @@ -1,158 +0,0 @@ -/* - * 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.extension.implementation.storage.transactions.providers; - -import com.djrapitops.plan.extension.FormatType; -import com.djrapitops.plan.extension.implementation.ProviderInformation; -import com.djrapitops.plan.extension.implementation.providers.DataProvider; -import com.djrapitops.plan.extension.implementation.providers.NumberDataProvider; -import com.djrapitops.plan.storage.database.sql.tables.ExtensionIconTable; -import com.djrapitops.plan.storage.database.sql.tables.ExtensionPluginTable; -import com.djrapitops.plan.storage.database.sql.tables.ExtensionTabTable; -import com.djrapitops.plan.storage.database.transactions.ExecStatement; -import com.djrapitops.plan.storage.database.transactions.Executable; -import com.djrapitops.plan.storage.database.transactions.ThrowawayTransaction; - -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.sql.Types; -import java.util.Optional; -import java.util.UUID; - -import static com.djrapitops.plan.storage.database.sql.building.Sql.AND; -import static com.djrapitops.plan.storage.database.sql.building.Sql.WHERE; -import static com.djrapitops.plan.storage.database.sql.tables.ExtensionProviderTable.*; - -/** - * Transaction to store information about a {@link com.djrapitops.plan.extension.implementation.providers.NumberDataProvider}. - * - * @author Rsl1122 - */ -@SuppressWarnings("Duplicates") -public class StoreNumberProviderTransaction extends ThrowawayTransaction { - - private final FormatType formatType; - private final UUID serverUUID; - private final ProviderInformation providerInformation; - - public StoreNumberProviderTransaction(DataProvider provider, FormatType formatType, UUID serverUUID) { - this.formatType = formatType; - this.serverUUID = serverUUID; - this.providerInformation = provider.getProviderInformation(); - } - - public StoreNumberProviderTransaction(DataProvider provider, UUID serverUUID) { - this(provider, NumberDataProvider.getFormatType(provider), serverUUID); - } - - @Override - protected void performOperations() { - execute(storeProvider()); - } - - private Executable storeProvider() { - return connection -> { - if (!updateProvider().execute(connection)) { - return insertProvider().execute(connection); - } - return false; - }; - } - - private Executable updateProvider() { - String sql = "UPDATE " + TABLE_NAME + " SET " + - TEXT + "=?," + - DESCRIPTION + "=?," + - PRIORITY + "=?," + - CONDITION + "=?," + - SHOW_IN_PLAYERS_TABLE + "=?," + - FORMAT_TYPE + "=?," + - 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 + "=?"; - - return new ExecStatement(sql) { - @Override - public void prepare(PreparedStatement statement) throws SQLException { - statement.setString(1, providerInformation.getText()); - Optional description = providerInformation.getDescription(); - if (description.isPresent()) { - statement.setString(2, description.get()); - } else { - statement.setNull(2, Types.VARCHAR); - } - statement.setInt(3, providerInformation.getPriority()); - Optional condition = providerInformation.getCondition(); - if (condition.isPresent()) { - statement.setString(4, condition.get()); - } else { - statement.setNull(4, Types.VARCHAR); - } - statement.setBoolean(5, providerInformation.isShownInPlayersTable()); - statement.setString(6, formatType.name()); - 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.setString(15, providerInformation.getName()); - } - }; - } - - private Executable insertProvider() { - String sql = "INSERT INTO " + TABLE_NAME + "(" + - PROVIDER_NAME + "," + - TEXT + "," + - DESCRIPTION + "," + - PRIORITY + "," + - CONDITION + "," + - SHOW_IN_PLAYERS_TABLE + ',' + - FORMAT_TYPE + "," + - TAB_ID + "," + - ICON_ID + "," + - PLUGIN_ID + - ") VALUES (?,?,?,?,?,?,?," + - ExtensionTabTable.STATEMENT_SELECT_TAB_ID + "," + - ExtensionIconTable.STATEMENT_SELECT_ICON_ID + "," + - ExtensionPluginTable.STATEMENT_SELECT_PLUGIN_ID + ")"; - return new ExecStatement(sql) { - @Override - public void prepare(PreparedStatement statement) throws SQLException { - statement.setString(1, providerInformation.getName()); - statement.setString(2, providerInformation.getText()); - Optional description = providerInformation.getDescription(); - if (description.isPresent()) { - statement.setString(3, description.get()); - } else { - statement.setNull(3, Types.VARCHAR); - } - statement.setInt(4, providerInformation.getPriority()); - Optional condition = providerInformation.getCondition(); - if (condition.isPresent()) { - statement.setString(5, condition.get()); - } else { - statement.setNull(5, Types.VARCHAR); - } - statement.setBoolean(6, providerInformation.isShownInPlayersTable()); - statement.setString(7, formatType.name()); - ExtensionTabTable.set3TabValuesToStatement(statement, 8, providerInformation.getTab().orElse("No Tab"), providerInformation.getPluginName(), serverUUID); - ExtensionIconTable.set3IconValuesToStatement(statement, 11, providerInformation.getIcon()); - ExtensionPluginTable.set2PluginValuesToStatement(statement, 14, providerInformation.getPluginName(), serverUUID); - } - }; - } -} \ No newline at end of file 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/StoreProviderTransaction.java similarity index 51% rename from Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreBooleanProviderTransaction.java rename to Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreProviderTransaction.java index f28c30de3..ea03cadd9 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/StoreProviderTransaction.java @@ -16,8 +16,13 @@ */ package com.djrapitops.plan.extension.implementation.storage.transactions.providers; +import com.djrapitops.plan.extension.FormatType; import com.djrapitops.plan.extension.implementation.ProviderInformation; +import com.djrapitops.plan.extension.implementation.providers.BooleanDataProvider; import com.djrapitops.plan.extension.implementation.providers.DataProvider; +import com.djrapitops.plan.extension.implementation.providers.NumberDataProvider; +import com.djrapitops.plan.extension.implementation.providers.StringDataProvider; +import com.djrapitops.plan.storage.database.sql.building.Sql; import com.djrapitops.plan.storage.database.sql.tables.ExtensionIconTable; import com.djrapitops.plan.storage.database.sql.tables.ExtensionPluginTable; import com.djrapitops.plan.storage.database.sql.tables.ExtensionTabTable; @@ -27,8 +32,6 @@ import com.djrapitops.plan.storage.database.transactions.ThrowawayTransaction; import java.sql.PreparedStatement; import java.sql.SQLException; -import java.sql.Types; -import java.util.Optional; import java.util.UUID; import static com.djrapitops.plan.storage.database.sql.building.Sql.AND; @@ -36,22 +39,18 @@ import static com.djrapitops.plan.storage.database.sql.building.Sql.WHERE; import static com.djrapitops.plan.storage.database.sql.tables.ExtensionProviderTable.*; /** - * Transaction to store information about a {@link com.djrapitops.plan.extension.implementation.providers.BooleanDataProvider}. + * Transaction to store information about a simple {@link DataProvider}. * * @author Rsl1122 */ -public class StoreBooleanProviderTransaction extends ThrowawayTransaction { +public class StoreProviderTransaction extends ThrowawayTransaction { - private final String providedCondition; - private final boolean hidden; + private final DataProvider provider; private final UUID serverUUID; - private final ProviderInformation providerInformation; - public StoreBooleanProviderTransaction(DataProvider booleanProvider, String providedCondition, boolean hidden, UUID serverUUID) { - this.providedCondition = providedCondition; - this.hidden = hidden; + public StoreProviderTransaction(DataProvider provider, UUID serverUUID) { + this.provider = provider; this.serverUUID = serverUUID; - this.providerInformation = booleanProvider.getProviderInformation(); } @Override @@ -75,91 +74,100 @@ public class StoreBooleanProviderTransaction extends ThrowawayTransaction { DESCRIPTION + "=?," + PRIORITY + "=?," + CONDITION + "=?," + - PROVIDED_CONDITION + "=?," + - TAB_ID + '=' + ExtensionTabTable.STATEMENT_SELECT_TAB_ID + ',' + ICON_ID + '=' + ExtensionIconTable.STATEMENT_SELECT_ICON_ID + ',' + + TAB_ID + '=' + ExtensionTabTable.STATEMENT_SELECT_TAB_ID + ',' + + SHOW_IN_PLAYERS_TABLE + "=?," + HIDDEN + "=?," + - SHOW_IN_PLAYERS_TABLE + "=?" + + PROVIDED_CONDITION + "=?," + + FORMAT_TYPE + "=?," + + IS_PLAYER_NAME + "=?" + WHERE + PLUGIN_ID + '=' + ExtensionPluginTable.STATEMENT_SELECT_PLUGIN_ID + AND + PROVIDER_NAME + "=?"; return new ExecStatement(sql) { @Override public void prepare(PreparedStatement statement) throws SQLException { - statement.setString(1, providerInformation.getText()); - Optional description = providerInformation.getDescription(); - if (description.isPresent()) { - statement.setString(2, description.get()); - } else { - statement.setNull(2, Types.VARCHAR); - } - statement.setInt(3, providerInformation.getPriority()); - Optional condition = providerInformation.getCondition(); - if (condition.isPresent()) { - statement.setString(4, condition.get()); - } else { - statement.setNull(4, Types.VARCHAR); - } - if (providedCondition != null) { - statement.setString(5, providedCondition); - } else { - statement.setNull(5, Types.VARCHAR); - } - ExtensionTabTable.set3TabValuesToStatement(statement, 6, providerInformation.getTab().orElse("No Tab"), providerInformation.getPluginName(), serverUUID); - ExtensionIconTable.set3IconValuesToStatement(statement, 9, providerInformation.getIcon()); - statement.setBoolean(12, hidden); - statement.setBoolean(13, providerInformation.isShownInPlayersTable()); - ExtensionPluginTable.set2PluginValuesToStatement(statement, 14, providerInformation.getPluginName(), serverUUID); - statement.setString(16, providerInformation.getName()); + ProviderInformation info = provider.getProviderInformation(); + + // Found for all providers + statement.setString(1, info.getText()); + Sql.setStringOrNull(statement, 2, info.getDescription().orElse(null)); + statement.setInt(3, info.getPriority()); + Sql.setStringOrNull(statement, 4, info.getCondition().orElse(null)); + ExtensionTabTable.set3TabValuesToStatement(statement, 5, info.getTab().orElse(null), info.getPluginName(), serverUUID); + ExtensionIconTable.set3IconValuesToStatement(statement, 8, info.getIcon()); + statement.setBoolean(11, info.isShownInPlayersTable()); + + // Specific provider cases + statement.setBoolean(12, BooleanDataProvider.isHidden(provider)); + Sql.setStringOrNull(statement, 13, BooleanDataProvider.getProvidedCondition(provider).orElse(null)); + Sql.setStringOrNull(statement, 14, NumberDataProvider.getFormatType(provider).map(FormatType::name).orElse(null)); + statement.setBoolean(15, StringDataProvider.isPlayerName(provider)); + + // Find appropriate provider + ExtensionPluginTable.set2PluginValuesToStatement(statement, 16, info.getPluginName(), serverUUID); + statement.setString(18, info.getName()); } }; } private Executable insertProvider() { + /* PROVIDER_NAME + PLUGIN_ID + + TEXT + DESCRIPTION // Can be null + PRIORITY + GROUPABLE // default false + CONDITION // Can be null, related to @Conditional + ICON_ID + TAB_ID // Can be null, related to @Tab + SHOW_IN_PLAYERS_TABLE // default false + HIDDEN // default false, related to @BooleanProvider + PROVIDED_CONDITION // Can be null, related to @BooleanProvider + FORMAT_TYPE // Can be null, related to @NumberProvider + IS_PLAYER_NAME // default false, related to @StringProvider */ String sql = "INSERT INTO " + TABLE_NAME + '(' + PROVIDER_NAME + ',' + TEXT + ',' + DESCRIPTION + ',' + PRIORITY + ',' + CONDITION + ',' + - PROVIDED_CONDITION + ',' + - HIDDEN + ',' + SHOW_IN_PLAYERS_TABLE + ',' + + HIDDEN + ',' + + PROVIDED_CONDITION + ',' + + FORMAT_TYPE + ',' + + IS_PLAYER_NAME + ',' + TAB_ID + ',' + ICON_ID + ',' + PLUGIN_ID + - ") VALUES (?,?,?,?,?,?,?,?," + + ") VALUES (?,?,?,?,?,?,?,?,?,?," + ExtensionTabTable.STATEMENT_SELECT_TAB_ID + ',' + ExtensionIconTable.STATEMENT_SELECT_ICON_ID + ',' + ExtensionPluginTable.STATEMENT_SELECT_PLUGIN_ID + ')'; return new ExecStatement(sql) { @Override public void prepare(PreparedStatement statement) throws SQLException { - statement.setString(1, providerInformation.getName()); - statement.setString(2, providerInformation.getText()); - Optional description = providerInformation.getDescription(); - if (description.isPresent()) { - statement.setString(3, description.get()); - } else { - statement.setNull(3, Types.VARCHAR); - } - statement.setInt(4, providerInformation.getPriority()); - Optional condition = providerInformation.getCondition(); - if (condition.isPresent()) { - statement.setString(5, condition.get()); - } else { - statement.setNull(5, Types.VARCHAR); - } - if (providedCondition != null) { - statement.setString(6, providedCondition); - } else { - statement.setNull(6, Types.VARCHAR); - } - statement.setBoolean(7, hidden); - statement.setBoolean(8, providerInformation.isShownInPlayersTable()); - ExtensionTabTable.set3TabValuesToStatement(statement, 9, providerInformation.getTab().orElse("No Tab"), providerInformation.getPluginName(), serverUUID); - ExtensionIconTable.set3IconValuesToStatement(statement, 12, providerInformation.getIcon()); - ExtensionPluginTable.set2PluginValuesToStatement(statement, 15, providerInformation.getPluginName(), serverUUID); + ProviderInformation info = provider.getProviderInformation(); + + // Found for all providers + statement.setString(1, info.getName()); + statement.setString(2, info.getText()); + Sql.setStringOrNull(statement, 3, info.getDescription().orElse(null)); + statement.setInt(4, info.getPriority()); + Sql.setStringOrNull(statement, 5, info.getCondition().orElse(null)); + statement.setBoolean(6, info.isShownInPlayersTable()); + + // Specific provider cases + statement.setBoolean(7, BooleanDataProvider.isHidden(provider)); + Sql.setStringOrNull(statement, 8, BooleanDataProvider.getProvidedCondition(provider).orElse(null)); + Sql.setStringOrNull(statement, 9, NumberDataProvider.getFormatType(provider).map(FormatType::name).orElse(null)); + statement.setBoolean(10, StringDataProvider.isPlayerName(provider)); + + // Found for all providers + ExtensionTabTable.set3TabValuesToStatement(statement, 11, info.getTab().orElse(null), info.getPluginName(), serverUUID); + ExtensionIconTable.set3IconValuesToStatement(statement, 14, info.getIcon()); + ExtensionPluginTable.set2PluginValuesToStatement(statement, 17, info.getPluginName(), serverUUID); } }; } diff --git a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreStringProviderTransaction.java b/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreStringProviderTransaction.java deleted file mode 100644 index 8bcf394b1..000000000 --- a/Plan/common/src/main/java/com/djrapitops/plan/extension/implementation/storage/transactions/providers/StoreStringProviderTransaction.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * 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.extension.implementation.storage.transactions.providers; - -import com.djrapitops.plan.extension.implementation.ProviderInformation; -import com.djrapitops.plan.extension.implementation.providers.DataProvider; -import com.djrapitops.plan.storage.database.sql.tables.ExtensionIconTable; -import com.djrapitops.plan.storage.database.sql.tables.ExtensionPluginTable; -import com.djrapitops.plan.storage.database.sql.tables.ExtensionTabTable; -import com.djrapitops.plan.storage.database.transactions.ExecStatement; -import com.djrapitops.plan.storage.database.transactions.Executable; -import com.djrapitops.plan.storage.database.transactions.ThrowawayTransaction; - -import java.sql.PreparedStatement; -import java.sql.SQLException; -import java.sql.Types; -import java.util.Optional; -import java.util.UUID; - -import static com.djrapitops.plan.storage.database.sql.building.Sql.AND; -import static com.djrapitops.plan.storage.database.sql.building.Sql.WHERE; -import static com.djrapitops.plan.storage.database.sql.tables.ExtensionProviderTable.*; - -/** - * Transaction to store information about a {@link com.djrapitops.plan.extension.implementation.providers.StringDataProvider}. - * - * @author Rsl1122 - */ -public class StoreStringProviderTransaction extends ThrowawayTransaction { - - private final boolean playerName; - private final UUID serverUUID; - private final ProviderInformation providerInformation; - - public StoreStringProviderTransaction(DataProvider provider, boolean playerName, UUID serverUUID) { - this.playerName = playerName; - this.serverUUID = serverUUID; - providerInformation = provider.getProviderInformation(); - } - - @Override - protected void performOperations() { - execute(storeProvider()); - } - - private Executable storeProvider() { - return connection -> { - if (!updateProvider().execute(connection)) { - return insertProvider().execute(connection); - } - return false; - }; - } - - private Executable updateProvider() { - String sql = "UPDATE " + TABLE_NAME + - " SET " + - TEXT + "=?," + - DESCRIPTION + "=?," + - PRIORITY + "=?," + - CONDITION + "=?," + - SHOW_IN_PLAYERS_TABLE + "=?," + - IS_PLAYER_NAME + "=?," + - 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 + "=?"; - - return new ExecStatement(sql) { - @Override - public void prepare(PreparedStatement statement) throws SQLException { - statement.setString(1, providerInformation.getText()); - Optional description = providerInformation.getDescription(); - if (description.isPresent()) { - statement.setString(2, description.get()); - } else { - statement.setNull(2, Types.VARCHAR); - } - statement.setInt(3, providerInformation.getPriority()); - Optional condition = providerInformation.getCondition(); - if (condition.isPresent()) { - statement.setString(4, condition.get()); - } else { - statement.setNull(4, Types.VARCHAR); - } - statement.setBoolean(5, providerInformation.isShownInPlayersTable()); - statement.setBoolean(6, playerName); - 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.setString(15, providerInformation.getName()); - } - }; - } - - private Executable insertProvider() { - String sql = "INSERT INTO " + TABLE_NAME + "(" + - PROVIDER_NAME + "," + - TEXT + "," + - DESCRIPTION + "," + - PRIORITY + "," + - CONDITION + "," + - SHOW_IN_PLAYERS_TABLE + "," + - IS_PLAYER_NAME + "," + - TAB_ID + "," + - ICON_ID + "," + - PLUGIN_ID + - ") VALUES (?,?,?,?,?,?,?," + - ExtensionTabTable.STATEMENT_SELECT_TAB_ID + "," + - ExtensionIconTable.STATEMENT_SELECT_ICON_ID + "," + - ExtensionPluginTable.STATEMENT_SELECT_PLUGIN_ID + ")"; - return new ExecStatement(sql) { - @Override - public void prepare(PreparedStatement statement) throws SQLException { - statement.setString(1, providerInformation.getName()); - statement.setString(2, providerInformation.getText()); - Optional description = providerInformation.getDescription(); - if (description.isPresent()) { - statement.setString(3, description.get()); - } else { - statement.setNull(3, Types.VARCHAR); - } - statement.setInt(4, providerInformation.getPriority()); - Optional condition = providerInformation.getCondition(); - if (condition.isPresent()) { - statement.setString(5, condition.get()); - } else { - statement.setNull(5, Types.VARCHAR); - } - statement.setBoolean(6, providerInformation.isShownInPlayersTable()); - statement.setBoolean(7, playerName); - ExtensionTabTable.set3TabValuesToStatement(statement, 8, providerInformation.getTab().orElse("No Tab"), providerInformation.getPluginName(), serverUUID); - ExtensionIconTable.set3IconValuesToStatement(statement, 11, providerInformation.getIcon()); - ExtensionPluginTable.set2PluginValuesToStatement(statement, 14, providerInformation.getPluginName(), serverUUID); - } - }; - } -} \ No newline at end of file diff --git a/Plan/common/src/main/java/com/djrapitops/plan/storage/database/sql/building/Sql.java b/Plan/common/src/main/java/com/djrapitops/plan/storage/database/sql/building/Sql.java index 2945bbd2c..eb144850f 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/storage/database/sql/building/Sql.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/storage/database/sql/building/Sql.java @@ -16,6 +16,9 @@ */ package com.djrapitops.plan.storage.database.sql.building; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Types; import java.util.concurrent.TimeUnit; /** @@ -61,6 +64,14 @@ public abstract class Sql { return TimeUnit.DAYS.toMillis(day + 2L); } + public static void setStringOrNull(PreparedStatement statement, int index, String value) throws SQLException { + if (value != null) { + statement.setString(index, value); + } else { + statement.setNull(index, Types.VARCHAR); + } + } + public abstract String epochSecondToDate(String sql); public abstract String dateToEpochSecond(String sql); diff --git a/Plan/common/src/main/java/com/djrapitops/plan/storage/database/sql/tables/ExtensionTabTable.java b/Plan/common/src/main/java/com/djrapitops/plan/storage/database/sql/tables/ExtensionTabTable.java index 6e215ee42..8e4c87909 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/storage/database/sql/tables/ExtensionTabTable.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/storage/database/sql/tables/ExtensionTabTable.java @@ -49,7 +49,7 @@ public class ExtensionTabTable { AND + PLUGIN_ID + "=" + ExtensionPluginTable.STATEMENT_SELECT_PLUGIN_ID + " LIMIT 1)"; public static void set3TabValuesToStatement(PreparedStatement statement, int parameterIndex, String tabName, String pluginName, UUID serverUUID) throws SQLException { - statement.setString(parameterIndex, tabName); + Sql.setStringOrNull(statement, parameterIndex, tabName); ExtensionPluginTable.set2PluginValuesToStatement(statement, parameterIndex + 1, pluginName, serverUUID); }