Множественные изменения.

1. Удалил аннотацию @Data, заменил Getter Setter.
2. Удалил зависимости spring. Буду делать независимую от фреймворка библиотеку.
3. Удалил неиспользуемые зависимости.
4. Обновил версии зависимостей.
This commit is contained in:
Struchkov Mark 2022-04-08 20:30:35 +03:00
parent 65b88181ee
commit a3aa78c940
37 changed files with 398 additions and 399 deletions

View File

@ -22,21 +22,14 @@
<dependencies>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
@ -45,6 +38,11 @@
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
<build>

View File

@ -1,6 +1,7 @@
package dev.struchkov.godfather.context.domain;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import javax.persistence.GeneratedValue;
@ -12,7 +13,8 @@ import javax.persistence.MappedSuperclass;
*
* @author upagge [28/07/2019]
*/
@Data
@Getter
@Setter
@ToString
@MappedSuperclass
public class BasicEntity {

View File

@ -4,7 +4,6 @@ import dev.struchkov.godfather.context.domain.content.Message;
import dev.struchkov.godfather.context.domain.content.attachment.GeoCoordinate;
import dev.struchkov.godfather.context.domain.keyboard.KeyBoard;
import dev.struchkov.godfather.context.service.usercode.ProcessingData;
import dev.struchkov.godfather.context.utils.Description;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
@ -16,23 +15,31 @@ import lombok.ToString;
*
* @author upagge [08/07/2019]
*/
@EqualsAndHashCode
@ToString
@Getter
@ToString
@EqualsAndHashCode
@Builder(toBuilder = true)
public class BoxAnswer {
/**
* Обычное текстовое сообщение.
*/
@Setter
@Description("Обычное текстовое сообщение")
private String message;
@Description("Клавиатура - меню")
/**
* Клавиатура - меню.
*/
private KeyBoard keyBoard;
@Description("Географические координаты")
/**
* Географические координаты.
*/
private GeoCoordinate coordinates;
@Description("Идентификатор стикера")
/**
* Идентификатор стикера.
*/
private Integer stickerId;
public static BoxAnswer of(String message) {
@ -40,7 +47,7 @@ public class BoxAnswer {
}
public static <T extends Message> ProcessingData<T> processing(String messageText) {
return (message) -> builder().message(messageText).build();
return message -> builder().message(messageText).build();
}
}

View File

@ -1,6 +1,5 @@
package dev.struchkov.godfather.context.domain.content;
import dev.struchkov.godfather.context.utils.Description;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
@ -15,7 +14,9 @@ import lombok.Setter;
@EqualsAndHashCode(callSuper = true)
public abstract class Comment extends Message {
@Description("Идентификатор контента, к которому ставлено сообщение")
/**
* Идентификатор контента, к которому ставлено сообщение.
*/
private Long contentId;
}

View File

@ -1,9 +1,9 @@
package dev.struchkov.godfather.context.domain.content;
import dev.struchkov.godfather.context.domain.content.attachment.Attachment;
import dev.struchkov.godfather.context.utils.Description;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import javax.persistence.Column;
@ -18,21 +18,38 @@ import java.util.List;
*
* @author upagge [08/07/2019]
*/
@Data
@Entity
@Getter
@Setter
@Table(name = "mail")
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class Mail extends Message {
/**
* Имя отправителя.
*/
@Column(name = "first_name")
private String firstName;
/**
* Фамилия отправителя.
*/
@Column(name = "last_name")
private String lastName;
/**
* Вложения к сообщению.
*/
@OneToMany(fetch = FetchType.EAGER)
@Column(name = "attachment")
@Description("Вложения к сообщению")
private List<Attachment> attachments;
/**
* Пересланные сообщения.
*/
@OneToMany
@Column(name = "forward_mail")
@Description("Пересланные сообщения")
private List<Mail> forwardMail;
public Mail() {

View File

@ -1,9 +1,10 @@
package dev.struchkov.godfather.context.domain.content;
import lombok.Data;
import lombok.EqualsAndHashCode;
import dev.struchkov.godfather.context.domain.BasicEntity;
import dev.struchkov.godfather.context.utils.Description;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.Column;
import javax.persistence.EnumType;
@ -18,38 +19,46 @@ import java.time.LocalDateTime;
* @author upagge [08/07/2019]
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Getter
@Setter
@MappedSuperclass
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public abstract class Message extends BasicEntity {
/**
* Тип сообщения.
*/
@Column(name = "type")
@Enumerated(value = EnumType.STRING)
@Description("Тип сообщения")
protected ContentType type;
/**
* Дата создания.
*/
@NotNull
@Column(name = "create_date")
@Description("Дата создания")
private LocalDateTime createDate;
/**
* Дата добавления в базу.
*/
@Column(name = "add_date")
@Description("Дата добавления в базу")
private LocalDateTime addDate;
/**
* Идентификатор пользователя, отправившего сообщение.
*/
@NotNull
@Column(name = "person_id")
@Description("Идентификатор пользователя, отправившего сообщение")
private Long personId;
/**
* Текстовое сообщение.
*/
@Column(name = "text")
@Description("Текстовое сообщение")
private String text;
public Message() {
}
public Message(Message source) {
this.personId = source.getPersonId();
this.text = source.getText();

View File

@ -1,7 +1,6 @@
package dev.struchkov.godfather.context.domain.content.attachment;
import lombok.EqualsAndHashCode;
import dev.struchkov.godfather.context.utils.Description;
import javax.persistence.Column;
import javax.persistence.Entity;
@ -23,9 +22,11 @@ public abstract class Attachment {
@GeneratedValue
private Integer id;
/**
* Тип сущности.
*/
@Column(name = "type")
@Enumerated(value = EnumType.STRING)
@Description("Тип сущности")
protected AttachmentType type;
public AttachmentType getType() {

View File

@ -4,7 +4,6 @@ import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import dev.struchkov.godfather.context.utils.Description;
import java.net.URL;
@ -20,7 +19,9 @@ import java.net.URL;
@Setter
public class AudioMessage extends Attachment {
@Description("Ссылка на аудиозапись в формате odd")
/**
* Ссылка на аудиозапись в формате odd.
*/
private URL linkOdd;
public AudioMessage() {

View File

@ -3,7 +3,6 @@ package dev.struchkov.godfather.context.domain.content.attachment;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import dev.struchkov.godfather.context.utils.Description;
/**
* Вложение типа "Карта".
@ -11,17 +10,23 @@ import dev.struchkov.godfather.context.utils.Description;
* @author upagge [08/07/2019]
*/
@Getter
@EqualsAndHashCode(callSuper = true)
@ToString
@EqualsAndHashCode(callSuper = true)
public class Geo extends Attachment {
@Description("Географические координаты")
/**
* Географические координаты.
*/
private GeoCoordinate geoCoordinate;
@Description("Название страны")
/**
* Название страны.
*/
private String country;
@Description("Название города")
/**
* Название города.
*/
private String city;
private Geo() {

View File

@ -1,22 +1,27 @@
package dev.struchkov.godfather.context.domain.content.attachment;
import lombok.AllArgsConstructor;
import lombok.Data;
import dev.struchkov.godfather.context.utils.Description;
import lombok.Getter;
import lombok.Setter;
/**
* Сущность для хранения географических координат.
*
* @author upagge [08/07/2019]
*/
@Data
@Getter
@Setter
@AllArgsConstructor
public class GeoCoordinate {
@Description("Широта")
/**
* Широта.
*/
private Float latitude;
@Description("Долгота")
/**
* Долгота.
*/
private Float longitude;
}

View File

@ -5,7 +5,6 @@ import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Singular;
import lombok.ToString;
import dev.struchkov.godfather.context.utils.Description;
import java.util.ArrayList;
import java.util.List;
@ -21,11 +20,15 @@ import java.util.List;
@ToString
public class KeyBoard {
@Description("Строки меню")
/**
* Строки меню.
*/
@Singular(value = "lineKeyBoard")
private List<KeyBoardLine> keyBoardLines = new ArrayList<>();
@Description("Скрыть меню после ответа или нет")
/**
* Скрыть меню после ответа или нет.
*/
private boolean oneTime = true;
}

View File

@ -5,7 +5,6 @@ import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import dev.struchkov.godfather.context.utils.Description;
/**
* Абстрактная сущность кнопки для клавиатуры.
@ -18,10 +17,14 @@ import dev.struchkov.godfather.context.utils.Description;
@AllArgsConstructor(access = AccessLevel.PROTECTED)
public abstract class KeyBoardButton {
@Description("Скрытое сообщение, отправляемое по нажатию")
/**
* Скрытое сообщение, отправляемое по нажатию.
*/
protected String payload;
@Description("Тип кнопки")
/**
* Тип кнопки.
*/
protected ButtonType type;
}

View File

@ -5,7 +5,6 @@ import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Singular;
import lombok.ToString;
import dev.struchkov.godfather.context.utils.Description;
import java.util.ArrayList;
import java.util.List;
@ -21,7 +20,9 @@ import java.util.List;
@EqualsAndHashCode
public class KeyBoardLine {
@Description("Кнопки в строке")
/**
* Кнопки в строке.
*/
@Singular(value = "buttonKeyBoard")
private List<KeyBoardButton> keyBoardButtons = new ArrayList<>();

View File

@ -1,12 +1,11 @@
package dev.struchkov.godfather.context.domain.keyboard.button;
import dev.struchkov.godfather.context.domain.keyboard.ButtonType;
import dev.struchkov.godfather.context.domain.keyboard.KeyBoardButton;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import dev.struchkov.godfather.context.domain.keyboard.KeyBoardButton;
import dev.struchkov.godfather.context.utils.Description;
/**
* Кнопка клавиатуры для оплаты счета.
@ -18,13 +17,19 @@ import dev.struchkov.godfather.context.utils.Description;
@EqualsAndHashCode(callSuper = true)
public class KeyBoardButtonAccount extends KeyBoardButton {
@Description("Сумма к оплате")
/**
* Сумма к оплате.
*/
private Integer amount;
@Description("Идентификатор счета")
/**
* Идентификатор счета.
*/
private Integer accountId;
@Description("Описание")
/**
* Описание.
*/
private String description;
@Builder

View File

@ -1,23 +1,26 @@
package dev.struchkov.godfather.context.domain.keyboard.button;
import dev.struchkov.godfather.context.domain.keyboard.ButtonColor;
import dev.struchkov.godfather.context.domain.keyboard.ButtonType;
import dev.struchkov.godfather.context.domain.keyboard.KeyBoardButton;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import dev.struchkov.godfather.context.domain.keyboard.ButtonColor;
import dev.struchkov.godfather.context.domain.keyboard.ButtonType;
import dev.struchkov.godfather.context.domain.keyboard.KeyBoardButton;
import dev.struchkov.godfather.context.utils.Description;
@Getter
@ToString
@EqualsAndHashCode(callSuper = true)
public class KeyBoardButtonText extends KeyBoardButton {
@Description("Надпись на кнопке")
/**
* Надпись на кнопке
*/
private String label;
@Description("Цвет кнопки")
/**
* Цвет кнопки.
*/
private ButtonColor color;
@Builder

View File

@ -1,10 +1,10 @@
package dev.struchkov.godfather.context.domain.money;
import dev.struchkov.godfather.context.utils.Description;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.Column;
import javax.persistence.Entity;
@ -20,39 +20,49 @@ import javax.validation.constraints.NotNull;
*
* @author upagge [08/07/2019]
*/
@Entity
@Builder
@Data
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "account")
public class Account {
@Id
@GeneratedValue
@Description("Идентификатор счета")
private Integer id;
/**
* Сумма к оплате.
*/
@NotNull
@Column(name = "totalSum")
@Description("Сумма к оплате")
private Integer totalSum;
/**
* Идентификатор пользователя, которому выставлен счет.
*/
@Column(name = "belongs_person_id")
@Description("Идентификатор пользователя, которому выставлен счет")
private Long belongsPersonId;
/**
* Идентификатор пользователя, который оплатил счет.
*/
@Column(name = "extinguished_person_id")
@Description("Идентификатор пользователя, который оплатил счет")
private Integer extinguishedPersonId;
/**
* Описание платежа.
*/
@Column(name = "description")
@Description("Описание платежа")
private String description;
/**
* Статус оплаты счета.
*/
@Enumerated(EnumType.STRING)
@Column(name = "status")
@Description("Статус оплаты счета")
private AccountStatus accountStatus;
}

View File

@ -1,34 +0,0 @@
package dev.struchkov.godfather.context.repository.impl.jpa;
import dev.struchkov.godfather.context.repository.AccountRepository;
import dev.struchkov.godfather.context.repository.jpa.AccountRepositoryJpa;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import dev.struchkov.godfather.context.domain.money.Account;
import java.util.Optional;
/**
* @author upagge [27/07/2019]
*/
@RequiredArgsConstructor
public class AccountRepositoryJpaImpl implements AccountRepository {
private final AccountRepositoryJpa accountRepositoryJpa;
@Override
public Account save(@NonNull Account account) {
return accountRepositoryJpa.save(account);
}
@Override
public Optional<Account> findById(@NonNull Integer accountId) {
return accountRepositoryJpa.findById(accountId);
}
@Override
public boolean existsById(Integer id) {
return accountRepositoryJpa.existsById(id);
}
}

View File

@ -1,52 +0,0 @@
package dev.struchkov.godfather.context.repository.impl.jpa;
import dev.struchkov.godfather.context.repository.ContentRepository;
import dev.struchkov.godfather.context.repository.jpa.MailRepositoryJpa;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import dev.struchkov.godfather.context.domain.content.Mail;
import java.time.LocalDateTime;
import java.util.List;
/**
* Реализация репозитория.
*
* @author upagge [25/07/2019]
*/
@RequiredArgsConstructor
public class MailRepositoryJpaImpl implements ContentRepository<Mail> {
private final MailRepositoryJpa mailRepositoryJpa;
@Override
public Mail add(@NonNull Mail content) {
return mailRepositoryJpa.saveAndFlush(content);
}
@Override
public List<Mail> betweenByCreateDateTime(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo) {
return mailRepositoryJpa.findByCreateDateBetween(dateFrom, dateTo);
}
@Override
public List<Mail> betweenByAddDateTime(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo) {
return mailRepositoryJpa.findByAddDateBetween(dateFrom, dateTo);
}
@Override
public void deleteAllByAddDateBetween(@NonNull LocalDateTime dateFrom, @NonNull LocalDateTime dateTo) {
mailRepositoryJpa.deleteAllByAddDateBetween(dateFrom, dateTo);
}
@Override
public void deleteAllByAddDateBefore(@NonNull LocalDateTime date) {
mailRepositoryJpa.deleteAllByAddDateBefore(date);
}
@Override
public void deleteAllByAddDateAfter(@NonNull LocalDateTime date) {
mailRepositoryJpa.deleteAllByAddDateAfter(date);
}
}

View File

@ -1,13 +0,0 @@
package dev.struchkov.godfather.context.repository.jpa;
import dev.struchkov.godfather.context.domain.money.Account;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* @author upagge [27/07/2019]
*/
@Repository
public interface AccountRepositoryJpa extends JpaRepository<Account, Integer> {
}

View File

@ -1,30 +0,0 @@
package dev.struchkov.godfather.context.repository.jpa;
import dev.struchkov.godfather.context.domain.content.Mail;
import dev.struchkov.godfather.context.repository.impl.jpa.MailRepositoryJpaImpl;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
/**
* Интерфейс JPA репозитория для сущности {@link Mail}. При этом сам не является репозиторием, а подставляется в
* {@link MailRepositoryJpaImpl}
*
* @author upagge [27/07/2019]
*/
@Repository
public interface MailRepositoryJpa extends JpaRepository<Mail, Integer> {
List<Mail> findByCreateDateBetween(LocalDateTime dateFrom, LocalDateTime dateTo);
List<Mail> findByAddDateBetween(LocalDateTime dateFrom, LocalDateTime dateTo);
void deleteAllByAddDateBetween(LocalDateTime dateFrom, LocalDateTime dateTo);
void deleteAllByAddDateBefore(LocalDateTime date);
void deleteAllByAddDateAfter(LocalDateTime date);
}

View File

@ -1,21 +0,0 @@
package dev.struchkov.godfather.context.utils;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Используется для описания полей в классах.
*
* @author upagge [08/07/2019]
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.SOURCE)
public @interface Description {
String value();
String example() default "";
}

View File

@ -30,11 +30,6 @@
<groupId>org.sadtech.autoresponder</groupId>
<artifactId>autoresponder</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
</dependencies>
<build>

View File

@ -1,7 +1,6 @@
package dev.struchkov.godfather.core.domain;
import dev.struchkov.godfather.context.domain.money.Account;
import dev.struchkov.godfather.context.utils.Description;
import dev.struchkov.godfather.core.domain.unit.MainUnit;
import lombok.Builder;
import lombok.EqualsAndHashCode;
@ -14,20 +13,28 @@ import lombok.ToString;
* @author upagge [11/07/2019]
*/
@Getter
@EqualsAndHashCode
@ToString
@Builder
@ToString
@EqualsAndHashCode
public class AccountAutoCheck {
@Description("Unut, который обрабатывается при успешной оплате")
/**
* Unut, который обрабатывается при успешной оплате.
*/
private MainUnit successfulPayment;
@Description("Unit, который обрабатывается при не успешной оплате")
/**
* Unit, который обрабатывается при не успешной оплате.
*/
private MainUnit failedPayment;
@Description("Период проверки")
/**
* Период проверки.
*/
private Integer periodSec;
@Description("Время жизни счета")
/**
* Время жизни счета.
*/
private Integer lifeTimeHours;
}

View File

@ -1,10 +1,10 @@
package dev.struchkov.godfather.core.domain;
import dev.struchkov.godfather.context.utils.Description;
import dev.struchkov.godfather.core.domain.unit.MainUnit;
import dev.struchkov.godfather.context.service.usercode.CheckData;
import dev.struchkov.godfather.core.domain.unit.MainUnit;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
@ -13,32 +13,49 @@ import java.time.LocalDateTime;
*
* @author upagge [11/07/2019]
*/
@Getter
@Setter
@Builder
@Data
public class Timer {
@Description("Идентификатор таймера")
/**
* Идентификатор таймера.
*/
private Integer id;
@Description("Unit, обработка которого откладывается")
/**
* Unit, обработка которого откладывается.
*/
private MainUnit unitAnswer;
@Description("Unit, который будет обработан после удаления таймера")
/**
* Unit, который будет обработан после удаления таймера.
*/
private MainUnit unitDeath;
@Description("Идентификатор пользователя")
/**
* Идентификатор пользователя.
*/
private Long personId;
@Description("Время активации таймера")
/**
* Время активации таймера.
*/
private LocalDateTime timeActive;
@Description("Время смерти таймера")
/**
* Время смерти таймера.
*/
private LocalDateTime timeDeath;
@Description("Интервал срабатывания таймера")
/**
* Интервал срабатывания таймера.
*/
private Integer periodSec;
@Description("Условие срабатывания таймера")
/**
* Условие срабатывания таймера.
*/
private CheckData checkLoop;
}

View File

@ -1,7 +1,6 @@
package dev.struchkov.godfather.core.domain.question;
import dev.struchkov.godfather.context.domain.BoxAnswer;
import dev.struchkov.godfather.context.utils.Description;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@ -19,11 +18,15 @@ import java.util.List;
@Builder
public class Question {
@Description("Вопрос")
/**
* Вопрос.
*/
private BoxAnswer boxAnswer;
/**
* Список предполагаемых ответов.
*/
@Singular
@Description("Список предполагаемых ответов")
private List<QuestionAnswer> questionAnswers;
}

View File

@ -1,6 +1,5 @@
package dev.struchkov.godfather.core.domain.question;
import dev.struchkov.godfather.context.utils.Description;
import lombok.Getter;
import lombok.Setter;
@ -14,10 +13,14 @@ import lombok.Setter;
@Setter
public class QuestionAnswer {
@Description("Текстовый ответ")
/**
* Текстовый ответ.
*/
private String text;
@Description("Количество балов за ответ")
/**
* Количество балов за ответ.
*/
private int points;
public QuestionAnswer(String text, Integer points) {

View File

@ -1,6 +1,5 @@
package dev.struchkov.godfather.core.domain.question;
import dev.struchkov.godfather.context.utils.Description;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
@ -15,13 +14,19 @@ import lombok.Setter;
@AllArgsConstructor
public class QuestionResult {
@Description("Вопрос")
/**
* Вопрос.
*/
private String question;
@Description("Ответ")
/**
* Ответ.
*/
private String answer;
@Description("Количество баллов за ответ")
/**
* Количество баллов за ответ.
*/
private Integer points;
}

View File

@ -1,6 +1,5 @@
package dev.struchkov.godfather.core.domain.unit;
import dev.struchkov.godfather.context.utils.Description;
import dev.struchkov.godfather.core.domain.AccountAutoCheck;
import dev.struchkov.godfather.core.utils.TypeUnit;
import lombok.Builder;
@ -20,13 +19,19 @@ import java.util.regex.Pattern;
@EqualsAndHashCode(callSuper = true)
public class AnswerAccount extends MainUnit {
@Description("Сумма к оплате")
/**
* Сумма к оплате.
*/
private final Integer totalSum;
@Description("Время жизни счета")
/**
* Время жизни счета.
*/
private final Integer timeHours;
@Description("Настройки для автоматической проверки оплаты")
/**
* Настройки для автоматической проверки оплаты.
*/
private final AccountAutoCheck autoCheck;
@Builder

View File

@ -1,7 +1,6 @@
package dev.struchkov.godfather.core.domain.unit;
import dev.struchkov.godfather.context.domain.content.Message;
import dev.struchkov.godfather.context.utils.Description;
import dev.struchkov.godfather.context.service.usercode.CheckData;
import dev.struchkov.godfather.core.utils.TypeUnit;
import lombok.Builder;
@ -21,13 +20,19 @@ import java.util.regex.Pattern;
@EqualsAndHashCode(callSuper = true)
public class AnswerCheck extends MainUnit {
@Description("Unit для true")
/**
* Unit для true.
*/
private final MainUnit unitTrue;
@Description("Unit для false")
/**
* Unit для false.
*/
private final MainUnit unitFalse;
@Description("Условие проверки")
/**
* Условие проверки.
*/
private final CheckData<Message> check;
@Builder

View File

@ -2,7 +2,6 @@ package dev.struchkov.godfather.core.domain.unit;
import dev.struchkov.godfather.context.domain.content.Message;
import dev.struchkov.godfather.context.service.sender.Sending;
import dev.struchkov.godfather.context.utils.Description;
import dev.struchkov.godfather.context.service.usercode.ProcessingData;
import dev.struchkov.godfather.core.utils.TypeUnit;
import lombok.Builder;
@ -22,22 +21,28 @@ import java.util.regex.Pattern;
@EqualsAndHashCode(callSuper = true)
public class AnswerProcessing<M extends Message> extends MainUnit {
@Description("Кастомная обработка")
/**
* Кастомная обработка.
*/
private final ProcessingData<M> processingData;
@Description("Объект для сквозной отправки ответа")
/**
* Объект для сквозной отправки ответа.
*/
private final Sending sending;
@Builder
private AnswerProcessing(@Singular Set<String> keyWords,
String phrase,
Pattern pattern,
Integer matchThreshold,
Integer priority,
@Singular Set<MainUnit> nextUnits,
UnitActiveType activeType,
ProcessingData<M> processingData,
Sending sending) {
private AnswerProcessing(
@Singular Set<String> keyWords,
String phrase,
Pattern pattern,
Integer matchThreshold,
Integer priority,
@Singular Set<MainUnit> nextUnits,
UnitActiveType activeType,
ProcessingData<M> processingData,
Sending sending
) {
super(keyWords, phrase, pattern, matchThreshold, priority, nextUnits, activeType, TypeUnit.PROCESSING);
this.processingData = processingData;
this.sending = sending;

View File

@ -1,7 +1,6 @@
package dev.struchkov.godfather.core.domain.unit;
import dev.struchkov.godfather.context.domain.content.Message;
import dev.struchkov.godfather.context.utils.Description;
import dev.struchkov.godfather.core.service.save.CheckSave;
import dev.struchkov.godfather.core.service.save.Preservable;
import dev.struchkov.godfather.core.service.save.data.PreservableData;
@ -26,36 +25,48 @@ import java.util.regex.Pattern;
@EqualsAndHashCode(callSuper = true)
public class AnswerSave<D> extends MainUnit {
@Description("Объект отвечающий за сохранение - репозиторий")
/**
* Объект отвечающий за сохранение - репозиторий.
*/
private final Preservable<D> preservable;
@Description("Ключ для данных")
/**
* Ключ для данных.
*/
private final String key;
@Description("Отправка результатов")
/**
* Отправка результатов.
*/
private final Pusher<D> pusher;
@Description("Данные для скрытого сохранения")
/**
* Данные для скрытого сохранения.
*/
private final PreservableData<D, ? super Message> preservableData;
@Description("Скрытое сохранение")
/**
* Скрытое сохранение.
*/
private final boolean hidden;
private final CheckSave<? super Message> checkSave;
@Builder
private AnswerSave(@Singular Set<String> keyWords,
String phrase,
Pattern pattern,
Integer matchThreshold,
Integer priority,
@Singular Set<MainUnit> nextUnits,
Preservable<D> preservable,
String key,
Pusher<D> pusher,
PreservableData<D, ? super Message> preservableData,
CheckSave<? super Message> checkSave,
boolean hidden) {
private AnswerSave(
@Singular Set<String> keyWords,
String phrase,
Pattern pattern,
Integer matchThreshold,
Integer priority,
@Singular Set<MainUnit> nextUnits,
Preservable<D> preservable,
String key,
Pusher<D> pusher,
PreservableData<D, ? super Message> preservableData,
CheckSave<? super Message> checkSave,
boolean hidden
) {
super(keyWords, phrase, pattern, matchThreshold, priority, nextUnits, (hidden) ? UnitActiveType.AFTER : UnitActiveType.DEFAULT, TypeUnit.SAVE);
this.key = key;
this.pusher = pusher;

View File

@ -3,7 +3,6 @@ package dev.struchkov.godfather.core.domain.unit;
import dev.struchkov.godfather.context.domain.BoxAnswer;
import dev.struchkov.godfather.context.domain.content.Message;
import dev.struchkov.godfather.context.service.sender.Sending;
import dev.struchkov.godfather.context.utils.Description;
import dev.struchkov.godfather.context.service.usercode.Insert;
import dev.struchkov.godfather.context.service.usercode.ProcessingData;
import dev.struchkov.godfather.core.utils.TypeUnit;
@ -24,26 +23,34 @@ import java.util.regex.Pattern;
@EqualsAndHashCode(callSuper = true)
public class AnswerText<M extends Message> extends MainUnit {
@Description("Объект, который необходимо отправить пользователю")
/**
* Объект, который необходимо отправить пользователю.
*/
private final ProcessingData<M> boxAnswer;
@Description("Информация, которую необходимо вставить вместо маркеров в строку ответа")
/**
* Информация, которую необходимо вставить вместо маркеров в строку ответа.
*/
private final Insert insert;
@Description("Объект нестандартной отправки ответа")
/**
* Объект нестандартной отправки ответа.
*/
private final Sending sending;
@Builder(toBuilder = true)
private AnswerText(@Singular Set<String> keyWords,
String phrase,
Pattern pattern,
Integer matchThreshold,
Integer priority,
@Singular Set<MainUnit> nextUnits,
UnitActiveType activeType,
ProcessingData<M> boxAnswer,
Insert insert,
Sending sending) {
private AnswerText(
@Singular Set<String> keyWords,
String phrase,
Pattern pattern,
Integer matchThreshold,
Integer priority,
@Singular Set<MainUnit> nextUnits,
UnitActiveType activeType,
ProcessingData<M> boxAnswer,
Insert insert,
Sending sending
) {
super(keyWords, phrase, pattern, matchThreshold, priority, nextUnits, activeType, TypeUnit.TEXT);
this.boxAnswer = boxAnswer;
this.insert = insert;

View File

@ -1,6 +1,5 @@
package dev.struchkov.godfather.core.domain.unit;
import dev.struchkov.godfather.context.utils.Description;
import dev.struchkov.godfather.context.service.usercode.CheckData;
import dev.struchkov.godfather.core.utils.TypeUnit;
import lombok.Builder;
@ -22,30 +21,40 @@ import java.util.regex.Pattern;
@EqualsAndHashCode(callSuper = true)
public class AnswerTimer extends MainUnit {
@Description("Unit обработку которого необходимо отложить")
/**
* Unit обработку которого необходимо отложить.
*/
private final MainUnit unitAnswer;
@Description("Задержка обработки в секундах")
/**
* Задержка обработки в секундах.
*/
private final Integer timeDelaySec;
@Description("Время, через которое таймер будет удален в секундах")
/**
* Время, через которое таймер будет удален в секундах.
*/
private final Integer timeDeathSec;
@Description("Условие срабатывания отложенного Unit")
/**
* Условие срабатывания отложенного Unit.
*/
private final CheckData checkLoop;
@Builder
private AnswerTimer(@Singular Set<String> keyWords,
String phrase,
Pattern pattern,
Integer matchThreshold,
Integer priority,
@Singular Set<MainUnit> nextUnits,
UnitActiveType activeType,
MainUnit unitAnswer,
Integer timeDelaySec,
Integer timeDeathSec,
CheckData checkLoop) {
private AnswerTimer(
@Singular Set<String> keyWords,
String phrase,
Pattern pattern,
Integer matchThreshold,
Integer priority,
@Singular Set<MainUnit> nextUnits,
UnitActiveType activeType,
MainUnit unitAnswer,
Integer timeDelaySec,
Integer timeDeathSec,
CheckData checkLoop
) {
super(keyWords, phrase, pattern, matchThreshold, priority, nextUnits, (activeType == null) ? UnitActiveType.AFTER : activeType, TypeUnit.TIMER);
this.unitAnswer = unitAnswer;
this.timeDelaySec = timeDelaySec;

View File

@ -1,9 +1,8 @@
package dev.struchkov.godfather.core.domain.unit;
import dev.struchkov.godfather.context.utils.Description;
import dev.struchkov.godfather.core.service.ClarificationQuestion;
import dev.struchkov.godfather.core.service.save.LocalPreservable;
import dev.struchkov.godfather.core.service.save.Preservable;
import dev.struchkov.godfather.core.service.ClarificationQuestion;
import dev.struchkov.godfather.core.utils.TypeUnit;
import lombok.Builder;
import lombok.EqualsAndHashCode;
@ -24,13 +23,19 @@ import java.util.regex.Pattern;
@EqualsAndHashCode(callSuper = true)
public class AnswerValidity extends MainUnit {
@Description("Unit обрабатывается, если пользователь подтверждает данные")
/**
* Unit обрабатывается, если пользователь подтверждает данные.
*/
private final MainUnit unitYes;
@Description("Unit обрабатывается, если пользователь отклоняет данные")
/**
* Unit обрабатывается, если пользователь отклоняет данные.
*/
private final MainUnit unitNo;
@Description("Unit обрабатывается, если данные не найдены")
/**
* Unit обрабатывается, если данные не найдены.
*/
private final MainUnit unitNull;
private final Preservable<String> tempSave = new LocalPreservable<>();
@ -38,17 +43,18 @@ public class AnswerValidity extends MainUnit {
private final ClarificationQuestion clarificationQuestion;
@Builder(toBuilder = true)
private AnswerValidity(@Singular Set<String> keyWords,
String phrase,
Pattern pattern,
Integer matchThreshold,
Integer priority,
@Singular Set<MainUnit> nextUnits,
UnitActiveType activeType,
MainUnit unitYes,
MainUnit unitNo,
MainUnit unitNull,
ClarificationQuestion clarificationQuestion) {
private AnswerValidity(
@Singular Set<String> keyWords,
String phrase,
Pattern pattern,
Integer matchThreshold,
Integer priority,
@Singular Set<MainUnit> nextUnits,
MainUnit unitYes,
MainUnit unitNo,
MainUnit unitNull,
ClarificationQuestion clarificationQuestion
) {
super(keyWords, phrase, pattern, matchThreshold, priority, nextUnits, UnitActiveType.DEFAULT, TypeUnit.VALIDITY);
this.unitYes = unitYes;
this.unitNo = unitNo;

View File

@ -1,6 +1,5 @@
package dev.struchkov.godfather.core.domain.unit;
import dev.struchkov.godfather.context.utils.Description;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
@ -21,26 +20,32 @@ import java.util.regex.Pattern;
@EqualsAndHashCode(callSuper = true)
public abstract class MainUnit extends Unit<MainUnit> {
/**
* Тип Unit-а.
*/
@Getter
@Description("Тип Unit-а")
protected final String type;
/**
* Режим срабатывания Unit-а.
*/
@Getter
@Setter
@Description("Режим срабатывания Unit-а")
protected UnitActiveType activeType;
@Getter
private String uuid = UUID.randomUUID().toString();
protected MainUnit(Set<String> keyWords,
String phrase,
Pattern pattern,
Integer matchThreshold,
Integer priority,
Set<MainUnit> nextUnits,
UnitActiveType activeType,
String type) {
protected MainUnit(
Set<String> keyWords,
String phrase,
Pattern pattern,
Integer matchThreshold,
Integer priority,
Set<MainUnit> nextUnits,
UnitActiveType activeType,
String type
) {
super(keyWords, phrase, pattern, matchThreshold, priority, nextUnits);
this.activeType = Optional.ofNullable(activeType).orElse(UnitActiveType.DEFAULT);
this.type = type;

View File

@ -1,8 +1,9 @@
package dev.struchkov.godfather.core.service.save.jpa;
import dev.struchkov.godfather.context.domain.BasicEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Column;
import javax.persistence.MappedSuperclass;
@ -12,9 +13,10 @@ import javax.persistence.MappedSuperclass;
*
* @author upagge [01/08/2019]
*/
@EqualsAndHashCode(callSuper = true)
@Getter
@Setter
@MappedSuperclass
@Data
@EqualsAndHashCode(callSuper = true)
public abstract class SaveObjectJpa extends BasicEntity {
@Column(name = "personId")

57
pom.xml
View File

@ -35,19 +35,17 @@
<godfather.core.ver>0.0.3-SNAPSHOT</godfather.core.ver>
<autoresponder.ver>1.9.4-RELEASE</autoresponder.ver>
<gson.ver>2.8.9</gson.ver>
<gson.ver>2.9.0</gson.ver>
<mail.ver>1.6.2</mail.ver>
<lombok.ver>1.18.22</lombok.ver>
<spring.data.jpa.ver>2.6.1</spring.data.jpa.ver>
<javax.persistence.api.ver>2.2</javax.persistence.api.ver>
<validation.api.ver>2.0.1.Final</validation.api.ver>
<commons.io.ver>2.11.0</commons.io.ver>
<xstream.ver>1.4.15</xstream.ver>
<slf4j.api.ver>1.7.36</slf4j.api.ver>
<plugin.maven.compiler.ver>3.9.0</plugin.maven.compiler.ver>
<plugin.nexus.staging.ver>1.6.8</plugin.nexus.staging.ver>
<plugin.nexus.staging.ver>1.6.12</plugin.nexus.staging.ver>
<plugin.maven.source.ver>3.2.1</plugin.maven.source.ver>
<plugin.maven.javadoc.ver>3.3.1</plugin.maven.javadoc.ver>
<plugin.maven.javadoc.ver>3.3.2</plugin.maven.javadoc.ver>
<plugin.maven.gpg.ver>3.0.1</plugin.maven.gpg.ver>
</properties>
@ -68,11 +66,6 @@
<artifactId>lombok</artifactId>
<version>${lombok.ver}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>${spring.data.jpa.ver}</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
@ -96,9 +89,9 @@
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons.io.ver}</version>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.api.ver}</version>
</dependency>
</dependencies>
</dependencyManagement>
@ -110,19 +103,20 @@
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>${plugin.nexus.staging.ver}</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
<dependencies>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>${xstream.ver}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${plugin.maven.compiler.ver}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@ -164,15 +158,6 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${plugin.maven.compiler.ver}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
@ -181,6 +166,14 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
</plugins>
</build>
@ -226,9 +219,9 @@
<developers>
<developer>
<id>uPagge</id>
<organization>SADTECH</organization>
<name>Struchkov Mark</name>
<email>mark@struchkov.dev</email>
<url>https://struchkov.dev</url>
</developer>
</developers>