diff --git a/bot-context/bot-context-quarkus/src/main/java/dev/struchkov/godfather/quarkus/context/repository/StorylineContext.java b/bot-context/bot-context-quarkus/src/main/java/dev/struchkov/godfather/quarkus/context/repository/StorylineContext.java index 54903c3..4d3de59 100644 --- a/bot-context/bot-context-quarkus/src/main/java/dev/struchkov/godfather/quarkus/context/repository/StorylineContext.java +++ b/bot-context/bot-context-quarkus/src/main/java/dev/struchkov/godfather/quarkus/context/repository/StorylineContext.java @@ -12,7 +12,7 @@ public interface StorylineContext { Uni getByKey(@NotNull String personId, @NotNull ContextKey key); - Uni removeKey(@NotNull String personId, @NotNull ContextKey key); + Uni removeKey(@NotNull String personId, @NotNull ContextKey key); Uni getByKeyOrThrow(@NotNull String personId, @NotNull ContextKey key); diff --git a/bot-core/bot-core-main/src/main/java/dev/struchkov/godfather/main/core/utils/MessageUtils.java b/bot-core/bot-core-main/src/main/java/dev/struchkov/godfather/main/core/utils/MessageUtils.java deleted file mode 100644 index b25457c..0000000 --- a/bot-core/bot-core-main/src/main/java/dev/struchkov/godfather/main/core/utils/MessageUtils.java +++ /dev/null @@ -1,21 +0,0 @@ -package dev.struchkov.godfather.main.core.utils; - -import dev.struchkov.godfather.main.domain.content.EmptyMessage; -import dev.struchkov.godfather.main.domain.content.Message; - -import static dev.struchkov.haiti.utils.Exceptions.utilityClass; - -/** - * Класс для хранения объекта заглушки для {@link Message}. - * - * @author upagge [08/07/2019] - */ -public final class MessageUtils { - - public static final EmptyMessage EMPTY_MESSAGE = new EmptyMessage(); - - private MessageUtils() { - utilityClass(); - } - -} diff --git a/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/GeneralAutoResponder.java b/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/GeneralAutoResponder.java index 9547f17..13e709a 100644 --- a/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/GeneralAutoResponder.java +++ b/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/GeneralAutoResponder.java @@ -77,7 +77,6 @@ public class GeneralAutoResponder { } ) ).replaceWithVoid(); - } public Uni processingNewMessages(List newMessages) { @@ -121,7 +120,7 @@ public class GeneralAutoResponder { public Uni answer(UnitRequest unitRequest) { return getAction(unitRequest) - .chain(request -> activeUnitAfter(unitRequest)) + .chain(this::activeUnitAfter) .onFailure().call( throwable -> { if (checkNotNull(errorHandler)) { @@ -144,7 +143,7 @@ public class GeneralAutoResponder { v -> getAction(UnitRequest.of(first.get(), unitRequest.getMessage())) ) .onItem().transformToUni( - uR -> activeUnitAfter(UnitRequest.of(first.get(), unitRequest.getMessage())) + newRequest -> activeUnitAfter(UnitRequest.of(first.get(), unitRequest.getMessage())) ); } } diff --git a/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/service/StorylineContextMapImpl.java b/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/service/StorylineContextMapImpl.java index 7048c71..f564cb9 100644 --- a/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/service/StorylineContextMapImpl.java +++ b/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/service/StorylineContextMapImpl.java @@ -35,7 +35,7 @@ public class StorylineContextMapImpl implements StorylineContext { } @Override - public Uni removeKey(@NotNull String personId, @NotNull ContextKey key) { + public Uni removeKey(@NotNull String personId, @NotNull ContextKey key) { isNotNull(personId, key); if (map.containsKey(personId)) { final Map storage = map.get(personId); diff --git a/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/service/StorylineMailService.java b/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/service/StorylineMailService.java index 31a7e77..09c309b 100644 --- a/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/service/StorylineMailService.java +++ b/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/service/StorylineMailService.java @@ -119,6 +119,12 @@ public class StorylineMailService implements StorylineService { defaultUnitName = defaultUnit; } + @Override + public Uni cleanHistoryByPersonId(@NotNull String personId) { + return storylineRepository.cleanHistoryByPersonId(personId) + .call(() -> unitPointerService.removeByPersonId(personId)); + } + //TODO [22.06.2022]: Временное решение для ленивой инициализации @Override public void lazyLink(String firstName, String secondName) { diff --git a/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/service/StorylineService.java b/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/service/StorylineService.java index da8fa22..a81b113 100644 --- a/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/service/StorylineService.java +++ b/bot-core/bot-core-quarkus/src/main/java/dev/struchkov/godfather/quarkus/core/service/StorylineService.java @@ -34,4 +34,6 @@ public interface StorylineService { void setDefaultUnit(String unitName); + Uni cleanHistoryByPersonId(@NotNull String personId); + } diff --git a/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerCheckAction.java b/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerCheckAction.java index 8b477bc..4c3de28 100644 --- a/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerCheckAction.java +++ b/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerCheckAction.java @@ -6,8 +6,8 @@ import dev.struchkov.godfather.simple.domain.BoxAnswer; import dev.struchkov.godfather.simple.domain.unit.AnswerCheck; import dev.struchkov.godfather.simple.domain.unit.MainUnit; import dev.struchkov.godfather.simple.domain.unit.UnitRequest; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import java.util.Objects; @@ -18,20 +18,16 @@ import static dev.struchkov.haiti.utils.Checker.checkNotNull; * * @author upagge [11/07/2019] */ +@Slf4j +@RequiredArgsConstructor public class AnswerCheckAction implements ActionUnit, Message> { - private static final Logger log = LoggerFactory.getLogger(AnswerCheckAction.class); - private final Sending sending; - public AnswerCheckAction(Sending sending) { - this.sending = sending; - } - @Override public UnitRequest action(UnitRequest, Message> unitRequest) { final AnswerCheck unit = unitRequest.getUnit(); - log.debug("Началась обработка unit: {}.", unit.getName()); + log.debug("Началась обработка юнита: {}.", unit.getName()); final Message message = unitRequest.getMessage(); @@ -41,6 +37,7 @@ public class AnswerCheckAction implements ActionUnit, Messa final BoxAnswer answerIfTrue = unit.getIntermediateAnswerIfTrue(); if (checkNotNull(answerIfTrue)) { answerIfTrue.setRecipientIfNull(message.getFromPersonId()); + log.trace("Будет отправлен промежуточный ответ: {}", answerIfTrue); sending.send(answerIfTrue); } unitAnswer = unit.getUnitTrue(); @@ -49,6 +46,7 @@ public class AnswerCheckAction implements ActionUnit, Messa final BoxAnswer answerIfFalse = unit.getIntermediateAnswerIfFalse(); if (checkNotNull(answerIfFalse)) { answerIfFalse.setRecipientIfNull(message.getFromPersonId()); + log.trace("Будет отправлен промежуточный ответ: {}", answerIfFalse); sending.send(answerIfFalse); } unitAnswer = unit.getUnitFalse(); diff --git a/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerSaveAction.java b/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerSaveAction.java index 6796471..a0a81bb 100644 --- a/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerSaveAction.java +++ b/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerSaveAction.java @@ -8,6 +8,7 @@ import dev.struchkov.godfather.simple.domain.unit.func.CheckSave; import dev.struchkov.godfather.simple.domain.unit.func.PreservableData; import dev.struchkov.godfather.simple.domain.unit.func.Pusher; import dev.struchkov.godfather.simple.domain.unit.func.preser.AnswerSavePreservable; +import lombok.extern.slf4j.Slf4j; import static dev.struchkov.haiti.utils.Checker.checkNotNull; @@ -16,11 +17,15 @@ import static dev.struchkov.haiti.utils.Checker.checkNotNull; * * @author upagge [11/07/2019] */ +@Slf4j public class AnswerSaveAction implements ActionUnit, Message> { @Override public UnitRequest action(UnitRequest, Message> unitRequest) { final AnswerSave answerSave = unitRequest.getUnit(); + + log.debug("Началась обработка юнита: {}.", answerSave.getName()); + final Message message = unitRequest.getMessage(); final AnswerSavePreservable preservable = answerSave.getPreservable(); @@ -28,7 +33,7 @@ public class AnswerSaveAction implements ActionUnit, M final CheckSave checkSave = answerSave.getCheckSave(); if (checkNotNull(checkSave)) { - MainUnit unit = checkSave.check(message); + final MainUnit unit = checkSave.check(message); if (checkNotNull(unit)) { return UnitRequest.of(unit, message); } @@ -46,6 +51,8 @@ public class AnswerSaveAction implements ActionUnit, M if (checkNotNull(pusher)) { preservable.push(personId, pusher); } + + log.debug("Завершилась обработка unit: {}.", answerSave.getName()); return UnitRequest.of(answerSave, message); } diff --git a/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerTextChatMailAction.java b/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerTextChatMailAction.java index 05cbb62..f24a3c4 100644 --- a/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerTextChatMailAction.java +++ b/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerTextChatMailAction.java @@ -9,6 +9,8 @@ import dev.struchkov.godfather.simple.domain.unit.MainUnit; import dev.struchkov.godfather.simple.domain.unit.UnitRequest; import dev.struchkov.godfather.simple.domain.unit.func.CallBackConsumer; import dev.struchkov.godfather.simple.domain.unit.func.ProcessingData; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import java.util.Optional; @@ -19,14 +21,12 @@ import static dev.struchkov.haiti.utils.Checker.checkNotNull; * * @author upagge [11/07/2019] */ +@Slf4j +@RequiredArgsConstructor public class AnswerTextChatMailAction implements ActionUnit, ChatMail> { private final Sending sending; - public AnswerTextChatMailAction(Sending sending) { - this.sending = sending; - } - @Override public UnitRequest action(UnitRequest, ChatMail> unitRequest) { final ChatMail message = unitRequest.getMessage(); diff --git a/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerTextMailAction.java b/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerTextMailAction.java index cab6df2..3d30656 100644 --- a/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerTextMailAction.java +++ b/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/action/AnswerTextMailAction.java @@ -9,6 +9,8 @@ import dev.struchkov.godfather.simple.domain.unit.MainUnit; import dev.struchkov.godfather.simple.domain.unit.UnitRequest; import dev.struchkov.godfather.simple.domain.unit.func.CallBackConsumer; import dev.struchkov.godfather.simple.domain.unit.func.ProcessingData; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import java.util.Optional; @@ -19,36 +21,45 @@ import static dev.struchkov.haiti.utils.Checker.checkNotNull; * * @author upagge [11/07/2019] */ +@Slf4j +@RequiredArgsConstructor public class AnswerTextMailAction implements ActionUnit, Mail> { private final Sending sending; - public AnswerTextMailAction(Sending sending) { - this.sending = sending; - } - @Override public UnitRequest action(UnitRequest, Mail> unitRequest) { - final Mail message = unitRequest.getMessage(); final AnswerText unit = unitRequest.getUnit(); + final Mail message = unitRequest.getMessage(); + + log.debug("Началась обработка юнита: {}.", unit.getName()); final ProcessingData answerProcessing = unit.getAnswer(); if (checkNotNull(answerProcessing)) { + log.trace("Начало выполнения клиентской логики"); final Optional optAnswer = answerProcessing.processing(message); + log.trace("Конец выполнения клиентской логики"); if (optAnswer.isPresent()) { final BoxAnswer answer = optAnswer.get(); - answer.setRecipientIfNull(message.getFromPersonId()); + log.debug("AnswerText предоставил ответ для отправки.", answer); + final Optional optSentBox = sending.send(answer); final CallBackConsumer callBack = unit.getCallBack(); if (checkNotNull(callBack) && optAnswer.isPresent()) { final SentBox sentBox = optSentBox.get(); + log.debug("Вызывается callBack юнита. Название юнита: {}", unit.getName()); callBack.processing(sentBox); } + } else { + log.debug("AnswerText не предоставил ответ для отправки. Название юнита: {}", unit.getName()); } + } else { + log.warn("У AnswerText отсутствовал answer. Обработка не выполнялась. Название юнита: {}", unit.getName()); } + log.debug("Завершилась обработка unit: {}.", unit.getName()); return UnitRequest.of(unit, message); } diff --git a/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/service/StorylineMailService.java b/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/service/StorylineMailService.java index abf225c..4940fb0 100644 --- a/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/service/StorylineMailService.java +++ b/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/service/StorylineMailService.java @@ -95,6 +95,12 @@ public class StorylineMailService implements StorylineService defaultUnitName = defaultUnit; } + @Override + public void cleanHistoryByPersonId(@NotNull String personId) { + storylineRepository.cleanHistoryByPersonId(personId); + unitPointerService.removeByPersonId(personId); + } + //TODO [22.06.2022]: Временное решение для ленивой инициализации @Override public void lazyLink(String firstName, String secondName) { diff --git a/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/service/StorylineService.java b/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/service/StorylineService.java index 6402225..d32d5db 100644 --- a/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/service/StorylineService.java +++ b/bot-core/bot-core-simple/src/main/java/dev/struchkov/godfather/simple/core/service/StorylineService.java @@ -33,4 +33,6 @@ public interface StorylineService { void setDefaultUnit(String unitName); + void cleanHistoryByPersonId(@NotNull String personId); + } diff --git a/bot-domain/bot-domain-main/src/main/java/dev/struchkov/godfather/main/domain/EventContainer.java b/bot-domain/bot-domain-main/src/main/java/dev/struchkov/godfather/main/domain/EventContainer.java index 5e14e6f..a78cd95 100644 --- a/bot-domain/bot-domain-main/src/main/java/dev/struchkov/godfather/main/domain/EventContainer.java +++ b/bot-domain/bot-domain-main/src/main/java/dev/struchkov/godfather/main/domain/EventContainer.java @@ -6,11 +6,13 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.ToString; @Getter @Setter -@AllArgsConstructor +@ToString @NoArgsConstructor +@AllArgsConstructor @JsonDeserialize(using = TelegramEventContainerDeserializer.class) public class EventContainer { diff --git a/bot-domain/bot-domain-main/src/main/java/dev/struchkov/godfather/main/domain/unit/KeyWord.java b/bot-domain/bot-domain-main/src/main/java/dev/struchkov/godfather/main/domain/unit/KeyWord.java index 30312b2..7aa3f6e 100644 --- a/bot-domain/bot-domain-main/src/main/java/dev/struchkov/godfather/main/domain/unit/KeyWord.java +++ b/bot-domain/bot-domain-main/src/main/java/dev/struchkov/godfather/main/domain/unit/KeyWord.java @@ -1,8 +1,13 @@ package dev.struchkov.godfather.main.domain.unit; +import lombok.Getter; +import lombok.ToString; + /** * Ключевое слово для юнитов. */ +@Getter +@ToString public class KeyWord { private final Integer important; @@ -24,12 +29,4 @@ public class KeyWord { return new KeyWord(1, word); } - public Integer getImportant() { - return important; - } - - public String getWord() { - return word; - } - } diff --git a/bot-domain/bot-domain-quarkus/src/main/java/dev/struchkov/godfather/quarkus/domain/BoxAnswer.java b/bot-domain/bot-domain-quarkus/src/main/java/dev/struchkov/godfather/quarkus/domain/BoxAnswer.java index 43fb1c7..4b363c5 100644 --- a/bot-domain/bot-domain-quarkus/src/main/java/dev/struchkov/godfather/quarkus/domain/BoxAnswer.java +++ b/bot-domain/bot-domain-quarkus/src/main/java/dev/struchkov/godfather/quarkus/domain/BoxAnswer.java @@ -130,7 +130,7 @@ public class BoxAnswer { public Optional getPayLoad(ContextKey contextKey) { if (checkNotNull(payload)) { - return Optional.ofNullable(payload.get(contextKey.getValue())) + return Optional.ofNullable(payload.get(contextKey)) .map(value -> (T) value); } return Optional.empty(); diff --git a/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/BoxAnswer.java b/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/BoxAnswer.java index d1c9e81..978b619 100644 --- a/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/BoxAnswer.java +++ b/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/BoxAnswer.java @@ -10,6 +10,7 @@ import dev.struchkov.haiti.utils.container.ContextKey; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.ToString; import java.util.HashMap; import java.util.Map; @@ -25,6 +26,7 @@ import static dev.struchkov.haiti.utils.Checker.checkNull; */ @Getter @Setter +@ToString @NoArgsConstructor public class BoxAnswer { @@ -51,6 +53,7 @@ public class BoxAnswer { /** * Обычное текстовое сообщение. */ + @ToString.Exclude private String message; /** diff --git a/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/SentBox.java b/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/SentBox.java index d810e75..cd8cf3c 100644 --- a/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/SentBox.java +++ b/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/SentBox.java @@ -6,11 +6,13 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.ToString; import java.util.Optional; @Getter @Builder +@ToString @NoArgsConstructor @AllArgsConstructor(access = AccessLevel.PRIVATE) public class SentBox { diff --git a/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/unit/MainUnit.java b/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/unit/MainUnit.java index ca5eea1..56cfa47 100644 --- a/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/unit/MainUnit.java +++ b/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/unit/MainUnit.java @@ -6,6 +6,7 @@ import dev.struchkov.godfather.main.domain.unit.UnitActiveType; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; +import lombok.ToString; import java.util.Collection; import java.util.Optional; @@ -20,6 +21,7 @@ import java.util.regex.Pattern; */ @Getter @Setter +@ToString @EqualsAndHashCode(onlyExplicitlyIncluded = true) public abstract class MainUnit { @@ -62,6 +64,7 @@ public abstract class MainUnit { /** * Множество следующих Unit в сценарии. */ + @ToString.Exclude protected Set> nextUnits; /** diff --git a/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/unit/func/ProcessingData.java b/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/unit/func/ProcessingData.java index 1342ba4..b3cdf3f 100644 --- a/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/unit/func/ProcessingData.java +++ b/bot-domain/bot-domain-simple/src/main/java/dev/struchkov/godfather/simple/domain/unit/func/ProcessingData.java @@ -1,6 +1,5 @@ package dev.struchkov.godfather.simple.domain.unit.func; - import dev.struchkov.godfather.simple.domain.BoxAnswer; import java.util.Optional;