diff --git a/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/domain/entity/Issue.java b/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/domain/entity/Issue.java index e3d57d2..486bb0d 100644 --- a/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/domain/entity/Issue.java +++ b/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/domain/entity/Issue.java @@ -8,20 +8,20 @@ import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; -import javax.persistence.CascadeType; -import javax.persistence.CollectionTable; -import javax.persistence.Column; -import javax.persistence.ElementCollection; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.FetchType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.ManyToOne; -import javax.persistence.OneToMany; -import javax.persistence.Table; +import jakarta.persistence.CascadeType; +import jakarta.persistence.CollectionTable; +import jakarta.persistence.Column; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.ArrayList; diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/IssueParser.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/IssueParser.java index 18ef891..8014bce 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/IssueParser.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/IssueParser.java @@ -59,7 +59,7 @@ public class IssueParser { } public void parsingOldIssue(){ - log.debug("Старт обработаки старых Issue"); + log.debug("Старт обработаки старых Issues"); final Set existIds = issueService.getAllId(OLD_STATUSES); final List newIssues = getOldIssues(existIds).stream() @@ -73,7 +73,7 @@ public class IssueParser { personMapping(newIssues); issueService.updateAll(newIssues); } - log.debug("Конец обработки старых Issue"); + log.debug("Конец обработки старых Issues"); } private List getOldIssues(Set existIds) { @@ -95,20 +95,20 @@ public class IssueParser { public void parsingNewIssue() { - log.debug("Старт обработки новых Issue"); + log.debug("Старт обработки новых Issues"); - /** - * получаем через репозиторий список id всех проектов хранящихся в БД + /* + * получаем через репозиторий список id всех проектов хранящихся в нашей БД */ final Set projectIds = projectService.getAllIds(); - /** + /* * На основе id проекта, url для получения issues по id проекта и токена пользователя * выгружаем из GitLab список всех IssueJson. Получаем в многопоточном режиме. */ final List issueJsons = getIssues(projectIds); - /** + /* * Получаем id всех IssueJson загруженных из GitLab */ if (checkNotEmpty(issueJsons)) { @@ -117,7 +117,7 @@ public class IssueParser { .collect(Collectors.toSet()); final ExistContainer existContainer = issueService.existsById(jsonIds); - log.trace("Из {} полученных MR не найдены в хранилище {}", jsonIds.size(), existContainer.getIdNoFound().size()); + log.trace("Из {} полученных Issues не найдены в хранилище {}", jsonIds.size(), existContainer.getIdNoFound().size()); if (!existContainer.isAllFound()) { final List newIssues = issueJsons.stream() .filter(json -> existContainer.getIdNoFound().contains(json.getId())) @@ -126,11 +126,11 @@ public class IssueParser { return issue; }) .toList(); - log.trace("Пачка новых issues обработана и отправлена на сохранение. Количество: {} шт.", newIssues.size()); + log.trace("Пачка новых Issues обработана и отправлена на сохранение. Количество: {} шт.", newIssues.size()); issueService.createAll(newIssues); } } - log.debug("Конец обработки новых MR"); + log.debug("Конец обработки новых Issues"); } private List getIssues(Set projectIds) { diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetAllIssueForProjectTask.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetAllIssueForProjectTask.java index e217843..99bf373 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetAllIssueForProjectTask.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetAllIssueForProjectTask.java @@ -2,7 +2,7 @@ package dev.struchkov.bot.gitlab.core.service.parser.forktask; import dev.struchkov.bot.gitlab.core.utils.StringUtils; import dev.struchkov.bot.gitlab.sdk.domain.IssueJson; -import dev.struchkov.haiti.utils.network.HttpParse; +import dev.struchkov.bot.gitlab.core.utils.HttpParse; import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; @@ -13,7 +13,7 @@ import java.util.List; import java.util.concurrent.RecursiveTask; import static dev.struchkov.haiti.utils.Checker.checkNotEmpty; -import static dev.struchkov.haiti.utils.network.HttpParse.ACCEPT; +import static dev.struchkov.bot.gitlab.core.utils.HttpParse.ACCEPT; /** * @author Dmitry Sheyko [24.01.2023] diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetSingleIssueTask.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetSingleIssueTask.java index f237c67..0c54efc 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetSingleIssueTask.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/forktask/GetSingleIssueTask.java @@ -2,7 +2,7 @@ package dev.struchkov.bot.gitlab.core.service.parser.forktask; import dev.struchkov.bot.gitlab.core.utils.StringUtils; import dev.struchkov.bot.gitlab.sdk.domain.IssueJson; -import dev.struchkov.haiti.utils.network.HttpParse; +import dev.struchkov.bot.gitlab.core.utils.HttpParse; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -11,7 +11,7 @@ import java.text.MessageFormat; import java.util.Optional; import java.util.concurrent.RecursiveTask; -import static dev.struchkov.haiti.utils.network.HttpParse.ACCEPT; +import static dev.struchkov.bot.gitlab.core.utils.HttpParse.ACCEPT; @Slf4j @RequiredArgsConstructor diff --git a/gitlab-app/src/main/java/dev/struchkov/bot/gitlab/scheduler/SchedulerService.java b/gitlab-app/src/main/java/dev/struchkov/bot/gitlab/scheduler/SchedulerService.java index b8e392f..b29b3ba 100644 --- a/gitlab-app/src/main/java/dev/struchkov/bot/gitlab/scheduler/SchedulerService.java +++ b/gitlab-app/src/main/java/dev/struchkov/bot/gitlab/scheduler/SchedulerService.java @@ -39,7 +39,7 @@ public class SchedulerService { @Scheduled(cron = "${gitlab-bot.cron.scan.new-project}") public void newProjects() { - log.info("Запуск процесса получение новых репозиториев c GitLab"); + log.info("Запуск процесса получения новых репозиториев c GitLab"); if (!settingService.isFirstStart()) { if (settingService.isOwnerProjectScan()) { projectParser.parseAllProjectOwner(); @@ -48,7 +48,7 @@ public class SchedulerService { projectParser.parseAllPrivateProject(); } } - log.info("Конец процесса получение новых репозиториев c GitLab"); + log.info("Конец процесса получения новых репозиториев c GitLab"); } @@ -56,11 +56,21 @@ public class SchedulerService { @Scheduled(cron = "0 */1 * * * *") @Scheduled(cron = "${gitlab-bot.cron.scan.new-merge-request}") public void newMergeRequests() { - log.info("Запуск процесса получение новых MR c GitLab"); + log.info("Запуск процесса получения новых MR c GitLab"); if (!settingService.isFirstStart()) { mergeRequestParser.parsingNewMergeRequest(); } - log.info("Конец процесса получение новых MR c GitLab"); + log.info("Конец процесса получения новых MR c GitLab"); + } + + @Scheduled(cron = "0 */1 * * * *") + @Scheduled(cron = "${gitlab-bot.cron.scan.new-merge-request}") + public void newIssues() { + log.info("Запуск процесса получения новых Issues c GitLab"); + if (!settingService.isFirstStart()) { + issueParser.parsingNewIssue(); + } + log.info("Конец процесса получения новых Issues c GitLab"); } @Scheduled(cron = "${gitlab-bot.cron.scan.general}") @@ -75,7 +85,6 @@ public class SchedulerService { mergeRequestsService.cleanOld(); discussionService.cleanOld(); pipelineService.cleanOld(); - issueParser.parsingNewIssue(); issueParser.parsingOldIssue(); issueService.cleanOld(); } else { diff --git a/gitlab-app/src/main/resources/application.yml b/gitlab-app/src/main/resources/application.yml index 5cba482..f88181e 100644 --- a/gitlab-app/src/main/resources/application.yml +++ b/gitlab-app/src/main/resources/application.yml @@ -16,6 +16,13 @@ spring: jdbc: lob: non_contextual_creation: true +# без данной настройк ипостоянно выбрасывается исключение: +# org.springframework.dao.InvalidDataAccessApiUsageException: Multiple representations of the +# same entity [dev.struchkov.bot.gitlab.context.domain.entity.Person#13445232] are being merged. +# Detached: [dev.struchkov.bot.gitlab.context.domain.entity.Person@cd28ab]; +# Detached: [dev.struchkov.bot.gitlab.context.domain.entity.Person@cd28ab] + event: + merge.entity_copy_observer: allow logging: level: @@ -70,6 +77,8 @@ gitlab-bot: new-note-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/merge_requests/{1,number,#}/discussions/{2}/notes?body={3}" discussions-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/merge_requests/{1,number,#}/discussions?&page={2,number,#}&per_page={3,number,#}" discussion-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/merge_requests/{1,number,#}/discussions/{2}" + issue-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/issues/{1,number,#}" + open-issue-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/issues?state=opened&page={1, number, integer}&per_page={2, number, integer}" --- spring: @@ -82,6 +91,4 @@ gitlab-bot: scan: general: "0 */1 * * * *" new-project: "0 */1 * * * *" - new-merge-request: "0 */1 * * * *" - issue-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/issues/{1,number,#}" - open-issue-url: "${GITLAB_URL}/api/v4/projects/{0,number,#}/issues?state=opened&page={1, number, integer}&per_page={2, number, integer}" \ No newline at end of file + new-merge-request: "0 */1 * * * *" \ No newline at end of file diff --git a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/DeleteFromAssigneesOfIssueNotifyGenerator.java b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/DeleteFromAssigneesOfIssueNotifyGenerator.java index 92966c7..c26f1d7 100644 --- a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/DeleteFromAssigneesOfIssueNotifyGenerator.java +++ b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/DeleteFromAssigneesOfIssueNotifyGenerator.java @@ -2,11 +2,11 @@ package dev.struchkov.bot.gitlab.telegram.service.notify; import dev.struchkov.bot.gitlab.context.domain.notify.issue.*; import dev.struchkov.bot.gitlab.context.utils.Icons; -import dev.struchkov.godfather.main.domain.BoxAnswer; +import dev.struchkov.godfather.simple.domain.BoxAnswer; import org.springframework.stereotype.Component; import static dev.struchkov.bot.gitlab.context.utils.Icons.link; -import static dev.struchkov.godfather.main.domain.BoxAnswer.boxAnswer; +import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer; /** * @author Dmitry Sheyko 26.01.2021 diff --git a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/DescriptionIssueNotifyGenerator.java b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/DescriptionIssueNotifyGenerator.java index 67f612e..95bd725 100644 --- a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/DescriptionIssueNotifyGenerator.java +++ b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/DescriptionIssueNotifyGenerator.java @@ -2,11 +2,11 @@ package dev.struchkov.bot.gitlab.telegram.service.notify; import dev.struchkov.bot.gitlab.context.domain.notify.issue.DescriptionIssueNotify; import dev.struchkov.bot.gitlab.context.utils.Icons; -import dev.struchkov.godfather.main.domain.BoxAnswer; +import dev.struchkov.godfather.simple.domain.BoxAnswer; import org.springframework.stereotype.Component; import static dev.struchkov.bot.gitlab.context.utils.Icons.link; -import static dev.struchkov.godfather.main.domain.BoxAnswer.boxAnswer; +import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer; /** * @author Dmitry Sheyko 26.01.2021 diff --git a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/DueDateIssueNotifyGenerator.java b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/DueDateIssueNotifyGenerator.java index bda0e0e..70e709e 100644 --- a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/DueDateIssueNotifyGenerator.java +++ b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/DueDateIssueNotifyGenerator.java @@ -2,11 +2,11 @@ package dev.struchkov.bot.gitlab.telegram.service.notify; import dev.struchkov.bot.gitlab.context.domain.notify.issue.DueDateIssueNotify; import dev.struchkov.bot.gitlab.context.utils.Icons; -import dev.struchkov.godfather.main.domain.BoxAnswer; +import dev.struchkov.godfather.simple.domain.BoxAnswer; import org.springframework.stereotype.Component; import static dev.struchkov.bot.gitlab.context.utils.Icons.link; -import static dev.struchkov.godfather.main.domain.BoxAnswer.boxAnswer; +import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer; /** * @author Dmitry Sheyko 26.01.2021 diff --git a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/NewIssueNotifyGenerator.java b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/NewIssueNotifyGenerator.java index bef4468..8a340e1 100644 --- a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/NewIssueNotifyGenerator.java +++ b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/NewIssueNotifyGenerator.java @@ -2,13 +2,13 @@ package dev.struchkov.bot.gitlab.telegram.service.notify; import dev.struchkov.bot.gitlab.context.domain.notify.issue.NewIssueNotify; import dev.struchkov.bot.gitlab.context.utils.Icons; -import dev.struchkov.godfather.main.domain.BoxAnswer; +import dev.struchkov.godfather.simple.domain.BoxAnswer; import org.springframework.stereotype.Component; import java.util.stream.Collectors; import static dev.struchkov.bot.gitlab.context.utils.Icons.link; -import static dev.struchkov.godfather.main.domain.BoxAnswer.boxAnswer; +import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer; import static dev.struchkov.haiti.utils.Strings.escapeMarkdown; /** diff --git a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/StatusIssueNotifyGenerator.java b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/StatusIssueNotifyGenerator.java index 2af1027..ae74ff5 100644 --- a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/StatusIssueNotifyGenerator.java +++ b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/StatusIssueNotifyGenerator.java @@ -2,11 +2,11 @@ package dev.struchkov.bot.gitlab.telegram.service.notify; import dev.struchkov.bot.gitlab.context.domain.notify.issue.StatusIssueNotify; import dev.struchkov.bot.gitlab.context.utils.Icons; -import dev.struchkov.godfather.main.domain.BoxAnswer; +import dev.struchkov.godfather.simple.domain.BoxAnswer; import org.springframework.stereotype.Component; import static dev.struchkov.bot.gitlab.context.utils.Icons.link; -import static dev.struchkov.godfather.main.domain.BoxAnswer.boxAnswer; +import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer; /** * @author Dmitry Sheyko 26.01.2021 diff --git a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/TitleIssueNotifyGenerator.java b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/TitleIssueNotifyGenerator.java index f41c257..d7dc6b1 100644 --- a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/TitleIssueNotifyGenerator.java +++ b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/TitleIssueNotifyGenerator.java @@ -2,11 +2,11 @@ package dev.struchkov.bot.gitlab.telegram.service.notify; import dev.struchkov.bot.gitlab.context.domain.notify.issue.TitleIssueNotify; import dev.struchkov.bot.gitlab.context.utils.Icons; -import dev.struchkov.godfather.main.domain.BoxAnswer; +import dev.struchkov.godfather.simple.domain.BoxAnswer; import org.springframework.stereotype.Component; import static dev.struchkov.bot.gitlab.context.utils.Icons.link; -import static dev.struchkov.godfather.main.domain.BoxAnswer.boxAnswer; +import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer; /** * @author Dmitry Sheyko 26.01.2021 diff --git a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/TypeIssueNotifyGenerator.java b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/TypeIssueNotifyGenerator.java index f9f0f5a..ed64024 100644 --- a/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/TypeIssueNotifyGenerator.java +++ b/telegram-bot/src/main/java/dev/struchkov/bot/gitlab/telegram/service/notify/TypeIssueNotifyGenerator.java @@ -2,11 +2,11 @@ package dev.struchkov.bot.gitlab.telegram.service.notify; import dev.struchkov.bot.gitlab.context.domain.notify.issue.TypeIssueNotify; import dev.struchkov.bot.gitlab.context.utils.Icons; -import dev.struchkov.godfather.main.domain.BoxAnswer; +import dev.struchkov.godfather.simple.domain.BoxAnswer; import org.springframework.stereotype.Component; import static dev.struchkov.bot.gitlab.context.utils.Icons.link; -import static dev.struchkov.godfather.main.domain.BoxAnswer.boxAnswer; +import static dev.struchkov.godfather.simple.domain.BoxAnswer.boxAnswer; /** * @author Dmitry Sheyko 26.01.2021