Большой рефакторинг 2
This commit is contained in:
parent
32a5bf19e1
commit
f5b30b11fa
@ -9,7 +9,7 @@ import java.util.Arrays;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* // TODO: 16.01.2021 Добавить описание.
|
||||
* Список локализаций приложения.
|
||||
*
|
||||
* @author upagge 16.01.2021
|
||||
*/
|
||||
|
@ -1,7 +1,6 @@
|
||||
package dev.struchkov.bot.gitlab.context.domain;
|
||||
|
||||
/**
|
||||
* // TODO: 14.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 14.01.2021
|
||||
*/
|
||||
|
@ -4,8 +4,6 @@ import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* // TODO: 15.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 15.01.2021
|
||||
*/
|
||||
@Getter
|
||||
|
@ -1,8 +1,6 @@
|
||||
package dev.struchkov.bot.gitlab.context.domain;
|
||||
|
||||
/**
|
||||
* // TODO: 17.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 17.01.2021
|
||||
*/
|
||||
public enum PipelineStatus {
|
||||
|
@ -13,7 +13,7 @@ import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
/**
|
||||
* // TODO: 16.01.2021 Добавить описание.
|
||||
* Основные настройки приложения.
|
||||
*
|
||||
* @author upagge 16.01.2021
|
||||
*/
|
||||
|
@ -18,8 +18,6 @@ import javax.persistence.Table;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* // TODO: 11.02.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 11.02.2021
|
||||
*/
|
||||
@Getter
|
||||
|
@ -12,8 +12,6 @@ import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
/**
|
||||
* // TODO: 12.09.2020 Добавить описание.
|
||||
*
|
||||
* @author upagge 12.09.2020
|
||||
*/
|
||||
@Getter
|
||||
|
@ -10,8 +10,6 @@ import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
|
||||
/**
|
||||
* // TODO: 14.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 14.01.2021
|
||||
*/
|
||||
@Entity
|
||||
|
@ -17,8 +17,6 @@ import javax.persistence.Table;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* // TODO: 17.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 17.01.2021
|
||||
*/
|
||||
|
||||
|
@ -12,8 +12,6 @@ import javax.persistence.Table;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* // TODO: 14.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 14.01.2021
|
||||
*/
|
||||
@Getter
|
||||
|
@ -1,5 +1,6 @@
|
||||
package dev.struchkov.bot.gitlab.context.domain.filter;
|
||||
|
||||
import dev.struchkov.bot.gitlab.context.domain.entity.Pipeline;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
@ -10,7 +11,7 @@ import lombok.Setter;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* // TODO: 08.02.2021 Добавить описание.
|
||||
* Объект фильтра для {@link Pipeline}.
|
||||
*
|
||||
* @author upagge 08.02.2021
|
||||
*/
|
||||
|
@ -5,7 +5,6 @@ import dev.struchkov.bot.gitlab.context.service.AppSettingService;
|
||||
import dev.struchkov.bot.gitlab.context.utils.MessageUtils;
|
||||
import dev.struchkov.bot.gitlab.context.utils.Smile;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -14,28 +13,17 @@ import java.util.List;
|
||||
*
|
||||
* @author upagge 20.09.2020
|
||||
*/
|
||||
@Getter
|
||||
//TODO [28.01.2022]: Решить доработать и оставить или удалить.
|
||||
public class GoodMorningNotify implements Notify {
|
||||
public record GoodMorningNotify(
|
||||
List<MergeRequest> mergeRequestsReviews,
|
||||
List<MergeRequest> mergeRequestsNeedWork,
|
||||
String personName, String version
|
||||
) implements Notify {
|
||||
|
||||
private static final Integer PR_COUNT = 4;
|
||||
|
||||
private final List<MergeRequest> mergeRequestsReviews;
|
||||
private final List<MergeRequest> mergeRequestsNeedWork;
|
||||
private final String personName;
|
||||
private final String version;
|
||||
|
||||
@Builder
|
||||
protected GoodMorningNotify(
|
||||
List<MergeRequest> mergeRequestsReviews,
|
||||
List<MergeRequest> mergeRequestsNeedWork,
|
||||
String personName,
|
||||
String version
|
||||
) {
|
||||
this.mergeRequestsReviews = mergeRequestsReviews;
|
||||
this.mergeRequestsNeedWork = mergeRequestsNeedWork;
|
||||
this.personName = personName;
|
||||
this.version = version;
|
||||
public GoodMorningNotify {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -8,23 +8,18 @@ import lombok.Builder;
|
||||
import static dev.struchkov.haiti.utils.Strings.escapeMarkdown;
|
||||
|
||||
/**
|
||||
* // TODO: 15.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 15.01.2021
|
||||
*/
|
||||
public class NewProjectNotify implements Notify {
|
||||
|
||||
private final String projectName;
|
||||
private final String projectUrl;
|
||||
private final String projectDescription;
|
||||
private final String authorName;
|
||||
public record NewProjectNotify(
|
||||
String projectName,
|
||||
String projectUrl,
|
||||
String projectDescription,
|
||||
String authorName
|
||||
) implements Notify {
|
||||
|
||||
@Builder
|
||||
public NewProjectNotify(String projectName, String projectUrl, String projectDescription, String authorName) {
|
||||
this.projectName = projectName;
|
||||
this.projectUrl = projectUrl;
|
||||
this.projectDescription = projectDescription;
|
||||
this.authorName = authorName;
|
||||
public NewProjectNotify {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -2,21 +2,14 @@ package dev.struchkov.bot.gitlab.context.domain.notify;
|
||||
|
||||
import dev.struchkov.bot.gitlab.context.service.AppSettingService;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* // TODO: 20.09.2020 Добавить описание.
|
||||
*
|
||||
* @author upagge 20.09.2020
|
||||
*/
|
||||
@Getter
|
||||
public class SimpleTextNotify implements Notify {
|
||||
|
||||
private final String message;
|
||||
public record SimpleTextNotify(String message) implements Notify {
|
||||
|
||||
@Builder
|
||||
private SimpleTextNotify(String message) {
|
||||
this.message = message;
|
||||
public SimpleTextNotify {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -4,26 +4,17 @@ import dev.struchkov.bot.gitlab.context.domain.notify.Notify;
|
||||
import dev.struchkov.bot.gitlab.context.service.AppSettingService;
|
||||
import dev.struchkov.bot.gitlab.context.utils.Smile;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
import static dev.struchkov.haiti.utils.Strings.escapeMarkdown;
|
||||
|
||||
@Getter
|
||||
public class CommentNotify implements Notify {
|
||||
|
||||
private final String authorName;
|
||||
private final String message;
|
||||
private final String url;
|
||||
public record CommentNotify(
|
||||
String url,
|
||||
String authorName,
|
||||
String message
|
||||
) implements Notify {
|
||||
|
||||
@Builder
|
||||
private CommentNotify(
|
||||
String url,
|
||||
String authorName,
|
||||
String message
|
||||
) {
|
||||
this.authorName = authorName;
|
||||
this.message = message;
|
||||
this.url = url;
|
||||
public CommentNotify {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -10,34 +10,19 @@ import java.text.MessageFormat;
|
||||
import static dev.struchkov.haiti.utils.Strings.escapeMarkdown;
|
||||
|
||||
/**
|
||||
* // TODO: 17.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 17.01.2021
|
||||
*/
|
||||
public class PipelineNotify implements Notify {
|
||||
|
||||
private final Long pipelineId;
|
||||
private final String projectName;
|
||||
private final String refName;
|
||||
private final String newStatus;
|
||||
private final String webUrl;
|
||||
private String oldStatus = "n/a";
|
||||
public record PipelineNotify(
|
||||
Long pipelineId,
|
||||
String projectName,
|
||||
String refName,
|
||||
String oldStatus,
|
||||
String newStatus,
|
||||
String webUrl
|
||||
) implements Notify {
|
||||
|
||||
@Builder
|
||||
public PipelineNotify(
|
||||
Long pipelineId,
|
||||
String projectName,
|
||||
String refName,
|
||||
String oldStatus,
|
||||
String newStatus,
|
||||
String webUrl
|
||||
) {
|
||||
this.pipelineId = pipelineId;
|
||||
this.projectName = projectName;
|
||||
this.refName = refName;
|
||||
this.oldStatus = oldStatus;
|
||||
this.newStatus = newStatus;
|
||||
this.webUrl = webUrl;
|
||||
public PipelineNotify {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -7,8 +7,6 @@ import lombok.Builder;
|
||||
import static dev.struchkov.haiti.utils.Strings.escapeMarkdown;
|
||||
|
||||
/**
|
||||
* // TODO: 10.09.2020 Добавить описание.
|
||||
*
|
||||
* @author upagge 10.09.2020
|
||||
*/
|
||||
public class TaskCloseNotify extends TaskNotify {
|
||||
|
@ -8,8 +8,6 @@ import lombok.Getter;
|
||||
import static dev.struchkov.haiti.utils.Strings.escapeMarkdown;
|
||||
|
||||
/**
|
||||
* // TODO: 10.09.2020 Добавить описание.
|
||||
*
|
||||
* @author upagge 10.09.2020
|
||||
*/
|
||||
@Getter
|
||||
|
@ -1,15 +0,0 @@
|
||||
package dev.struchkov.bot.gitlab.context.exception;
|
||||
|
||||
import dev.struchkov.haiti.context.exception.BasicException;
|
||||
|
||||
abstract class GitlabBotException extends BasicException {
|
||||
|
||||
public GitlabBotException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public GitlabBotException(String message, Throwable throwable) {
|
||||
super(message, throwable);
|
||||
}
|
||||
|
||||
}
|
@ -4,8 +4,6 @@ import dev.struchkov.bot.gitlab.context.domain.entity.AppSetting;
|
||||
import dev.struchkov.haiti.context.repository.SimpleManagerRepository;
|
||||
|
||||
/**
|
||||
* // TODO: 16.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 16.01.2021
|
||||
*/
|
||||
public interface AppSettingRepository extends SimpleManagerRepository<AppSetting, Long> {
|
||||
|
@ -7,12 +7,13 @@ import lombok.NonNull;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* // TODO: 11.02.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 11.02.2021
|
||||
*/
|
||||
public interface DiscussionRepository extends SimpleManagerRepository<Discussion, String> {
|
||||
|
||||
/**
|
||||
* Вернуть все дискусии для MR
|
||||
*/
|
||||
List<Discussion> findAllByMergeRequestId(@NonNull Long mergeRequestId);
|
||||
|
||||
}
|
||||
|
@ -9,8 +9,6 @@ import lombok.NonNull;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* // TODO: 08.09.2020 Добавить описание.
|
||||
*
|
||||
* @author upagge 08.09.2020
|
||||
*/
|
||||
public interface NoteRepository extends SimpleManagerRepository<Note, Long> {
|
||||
|
@ -4,8 +4,6 @@ import dev.struchkov.bot.gitlab.context.domain.entity.Person;
|
||||
import dev.struchkov.haiti.context.repository.SimpleManagerRepository;
|
||||
|
||||
/**
|
||||
* // TODO: 15.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 15.01.2021
|
||||
*/
|
||||
public interface PersonRepository extends SimpleManagerRepository<Person, Long> {
|
||||
|
@ -1,18 +1,16 @@
|
||||
package dev.struchkov.bot.gitlab.context.repository;
|
||||
|
||||
import dev.struchkov.bot.gitlab.context.domain.PipelineStatus;
|
||||
import dev.struchkov.bot.gitlab.context.domain.entity.Pipeline;
|
||||
import dev.struchkov.haiti.context.page.Pagination;
|
||||
import dev.struchkov.haiti.context.page.Sheet;
|
||||
import dev.struchkov.haiti.context.repository.SimpleManagerRepository;
|
||||
import dev.struchkov.haiti.filter.FilterOperation;
|
||||
import lombok.NonNull;
|
||||
import dev.struchkov.bot.gitlab.context.domain.PipelineStatus;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* // TODO: 17.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 17.01.2021
|
||||
*/
|
||||
public interface PipelineRepository extends SimpleManagerRepository<Pipeline, Long>, FilterOperation<Pipeline> {
|
||||
|
@ -4,8 +4,6 @@ import dev.struchkov.bot.gitlab.context.domain.entity.Project;
|
||||
import dev.struchkov.haiti.context.repository.SimpleManagerRepository;
|
||||
|
||||
/**
|
||||
* // TODO: 14.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 14.01.2021
|
||||
*/
|
||||
public interface ProjectRepository extends SimpleManagerRepository<Project, Long> {
|
||||
|
@ -4,20 +4,41 @@ import dev.struchkov.bot.gitlab.context.domain.AppLocale;
|
||||
import lombok.NonNull;
|
||||
|
||||
/**
|
||||
* // TODO: 16.01.2021 Добавить описание.
|
||||
* Сервис отвечает за пользовательские настройки приложения.
|
||||
*
|
||||
* @author upagge 16.01.2021
|
||||
*/
|
||||
public interface AppSettingService {
|
||||
|
||||
/**
|
||||
* Метод позволяет проверить запускается ли приложение впервые.
|
||||
*
|
||||
* @return true - если это первый запуск
|
||||
*/
|
||||
boolean isFirstStart();
|
||||
|
||||
/**
|
||||
* Метод отмечает, что приложение было запущено.
|
||||
*
|
||||
* @see AppSettingService#isFirstStart()
|
||||
*/
|
||||
void disableFirstStart();
|
||||
|
||||
/**
|
||||
* Позволяет получить по ключу текст на языке, который установил пользователь
|
||||
*
|
||||
* @param label ключ сообщений
|
||||
* @return Сообщение на языке пользователя
|
||||
*/
|
||||
String getMessage(@NonNull String label);
|
||||
|
||||
String getMessage(@NonNull String label, Object... params);
|
||||
|
||||
/**
|
||||
* Устанавливает язык приложения
|
||||
*
|
||||
* @param appLocale Язык, который необходимо установить
|
||||
*/
|
||||
void setLocale(@NonNull AppLocale appLocale);
|
||||
|
||||
}
|
||||
|
@ -1,14 +1,23 @@
|
||||
package dev.struchkov.bot.gitlab.context.service;
|
||||
|
||||
/**
|
||||
* // TODO: 08.02.2021 Добавить описание.
|
||||
* <p>Контракт очистки хранилища.</p>
|
||||
* <p>Так как все что мы получаем от гитлаба сохраняется в БД, иногда нужно удалять устаревшие данные. Например, MR, которые уже были давно вмержены.</p>
|
||||
*
|
||||
* @author upagge 08.02.2021
|
||||
*/
|
||||
public interface CleanService {
|
||||
|
||||
void cleanMergedPullRequests();
|
||||
/**
|
||||
* <p>Удаляет старые MR.</p>
|
||||
* <p>По умолчанию старыми считаются те, которые закрыты или вмержены</p>
|
||||
*/
|
||||
void cleanOldMergedRequests();
|
||||
|
||||
/**
|
||||
* <p>Удаляет старые пайплайны</p>
|
||||
* <p>По умолчанию удаляет все пайплайны старше суток</p>
|
||||
*/
|
||||
void cleanOldPipelines();
|
||||
|
||||
}
|
||||
|
@ -7,14 +7,21 @@ import lombok.NonNull;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* // TODO: 11.02.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 11.02.2021
|
||||
*/
|
||||
public interface DiscussionService extends SimpleManagerService<Discussion, String> {
|
||||
|
||||
/**
|
||||
* Метод отправляющий коментарий в дискуссию.
|
||||
*
|
||||
* @param discussionId Идентификатор дискуссии
|
||||
* @param text Текст комментария
|
||||
*/
|
||||
void answer(@NonNull String discussionId, @NonNull String text);
|
||||
|
||||
/**
|
||||
* Получить все дискусси для MR.
|
||||
*/
|
||||
List<Discussion> getAllByMergeRequestId(@NonNull Long mergeRequestId);
|
||||
|
||||
}
|
||||
|
@ -4,8 +4,6 @@ import dev.struchkov.bot.gitlab.context.domain.entity.Person;
|
||||
import dev.struchkov.haiti.context.service.SimpleManagerService;
|
||||
|
||||
/**
|
||||
* // TODO: 15.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 15.01.2021
|
||||
*/
|
||||
public interface PersonService extends SimpleManagerService<Person, Long> {
|
||||
|
@ -12,7 +12,7 @@ import lombok.NonNull;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* // TODO: 17.01.2021 Добавить описание.
|
||||
* Сервис для работы с пайплайнами
|
||||
*
|
||||
* @author upagge 17.01.2021
|
||||
*/
|
||||
|
@ -4,8 +4,6 @@ import dev.struchkov.bot.gitlab.context.domain.entity.Project;
|
||||
import dev.struchkov.haiti.context.service.SimpleManagerService;
|
||||
|
||||
/**
|
||||
* // TODO: 14.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 14.01.2021
|
||||
*/
|
||||
public interface ProjectService extends SimpleManagerService<Project, Long> {
|
||||
|
@ -6,7 +6,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* // TODO: 11.10.2020 Добавить описание.
|
||||
* Основные настройки приложения.
|
||||
*
|
||||
* @author upagge 11.10.2020
|
||||
*/
|
||||
|
@ -6,8 +6,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* // TODO: 15.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 15.01.2021
|
||||
*/
|
||||
|
||||
|
@ -6,11 +6,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* // TODO: 11.02.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 11.02.2021
|
||||
*/
|
||||
@Component
|
||||
|
@ -10,8 +10,6 @@ import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* // TODO: 15.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 15.01.2021
|
||||
*/
|
||||
@Component
|
||||
|
@ -7,8 +7,6 @@ import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* // TODO: 12.09.2020 Добавить описание.
|
||||
*
|
||||
* @author upagge 12.09.2020
|
||||
*/
|
||||
@Component
|
||||
|
@ -6,8 +6,6 @@ import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* // TODO: 15.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 15.01.2021
|
||||
*/
|
||||
@Component
|
||||
|
@ -21,8 +21,6 @@ import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.SUCCESS;
|
||||
import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.WAITING_FOR_RESOURCE;
|
||||
|
||||
/**
|
||||
* // TODO: 17.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 17.01.2021
|
||||
*/
|
||||
@Component
|
||||
|
@ -6,8 +6,6 @@ import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* // TODO: 14.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 14.01.2021
|
||||
*/
|
||||
@Component
|
||||
|
@ -15,7 +15,7 @@ import java.util.Locale;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
/**
|
||||
* // TODO: 16.01.2021 Добавить описание.
|
||||
* Сервис отвечает за пользовательские настройки приложения.
|
||||
*
|
||||
* @author upagge 16.01.2021
|
||||
*/
|
||||
@ -31,26 +31,20 @@ public class AppSettingServiceImpl implements AppSettingService {
|
||||
|
||||
@Override
|
||||
public boolean isFirstStart() {
|
||||
return appSettingRepository.findById(KEY)
|
||||
.orElseThrow(NOT_FOUND_SETTINGS)
|
||||
.isFirstStart();
|
||||
return getAppSetting().isFirstStart();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disableFirstStart() {
|
||||
final AppSetting appSetting = appSettingRepository.findById(KEY).orElseThrow(NOT_FOUND_SETTINGS);
|
||||
final AppSetting appSetting = getAppSetting();
|
||||
appSetting.setFirstStart(false);
|
||||
appSettingRepository.save(appSetting);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage(@NonNull String label) {
|
||||
final Locale value = appSettingRepository.findById(KEY)
|
||||
.orElseThrow(NOT_FOUND_SETTINGS)
|
||||
.getAppLocale().getValue();
|
||||
return messageSource.getMessage(
|
||||
label, null, value
|
||||
);
|
||||
final Locale value = getAppSetting().getAppLocale().getValue();
|
||||
return messageSource.getMessage(label, null, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -59,17 +53,20 @@ public class AppSettingServiceImpl implements AppSettingService {
|
||||
return messageSource.getMessage(
|
||||
label,
|
||||
paramsArray,
|
||||
appSettingRepository.findById(KEY)
|
||||
.orElseThrow(NOT_FOUND_SETTINGS)
|
||||
.getAppLocale().getValue()
|
||||
getAppSetting().getAppLocale().getValue()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLocale(@NonNull AppLocale appLocale) {
|
||||
final AppSetting appSetting = appSettingRepository.findById(KEY).orElseThrow(NOT_FOUND_SETTINGS);
|
||||
final AppSetting appSetting = getAppSetting();
|
||||
appSetting.setAppLocale(appLocale);
|
||||
appSettingRepository.save(appSetting);
|
||||
}
|
||||
|
||||
private AppSetting getAppSetting() {
|
||||
return appSettingRepository.findById(KEY)
|
||||
.orElseThrow(NOT_FOUND_SETTINGS);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -15,13 +15,12 @@ import org.springframework.stereotype.Service;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static dev.struchkov.bot.gitlab.context.domain.MergeRequestState.CLOSED;
|
||||
import static dev.struchkov.bot.gitlab.context.domain.MergeRequestState.MERGED;
|
||||
|
||||
/**
|
||||
* // TODO: 08.02.2021 Добавить описание.
|
||||
* Реализация сервиса очистки данных.
|
||||
*
|
||||
* @author upagge 08.02.2021
|
||||
*/
|
||||
@ -30,7 +29,7 @@ import static dev.struchkov.bot.gitlab.context.domain.MergeRequestState.MERGED;
|
||||
public class CleanServiceImpl implements CleanService {
|
||||
|
||||
private static final int COUNT = 1000;
|
||||
private static final MergeRequestFilter CLEAN_FILTER = MergeRequestFilter.builder()
|
||||
private static final MergeRequestFilter MR_CLEAN_FILTER = MergeRequestFilter.builder()
|
||||
.states(Set.of(MERGED, CLOSED))
|
||||
.build();
|
||||
|
||||
@ -38,9 +37,9 @@ public class CleanServiceImpl implements CleanService {
|
||||
private final PipelineService pipelineService;
|
||||
|
||||
@Override
|
||||
public void cleanMergedPullRequests() {
|
||||
public void cleanOldMergedRequests() {
|
||||
int page = 0;
|
||||
Sheet<MergeRequest> mergeRequestSheet = mergeRequestsService.getAll(CLEAN_FILTER, PaginationImpl.of(page, COUNT));
|
||||
Sheet<MergeRequest> mergeRequestSheet = mergeRequestsService.getAll(MR_CLEAN_FILTER, PaginationImpl.of(page, COUNT));
|
||||
|
||||
while (mergeRequestSheet.hasContent()) {
|
||||
final Set<Long> ids = mergeRequestSheet.getContent().stream()
|
||||
@ -49,7 +48,7 @@ public class CleanServiceImpl implements CleanService {
|
||||
|
||||
mergeRequestsService.deleteAllById(ids);
|
||||
|
||||
mergeRequestSheet = mergeRequestsService.getAll(CLEAN_FILTER, PaginationImpl.of(++page, COUNT));
|
||||
mergeRequestSheet = mergeRequestsService.getAll(MR_CLEAN_FILTER, PaginationImpl.of(++page, COUNT));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,8 +35,10 @@ import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static java.lang.Boolean.FALSE;
|
||||
|
||||
/**
|
||||
* // TODO: 11.02.2021 Добавить описание.
|
||||
* Сервис для работы с дискуссиями.
|
||||
*
|
||||
* @author upagge 11.02.2021
|
||||
*/
|
||||
@ -69,7 +71,7 @@ public class DiscussionServiceImpl extends AbstractSimpleManagerService<Discussi
|
||||
public Discussion create(@NonNull Discussion discussion) {
|
||||
discussion.getNotes().forEach(note -> personService.create(note.getAuthor()));
|
||||
discussion.getNotes().forEach(this::notificationPersonal);
|
||||
discussion.getNotes().forEach(note -> notifyNewTask(note, discussion));
|
||||
discussion.getNotes().forEach(note -> notifyNewNote(note, discussion));
|
||||
|
||||
final boolean resolved = discussion.getNotes().stream()
|
||||
.allMatch(note -> note.isResolvable() && note.getResolved());
|
||||
@ -77,13 +79,11 @@ public class DiscussionServiceImpl extends AbstractSimpleManagerService<Discussi
|
||||
return discussionRepository.save(discussion);
|
||||
}
|
||||
|
||||
private void notifyNewTask(Note note, Discussion discussion) {
|
||||
if (note.isResolvable()
|
||||
&& personInformation.getId().equals(discussion.getResponsible().getId())
|
||||
&& !personInformation.getId().equals(note.getAuthor().getId())
|
||||
&& note.getResolved() != null
|
||||
&& !note.getResolved()
|
||||
) {
|
||||
/**
|
||||
* <p>Уведомляет пользователя, если появился новый комментарий</p>
|
||||
*/
|
||||
private void notifyNewNote(Note note, Discussion discussion) {
|
||||
if (isNeedNotifyNewNote(note, discussion)) {
|
||||
notifyService.send(
|
||||
TaskNewNotify.builder()
|
||||
.authorName(note.getAuthor().getName())
|
||||
@ -94,22 +94,34 @@ public class DiscussionServiceImpl extends AbstractSimpleManagerService<Discussi
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isNeedNotifyNewNote(Note note, Discussion discussion) {
|
||||
final Long personId = personInformation.getId();
|
||||
return note.isResolvable() // Тип комментария требует решения (Задачи)
|
||||
&& personId.equals(discussion.getResponsible().getId()) // Создатель дискуссии пользователь приложения
|
||||
&& !personId.equals(note.getAuthor().getId()) // Создатель комментария не пользователь системы
|
||||
&& FALSE.equals(note.getResolved()); // Комментарий не отмечен как решенный
|
||||
}
|
||||
|
||||
@Override
|
||||
public Discussion update(@NonNull Discussion discussion) {
|
||||
final Discussion oldDiscussion = discussionRepository.findById(discussion.getId())
|
||||
.orElseThrow(NotFoundException.supplier("Дискуссия не найдена"));
|
||||
final Map<Long, Note> noteMap = oldDiscussion
|
||||
final Map<Long, Note> idAndNoteMap = oldDiscussion
|
||||
.getNotes().stream()
|
||||
.collect(Collectors.toMap(Note::getId, note -> note));
|
||||
final boolean inDiscussion = discussion.getNotes().stream()
|
||||
|
||||
// Пользователь участвовал в обсуждении
|
||||
final boolean userParticipatedInDiscussion = discussion.getNotes().stream()
|
||||
.anyMatch(note -> personInformation.getId().equals(note.getAuthor().getId()));
|
||||
|
||||
discussion.setMergeRequest(oldDiscussion.getMergeRequest());
|
||||
discussion.setResponsible(oldDiscussion.getResponsible());
|
||||
discussion.getNotes().forEach(note -> updateNote(note, noteMap, inDiscussion));
|
||||
discussion.getNotes().forEach(note -> updateNote(note, idAndNoteMap, userParticipatedInDiscussion));
|
||||
|
||||
final boolean resolved = discussion.getNotes().stream()
|
||||
.allMatch(note -> note.isResolvable() && note.getResolved());
|
||||
discussion.setResolved(resolved);
|
||||
|
||||
return discussionRepository.save(discussion);
|
||||
}
|
||||
|
||||
@ -205,9 +217,12 @@ public class DiscussionServiceImpl extends AbstractSimpleManagerService<Discussi
|
||||
return discussionRepository.findAllByMergeRequestId(mergeRequestId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Уведомляет пользователя, если его никнейм упоминается в комментарии.
|
||||
*/
|
||||
protected void notificationPersonal(@NonNull Note note) {
|
||||
Matcher matcher = PATTERN.matcher(note.getBody());
|
||||
Set<String> recipientsLogins = new HashSet<>();
|
||||
final Matcher matcher = PATTERN.matcher(note.getBody());
|
||||
final Set<String> recipientsLogins = new HashSet<>();
|
||||
while (matcher.find()) {
|
||||
final String login = matcher.group(0).replace("@", "");
|
||||
recipientsLogins.add(login);
|
||||
|
@ -8,8 +8,6 @@ import lombok.NonNull;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* // TODO: 15.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 15.01.2021
|
||||
*/
|
||||
@Service
|
||||
|
@ -2,6 +2,7 @@ package dev.struchkov.bot.gitlab.core.service.impl;
|
||||
|
||||
import dev.struchkov.bot.gitlab.context.domain.PersonInformation;
|
||||
import dev.struchkov.bot.gitlab.context.domain.PipelineStatus;
|
||||
import dev.struchkov.bot.gitlab.context.domain.entity.Person;
|
||||
import dev.struchkov.bot.gitlab.context.domain.entity.Pipeline;
|
||||
import dev.struchkov.bot.gitlab.context.domain.filter.PipelineFilter;
|
||||
import dev.struchkov.bot.gitlab.context.domain.notify.pipeline.PipelineNotify;
|
||||
@ -26,13 +27,14 @@ import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.SKIPPED;
|
||||
import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.SUCCESS;
|
||||
|
||||
/**
|
||||
* // TODO: 17.01.2021 Добавить описание.
|
||||
* Реализация сервиса для работы с пайплайнами.
|
||||
*
|
||||
* @author upagge 17.01.2021
|
||||
*/
|
||||
@Service
|
||||
public class PipelineServiceImpl extends AbstractSimpleManagerService<Pipeline, Long> implements PipelineService {
|
||||
|
||||
// Статусы пайплайнов, о которых нужно уведомить
|
||||
private static final Set<PipelineStatus> notificationStatus = Set.of(FAILED, SUCCESS, CANCELED, SKIPPED);
|
||||
|
||||
private final NotifyService notifyService;
|
||||
@ -61,12 +63,12 @@ public class PipelineServiceImpl extends AbstractSimpleManagerService<Pipeline,
|
||||
public Pipeline create(@NonNull Pipeline pipeline) {
|
||||
personService.create(pipeline.getPerson());
|
||||
final Pipeline newPipeline = pipelineRepository.save(pipeline);
|
||||
notifyNewPipeline(pipeline, "n/a");
|
||||
return newPipeline;
|
||||
}
|
||||
|
||||
if (
|
||||
notificationStatus.contains(pipeline.getStatus())
|
||||
&& pipeline.getPerson() != null
|
||||
&& personInformation.getId().equals(pipeline.getPerson().getId())
|
||||
) {
|
||||
private void notifyNewPipeline(Pipeline pipeline, String oldStatus) {
|
||||
if (isNeedNotifyNewPipeline(pipeline)) {
|
||||
notifyService.send(
|
||||
PipelineNotify.builder()
|
||||
.newStatus(pipeline.getStatus().name())
|
||||
@ -74,11 +76,10 @@ public class PipelineServiceImpl extends AbstractSimpleManagerService<Pipeline,
|
||||
.projectName(pipeline.getProject().getName())
|
||||
.refName(pipeline.getRef())
|
||||
.webUrl(pipeline.getWebUrl())
|
||||
.oldStatus(oldStatus)
|
||||
.build()
|
||||
);
|
||||
}
|
||||
|
||||
return newPipeline;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -88,31 +89,20 @@ public class PipelineServiceImpl extends AbstractSimpleManagerService<Pipeline,
|
||||
|
||||
if (!oldPipeline.getUpdated().equals(pipeline.getUpdated())) {
|
||||
pipeline.setProject(oldPipeline.getProject());
|
||||
|
||||
if (
|
||||
notificationStatus.contains(pipeline.getStatus())
|
||||
&& pipeline.getPerson() != null
|
||||
&& personInformation.getId().equals(pipeline.getPerson().getId())
|
||||
) {
|
||||
notifyService.send(
|
||||
PipelineNotify.builder()
|
||||
.pipelineId(pipeline.getId())
|
||||
.webUrl(pipeline.getWebUrl())
|
||||
.projectName(pipeline.getProject().getName())
|
||||
.refName(pipeline.getRef())
|
||||
.newStatus(pipeline.getStatus().name())
|
||||
.oldStatus(oldPipeline.getStatus().name())
|
||||
.build()
|
||||
);
|
||||
|
||||
return pipelineRepository.save(pipeline);
|
||||
}
|
||||
|
||||
notifyNewPipeline(pipeline, oldPipeline.getStatus().name());
|
||||
return pipelineRepository.save(pipeline);
|
||||
}
|
||||
|
||||
return oldPipeline;
|
||||
}
|
||||
|
||||
private boolean isNeedNotifyNewPipeline(@NonNull Pipeline pipeline) {
|
||||
final Person personPipelineCreator = pipeline.getPerson();
|
||||
return notificationStatus.contains(pipeline.getStatus()) // Пайплайн имеет статус необходимый для уведомления
|
||||
&& personPipelineCreator != null
|
||||
&& personInformation.getId().equals(personPipelineCreator.getId()); // Пользователь приложения является инициатором пайплайна
|
||||
}
|
||||
|
||||
@Override
|
||||
public Sheet<Pipeline> getAllByStatuses(@NonNull Set<PipelineStatus> statuses, @NonNull Pagination pagination) {
|
||||
return pipelineRepository.findAllByStatuses(statuses, pagination);
|
||||
|
@ -14,8 +14,6 @@ import lombok.NonNull;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* // TODO: 14.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 14.01.2021
|
||||
*/
|
||||
@Service
|
||||
@ -44,23 +42,27 @@ public class ProjectServiceImpl extends AbstractSimpleManagerService<Project, Lo
|
||||
public Project create(@NonNull Project project) {
|
||||
final Project newProject = projectRepository.save(project);
|
||||
|
||||
if (!newProject.getCreatorId().equals(personInformation.getId())) {
|
||||
if (!personInformation.getId().equals(newProject.getCreatorId())) {
|
||||
final String authorName = personService.getById(newProject.getCreatorId())
|
||||
.orElseThrow(NotFoundException.supplier("Пользователь не найден"))
|
||||
.getName();
|
||||
notifyService.send(
|
||||
NewProjectNotify.builder()
|
||||
.projectDescription(newProject.getDescription())
|
||||
.projectName(newProject.getName())
|
||||
.projectUrl(newProject.getWebUrl())
|
||||
.authorName(authorName)
|
||||
.build()
|
||||
);
|
||||
sendNotifyNewProject(newProject, authorName);
|
||||
}
|
||||
|
||||
return newProject;
|
||||
}
|
||||
|
||||
private void sendNotifyNewProject(Project newProject, String authorName) {
|
||||
notifyService.send(
|
||||
NewProjectNotify.builder()
|
||||
.projectDescription(newProject.getDescription())
|
||||
.projectName(newProject.getName())
|
||||
.projectUrl(newProject.getWebUrl())
|
||||
.authorName(authorName)
|
||||
.build()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Project update(@NonNull Project project) {
|
||||
return projectRepository.save(project);
|
||||
|
@ -13,7 +13,7 @@ import lombok.NonNull;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* // TODO: 08.02.2021 Добавить описание.
|
||||
* Сервис фильтрации пайплайнов.
|
||||
*
|
||||
* @author upagge 08.02.2021
|
||||
*/
|
||||
|
@ -2,11 +2,11 @@ package dev.struchkov.bot.gitlab.core.service.parser;
|
||||
|
||||
import dev.struchkov.bot.gitlab.context.domain.entity.Discussion;
|
||||
import dev.struchkov.bot.gitlab.context.domain.entity.MergeRequest;
|
||||
import dev.struchkov.bot.gitlab.context.domain.entity.Note;
|
||||
import dev.struchkov.bot.gitlab.context.service.DiscussionService;
|
||||
import dev.struchkov.bot.gitlab.context.service.MergeRequestsService;
|
||||
import dev.struchkov.bot.gitlab.core.config.properties.GitlabProperty;
|
||||
import dev.struchkov.bot.gitlab.core.config.properties.PersonProperty;
|
||||
import dev.struchkov.bot.gitlab.core.utils.StringUtils;
|
||||
import dev.struchkov.bot.gitlab.sdk.domain.DiscussionJson;
|
||||
import dev.struchkov.haiti.context.domain.ExistsContainer;
|
||||
import dev.struchkov.haiti.context.page.Sheet;
|
||||
@ -20,12 +20,14 @@ import java.text.MessageFormat;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static dev.struchkov.bot.gitlab.core.utils.StringUtils.H_PRIVATE_TOKEN;
|
||||
import static dev.struchkov.haiti.utils.network.HttpParse.ACCEPT;
|
||||
|
||||
/**
|
||||
* // TODO: 11.02.2021 Добавить описание.
|
||||
* Парсер обсуждений.
|
||||
*
|
||||
* @author upagge 11.02.2021
|
||||
*/
|
||||
@ -33,7 +35,7 @@ import static dev.struchkov.haiti.utils.network.HttpParse.ACCEPT;
|
||||
@RequiredArgsConstructor
|
||||
public class DiscussionParser {
|
||||
|
||||
public static final int COUNT = 100;
|
||||
public static final int COUNT = 500;
|
||||
|
||||
private final DiscussionService discussionService;
|
||||
private final MergeRequestsService mergeRequestsService;
|
||||
@ -42,19 +44,16 @@ public class DiscussionParser {
|
||||
private final GitlabProperty gitlabProperty;
|
||||
private final PersonProperty personProperty;
|
||||
|
||||
/**
|
||||
* Поиск новых обсуждений
|
||||
*/
|
||||
public void scanNewDiscussion() {
|
||||
int page = 0;
|
||||
Sheet<MergeRequest> mergeRequestSheet = mergeRequestsService.getAll(PaginationImpl.of(page, COUNT));
|
||||
|
||||
while (mergeRequestSheet.hasContent()) {
|
||||
|
||||
final List<MergeRequest> mergeRequests = mergeRequestSheet.getContent();
|
||||
for (MergeRequest mergeRequest : mergeRequests) {
|
||||
|
||||
processingMergeRequest(mergeRequest);
|
||||
|
||||
}
|
||||
|
||||
mergeRequestSheet.getContent()
|
||||
.forEach(this::processingMergeRequest);
|
||||
mergeRequestSheet = mergeRequestsService.getAll(PaginationImpl.of(++page, COUNT));
|
||||
}
|
||||
}
|
||||
@ -72,11 +71,11 @@ public class DiscussionParser {
|
||||
}
|
||||
|
||||
private void createNewDiscussion(List<DiscussionJson> discussionJson, MergeRequest mergeRequest) {
|
||||
final Set<String> jsonIds = discussionJson.stream()
|
||||
final Set<String> discussionIds = discussionJson.stream()
|
||||
.map(DiscussionJson::getId)
|
||||
.collect(Collectors.toSet());
|
||||
.collect(Collectors.toUnmodifiableSet());
|
||||
|
||||
final ExistsContainer<Discussion, String> existsContainer = discussionService.existsById(jsonIds);
|
||||
final ExistsContainer<Discussion, String> existsContainer = discussionService.existsById(discussionIds);
|
||||
if (!existsContainer.isAllFound()) {
|
||||
final List<Discussion> newDiscussions = discussionJson.stream()
|
||||
.filter(json -> existsContainer.getIdNoFound().contains(json.getId()))
|
||||
@ -84,12 +83,7 @@ public class DiscussionParser {
|
||||
final Discussion discussion = conversionService.convert(json, Discussion.class);
|
||||
discussion.setMergeRequest(mergeRequest);
|
||||
discussion.setResponsible(mergeRequest.getAuthor());
|
||||
discussion.getNotes().forEach(
|
||||
note -> {
|
||||
final String url = MessageFormat.format(gitlabProperty.getUrlNote(), mergeRequest.getWebUrl(), note.getId());
|
||||
note.setWebUrl(url);
|
||||
}
|
||||
);
|
||||
discussion.getNotes().forEach(createNoteLink(mergeRequest));
|
||||
return discussion;
|
||||
})
|
||||
.filter(discussion -> discussion.getNotes() != null && !discussion.getNotes().isEmpty())
|
||||
@ -98,34 +92,25 @@ public class DiscussionParser {
|
||||
}
|
||||
}
|
||||
|
||||
private List<DiscussionJson> getDiscussionJson(MergeRequest mergeRequest, int page) {
|
||||
return HttpParse.request(MessageFormat.format(gitlabProperty.getUrlDiscussion(), mergeRequest.getProjectId(), mergeRequest.getTwoId(), page))
|
||||
.header(ACCEPT)
|
||||
.header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken())
|
||||
.executeList(DiscussionJson.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Сканирование старых обсуждений на предмет новых комментарие
|
||||
*/
|
||||
public void scanOldDiscussions() {
|
||||
int page = 0;
|
||||
Sheet<Discussion> discussionSheet = discussionService.getAll(PaginationImpl.of(page, 100));
|
||||
Sheet<Discussion> discussionSheet = discussionService.getAll(PaginationImpl.of(page, COUNT));
|
||||
|
||||
while (discussionSheet.hasContent()) {
|
||||
final List<Discussion> discussions = discussionSheet.getContent();
|
||||
|
||||
for (Discussion discussion : discussions) {
|
||||
if (discussion.getMergeRequest() != null) {
|
||||
final Optional<Discussion> optNewDiscussion = HttpParse.request(MessageFormat.format(gitlabProperty.getUrlOneDiscussion(), discussion.getMergeRequest().getProjectId(), discussion.getMergeRequest().getTwoId(), discussion.getId()))
|
||||
final Optional<Discussion> optNewDiscussion = HttpParse.request(createLinkOldDiscussion(discussion))
|
||||
.header(ACCEPT)
|
||||
.header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken())
|
||||
.header(H_PRIVATE_TOKEN, personProperty.getToken())
|
||||
.execute(DiscussionJson.class)
|
||||
.map(json -> {
|
||||
final Discussion newDiscussion = conversionService.convert(json, Discussion.class);
|
||||
newDiscussion.getNotes().forEach(
|
||||
note -> {
|
||||
final String url = MessageFormat.format(gitlabProperty.getUrlNote(), discussion.getMergeRequest().getWebUrl(), note.getId());
|
||||
note.setWebUrl(url);
|
||||
}
|
||||
);
|
||||
newDiscussion.getNotes().forEach(createNoteLink(discussion.getMergeRequest()));
|
||||
return newDiscussion;
|
||||
});
|
||||
optNewDiscussion.ifPresent(discussionService::update);
|
||||
@ -134,10 +119,32 @@ public class DiscussionParser {
|
||||
}
|
||||
}
|
||||
|
||||
discussionSheet = discussionService.getAll(PaginationImpl.of(++page, 100));
|
||||
discussionSheet = discussionService.getAll(PaginationImpl.of(++page, COUNT));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private String createLinkOldDiscussion(Discussion discussion) {
|
||||
return MessageFormat.format(
|
||||
gitlabProperty.getUrlOneDiscussion(),
|
||||
discussion.getMergeRequest().getProjectId(),
|
||||
discussion.getMergeRequest().getTwoId(),
|
||||
discussion.getId()
|
||||
);
|
||||
}
|
||||
|
||||
private List<DiscussionJson> getDiscussionJson(MergeRequest mergeRequest, int page) {
|
||||
return HttpParse.request(MessageFormat.format(gitlabProperty.getUrlDiscussion(), mergeRequest.getProjectId(), mergeRequest.getTwoId(), page))
|
||||
.header(ACCEPT)
|
||||
.header(H_PRIVATE_TOKEN, personProperty.getToken())
|
||||
.executeList(DiscussionJson.class);
|
||||
}
|
||||
|
||||
private Consumer<Note> createNoteLink(MergeRequest mergeRequest) {
|
||||
return note -> {
|
||||
final String url = MessageFormat.format(gitlabProperty.getUrlNote(), mergeRequest.getWebUrl(), note.getId());
|
||||
note.setWebUrl(url);
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -24,7 +24,6 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.CREATED;
|
||||
import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.MANUAL;
|
||||
@ -35,11 +34,10 @@ import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.WAITING_FOR
|
||||
import static dev.struchkov.haiti.utils.network.HttpParse.ACCEPT;
|
||||
|
||||
/**
|
||||
* // TODO: 17.01.2021 Добавить описание.
|
||||
* Парсер пайплайнов.
|
||||
*
|
||||
* @author upagge 17.01.2021
|
||||
*/
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class PipelineParser {
|
||||
@ -101,7 +99,7 @@ public class PipelineParser {
|
||||
pipeline.setProject(project);
|
||||
return pipeline;
|
||||
})
|
||||
.orElseThrow(() -> new ConvertException("Ошибка обновления Pipelines"));
|
||||
.orElseThrow(ConvertException.supplier("Ошибка обновления Pipelines"));
|
||||
pipelineService.create(newPipeline);
|
||||
}
|
||||
|
||||
@ -136,7 +134,7 @@ public class PipelineParser {
|
||||
.header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken())
|
||||
.execute(PipelineJson.class)
|
||||
.map(json -> conversionService.convert(json, Pipeline.class))
|
||||
.orElseThrow(() -> new ConvertException("Ошибка обновления Pipelines"));
|
||||
.orElseThrow(ConvertException.supplier("Ошибка обновления Pipelines"));
|
||||
|
||||
pipelineService.update(newPipeline);
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ import java.util.stream.Collectors;
|
||||
import static dev.struchkov.haiti.utils.network.HttpParse.ACCEPT;
|
||||
|
||||
/**
|
||||
* // TODO: 14.01.2021 Добавить описание.
|
||||
* Парсер проектов.
|
||||
*
|
||||
* @author upagge 14.01.2021
|
||||
*/
|
||||
@ -60,13 +60,13 @@ public class ProjectParser {
|
||||
|
||||
while (!projectJsons.isEmpty()) {
|
||||
|
||||
final Set<Long> jsonIds = projectJsons.stream()
|
||||
final Set<Long> projectIds = projectJsons.stream()
|
||||
.map(ProjectJson::getId)
|
||||
.collect(Collectors.toSet());
|
||||
.collect(Collectors.toUnmodifiableSet());
|
||||
|
||||
createNewPersons(projectJsons);
|
||||
|
||||
final ExistsContainer<Project, Long> existsContainer = projectService.existsById(jsonIds);
|
||||
final ExistsContainer<Project, Long> existsContainer = projectService.existsById(projectIds);
|
||||
final List<Project> newProjects = projectJsons.stream()
|
||||
.filter(json -> existsContainer.getIdNoFound().contains(json.getId()))
|
||||
.map(json -> conversionService.convert(json, Project.class))
|
||||
@ -81,11 +81,11 @@ public class ProjectParser {
|
||||
}
|
||||
|
||||
private void createNewPersons(List<ProjectJson> projectJsons) {
|
||||
final Set<Long> jsonIds = projectJsons.stream()
|
||||
final Set<Long> personCreatorId = projectJsons.stream()
|
||||
.map(ProjectJson::getCreatorId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
final ExistsContainer<Person, Long> existsContainer = personService.existsById(jsonIds);
|
||||
final ExistsContainer<Person, Long> existsContainer = personService.existsById(personCreatorId);
|
||||
|
||||
if (!existsContainer.isAllFound()) {
|
||||
final Collection<Long> notFoundId = existsContainer.getIdNoFound();
|
||||
@ -96,11 +96,11 @@ public class ProjectParser {
|
||||
.header(ACCEPT)
|
||||
.header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken())
|
||||
.execute(PersonJson.class)
|
||||
.map(json -> conversionService.convert(json, Person.class)).orElseThrow(() -> new ConvertException("Ошибка преобразования нового пользователя"))
|
||||
.map(json -> conversionService.convert(json, Person.class))
|
||||
.orElseThrow(ConvertException.supplier("Ошибка преобразования нового пользователя"))
|
||||
).toList();
|
||||
|
||||
personService.createAll(newPersons);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -119,7 +119,7 @@ public class ProjectParser {
|
||||
.header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken())
|
||||
.execute(ProjectJson.class)
|
||||
.map(json -> conversionService.convert(json, Project.class))
|
||||
.orElseThrow(() -> new ConvertException("Ошибка получения проекта"));
|
||||
.orElseThrow(ConvertException.supplier("Ошибка получения проекта"));
|
||||
if (!projectService.existsById(project.getId())) {
|
||||
projectService.create(project);
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* // TODO: 29.09.2020 Добавить описание.
|
||||
* Утилитарный класс для работы со сторками.
|
||||
*
|
||||
* @author upagge 29.09.2020
|
||||
*/
|
||||
|
@ -7,8 +7,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* // TODO: 16.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 16.01.2021
|
||||
*/
|
||||
@Repository
|
||||
|
@ -10,8 +10,6 @@ import org.springframework.stereotype.Repository;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* // TODO: 11.02.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 11.02.2021
|
||||
*/
|
||||
@Repository
|
||||
|
@ -13,7 +13,6 @@ import org.springframework.stereotype.Repository;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* // TODO: 08.09.2020 Добавить описание.
|
||||
*
|
||||
* @author upagge 08.09.2020
|
||||
*/
|
||||
|
@ -7,8 +7,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* // TODO: 15.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 15.01.2021
|
||||
*/
|
||||
@Repository
|
||||
|
@ -14,8 +14,6 @@ import org.springframework.stereotype.Repository;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* // TODO: 17.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 17.01.2021
|
||||
*/
|
||||
@Repository
|
||||
|
@ -7,8 +7,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* // TODO: 14.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 14.01.2021
|
||||
*/
|
||||
@Repository
|
||||
|
@ -4,8 +4,6 @@ import dev.struchkov.bot.gitlab.context.domain.entity.AppSetting;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
/**
|
||||
* // TODO: 16.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 16.01.2021
|
||||
*/
|
||||
public interface AppSettingJpaRepository extends JpaRepository<AppSetting, Long> {
|
||||
|
@ -6,12 +6,13 @@ import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* // TODO: 11.02.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 11.02.2021
|
||||
*/
|
||||
public interface DiscussionJpaRepository extends JpaRepository<Discussion, String> {
|
||||
|
||||
/**
|
||||
* Находит все обсуждения MR
|
||||
*/
|
||||
List<Discussion> findAllByMergeRequestId(Long mergeRequestId);
|
||||
|
||||
}
|
||||
|
@ -4,8 +4,6 @@ import dev.struchkov.bot.gitlab.context.domain.entity.Person;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
/**
|
||||
* // TODO: 15.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 15.01.2021
|
||||
*/
|
||||
public interface PersonJpaRepository extends JpaRepository<Person, Long> {
|
||||
|
@ -9,8 +9,6 @@ import org.springframework.data.jpa.repository.support.JpaRepositoryImplementati
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* // TODO: 17.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 17.01.2021
|
||||
*/
|
||||
public interface PipelineJpaRepository extends JpaRepositoryImplementation<Pipeline, Long> {
|
||||
|
@ -4,8 +4,6 @@ import dev.struchkov.bot.gitlab.context.domain.entity.Project;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
|
||||
/**
|
||||
* // TODO: 14.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 14.01.2021
|
||||
*/
|
||||
public interface ProjectJpaRepository extends JpaRepository<Project, Long> {
|
||||
|
@ -10,8 +10,6 @@ import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* // TODO: 14.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 14.01.2021
|
||||
*/
|
||||
@Slf4j
|
||||
@ -33,7 +31,7 @@ public class SchedulerService {
|
||||
discussionParser.scanOldDiscussions();
|
||||
discussionParser.scanNewDiscussion();
|
||||
cleanService.cleanOldPipelines();
|
||||
cleanService.cleanMergedPullRequests();
|
||||
cleanService.cleanOldMergedRequests();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -10,8 +10,6 @@ import lombok.Data;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* // TODO: 19.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 19.01.2021
|
||||
*/
|
||||
@Data
|
||||
|
@ -6,8 +6,6 @@ import lombok.Setter;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* // TODO: 11.02.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 11.02.2021
|
||||
*/
|
||||
@Getter
|
||||
|
@ -11,8 +11,6 @@ import java.time.LocalDateTime;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* TODO: Добавить описание класса.
|
||||
*
|
||||
* @author upagge [30.01.2020]
|
||||
*/
|
||||
@Data
|
||||
|
@ -3,8 +3,6 @@ package dev.struchkov.bot.gitlab.sdk.domain;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
/**
|
||||
* TODO: Добавить комментарий енума.
|
||||
*
|
||||
* @author upagge [01.02.2020]
|
||||
*/
|
||||
public enum MergeRequestStateJson {
|
||||
|
@ -4,8 +4,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* TODO: Добавить описание класса.
|
||||
*
|
||||
* @author upagge [31.01.2020]
|
||||
*/
|
||||
@Data
|
||||
|
@ -10,8 +10,6 @@ import lombok.Data;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* // TODO: 17.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 17.01.2021
|
||||
*/
|
||||
@Data
|
||||
|
@ -3,8 +3,6 @@ package dev.struchkov.bot.gitlab.sdk.domain;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
/**
|
||||
* // TODO: 17.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 17.01.2021
|
||||
*/
|
||||
public enum PipelineStatusJson {
|
||||
|
@ -10,8 +10,6 @@ import lombok.Data;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* // TODO: 14.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 14.01.2021
|
||||
*/
|
||||
@Data
|
||||
|
@ -1,25 +0,0 @@
|
||||
package dev.struchkov.bot.gitlab.sdk.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* TODO: Добавить описание класса.
|
||||
*
|
||||
* @author upagge [30.01.2020]
|
||||
*/
|
||||
@Data
|
||||
public abstract class Sheet<T> {
|
||||
|
||||
private Integer size;
|
||||
private Integer limit;
|
||||
private Boolean isLastPage;
|
||||
private List<T> values;
|
||||
private Integer nextPageStart;
|
||||
|
||||
public boolean hasContent() {
|
||||
return values != null && !values.isEmpty();
|
||||
}
|
||||
|
||||
}
|
@ -3,8 +3,6 @@ package dev.struchkov.bot.gitlab.sdk.domain;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* TODO: Добавить описание класса.
|
||||
*
|
||||
* @author upagge [31.01.2020]
|
||||
*/
|
||||
@Data
|
||||
|
@ -1,26 +0,0 @@
|
||||
package dev.struchkov.bot.gitlab.sdk.utils;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
|
||||
public class LocalDateTimeFromEpochDeserializer extends JsonDeserializer<LocalDateTime> {
|
||||
|
||||
@Override
|
||||
public LocalDateTime deserialize(JsonParser jp, DeserializationContext ctxt) {
|
||||
try {
|
||||
Long time = jp.readValueAs(Long.class);
|
||||
Instant instant = Instant.ofEpochMilli(time);
|
||||
return instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
|
||||
} catch (IOException e) {
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
@ -24,8 +24,6 @@ import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
import java.util.Collections;
|
||||
|
||||
/**
|
||||
* TODO: Добавить описание класса.
|
||||
*
|
||||
* @author upagge [30.01.2020]
|
||||
*/
|
||||
@Configuration
|
||||
|
@ -11,7 +11,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* // TODO: 17.09.2020 Добавить описание.
|
||||
* Отправляет сообщение в телеграмм.
|
||||
*
|
||||
* @author upagge 17.09.2020
|
||||
*/
|
||||
|
@ -6,7 +6,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* // TODO: 18.09.2020 Добавить описание.
|
||||
* Заменяет урл, который назначает гитлаб на любой другой перед отправкой сообщения. Потому что иногда у self-host гитлабов урлы, которые не преобразуются телеграммом в ссылки. В этом случае имеет смысл менять их на ip.
|
||||
*
|
||||
* @author upagge 18.09.2020
|
||||
*/
|
||||
|
@ -10,8 +10,6 @@ import org.springframework.stereotype.Component;
|
||||
import javax.annotation.PostConstruct;
|
||||
|
||||
/**
|
||||
* // TODO: 19.01.2021 Добавить описание.
|
||||
*
|
||||
* @author upagge 19.01.2021
|
||||
*/
|
||||
@Component
|
||||
|
@ -1,10 +1,10 @@
|
||||
package dev.struchkov.bot.gitlab.telegram.service.unit;
|
||||
|
||||
/**
|
||||
* // TODO: 17.09.2020 Добавить описание.
|
||||
*
|
||||
* @author upagge 17.09.2020
|
||||
*/
|
||||
//package dev.struchkov.bot.gitlab.telegram.service.unit;
|
||||
//
|
||||
///**
|
||||
// * // TODO: 17.09.2020 Добавить описание.
|
||||
// *
|
||||
// * @author upagge 17.09.2020
|
||||
// */
|
||||
//@Component
|
||||
//@RequiredArgsConstructor
|
||||
//public class TaskProcessing implements ProcessingData<Message> {
|
||||
|
@ -7,8 +7,6 @@ import dev.struchkov.godfather.context.service.usercode.ProcessingData;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* // TODO: 17.09.2020 Добавить описание.
|
||||
*
|
||||
* @author upagge 17.09.2020
|
||||
*/
|
||||
//@Component
|
||||
|
@ -7,8 +7,6 @@ import dev.struchkov.godfather.context.service.usercode.ProcessingData;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* // TODO: 17.09.2020 Добавить описание.
|
||||
*
|
||||
* @author upagge 17.09.2020
|
||||
*/
|
||||
//@Component
|
||||
|
@ -10,6 +10,7 @@ import dev.struchkov.bot.gitlab.context.service.NoteService;
|
||||
import dev.struchkov.bot.gitlab.core.config.properties.GitlabProperty;
|
||||
import dev.struchkov.bot.gitlab.core.service.parser.ProjectParser;
|
||||
import dev.struchkov.godfather.context.domain.BoxAnswer;
|
||||
import dev.struchkov.godfather.context.domain.content.Message;
|
||||
import dev.struchkov.godfather.context.domain.keyboard.KeyBoard;
|
||||
import dev.struchkov.godfather.context.domain.keyboard.KeyBoardLine;
|
||||
import dev.struchkov.godfather.context.domain.keyboard.button.KeyBoardButtonText;
|
||||
@ -35,12 +36,12 @@ import java.util.stream.Collectors;
|
||||
public class MenuConfig {
|
||||
|
||||
@Bean
|
||||
public AnswerText menu(
|
||||
public AnswerText<Message> menu(
|
||||
AppSettingService settingService,
|
||||
AnswerText settings,
|
||||
AnswerText textAddNewProject,
|
||||
AnswerText getTasks,
|
||||
AnswerText getAssigneeMergeRequest
|
||||
AnswerText<Message> settings,
|
||||
AnswerText<Message> textAddNewProject,
|
||||
AnswerText<Message> getTasks,
|
||||
AnswerText<Message> getAssigneeMergeRequest
|
||||
) {
|
||||
return AnswerText.builder()
|
||||
.boxAnswer(message ->
|
||||
@ -83,9 +84,9 @@ public class MenuConfig {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public AnswerText textAddNewProject(
|
||||
public AnswerText<Message> textAddNewProject(
|
||||
AppSettingService settingService,
|
||||
AnswerText addNewProject
|
||||
AnswerText<Message> addNewProject
|
||||
) {
|
||||
return AnswerText.builder()
|
||||
.boxAnswer(BoxAnswer.processing(settingService.getMessage("ui.menu.add_mr.text")))
|
||||
@ -95,7 +96,7 @@ public class MenuConfig {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public AnswerText addNewProject(
|
||||
public AnswerText<Message> addNewProject(
|
||||
AppSettingService settingService,
|
||||
ProjectParser projectParser,
|
||||
GitlabProperty gitlabProperty
|
||||
@ -112,9 +113,9 @@ public class MenuConfig {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public AnswerText settings(
|
||||
public AnswerText<Message> settings(
|
||||
AppSettingService settingService,
|
||||
AnswerText settingsLanguage
|
||||
AnswerText<Message> settingsLanguage
|
||||
) {
|
||||
return AnswerText.builder()
|
||||
.boxAnswer(message ->
|
||||
@ -128,7 +129,7 @@ public class MenuConfig {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public AnswerText getTasks(
|
||||
public AnswerText<Message> getTasks(
|
||||
AppSettingService settingService,
|
||||
PersonInformation personInformation,
|
||||
NoteService noteService
|
||||
@ -151,7 +152,7 @@ public class MenuConfig {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public AnswerText getAssigneeMergeRequest(
|
||||
public AnswerText<Message> getAssigneeMergeRequest(
|
||||
MergeRequestsService mergeRequestsService,
|
||||
PersonInformation personInformation,
|
||||
AppSettingService settingService
|
||||
|
@ -8,6 +8,7 @@ import dev.struchkov.bot.gitlab.context.service.NoteService;
|
||||
import dev.struchkov.bot.gitlab.core.service.parser.ProjectParser;
|
||||
import dev.struchkov.godfather.context.domain.BoxAnswer;
|
||||
import dev.struchkov.godfather.context.domain.content.Mail;
|
||||
import dev.struchkov.godfather.context.domain.content.Message;
|
||||
import dev.struchkov.godfather.context.domain.content.attachment.Attachment;
|
||||
import dev.struchkov.godfather.context.domain.content.attachment.AttachmentType;
|
||||
import dev.struchkov.godfather.context.domain.content.attachment.Link;
|
||||
@ -40,7 +41,7 @@ public class UnitConfig {
|
||||
@Bean
|
||||
public AnswerCheck checkFirstStart(
|
||||
AppSettingService settingService,
|
||||
AnswerText textCheckLanguage,
|
||||
AnswerText<Message> textCheckLanguage,
|
||||
AnswerCheck checkMenuOrAnswer
|
||||
) {
|
||||
return AnswerCheck.builder()
|
||||
@ -54,8 +55,8 @@ public class UnitConfig {
|
||||
|
||||
@Bean
|
||||
public AnswerCheck checkMenuOrAnswer(
|
||||
AnswerText menu,
|
||||
AnswerText answerNote
|
||||
AnswerText<Message> menu,
|
||||
AnswerText<Message> answerNote
|
||||
) {
|
||||
return AnswerCheck.builder()
|
||||
.check(
|
||||
@ -76,7 +77,7 @@ public class UnitConfig {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public AnswerText answerNote(
|
||||
public AnswerText<Message> answerNote(
|
||||
NoteService noteService,
|
||||
DiscussionService discussionService
|
||||
) {
|
||||
@ -105,7 +106,7 @@ public class UnitConfig {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public AnswerText textCheckLanguage(
|
||||
public AnswerText<Message> textCheckLanguage(
|
||||
AnswerProcessing checkLanguage
|
||||
) {
|
||||
return AnswerText.builder()
|
||||
@ -122,7 +123,7 @@ public class UnitConfig {
|
||||
@Bean
|
||||
public AnswerProcessing checkLanguage(
|
||||
AppSettingService settingService,
|
||||
AnswerText textParserPrivateProject
|
||||
AnswerText<Message> textParserPrivateProject
|
||||
) {
|
||||
return AnswerProcessing
|
||||
.builder()
|
||||
@ -140,7 +141,7 @@ public class UnitConfig {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public AnswerText textParserPrivateProject(
|
||||
public AnswerText<Message> textParserPrivateProject(
|
||||
AnswerCheck checkParserPrivateProject,
|
||||
AppSettingService settingService
|
||||
) {
|
||||
@ -162,7 +163,7 @@ public class UnitConfig {
|
||||
public AnswerCheck checkParserPrivateProject(
|
||||
AppSettingService appSettingService,
|
||||
AnswerProcessing parserPrivateProject,
|
||||
AnswerText textParseOwnerProject
|
||||
AnswerText<Message> textParseOwnerProject
|
||||
) {
|
||||
return AnswerCheck.builder()
|
||||
.check(
|
||||
@ -177,7 +178,7 @@ public class UnitConfig {
|
||||
public AnswerProcessing parserPrivateProject(
|
||||
ProjectParser projectParser,
|
||||
AppSettingService settingService,
|
||||
AnswerText textParseOwnerProject
|
||||
AnswerText<Message> textParseOwnerProject
|
||||
) {
|
||||
return AnswerProcessing.builder()
|
||||
.processingData(message -> {
|
||||
@ -189,7 +190,7 @@ public class UnitConfig {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public AnswerText textParseOwnerProject(
|
||||
public AnswerText<Message> textParseOwnerProject(
|
||||
AppSettingService settingService,
|
||||
AnswerCheck checkParseOwnerProject
|
||||
) {
|
||||
|
@ -3,6 +3,7 @@ package dev.struchkov.bot.gitlab.telegram.unit.menu;
|
||||
import dev.struchkov.bot.gitlab.context.domain.AppLocale;
|
||||
import dev.struchkov.bot.gitlab.context.service.AppSettingService;
|
||||
import dev.struchkov.godfather.context.domain.BoxAnswer;
|
||||
import dev.struchkov.godfather.context.domain.content.Message;
|
||||
import dev.struchkov.godfather.context.utils.KeyBoards;
|
||||
import dev.struchkov.godfather.core.domain.unit.AnswerText;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
@ -17,9 +18,9 @@ import org.springframework.context.annotation.Configuration;
|
||||
public class MenuSettingsConfig {
|
||||
|
||||
@Bean
|
||||
public AnswerText settingsLanguage(
|
||||
public AnswerText<Message> settingsLanguage(
|
||||
AppSettingService settingService,
|
||||
AnswerText setLanguage
|
||||
AnswerText<Message> setLanguage
|
||||
) {
|
||||
return AnswerText.builder()
|
||||
.boxAnswer(
|
||||
@ -34,7 +35,7 @@ public class MenuSettingsConfig {
|
||||
}
|
||||
|
||||
@Bean
|
||||
public AnswerText setLanguage(
|
||||
public AnswerText<Message> setLanguage(
|
||||
AppSettingService settingService
|
||||
) {
|
||||
return AnswerText.builder()
|
||||
|
Loading…
Reference in New Issue
Block a user