use of me.retrodaredevil.solarthing.commands.packets.open.ImmutableDeleteAlterPacket in project solarthing by wildmountainfarms.
the class FlagCommandChatBotHandler method clearFlag.
private void clearFlag(MessageSender messageSender, String flagName) {
List<VersionedPacket<StoredAlterPacket>> packets = getPacketsWithFlagName(flagName);
if (packets == null) {
messageSender.sendMessage("Could not get flags. Please try again.");
return;
}
Instant now = Instant.now();
if (packets.isEmpty()) {
messageSender.sendMessage("Flag: '" + flagName + "' is not set!");
return;
}
List<VersionedPacket<StoredAlterPacket>> activePackets = packets.stream().filter(versionedPacket -> {
FlagPacket flagPacket = (FlagPacket) versionedPacket.getPacket().getPacket();
return flagPacket.getFlagData().getActivePeriod().isActive(now);
}).collect(Collectors.toList());
if (activePackets.isEmpty()) {
messageSender.sendMessage("Flag: '" + flagName + "' is not currently active. In a future update we may allow you to clear inactive flags.");
return;
}
// We know that the user wants this flag cleared, so let's delete all the packets that are active.
for (VersionedPacket<StoredAlterPacket> packetToRequestDeleteFor : activePackets) {
DeleteAlterPacket deleteAlterPacket = new ImmutableDeleteAlterPacket(packetToRequestDeleteFor.getPacket().getDbId(), packetToRequestDeleteFor.getUpdateToken());
PacketCollectionCreator creator = commandHelper.getCommandManager().makeCreator(sourceId, zoneId, null, deleteAlterPacket, PacketCollectionIdGenerator.Defaults.UNIQUE_GENERATOR);
PacketCollection packetCollection = creator.create(now);
boolean success = false;
try {
database.getOpenDatabase().uploadPacketCollection(packetCollection, null);
success = true;
} catch (SolarThingDatabaseException e) {
LOGGER.error("Could not upload request to delete alter packet for ID: " + packetToRequestDeleteFor.getPacket().getDbId(), e);
}
if (success) {
messageSender.sendMessage("Requested delete for flag: '" + flagName + "' under ID: " + packetToRequestDeleteFor.getPacket().getDbId());
} else {
messageSender.sendMessage("Could not request delete for flag: '" + flagName + "' under ID: " + packetToRequestDeleteFor.getPacket().getDbId() + ". See logs for details.");
}
}
}
use of me.retrodaredevil.solarthing.commands.packets.open.ImmutableDeleteAlterPacket in project solarthing by wildmountainfarms.
the class CancelCommandChatBotHandler method cancelCommand.
private void cancelCommand(MessageSender messageSender, UUID schedulingId) {
List<VersionedPacket<StoredAlterPacket>> packets = alterPacketsProvider.getPackets();
if (packets == null) {
messageSender.sendMessage("Unable to cancel commands, as we are unable to reach the alter database.");
return;
}
List<VersionedPacket<StoredAlterPacket>> targets = findStoredPacketsWithSchedulingIdOrNull(packets.stream(), schedulingId);
if (targets.isEmpty()) {
messageSender.sendMessage("Unable to find a scheduled command that was scheduled with the ID of " + schedulingId);
} else if (targets.size() > 1) {
messageSender.sendMessage("Multiple packets corresponded to ID: " + schedulingId + ". Please report this error.");
} else {
VersionedPacket<StoredAlterPacket> target = targets.get(0);
messageSender.sendMessage("Going request cancel of " + target.getPacket().getDbId());
CommandOpenPacket packet = new ImmutableDeleteAlterPacket(target.getPacket().getDbId(), target.getUpdateToken());
PacketCollectionCreator creator = commandHelper.getCommandManager().makeCreator(sourceId, zoneId, null, packet, PacketCollectionIdGenerator.Defaults.UNIQUE_GENERATOR);
executorService.execute(() -> {
Instant now = Instant.now();
PacketCollection packetCollection = creator.create(now);
boolean success = true;
try {
database.getOpenDatabase().uploadPacketCollection(packetCollection, null);
} catch (SolarThingDatabaseException e) {
LOGGER.error("Could not upload alter delete request", e);
success = false;
}
if (success) {
messageSender.sendMessage("Sent request to delete the scheduled command");
} else {
messageSender.sendMessage("Could not upload request to delete scheduled command. You can try again.");
}
});
}
}
Aggregations