|
17 | 17 | import java.util.Date; |
18 | 18 | import java.util.List; |
19 | 19 | import java.util.UUID; |
| 20 | +import java.util.concurrent.CompletableFuture; |
20 | 21 | import java.util.logging.Logger; |
21 | 22 |
|
22 | 23 | public class SimplePostalPackageFactory implements PostalPackageFactory { |
@@ -54,25 +55,35 @@ public PostalPackage createPackage(@NotNull UUID sender, |
54 | 55 | } |
55 | 56 |
|
56 | 57 | @Override |
57 | | - public void createAndPostPackage(@NotNull UUID sender, |
58 | | - @NotNull UUID recipient, |
59 | | - @NotNull List<ItemStack> contents, |
60 | | - boolean isReturnPackage) { |
| 58 | + @Nonnull |
| 59 | + public CompletableFuture<PostResult> createAndPostPackage(@NotNull UUID sender, |
| 60 | + @NotNull UUID recipient, |
| 61 | + @NotNull List<ItemStack> contents, |
| 62 | + boolean isReturnPackage) { |
| 63 | + CompletableFuture<PostResult> future = new CompletableFuture<>(); |
61 | 64 | Logger logger = this.plugin.getLogger(); |
62 | 65 | BukkitScheduler scheduler = this.plugin.getServer().getScheduler(); |
| 66 | + PostalPackage postalPackage = createPackage(sender, recipient, contents, isReturnPackage); |
| 67 | + if (this.adapter.isParcelTooLarge(postalPackage)) { |
| 68 | + future.complete(PostResult.TOO_LARGE); |
| 69 | + return future; |
| 70 | + } |
63 | 71 | scheduler.runTaskAsynchronously(this.plugin, () -> { |
64 | 72 | try { |
65 | | - PostalPackage postalPackage = createPackage(sender, recipient, contents, isReturnPackage); |
| 73 | + |
66 | 74 | logger.fine("Posting package: " + postalPackage.id() + " sender: " + sender + " receiver: " + recipient); |
67 | 75 | this.adapter.addPackage(postalPackage); |
| 76 | + future.complete(PostResult.SUCCESS); |
68 | 77 | scheduler.runTask(this.plugin, () -> { |
69 | 78 | OfflinePlayer senderPlayer = this.plugin.getServer().getOfflinePlayer(sender); |
70 | 79 | this.mailService.notifyNewParcel(recipient, senderPlayer.getName()); |
71 | 80 | }); |
72 | 81 | } catch (SQLException ex) { |
73 | 82 | logger.warning("Failed to post package!"); |
| 83 | + future.complete(PostResult.UNKNOWN_ERROR); |
74 | 84 | ex.printStackTrace(); |
75 | 85 | } |
76 | 86 | }); |
| 87 | + return future; |
77 | 88 | } |
78 | 89 | } |
0 commit comments