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