From ceaa48487e5fe5f74826565d8b737a1613801ab5 Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Tue, 20 Dec 2022 12:32:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BF=D1=80=D0=BE=D1=81=D1=82=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=81=D1=82=D0=B0=D1=80=D1=8B=D1=85=20=D0=BF=D0=B0?= =?UTF-8?q?=D0=B9=D0=BF=D0=BB=D0=B0=D0=B9=D0=BD=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/PipelineRepository.java | 2 +- .../context/service/PipelineService.java | 2 +- .../service/impl/PipelineServiceImpl.java | 6 ++-- .../core/service/parser/PipelineParser.java | 35 ++++++++----------- .../data/impl/PipelineRepositoryImpl.java | 4 +-- .../data/jpa/PipelineJpaRepository.java | 5 ++- 6 files changed, 25 insertions(+), 29 deletions(-) diff --git a/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/repository/PipelineRepository.java b/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/repository/PipelineRepository.java index 4ec5d97..b0ef6ef 100644 --- a/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/repository/PipelineRepository.java +++ b/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/repository/PipelineRepository.java @@ -19,7 +19,7 @@ public interface PipelineRepository { Optional findById(Long pipelineId); - Page findAllByStatuses(Set statuses, Pageable pagination); + List findAllByStatuses(Set statuses); List findAllById(Set pipelineIds); diff --git a/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/service/PipelineService.java b/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/service/PipelineService.java index 573b20d..a45e7fc 100644 --- a/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/service/PipelineService.java +++ b/bot-context/src/main/java/dev/struchkov/bot/gitlab/context/service/PipelineService.java @@ -24,7 +24,7 @@ public interface PipelineService { Pipeline update(@NonNull Pipeline pipeline); - Page getAllByStatuses(@NonNull Set statuses, @NonNull Pageable pagination); + List getAllByStatuses(@NonNull Set statuses); Page getAll(@NonNull PipelineFilter filter, @NonNull Pageable pagination); diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/PipelineServiceImpl.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/PipelineServiceImpl.java index 7a04509..e154d90 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/PipelineServiceImpl.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/impl/PipelineServiceImpl.java @@ -82,6 +82,8 @@ public class PipelineServiceImpl implements PipelineService { final Pipeline oldPipeline = repository.findById(pipeline.getId()) .orElseThrow(notFoundException("Pipeline не найден")); + pipeline.setProjectId(pipeline.getProjectId()); + if (!oldPipeline.getUpdated().equals(pipeline.getUpdated())) { notifyNewPipeline(pipeline, oldPipeline.getStatus().name()); return repository.save(pipeline); @@ -98,8 +100,8 @@ public class PipelineServiceImpl implements PipelineService { } @Override - public Page getAllByStatuses(@NonNull Set statuses, @NonNull Pageable pagination) { - return repository.findAllByStatuses(statuses, pagination); + public List getAllByStatuses(@NonNull Set statuses) { + return repository.findAllByStatuses(statuses); } @Override diff --git a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/PipelineParser.java b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/PipelineParser.java index c988513..84afd61 100644 --- a/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/PipelineParser.java +++ b/bot-core/src/main/java/dev/struchkov/bot/gitlab/core/service/parser/PipelineParser.java @@ -16,14 +16,13 @@ import dev.struchkov.haiti.utils.network.HttpParse; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.core.convert.ConversionService; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import java.text.MessageFormat; import java.time.LocalDateTime; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.ForkJoinTask; @@ -35,7 +34,6 @@ import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.PENDING; import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.PREPARING; import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.RUNNING; import static dev.struchkov.bot.gitlab.context.domain.PipelineStatus.WAITING_FOR_RESOURCE; -import static dev.struchkov.haiti.context.exception.ConvertException.convertException; import static dev.struchkov.haiti.utils.Checker.checkNotEmpty; import static dev.struchkov.haiti.utils.concurrent.ForkJoinUtils.pullTaskResult; import static dev.struchkov.haiti.utils.concurrent.ForkJoinUtils.pullTaskResults; @@ -138,27 +136,24 @@ public class PipelineParser { public void scanOldPipeline() { log.debug("Старт обработки старых пайплайнов"); - int page = 0; - Page pipelineSheet = pipelineService.getAllByStatuses(oldStatus, PageRequest.of(page, COUNT)); - - while (pipelineSheet.hasContent()) { - final List pipelines = pipelineSheet.getContent(); - - for (Pipeline pipeline : pipelines) { - final Pipeline newPipeline = HttpParse.request( - MessageFormat.format(gitlabProperty.getUrlPipeline(), pipeline.getProjectId(), pipeline.getId()) - ) - .header(ACCEPT) - .header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken()) - .execute(PipelineJson.class) - .map(json -> conversionService.convert(json, Pipeline.class)) - .orElseThrow(convertException("Ошибка обновления Pipelines")); + final List pipelines = pipelineService.getAllByStatuses(oldStatus); + for (Pipeline pipeline : pipelines) { + final Optional optNewPipeline = HttpParse.request( + MessageFormat.format(gitlabProperty.getUrlPipeline(), pipeline.getProjectId(), pipeline.getId()) + ) + .header(ACCEPT) + .header(StringUtils.H_PRIVATE_TOKEN, personProperty.getToken()) + .execute(PipelineJson.class) + .map(json -> conversionService.convert(json, Pipeline.class)); + if (optNewPipeline.isPresent()) { + final Pipeline newPipeline = optNewPipeline.get(); pipelineService.update(newPipeline); + } else { + log.error("Ошибка обновления пайплайна. ProjectId:{}, PipelineId:{}", pipeline.getProjectId(), pipeline.getId()); } - - pipelineSheet = pipelineService.getAllByStatuses(oldStatus, PageRequest.of(++page, COUNT)); } + log.debug("Конец обработки старых пайплайнов"); } diff --git a/bot-data/src/main/java/dev/struchkov/bot/gitlab/data/impl/PipelineRepositoryImpl.java b/bot-data/src/main/java/dev/struchkov/bot/gitlab/data/impl/PipelineRepositoryImpl.java index 0872c42..40fc713 100644 --- a/bot-data/src/main/java/dev/struchkov/bot/gitlab/data/impl/PipelineRepositoryImpl.java +++ b/bot-data/src/main/java/dev/struchkov/bot/gitlab/data/impl/PipelineRepositoryImpl.java @@ -35,8 +35,8 @@ public class PipelineRepositoryImpl implements PipelineRepository { } @Override - public Page findAllByStatuses(Set statuses, Pageable pagination) { - return jpaRepository.findAllByStatusIn(statuses, pagination); + public List findAllByStatuses(Set statuses) { + return jpaRepository.findAllByStatusIn(statuses); } @Override diff --git a/bot-data/src/main/java/dev/struchkov/bot/gitlab/data/jpa/PipelineJpaRepository.java b/bot-data/src/main/java/dev/struchkov/bot/gitlab/data/jpa/PipelineJpaRepository.java index 2adb86b..ee196ad 100644 --- a/bot-data/src/main/java/dev/struchkov/bot/gitlab/data/jpa/PipelineJpaRepository.java +++ b/bot-data/src/main/java/dev/struchkov/bot/gitlab/data/jpa/PipelineJpaRepository.java @@ -2,10 +2,9 @@ package dev.struchkov.bot.gitlab.data.jpa; import dev.struchkov.bot.gitlab.context.domain.PipelineStatus; import dev.struchkov.bot.gitlab.context.domain.entity.Pipeline; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.support.JpaRepositoryImplementation; +import java.util.List; import java.util.Set; /** @@ -13,6 +12,6 @@ import java.util.Set; */ public interface PipelineJpaRepository extends JpaRepositoryImplementation { - Page findAllByStatusIn(Set statuses, Pageable pageable); + List findAllByStatusIn(Set statuses); }