Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Plan/bukkit/src/main/java/com/djrapitops/plan/Plan.java
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public void onLoad() {
if (isFolia()) {
try {
// Attempt to load and use the Folia library for Java 17+
Class<?> foliaPlatformLayer = Class.forName("net.playeranalytics.plugin.FoliaPlatformLayer");
Class<?> foliaPlatformLayer = Class.forName("net.playeranalytics.plugin.PlanFoliaPlatformLayer");

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Class<?> foliaPlatformLayer = Class.forName("net.playeranalytics.plugin.PlanFoliaPlatformLayer");
Class<?> foliaPlatformLayer = Class.forName("net.playeranalytics.plugin.FoliaPlatformLayer");

abstractionLayer = (PlatformAbstractionLayer) foliaPlatformLayer.getConstructor(JavaPlugin.class).newInstance(this);
} catch (Exception e) {
this.getLogger().log(Level.SEVERE, "Failed to load FoliaPlatformLayer", e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,7 @@ private Subcommand databaseCommand() {
.subcommand(hotswapCommand())
.subcommand(clearCommand())
.subcommand(removeCommand())
.subcommand(removeRegisteredBetweenCommand())
.subcommand(uninstalledCommand())
.subcommand(removeJoinAddressesCommand())
.subcommand(onlineUuidMigration())
Expand Down Expand Up @@ -478,6 +479,18 @@ private Subcommand clearCommand() {
).build();
}

private Subcommand removeRegisteredBetweenCommand() {
return Subcommand.builder()
.aliases("remove_registered", "removeregistered", "remove_between")
.requirePermission(Permissions.DATA_CLEAR)
.requiredArgument(locale.getString(HelpLang.ARG_AFTER_DATE), locale.getString(HelpLang.DESC_ARG_AFTER_DATE))
.requiredArgument(locale.getString(HelpLang.ARG_BEFORE_DATE), locale.getString(HelpLang.DESC_ARG_BEFORE_DATE))
.description(locale.getString(HelpLang.DB_REMOVE_REGISTERED))
.inDepthDescription(locale.getString(DeepHelpLang.DB_REMOVE_REGISTERED))
.onCommand(databaseCommands::onRemoveRegisteredBetween)
.build();
}

private Subcommand removeCommand() {
return Subcommand.builder()
.aliases("remove")
Expand Down Expand Up @@ -576,4 +589,4 @@ private Subcommand groups() {
.onCommand(registrationCommands::onListWebGroups)
.build();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@
import javax.inject.Singleton;
import java.io.File;
import java.io.IOException;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeParseException;
import java.util.*;
import java.util.concurrent.ExecutionException;
import java.util.function.Consumer;
Expand Down Expand Up @@ -413,6 +416,73 @@ private void performRemoval(CMDSender sender, Database database, UUID playerToRe
}
}

public void onRemoveRegisteredBetween(CMDSender sender, @Untrusted Arguments arguments) {
@Untrusted String afterDate = arguments.get(0)
.orElseThrow(() -> new IllegalArgumentException(locale.getString(CommandLang.FAIL_REQ_ARGS, 2, "<yyyy-MM-dd> <yyyy-MM-dd>")));
@Untrusted String beforeDate = arguments.get(1)
.orElseThrow(() -> new IllegalArgumentException(locale.getString(CommandLang.FAIL_REQ_ARGS, 2, "<yyyy-MM-dd> <yyyy-MM-dd>")));

DateRange range = parseDateRange(afterDate, beforeDate, config.getTimeZone().toZoneId());
Database database = dbSystem.getDatabase();
String prompt = locale.getString(CommandLang.CONFIRM_REMOVE_PLAYERS_BETWEEN_DB,
afterDate,
beforeDate,
database.getType().getName());

confirmation.confirm(sender, prompt, choice -> {
if (Boolean.TRUE.equals(choice)) {
performRegisteredBetweenRemoval(sender, database, range);
} else {
sender.send(colors.getMainColor() + locale.getString(CommandLang.CONFIRM_CANCELLED_DATA));
}
});
}

private DateRange parseDateRange(String afterDate, String beforeDate, ZoneId zoneId) {
try {
LocalDate after = LocalDate.parse(afterDate);
LocalDate before = LocalDate.parse(beforeDate);
if (after.isAfter(before)) {
throw new IllegalArgumentException(locale.getString(CommandLang.FAIL_DATE_RANGE, afterDate, beforeDate));
}
long afterTimestamp = after.atStartOfDay(zoneId).toInstant().toEpochMilli();
long beforeTimestamp = before.plusDays(1L).atStartOfDay(zoneId).toInstant().toEpochMilli() - 1L;
return new DateRange(afterTimestamp, beforeTimestamp);
} catch (DateTimeParseException invalidDate) {
throw new IllegalArgumentException(locale.getString(CommandLang.FAIL_DATE_FORMAT, invalidDate.getParsedString()));
}
}

private void performRegisteredBetweenRemoval(CMDSender sender, Database database, DateRange range) {
try {
sender.send(locale.getString(CommandLang.DB_REMOVAL_PLAYERS, database.getType().getName()));
RemovePlayersRegisteredBetweenTransaction transaction = new RemovePlayersRegisteredBetweenTransaction(range.after, range.before);
database.executeTransaction(transaction).join();

Set<UUID> removedPlayerUUIDs = transaction.getRemovedPlayerUUIDs();
removedPlayerUUIDs.forEach(queryService::playerRemoved);
sender.send(locale.getString(CommandLang.DB_REMOVAL_PLAYERS_SUCCESS, removedPlayerUUIDs.size()));
} catch (DBOpException e) {
sender.send(locale.getString(CommandLang.PROGRESS_FAIL, e.getMessage()));
errorLogger.error(e, ErrorContext.builder().related(sender, database.getType().getName(), range).build());
}
}

private static class DateRange {
private final long after;
private final long before;

private DateRange(long after, long before) {
this.after = after;
this.before = before;
}

@Override
public String toString() {
return after + "-" + before;
}
}

private void ensureDatabaseIsOpen() {
Database.State dbState = dbSystem.getDatabase().getState();
if (dbState != Database.State.OPEN) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@
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.StoreProviderTransaction;
import com.djrapitops.plan.extension.implementation.storage.transactions.providers.StoreTableProviderTransaction;
import com.djrapitops.plan.extension.implementation.storage.transactions.results.*;
import com.djrapitops.plan.extension.table.Table;
import com.djrapitops.plan.identification.ServerInfo;
Expand Down Expand Up @@ -70,6 +68,7 @@ public class DataValueGatherer {
private final ErrorLogger errorLogger;

private final Set<ExtensionMethod> brokenMethods;
private final ExtensionMetadataStorage metadataStorage;

public DataValueGatherer(
ExtensionWrapper extension,
Expand All @@ -86,6 +85,7 @@ public DataValueGatherer(
this.errorLogger = errorLogger;

this.brokenMethods = new HashSet<>();
this.metadataStorage = new ExtensionMetadataStorage();
}

public boolean shouldSkipEvent(CallEvents event) {
Expand Down Expand Up @@ -477,8 +477,7 @@ private void storeBoolean(Parameters parameters, Conditions conditions, BooleanD
}

Database db = dbSystem.getDatabase();
db.executeTransaction(new StoreIconTransaction(information.getIcon()));
db.executeTransaction(new StoreProviderTransaction(information, parameters));
metadataStorage.storeProvider(db, information, parameters);
db.executeTransaction(new StoreServerBooleanResultTransaction(information, parameters, value));
}

Expand All @@ -488,8 +487,7 @@ private void storeNumber(Parameters parameters, Conditions conditions, NumberDat
if (value == null) return;

Database db = dbSystem.getDatabase();
db.executeTransaction(new StoreIconTransaction(information.getIcon()));
db.executeTransaction(new StoreProviderTransaction(information, parameters));
metadataStorage.storeProvider(db, information, parameters);
db.executeTransaction(new StoreServerNumberResultTransaction(information, parameters, value));
}

Expand All @@ -500,8 +498,7 @@ private void storeDouble(Parameters parameters, Conditions conditions, DoubleDat
if (value == null) return;

Database db = dbSystem.getDatabase();
db.executeTransaction(new StoreIconTransaction(information.getIcon()));
db.executeTransaction(new StoreProviderTransaction(information, parameters));
metadataStorage.storeProvider(db, information, parameters);
db.executeTransaction(new StoreServerDoubleResultTransaction(information, parameters, value));
}

Expand All @@ -511,8 +508,7 @@ private void storeString(Parameters parameters, Conditions conditions, StringDat
if (value == null) return;

Database db = dbSystem.getDatabase();
db.executeTransaction(new StoreIconTransaction(information.getIcon()));
db.executeTransaction(new StoreProviderTransaction(information, parameters));
metadataStorage.storeProvider(db, information, parameters);
db.executeTransaction(new StoreServerStringResultTransaction(information, parameters, value));
}

Expand All @@ -522,8 +518,7 @@ private void storeComponent(Parameters parameters, Conditions conditions, Compon
if (value == null) return;

Database db = dbSystem.getDatabase();
db.executeTransaction(new StoreIconTransaction(information.getIcon()));
db.executeTransaction(new StoreProviderTransaction(information, parameters));
metadataStorage.storeProvider(db, information, parameters);
db.executeTransaction(new StoreServerStringResultTransaction(information, parameters, value));
}

Expand All @@ -533,10 +528,7 @@ private void storeTable(Parameters parameters, Conditions conditions, TableDataV
if (value == null) return;

Database db = dbSystem.getDatabase();
for (Icon icon : value.getIcons()) {
if (icon != null) db.executeTransaction(new StoreIconTransaction(icon));
}
db.executeTransaction(new StoreTableProviderTransaction(information, parameters, value));
metadataStorage.storeTableProvider(db, information, parameters, value);
db.executeTransaction(new StoreServerTableResultTransaction(information, parameters, value));
}

Expand All @@ -551,8 +543,7 @@ private void storePlayerBoolean(Parameters parameters, Conditions conditions, Bo
}

Database db = dbSystem.getDatabase();
db.executeTransaction(new StoreIconTransaction(information.getIcon()));
db.executeTransaction(new StoreProviderTransaction(information, parameters));
metadataStorage.storeProvider(db, information, parameters);
db.executeTransaction(new StorePlayerBooleanResultTransaction(information, parameters, value));
}

Expand All @@ -562,8 +553,7 @@ private void storePlayerNumber(Parameters parameters, Conditions conditions, Num
if (value == null) return;

Database db = dbSystem.getDatabase();
db.executeTransaction(new StoreIconTransaction(information.getIcon()));
db.executeTransaction(new StoreProviderTransaction(information, parameters));
metadataStorage.storeProvider(db, information, parameters);
db.executeTransaction(new StorePlayerNumberResultTransaction(information, parameters, value));
}

Expand All @@ -573,8 +563,7 @@ private void storePlayerDouble(Parameters parameters, Conditions conditions, Dou
if (value == null) return;

Database db = dbSystem.getDatabase();
db.executeTransaction(new StoreIconTransaction(information.getIcon()));
db.executeTransaction(new StoreProviderTransaction(information, parameters));
metadataStorage.storeProvider(db, information, parameters);
db.executeTransaction(new StorePlayerDoubleResultTransaction(information, parameters, value));
}

Expand All @@ -584,8 +573,7 @@ private void storePlayerString(Parameters parameters, Conditions conditions, Str
if (value == null) return;

Database db = dbSystem.getDatabase();
db.executeTransaction(new StoreIconTransaction(information.getIcon()));
db.executeTransaction(new StoreProviderTransaction(information, parameters));
metadataStorage.storeProvider(db, information, parameters);
db.executeTransaction(new StorePlayerStringResultTransaction(information, parameters, value));
}

Expand All @@ -595,8 +583,7 @@ private void storePlayerComponent(Parameters parameters, Conditions conditions,
if (value == null) return;

Database db = dbSystem.getDatabase();
db.executeTransaction(new StoreIconTransaction(information.getIcon()));
db.executeTransaction(new StoreProviderTransaction(information, parameters));
metadataStorage.storeProvider(db, information, parameters);
db.executeTransaction(new StorePlayerStringResultTransaction(information, parameters, value));
}

Expand All @@ -606,8 +593,7 @@ private void storePlayerGroups(Parameters parameters, Conditions conditions, Gro
if (value == null) return;

Database db = dbSystem.getDatabase();
db.executeTransaction(new StoreIconTransaction(information.getIcon()));
db.executeTransaction(new StoreProviderTransaction(information, parameters));
metadataStorage.storeProvider(db, information, parameters);
db.executeTransaction(new StorePlayerGroupsResultTransaction(information, parameters, value));
}

Expand All @@ -617,10 +603,7 @@ private void storePlayerTable(Parameters parameters, Conditions conditions, Tabl
if (value == null) return;

Database db = dbSystem.getDatabase();
for (Icon icon : value.getIcons()) {
if (icon != null) db.executeTransaction(new StoreIconTransaction(icon));
}
db.executeTransaction(new StoreTableProviderTransaction(information, parameters, value));
metadataStorage.storeTableProvider(db, information, parameters, value);
db.executeTransaction(new StorePlayerTableResultTransaction(information, parameters, value));
}
}
}
Loading