diff --git a/bot-context/pom.xml b/bot-context/pom.xml index a2afe47..5e82316 100644 --- a/bot-context/pom.xml +++ b/bot-context/pom.xml @@ -6,7 +6,7 @@ dev.struchkov.godfather godfather-bot - 0.0.22 + 0.0.25 bot-context diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerCheck.java b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerCheck.java index 6f3ac3a..8805bdf 100644 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerCheck.java +++ b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerCheck.java @@ -8,6 +8,7 @@ import dev.struchkov.godfather.context.service.usercode.CheckData; import java.util.HashSet; import java.util.Set; +import java.util.UUID; import java.util.function.Predicate; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -41,6 +42,7 @@ public class AnswerCheck extends MainUnit { private AnswerCheck(Builder builder) { super( builder.name, + builder.description, builder.triggerWords, builder.triggerPhrases, builder.triggerCheck, @@ -75,7 +77,8 @@ public class AnswerCheck extends MainUnit { } public static final class Builder { - private String name; + private String name = UUID.randomUUID().toString(); + private String description; private Set triggerWords; private Set triggerPhrases; @@ -101,6 +104,11 @@ public class AnswerCheck extends MainUnit { return this; } + public Builder description(String description) { + this.description = description; + return this; + } + public Builder triggerWords(Set val) { if (triggerWords == null) { triggerWords = new HashSet<>(); diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerSave.java b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerSave.java index f4a2851..41a4196 100644 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerSave.java +++ b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerSave.java @@ -12,6 +12,7 @@ import dev.struchkov.godfather.context.service.save.Pusher; import java.util.Collection; import java.util.HashSet; import java.util.Set; +import java.util.UUID; import java.util.function.Predicate; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -56,6 +57,7 @@ public class AnswerSave extends MainUnit { private AnswerSave(Builder builder) { super( builder.name, + builder.description, builder.triggerWords, builder.triggerPhrases, builder.triggerCheck, @@ -112,7 +114,8 @@ public class AnswerSave extends MainUnit { } public static final class Builder { - private String name; + private String name = UUID.randomUUID().toString(); + private String description; private Set> nextUnits; private Set triggerWords; @@ -141,6 +144,11 @@ public class AnswerSave extends MainUnit { return this; } + public Builder description(String description) { + this.description = description; + return this; + } + public Builder triggerWords(Set val) { if (checkNull(triggerWords)) { triggerWords = new HashSet<>(); diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerText.java b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerText.java index e9eb7c4..1d1f0a2 100644 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerText.java +++ b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerText.java @@ -14,6 +14,7 @@ import java.util.HashSet; import java.util.List; import java.util.Optional; import java.util.Set; +import java.util.UUID; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; @@ -48,6 +49,7 @@ public class AnswerText extends MainUnit { private AnswerText(Builder builder) { super( builder.name, + builder.description, builder.triggerWords, builder.triggerPhrases, builder.triggerCheck, @@ -90,7 +92,8 @@ public class AnswerText extends MainUnit { } public static final class Builder { - private String name; + private String name = UUID.randomUUID().toString(); + private String description; private Set> nextUnits; private Set triggerWords; @@ -117,6 +120,11 @@ public class AnswerText extends MainUnit { return this; } + public Builder description(String description) { + this.description = description; + return this; + } + public Builder processing(Consumer answer) { this.boxAnswer = message -> { answer.accept(message); diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerTimer.java b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerTimer.java index 6016aa4..eeda9ed 100644 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerTimer.java +++ b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/AnswerTimer.java @@ -8,6 +8,7 @@ import dev.struchkov.godfather.context.service.usercode.CheckData; import java.util.HashSet; import java.util.Set; +import java.util.UUID; import java.util.function.Predicate; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -45,6 +46,7 @@ public class AnswerTimer extends MainUnit { private AnswerTimer(Builder builder) { super( builder.name, + builder.description, builder.triggerWords, builder.triggerPhrases, builder.triggerCheck, @@ -84,7 +86,8 @@ public class AnswerTimer extends MainUnit { } public static final class Builder { - private String name; + private String name = UUID.randomUUID().toString(); + private String description; private Set triggerWords; private Set triggerPhrases; @@ -110,6 +113,11 @@ public class AnswerTimer extends MainUnit { return this; } + public Builder description(String description) { + this.description = description; + return this; + } + public Builder unitAnswer(MainUnit val) { unitAnswer = val; return this; diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/MainUnit.java b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/MainUnit.java index 9bf3ec2..b1e2dce 100644 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/MainUnit.java +++ b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/MainUnit.java @@ -8,7 +8,6 @@ import dev.struchkov.godfather.context.service.Accessibility; import java.util.Objects; import java.util.Optional; import java.util.Set; -import java.util.UUID; import java.util.function.Predicate; import java.util.regex.Pattern; @@ -19,26 +18,26 @@ import java.util.regex.Pattern; */ public abstract class MainUnit extends Unit, M> { + /** + * Уникальное имя юнита + */ + private String name; + + /** + * Описание юнита, что он делает. Никак не влияет на работу юнита и не участвует в ней. Возможно отображение этого текста в логах. + */ + private final String description; + /** * Тип Unit-а. */ protected final String type; - /** - * Уникальный идентификатор юнита - */ - private final String uuid = UUID.randomUUID().toString(); - /** * Режим срабатывания Unit-а. */ protected UnitActiveType activeType; - /** - * Уникальное имя юнита - */ - private String name; - /** * Проверка доступа пользователя к юниту. */ @@ -48,6 +47,7 @@ public abstract class MainUnit extends Unit, M> { protected MainUnit( String name, + String description, Set keyWords, Set phrases, Predicate triggerCheck, @@ -62,6 +62,7 @@ public abstract class MainUnit extends Unit, M> { ) { super(keyWords, phrases, triggerCheck, patterns, matchThreshold, priority, nextUnits); this.name = name; + this.description = description; this.activeType = Optional.ofNullable(activeType).orElse(UnitActiveType.DEFAULT); this.accessibility = accessibility; this.type = type; @@ -80,10 +81,6 @@ public abstract class MainUnit extends Unit, M> { this.activeType = activeType; } - public String getUuid() { - return uuid; - } - public void setName(String name) { this.name = name; } @@ -100,19 +97,21 @@ public abstract class MainUnit extends Unit, M> { return Optional.ofNullable(accessibility); } - //TODO [27.05.2022]: Возможно стоит добавить имя юнита и убрать остальное + public String getDescription() { + return description; + } + @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - if (!super.equals(o)) return false; - MainUnit mainUnit = (MainUnit) o; - return Objects.equals(type, mainUnit.type) && activeType == mainUnit.activeType && Objects.equals(uuid, mainUnit.uuid); + MainUnit unit = (MainUnit) o; + return name.equals(unit.name); } @Override public int hashCode() { - return Objects.hash(super.hashCode(), type, activeType, uuid); + return Objects.hash(name); } } diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/cmd/ReplaceCmd.java b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/cmd/ReplaceCmd.java index 8369bf6..792c2bb 100644 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/cmd/ReplaceCmd.java +++ b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/cmd/ReplaceCmd.java @@ -9,6 +9,7 @@ import dev.struchkov.haiti.utils.Checker; import java.util.HashSet; import java.util.Set; +import java.util.UUID; import java.util.function.Predicate; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -20,6 +21,7 @@ public class ReplaceCmd extends MainUnit { private ReplaceCmd(Builder builder) { super( builder.name, + builder.description, builder.triggerWords, builder.triggerPhrases, builder.triggerCheck, @@ -44,7 +46,8 @@ public class ReplaceCmd extends MainUnit { } public static final class Builder { - private String name; + private String name = UUID.randomUUID().toString(); + private String description; private Set triggerPhrases; private Predicate triggerCheck; @@ -65,6 +68,11 @@ public class ReplaceCmd extends MainUnit { return this; } + public Builder description(String description) { + this.description = description; + return this; + } + public Builder triggerWords(Set val) { if (Checker.checkNull(triggerWords)) { triggerWords = new HashSet<>(); diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/cmd/RollBackCmd.java b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/cmd/RollBackCmd.java index 1886ed9..3bb6e30 100644 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/cmd/RollBackCmd.java +++ b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/cmd/RollBackCmd.java @@ -9,6 +9,7 @@ import dev.struchkov.godfather.context.exception.UnitConfigException; import java.util.HashSet; import java.util.Set; +import java.util.UUID; import java.util.function.Predicate; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -33,6 +34,7 @@ public class RollBackCmd extends MainUnit { private RollBackCmd(Builder builder) { super( builder.name, + builder.description, builder.triggerWords, builder.triggerPhrases, builder.triggerCheck, @@ -82,7 +84,8 @@ public class RollBackCmd extends MainUnit { } public static final class Builder { - private String name; + private String name = UUID.randomUUID().toString(); + private String description; private Set triggerPhrases; private Predicate triggerCheck; @@ -104,6 +107,11 @@ public class RollBackCmd extends MainUnit { return this; } + public Builder description(String description) { + this.description = description; + return this; + } + public Builder triggerWords(Set val) { if (checkNull(triggerWords)) { triggerWords = new HashSet<>(); diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/cmd/TeleportCmd.java b/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/cmd/TeleportCmd.java deleted file mode 100644 index 3904a05..0000000 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/domain/unit/cmd/TeleportCmd.java +++ /dev/null @@ -1,163 +0,0 @@ -package dev.struchkov.godfather.context.domain.unit.cmd; - -import dev.struchkov.autoresponder.entity.KeyWord; -import dev.struchkov.godfather.context.domain.TypeUnit; -import dev.struchkov.godfather.context.domain.content.Message; -import dev.struchkov.godfather.context.domain.unit.MainUnit; -import dev.struchkov.godfather.context.domain.unit.UnitActiveType; - -import java.util.HashSet; -import java.util.Set; -import java.util.function.Predicate; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - -import static dev.struchkov.haiti.utils.Checker.checkNull; - -/** - * Позволяет перенести пользователя в произвольное место в сценарии. - */ -public class TeleportCmd extends MainUnit { - - /** - * Название юнита, в которое необходимо осуществить перенос. - */ - private final String unitNameToTeleport; - - private TeleportCmd(Builder builder) { - super( - builder.name, - builder.triggerWords, - builder.triggerPhrases, - builder.triggerCheck, - builder.triggerPatterns, - builder.matchThreshold, - builder.priority, - new HashSet<>(), - builder.activeType, - true, - null, - TypeUnit.TELEPORT_CMD - ); - this.unitNameToTeleport = builder.unitNameToTeleport; - } - - public static Builder builder() { - return new Builder<>(); - } - - public String getUnitNameToTeleport() { - return unitNameToTeleport; - } - - public static final class Builder { - private String name; - - private Set triggerWords; - private Set triggerPhrases; - private Set triggerPatterns; - private Predicate triggerCheck; - private Integer matchThreshold; - - private Integer priority; - private UnitActiveType activeType = UnitActiveType.DEFAULT; - private String unitNameToTeleport; - - private Builder() { - } - - public Builder name(String name) { - this.name = name; - return this; - } - - public Builder triggerWords(Set val) { - if (checkNull(triggerWords)) { - triggerWords = new HashSet<>(); - } - triggerWords.addAll(val); - return this; - } - - public Builder triggerWord(KeyWord val) { - if (checkNull(triggerWords)) { - triggerWords = new HashSet<>(); - } - triggerWords.add(val); - return this; - } - - public Builder triggerStringWords(Set val) { - if (checkNull(triggerWords)) { - triggerWords = new HashSet<>(); - } - triggerWords.addAll(val.stream().map(KeyWord::of).collect(Collectors.toSet())); - return this; - } - - public Builder triggerWord(String val) { - if (checkNull(triggerWords)) { - triggerWords = new HashSet<>(); - } - triggerWords.add(KeyWord.of(val)); - return this; - } - - public Builder triggerPhrase(String... val) { - if (checkNull(triggerPhrases)) { - triggerPhrases = new HashSet<>(); - } - if (val.length == 1) { - triggerPhrases.add(val[0]); - } else { - triggerPhrases.addAll(Set.of(val)); - } - triggerPhrases.addAll(Set.of(val)); - return this; - } - - public Builder triggerPattern(Pattern... val) { - if (checkNull(triggerPatterns)) { - triggerPatterns = new HashSet<>(); - } - if (val.length == 1) { - triggerPatterns.add(val[0]); - } else { - triggerPatterns.addAll(Set.of(val)); - } - triggerPatterns.addAll(Set.of(val)); - return this; - } - - public Builder triggerCheck(Predicate trigger) { - triggerCheck = trigger; - return this; - } - - public Builder matchThreshold(Integer val) { - matchThreshold = val; - return this; - } - - public Builder priority(Integer val) { - priority = val; - return this; - } - - public Builder activeType(UnitActiveType val) { - activeType = val; - return this; - } - - public Builder unitNameToTeleport(String val) { - unitNameToTeleport = val; - return this; - } - - public TeleportCmd build() { - return new TeleportCmd<>(this); - } - - } - -} diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/repository/ContentRepository.java b/bot-context/src/main/java/dev/struchkov/godfather/context/repository/ContentRepository.java deleted file mode 100644 index 45679d8..0000000 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/repository/ContentRepository.java +++ /dev/null @@ -1,47 +0,0 @@ -package dev.struchkov.godfather.context.repository; - -import dev.struchkov.godfather.context.domain.content.Message; -import org.jetbrains.annotations.NotNull; - -import java.time.LocalDateTime; -import java.util.List; - -/** - * Интерфейс взаимодействия со всеми наследниками текстовых запросов пользователей. - * - * @author upagge [08/07/2019] - */ -public interface ContentRepository { - - /** - * Добавить сообщение в хранилище - * - * @param content Объект сообщени - * @return Идентификатор сообщения в хранилище - */ - T add(@NotNull T content); - - /** - * Получить все сообщения за определенный временной диапазон - * - * @param dateFrom Начало временного диапазона - * @param dateTo Конец диапазона - * @return Список сообщений - */ - List betweenByCreateDateTime(@NotNull LocalDateTime dateFrom, @NotNull LocalDateTime dateTo); - - List betweenByAddDateTime(@NotNull LocalDateTime dateFrom, @NotNull LocalDateTime dateTo); - - /** - * Удаляет данные за указанный период - * - * @param dateFrom Дата начала - * @param dateTo Дата окончания - */ - void deleteAllByAddDateBetween(@NotNull LocalDateTime dateFrom, @NotNull LocalDateTime dateTo); - - void deleteAllByAddDateBefore(@NotNull LocalDateTime date); - - void deleteAllByAddDateAfter(@NotNull LocalDateTime date); - -} diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/repository/impl/local/MailRepositoryList.java b/bot-context/src/main/java/dev/struchkov/godfather/context/repository/impl/local/MailRepositoryList.java deleted file mode 100644 index a52744d..0000000 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/repository/impl/local/MailRepositoryList.java +++ /dev/null @@ -1,76 +0,0 @@ -package dev.struchkov.godfather.context.repository.impl.local; - -import dev.struchkov.godfather.context.domain.content.Mail; -import dev.struchkov.godfather.context.repository.ContentRepository; -import org.jetbrains.annotations.NotNull; - -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; - -/** - * Локальная реализация репозитория на основе {@link ArrayList} для взаимодействия с сущностью {@link Mail}. - * - * @author upagge [27/07/2019] - */ -public class MailRepositoryList implements ContentRepository { - - private final List mails = new ArrayList<>(); - private Long count = 0L; - - @Override - public Mail add(Mail mail) { - mail.setId(count++); - mails.add(mail); - return mail; - } - - @Override - public List betweenByCreateDateTime(@NotNull LocalDateTime dateFrom, @NotNull LocalDateTime dateTo) { - ArrayList rezultMails = new ArrayList<>(); - for (int i = mails.size() - 1; i >= 0; i--) { - Mail mail = mails.get(i); - if (isTimePeriod(dateFrom, dateTo, mail.getAddDate())) { - rezultMails.add(mail); - } else if (mail.getCreateDate().isBefore(dateFrom)) { - break; - } - } - return rezultMails; - } - - @Override - public List betweenByAddDateTime(@NotNull LocalDateTime dateFrom, @NotNull LocalDateTime dateTo) { - ArrayList rezultMails = new ArrayList<>(); - for (int i = mails.size() - 1; i >= 0; i--) { - Mail mail = mails.get(i); - LocalDateTime addDate = mail.getAddDate(); - if (isTimePeriod(dateFrom, dateTo, addDate)) { - rezultMails.add(mail); - } else if (addDate.isBefore(dateFrom)) { - break; - } - } - return rezultMails; - } - - @Override - public void deleteAllByAddDateBetween(@NotNull LocalDateTime dateFrom, @NotNull LocalDateTime dateTo) { - mails.removeIf(mail -> dateFrom.isBefore(mail.getAddDate()) && dateTo.isAfter(mail.getAddDate())); - } - - @Override - public void deleteAllByAddDateBefore(@NotNull LocalDateTime date) { - mails.removeIf(mail -> date.isBefore(mail.getAddDate())); - } - - @Override - public void deleteAllByAddDateAfter(@NotNull LocalDateTime date) { - mails.removeIf(mail -> date.isAfter(mail.getAddDate())); - } - - private boolean isTimePeriod(@NotNull LocalDateTime dateFrom, @NotNull LocalDateTime dateTo, @NotNull LocalDateTime dateTime) { - return dateFrom.isBefore(dateTime) && dateTo.isAfter(dateTime); - } - -} diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/service/StorylineService.java b/bot-context/src/main/java/dev/struchkov/godfather/context/service/StorylineService.java index bd001e5..a330a30 100644 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/service/StorylineService.java +++ b/bot-context/src/main/java/dev/struchkov/godfather/context/service/StorylineService.java @@ -25,7 +25,7 @@ public interface StorylineService { Optional> getDefaultUnit(); /** - * Ленивая (поздняя) связка юнитов между собой. Осуществляется уже после создания сценария. С помощью данного подхода можно реализовать циклические зависимости юнитов. Либо можно использовать {@link dev.struchkov.godfather.context.domain.unit.cmd.TeleportCmd} + * Ленивая (поздняя) связка юнитов между собой. Осуществляется уже после создания сценария. С помощью данного подхода можно реализовать циклические зависимости юнитов. */ void lazyLink(String firstName, String secondName); diff --git a/bot-context/src/main/java/dev/struchkov/godfather/context/service/impl/MailServiceImpl.java b/bot-context/src/main/java/dev/struchkov/godfather/context/service/impl/MailServiceImpl.java deleted file mode 100644 index b9e0e08..0000000 --- a/bot-context/src/main/java/dev/struchkov/godfather/context/service/impl/MailServiceImpl.java +++ /dev/null @@ -1,113 +0,0 @@ -package dev.struchkov.godfather.context.service.impl; - -import dev.struchkov.godfather.context.domain.content.Mail; -import dev.struchkov.godfather.context.repository.ContentRepository; -import dev.struchkov.godfather.context.service.MailService; -import org.jetbrains.annotations.NotNull; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.time.Clock; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -public class MailServiceImpl implements MailService { - - private static final Logger log = LoggerFactory.getLogger(MailServiceImpl.class); - - private final ContentRepository mailRepository; - private boolean newMessage = false; - private LocalDateTime oldDateTime = LocalDateTime.now(Clock.tickSeconds(ZoneId.systemDefault())); - - public MailServiceImpl(ContentRepository mailRepository) { - this.mailRepository = mailRepository; - } - - //TODO [13.04.2022]: Подобная реализация с newMessage вызовет проблемы с несколькими инстансами. - @Override - public void add(Mail mail) { - mailRepository.add(mail); - newMessage = true; - log.trace("Сообщение добавлено в репозиторий | {}", mail); - } - - @Override - public List getByAddDateTime(LocalDateTime timeFrom, LocalDateTime timeTo) { - log.trace("Запрошены все сообщения {} - {} ", timeFrom, timeTo); - return mailRepository.betweenByAddDateTime(timeFrom, timeTo); - } - - @Override - public List getLastEventByCreateDateTime(LocalDateTime timeFrom, LocalDateTime timeTo) { - log.trace("Запрошены последние сообщения {} - {} ", timeFrom, timeTo); - final List mails = mailRepository.betweenByCreateDateTime(timeFrom, timeTo); - if (mails != null && !mails.isEmpty()) { - return findLastMailEachUser(mails); - } else { - return Collections.emptyList(); - } - } - - @Override - public List getLastEventByAddDateTime(LocalDateTime timeFrom, LocalDateTime timeTo) { - log.trace("Запрошены последние сообщения {} - {} ", timeFrom, timeTo); - final List mails = mailRepository.betweenByAddDateTime(timeFrom, timeTo); - if (mails != null && !mails.isEmpty()) { - return findLastMailEachUser(mails); - } else { - return Collections.emptyList(); - } - } - - @Override - public List getNewMessage() { - final LocalDateTime newData = LocalDateTime.now(Clock.tickSeconds(ZoneId.systemDefault())).plusNanos(999999999); - if (newMessage) { - final List lastEventByAddDateTime = getLastEventByAddDateTime(oldDateTime, newData); - newMessage = false; - oldDateTime = newData; - return lastEventByAddDateTime; - } - return Collections.emptyList(); - } - - @Override - public void deleteAllByAddDateBetween(@NotNull LocalDateTime dateFrom, @NotNull LocalDateTime dateTo) { - mailRepository.deleteAllByAddDateBetween(dateFrom, dateTo); - } - - @Override - public void deleteAllByAddDateBefore(@NotNull LocalDateTime date) { - mailRepository.deleteAllByAddDateBefore(date); - } - - @Override - public void deleteAllByAddDateAfter(@NotNull LocalDateTime date) { - mailRepository.deleteAllByAddDateAfter(date); - } - - /** - * Возвращает только последнее сообщение каждого пользователя переданного из списка. - */ - private List findLastMailEachUser(List mails) { - final Set people = new HashSet<>(); - final List returnMails = new ArrayList<>(); - for (int i = mails.size() - 1; i >= 0; i--) { - if (!people.contains(mails.get(i).getPersonId())) { - returnMails.add(mails.get(i)); - people.add(mails.get(i).getPersonId()); - } - } - if (!returnMails.isEmpty()) { - return returnMails; - } else { - return Collections.emptyList(); - } - } - -} diff --git a/bot-core/pom.xml b/bot-core/pom.xml index 109de3f..95058fb 100644 --- a/bot-core/pom.xml +++ b/bot-core/pom.xml @@ -6,7 +6,7 @@ dev.struchkov.godfather godfather-bot - 0.0.22 + 0.0.25 bot-core diff --git a/bot-core/src/main/java/dev/struchkov/godfather/core/StorylineMaker.java b/bot-core/src/main/java/dev/struchkov/godfather/core/StorylineFactory.java similarity index 98% rename from bot-core/src/main/java/dev/struchkov/godfather/core/StorylineMaker.java rename to bot-core/src/main/java/dev/struchkov/godfather/core/StorylineFactory.java index fcd704e..d2f1cbb 100644 --- a/bot-core/src/main/java/dev/struchkov/godfather/core/StorylineMaker.java +++ b/bot-core/src/main/java/dev/struchkov/godfather/core/StorylineFactory.java @@ -23,9 +23,9 @@ import java.util.stream.Collectors; import static dev.struchkov.godfather.context.exception.UnitConfigException.unitConfigException; -public class StorylineMaker { +public class StorylineFactory { - private static final Logger log = LoggerFactory.getLogger(StorylineMaker.class); + private static final Logger log = LoggerFactory.getLogger(StorylineFactory.class); private final List configurations = new ArrayList<>(); @@ -35,7 +35,7 @@ public class StorylineMaker { private final Set mainUnits = new HashSet<>(); private final Set globalUnits = new HashSet<>(); - public StorylineMaker(List unitConfigurations) { + public StorylineFactory(List unitConfigurations) { this.configurations.addAll(unitConfigurations); } diff --git a/bot-core/src/main/java/dev/struchkov/godfather/core/service/StorylineMailService.java b/bot-core/src/main/java/dev/struchkov/godfather/core/service/StorylineMailService.java index b3540a7..adbce03 100644 --- a/bot-core/src/main/java/dev/struchkov/godfather/core/service/StorylineMailService.java +++ b/bot-core/src/main/java/dev/struchkov/godfather/core/service/StorylineMailService.java @@ -9,7 +9,7 @@ import dev.struchkov.godfather.context.repository.StorylineRepository; import dev.struchkov.godfather.context.service.StorylineService; import dev.struchkov.godfather.context.service.UnitPointerService; import dev.struchkov.godfather.core.Storyline; -import dev.struchkov.godfather.core.StorylineMaker; +import dev.struchkov.godfather.core.StorylineFactory; import dev.struchkov.haiti.utils.Inspector; import org.jetbrains.annotations.NotNull; @@ -34,7 +34,7 @@ public class StorylineMailService implements StorylineService { StorylineRepository storylineRepository, List unitConfigurations ) { - this.storyLine = new StorylineMaker(unitConfigurations).createStoryLine(); + this.storyLine = new StorylineFactory(unitConfigurations).createStoryLine(); this.unitPointerService = unitPointerService; this.storylineRepository = storylineRepository; } diff --git a/bot-core/src/main/java/dev/struchkov/godfather/core/service/action/cmd/TeleportCmdAction.java b/bot-core/src/main/java/dev/struchkov/godfather/core/service/action/cmd/TeleportCmdAction.java deleted file mode 100644 index a2b613b..0000000 --- a/bot-core/src/main/java/dev/struchkov/godfather/core/service/action/cmd/TeleportCmdAction.java +++ /dev/null @@ -1,32 +0,0 @@ -package dev.struchkov.godfather.core.service.action.cmd; - -import dev.struchkov.godfather.context.domain.UnitRequest; -import dev.struchkov.godfather.context.domain.content.Message; -import dev.struchkov.godfather.context.domain.unit.MainUnit; -import dev.struchkov.godfather.context.domain.unit.cmd.TeleportCmd; -import dev.struchkov.godfather.context.service.StorylineService; -import dev.struchkov.godfather.core.service.action.ActionUnit; - -import java.util.Optional; - -public class TeleportCmdAction implements ActionUnit, M> { - - private final StorylineService storyLineService; - - public TeleportCmdAction(StorylineService storyLineService) { - this.storyLineService = storyLineService; - } - - @Override - public UnitRequest action(UnitRequest, M> unitRequest) { - final TeleportCmd unit = unitRequest.getUnit(); - final M message = unitRequest.getMessage(); - final Optional> optNextUnit = storyLineService.getUnitByName(unit.getUnitNameToTeleport()); - if (optNextUnit.isPresent()) { - return UnitRequest.of(optNextUnit.get(), message); - } else { - return UnitRequest.of(unit, message); - } - } - -} diff --git a/pom.xml b/pom.xml index 7cf672b..a0d8aef 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ dev.struchkov.godfather godfather-bot - 0.0.22 + 0.0.25 pom @@ -35,8 +35,8 @@ ${project.version} ${project.version} - 3.4.0 - 1.3.0 + 3.5.0 + 1.4.0 2.2 2.0.1.Final