Skip to content

Commit 83d9675

Browse files
committed
Refactor bulkedit api to expose less classes, and implement BulkEditCreator
1 parent 4bcee54 commit 83d9675

13 files changed

Lines changed: 88 additions & 68 deletions

src/main/java/org/mvplugins/multiverse/inventories/commands/bulkedit/BulkEditCommand.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,26 @@
11
package org.mvplugins.multiverse.inventories.commands.bulkedit;
22

33
import org.jetbrains.annotations.ApiStatus;
4+
import org.jvnet.hk2.annotations.Contract;
45
import org.mvplugins.multiverse.core.command.MVCommandIssuer;
56
import org.mvplugins.multiverse.core.utils.StringFormatter;
7+
import org.mvplugins.multiverse.external.jakarta.inject.Inject;
68
import org.mvplugins.multiverse.inventories.commands.InventoriesCommand;
7-
import org.mvplugins.multiverse.inventories.profile.bulkedit.action.BulkEditAction;
8-
import org.mvplugins.multiverse.inventories.profile.bulkedit.action.BulkEditResult;
9+
import org.mvplugins.multiverse.inventories.profile.bulkedit.BulkEditAction;
10+
import org.mvplugins.multiverse.inventories.profile.bulkedit.BulkEditCreator;
11+
import org.mvplugins.multiverse.inventories.profile.bulkedit.BulkEditResult;
912

13+
@Contract
1014
@ApiStatus.Internal
1115
public abstract class BulkEditCommand extends InventoriesCommand {
1216

17+
protected final BulkEditCreator bulkEditCreator;
18+
19+
@Inject
20+
protected BulkEditCommand(BulkEditCreator bulkEditCreator) {
21+
this.bulkEditCreator = bulkEditCreator;
22+
}
23+
1324
protected void outputActionSummary(MVCommandIssuer issuer, BulkEditAction<?> bulkEditAction) {
1425
issuer.sendMessage("Summary of affected profiles:");
1526
bulkEditAction.getActionSummary().forEach((key, value) ->

src/main/java/org/mvplugins/multiverse/inventories/commands/bulkedit/playerprofile/ClearCommand.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,28 +12,27 @@
1212
import org.mvplugins.multiverse.external.acf.commands.annotation.Syntax;
1313
import org.mvplugins.multiverse.external.jakarta.inject.Inject;
1414
import org.mvplugins.multiverse.external.jetbrains.annotations.NotNull;
15-
import org.mvplugins.multiverse.inventories.MultiverseInventories;
1615
import org.mvplugins.multiverse.inventories.commands.bulkedit.BulkEditCommand;
17-
import org.mvplugins.multiverse.inventories.profile.bulkedit.BulkProfilesPayload;
18-
import org.mvplugins.multiverse.inventories.profile.bulkedit.action.PlayerProfileClearAction;
16+
import org.mvplugins.multiverse.inventories.profile.bulkedit.BulkEditAction;
17+
import org.mvplugins.multiverse.inventories.profile.bulkedit.BulkEditCreator;
18+
import org.mvplugins.multiverse.inventories.profile.bulkedit.PlayerProfilesPayload;
1919
import org.mvplugins.multiverse.inventories.profile.key.ContainerKey;
2020
import org.mvplugins.multiverse.inventories.profile.key.GlobalProfileKey;
2121
import org.mvplugins.multiverse.inventories.profile.key.ProfileType;
2222

2323
@Service
2424
final class ClearCommand extends BulkEditCommand {
2525

26-
private final MultiverseInventories inventories;
2726
private final CommandQueueManager commandQueueManager;
2827
private final IncludeGroupsWorldsFlag flags;
2928

3029
@Inject
3130
ClearCommand(
32-
@NotNull MultiverseInventories inventories,
31+
@NotNull BulkEditCreator bulkEditCreator,
3332
@NotNull CommandQueueManager commandQueueManager,
3433
@NotNull IncludeGroupsWorldsFlag flags
3534
) {
36-
this.inventories = inventories;
35+
super(bulkEditCreator);
3736
this.commandQueueManager = commandQueueManager;
3837
this.flags = flags;
3938
}
@@ -51,9 +50,8 @@ void onCommand(
5150
) {
5251
ParsedCommandFlags parsedFlags = flags.parse(flagArray);
5352

54-
PlayerProfileClearAction bulkEditAction = new PlayerProfileClearAction(
55-
inventories,
56-
new BulkProfilesPayload(
53+
BulkEditAction<?> bulkEditAction = bulkEditCreator.playerProfileClear(
54+
new PlayerProfilesPayload(
5755
globalProfileKeys,
5856
containerKeys,
5957
profileTypes,

src/main/java/org/mvplugins/multiverse/inventories/commands/bulkedit/playerprofile/DeleteCommand.java

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@
1313
import org.mvplugins.multiverse.external.acf.commands.annotation.Syntax;
1414
import org.mvplugins.multiverse.external.jakarta.inject.Inject;
1515
import org.mvplugins.multiverse.external.jetbrains.annotations.NotNull;
16-
import org.mvplugins.multiverse.inventories.MultiverseInventories;
1716
import org.mvplugins.multiverse.inventories.commands.bulkedit.BulkEditCommand;
18-
import org.mvplugins.multiverse.inventories.profile.bulkedit.BulkProfilesPayload;
19-
import org.mvplugins.multiverse.inventories.profile.bulkedit.action.PlayerProfileDeleteAction;
17+
import org.mvplugins.multiverse.inventories.profile.bulkedit.BulkEditAction;
18+
import org.mvplugins.multiverse.inventories.profile.bulkedit.BulkEditCreator;
19+
import org.mvplugins.multiverse.inventories.profile.bulkedit.PlayerProfilesPayload;
2020
import org.mvplugins.multiverse.inventories.profile.key.ContainerKey;
2121
import org.mvplugins.multiverse.inventories.profile.key.GlobalProfileKey;
2222
import org.mvplugins.multiverse.inventories.profile.key.ProfileType;
@@ -25,17 +25,16 @@
2525
@Service
2626
final class DeleteCommand extends BulkEditCommand {
2727

28-
private final MultiverseInventories inventories;
2928
private final CommandQueueManager commandQueueManager;
3029
private final IncludeGroupsWorldsFlag flags;
3130

3231
@Inject
3332
DeleteCommand(
34-
@NotNull MultiverseInventories inventories,
33+
@NotNull BulkEditCreator bulkEditCreator,
3534
@NotNull CommandQueueManager commandQueueManager,
3635
@NotNull IncludeGroupsWorldsFlag flags
3736
) {
38-
this.inventories = inventories;
37+
super(bulkEditCreator);
3938
this.commandQueueManager = commandQueueManager;
4039
this.flags = flags;
4140
}
@@ -54,15 +53,14 @@ void onCommand(
5453
) {
5554
ParsedCommandFlags parsedFlags = flags.parse(flagArray);
5655

57-
PlayerProfileDeleteAction bulkEditAction = new PlayerProfileDeleteAction(
58-
inventories,
59-
sharable,
60-
new BulkProfilesPayload(
56+
BulkEditAction<?> bulkEditAction = bulkEditCreator.playerProfileDeleteSharable(
57+
new PlayerProfilesPayload(
6158
globalProfileKeys,
6259
containerKeys,
6360
profileTypes,
6461
parsedFlags.hasFlag(flags.includeGroupsWorlds)
65-
)
62+
),
63+
sharable
6664
);
6765

6866
issuer.sendMessage("Summary of affected profiles:");

src/main/java/org/mvplugins/multiverse/inventories/profile/bulkedit/action/BulkEditAction.java renamed to src/main/java/org/mvplugins/multiverse/inventories/profile/bulkedit/BulkEditAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.mvplugins.multiverse.inventories.profile.bulkedit.action;
1+
package org.mvplugins.multiverse.inventories.profile.bulkedit;
22

33
import org.bukkit.Bukkit;
44
import org.bukkit.entity.Player;
@@ -15,7 +15,7 @@
1515
import java.util.concurrent.CompletableFuture;
1616

1717
@ApiStatus.Experimental
18-
public abstract class BulkEditAction<K extends GlobalProfileKey> {
18+
public sealed abstract class BulkEditAction<K extends GlobalProfileKey> permits PlayerFileAction, PlayerProfileAction {
1919

2020
protected final MultiverseInventories inventories;
2121
protected final ProfileDataSource profileDataSource;
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.mvplugins.multiverse.inventories.profile.bulkedit;
2+
3+
import org.jetbrains.annotations.ApiStatus;
4+
import org.jetbrains.annotations.NotNull;
5+
import org.jvnet.hk2.annotations.Service;
6+
import org.mvplugins.multiverse.external.jakarta.inject.Inject;
7+
import org.mvplugins.multiverse.inventories.MultiverseInventories;
8+
import org.mvplugins.multiverse.inventories.share.Sharable;
9+
10+
@Service
11+
@ApiStatus.Experimental
12+
public final class BulkEditCreator {
13+
14+
private final MultiverseInventories inventories;
15+
16+
@Inject
17+
BulkEditCreator(@NotNull MultiverseInventories inventories) {
18+
this.inventories = inventories;
19+
}
20+
21+
public BulkEditAction<?> playerProfileClear(PlayerProfilesPayload bulkProfilesPayload) {
22+
return new PlayerProfileClearAction(inventories, bulkProfilesPayload);
23+
}
24+
25+
public BulkEditAction<?> playerProfileDeleteSharable(PlayerProfilesPayload bulkProfilesPayload, Sharable<?> sharable) {
26+
return new PlayerProfileDeleteAction(inventories, sharable, bulkProfilesPayload);
27+
}
28+
}

src/main/java/org/mvplugins/multiverse/inventories/profile/bulkedit/action/BulkEditResult.java renamed to src/main/java/org/mvplugins/multiverse/inventories/profile/bulkedit/BulkEditResult.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.mvplugins.multiverse.inventories.profile.bulkedit.action;
1+
package org.mvplugins.multiverse.inventories.profile.bulkedit;
22

33
import org.jetbrains.annotations.ApiStatus;
44

@@ -11,6 +11,8 @@ public final class BulkEditResult {
1111
private final AtomicInteger successCount = new AtomicInteger(0);
1212
private final AtomicInteger failureCount = new AtomicInteger(0);
1313

14+
BulkEditResult() { }
15+
1416
void incrementSuccess() {
1517
successCount.incrementAndGet();
1618
}

src/main/java/org/mvplugins/multiverse/inventories/profile/bulkedit/action/PlayerFileAction.java renamed to src/main/java/org/mvplugins/multiverse/inventories/profile/bulkedit/PlayerFileAction.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,20 @@
1-
package org.mvplugins.multiverse.inventories.profile.bulkedit.action;
1+
package org.mvplugins.multiverse.inventories.profile.bulkedit;
22

33
import org.jetbrains.annotations.ApiStatus;
44
import org.mvplugins.multiverse.inventories.MultiverseInventories;
5-
import org.mvplugins.multiverse.inventories.profile.bulkedit.BulkProfilesAggregator;
6-
import org.mvplugins.multiverse.inventories.profile.bulkedit.BulkProfilesPayload;
75
import org.mvplugins.multiverse.inventories.profile.key.ProfileFileKey;
86

97
import java.util.List;
108
import java.util.Map;
119

12-
@ApiStatus.Experimental
13-
public abstract class PlayerFileAction extends BulkEditAction<ProfileFileKey> {
10+
abstract sealed class PlayerFileAction extends BulkEditAction<ProfileFileKey> permits PlayerProfileClearAction {
1411

15-
private final BulkProfilesAggregator profilesAggregator;
16-
protected final BulkProfilesPayload bulkProfilesPayload;
12+
private final PlayerProfilesAggregator profilesAggregator;
13+
protected final PlayerProfilesPayload bulkProfilesPayload;
1714

18-
PlayerFileAction(MultiverseInventories inventories, BulkProfilesPayload bulkProfilesPayload) {
15+
PlayerFileAction(MultiverseInventories inventories, PlayerProfilesPayload bulkProfilesPayload) {
1916
super(inventories, bulkProfilesPayload.globalProfileKeys());
20-
this.profilesAggregator = inventories.getServiceLocator().getService(BulkProfilesAggregator.class);
17+
this.profilesAggregator = inventories.getServiceLocator().getService(PlayerProfilesAggregator.class);
2118
this.bulkProfilesPayload = bulkProfilesPayload;
2219
}
2320

src/main/java/org/mvplugins/multiverse/inventories/profile/bulkedit/action/PlayerProfileAction.java renamed to src/main/java/org/mvplugins/multiverse/inventories/profile/bulkedit/PlayerProfileAction.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,23 @@
1-
package org.mvplugins.multiverse.inventories.profile.bulkedit.action;
1+
package org.mvplugins.multiverse.inventories.profile.bulkedit;
22

33
import org.jetbrains.annotations.ApiStatus;
44
import org.mvplugins.multiverse.inventories.MultiverseInventories;
5-
import org.mvplugins.multiverse.inventories.profile.bulkedit.BulkProfilesAggregator;
6-
import org.mvplugins.multiverse.inventories.profile.bulkedit.BulkProfilesPayload;
75
import org.mvplugins.multiverse.inventories.profile.key.ProfileKey;
86

97
import java.util.List;
108
import java.util.Map;
119

12-
@ApiStatus.Experimental
13-
public abstract class PlayerProfileAction extends BulkEditAction<ProfileKey> {
10+
abstract sealed class PlayerProfileAction extends BulkEditAction<ProfileKey> permits PlayerProfileDeleteAction {
1411

15-
private final BulkProfilesAggregator profilesAggregator;
16-
private final BulkProfilesPayload bulkProfilesPayload;
12+
private final PlayerProfilesAggregator profilesAggregator;
13+
private final PlayerProfilesPayload bulkProfilesPayload;
1714

1815
protected PlayerProfileAction(
1916
MultiverseInventories inventories,
20-
BulkProfilesPayload bulkProfilesPayload
17+
PlayerProfilesPayload bulkProfilesPayload
2118
) {
2219
super(inventories, bulkProfilesPayload.globalProfileKeys());
23-
this.profilesAggregator = inventories.getServiceLocator().getService(BulkProfilesAggregator.class);
20+
this.profilesAggregator = inventories.getServiceLocator().getService(PlayerProfilesAggregator.class);
2421
this.bulkProfilesPayload = bulkProfilesPayload;
2522
}
2623

src/main/java/org/mvplugins/multiverse/inventories/profile/bulkedit/action/PlayerProfileClearAction.java renamed to src/main/java/org/mvplugins/multiverse/inventories/profile/bulkedit/PlayerProfileClearAction.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
package org.mvplugins.multiverse.inventories.profile.bulkedit.action;
1+
package org.mvplugins.multiverse.inventories.profile.bulkedit;
22

33
import org.bukkit.entity.Player;
44
import org.jetbrains.annotations.ApiStatus;
55
import org.mvplugins.multiverse.inventories.MultiverseInventories;
66
import org.mvplugins.multiverse.inventories.handleshare.ReadOnlyShareHandler;
7-
import org.mvplugins.multiverse.inventories.profile.bulkedit.BulkProfilesPayload;
87
import org.mvplugins.multiverse.inventories.profile.group.WorldGroup;
98
import org.mvplugins.multiverse.inventories.profile.group.WorldGroupManager;
109
import org.mvplugins.multiverse.inventories.profile.key.ContainerType;
11-
import org.mvplugins.multiverse.inventories.profile.key.GlobalProfileKey;
1210
import org.mvplugins.multiverse.inventories.profile.key.ProfileFileKey;
1311
import org.mvplugins.multiverse.inventories.profile.key.ProfileType;
1412
import org.mvplugins.multiverse.inventories.profile.key.ProfileTypes;
@@ -19,13 +17,12 @@
1917
import java.util.Set;
2018
import java.util.concurrent.CompletableFuture;
2119

22-
@ApiStatus.Experimental
23-
public final class PlayerProfileClearAction extends PlayerFileAction {
20+
final class PlayerProfileClearAction extends PlayerFileAction {
2421

2522
private final WorldGroupManager worldGroupManager;
2623
private final Set<ProfileType> profileTypesSet;
2724

28-
public PlayerProfileClearAction(MultiverseInventories inventories, BulkProfilesPayload bulkProfilesPayload) {
25+
public PlayerProfileClearAction(MultiverseInventories inventories, PlayerProfilesPayload bulkProfilesPayload) {
2926
super(inventories, bulkProfilesPayload);
3027
this.worldGroupManager = inventories.getServiceLocator().getService(WorldGroupManager.class);
3128
this.profileTypesSet = Set.of(bulkProfilesPayload.profileTypes());

src/main/java/org/mvplugins/multiverse/inventories/profile/bulkedit/action/PlayerProfileDeleteAction.java renamed to src/main/java/org/mvplugins/multiverse/inventories/profile/bulkedit/PlayerProfileDeleteAction.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
1-
package org.mvplugins.multiverse.inventories.profile.bulkedit.action;
1+
package org.mvplugins.multiverse.inventories.profile.bulkedit;
22

33
import org.bukkit.entity.Player;
44
import org.jetbrains.annotations.ApiStatus;
55
import org.mvplugins.multiverse.inventories.MultiverseInventories;
66
import org.mvplugins.multiverse.inventories.handleshare.SingleShareReader;
77
import org.mvplugins.multiverse.inventories.profile.data.ProfileData;
8-
import org.mvplugins.multiverse.inventories.profile.data.ProfileDataSnapshot;
9-
import org.mvplugins.multiverse.inventories.profile.bulkedit.BulkProfilesPayload;
108
import org.mvplugins.multiverse.inventories.profile.data.SingleSharableData;
119
import org.mvplugins.multiverse.inventories.profile.group.WorldGroup;
1210
import org.mvplugins.multiverse.inventories.profile.group.WorldGroupManager;
@@ -19,8 +17,7 @@
1917
import java.util.List;
2018
import java.util.concurrent.CompletableFuture;
2119

22-
@ApiStatus.Experimental
23-
public final class PlayerProfileDeleteAction extends PlayerProfileAction {
20+
final class PlayerProfileDeleteAction extends PlayerProfileAction {
2421

2522

2623
private final WorldGroupManager worldGroupManager;
@@ -29,7 +26,7 @@ public final class PlayerProfileDeleteAction extends PlayerProfileAction {
2926
public PlayerProfileDeleteAction(
3027
MultiverseInventories inventories,
3128
Sharable sharable,
32-
BulkProfilesPayload bulkProfilesPayload
29+
PlayerProfilesPayload bulkProfilesPayload
3330
) {
3431
super(inventories, bulkProfilesPayload);
3532
this.worldGroupManager = inventories.getServiceLocator().getService(WorldGroupManager.class);

0 commit comments

Comments
 (0)