String result store transaction

This commit is contained in:
Rsl1122 2019-03-18 14:27:14 +02:00
parent 78959ba190
commit a87c2cd32e

View File

@ -16,10 +16,19 @@
*/ */
package com.djrapitops.plan.extension.implementation.storage.transactions.results; package com.djrapitops.plan.extension.implementation.storage.transactions.results;
import com.djrapitops.plan.db.access.ExecStatement;
import com.djrapitops.plan.db.access.Executable;
import com.djrapitops.plan.db.access.transactions.Transaction; import com.djrapitops.plan.db.access.transactions.Transaction;
import com.djrapitops.plan.db.sql.tables.ExtensionProviderTable;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.UUID; import java.util.UUID;
import static com.djrapitops.plan.db.sql.parsing.Sql.AND;
import static com.djrapitops.plan.db.sql.parsing.Sql.WHERE;
import static com.djrapitops.plan.db.sql.tables.ExtensionPlayerValues.*;
/** /**
* Transaction to store method result of a {@link com.djrapitops.plan.extension.implementation.providers.StringDataProvider}. * Transaction to store method result of a {@link com.djrapitops.plan.extension.implementation.providers.StringDataProvider}.
* *
@ -29,21 +38,63 @@ public class StorePlayerStringResultTransaction extends Transaction {
private final String pluginName; private final String pluginName;
private final UUID serverUUID; private final UUID serverUUID;
private final String methodName; private final String providerName;
private final UUID playerUUID; private final UUID playerUUID;
private final String value; private final String value;
public StorePlayerStringResultTransaction(String pluginName, UUID serverUUID, String methodName, UUID playerUUID, String value) { public StorePlayerStringResultTransaction(String pluginName, UUID serverUUID, String providerName, UUID playerUUID, String value) {
this.pluginName = pluginName; this.pluginName = pluginName;
this.serverUUID = serverUUID; this.serverUUID = serverUUID;
this.methodName = methodName; this.providerName = providerName;
this.playerUUID = playerUUID; this.playerUUID = playerUUID;
this.value = value; this.value = value;
} }
@Override @Override
protected void performOperations() { protected void performOperations() {
// TODO Store data in a table execute(storeValue());
}
private Executable storeValue() {
return connection -> {
if (!updateValue().execute(connection)) {
return insertValue().execute(connection);
}
return false;
};
}
private Executable updateValue() {
String sql = "UPDATE " + TABLE_NAME +
" SET (" +
STRING_VALUE + "=?" +
")" + WHERE + USER_UUID + "=?" +
AND + PROVIDER_ID + "=" + ExtensionProviderTable.STATEMENT_SELECT_PROVIDER_ID;
return new ExecStatement(sql) {
@Override
public void prepare(PreparedStatement statement) throws SQLException {
statement.setString(1, value);
statement.setString(2, playerUUID.toString());
ExtensionProviderTable.set3PluginValuesToStatement(statement, 3, providerName, pluginName, serverUUID);
}
};
}
private Executable insertValue() {
String sql = "INSERT INTO " + TABLE_NAME + "(" +
STRING_VALUE + "," +
USER_UUID + "," +
PROVIDER_ID +
") VALUES (?,?," + ExtensionProviderTable.STATEMENT_SELECT_PROVIDER_ID + ")";
return new ExecStatement(sql) {
@Override
public void prepare(PreparedStatement statement) throws SQLException {
statement.setString(1, value);
statement.setString(2, playerUUID.toString());
ExtensionProviderTable.set3PluginValuesToStatement(statement, 3, providerName, pluginName, serverUUID);
}
};
} }
} }