Skip to content

Commit a8acf1b

Browse files
authored
Merge pull request #144 from PublicisSapient/develop
Develop
2 parents 7d3211a + 7114fdc commit a8acf1b

File tree

7 files changed

+53
-39
lines changed

7 files changed

+53
-39
lines changed

ai-data-processor/src/main/java/com/publicissapient/kpidashboard/config/async/executor/TaskExecutionConfig.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.springframework.boot.context.properties.ConfigurationProperties;
2020
import org.springframework.context.annotation.Bean;
2121
import org.springframework.context.annotation.Configuration;
22+
import org.springframework.context.annotation.Primary;
2223
import org.springframework.core.task.TaskExecutor;
2324
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
2425

@@ -41,12 +42,14 @@ public static class Pool {
4142
}
4243

4344
@Bean
45+
@Primary
4446
public TaskExecutor taskExecutor() {
4547
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
4648
threadPoolTaskExecutor.setCorePoolSize(this.pool.getCoreSize());
4749
threadPoolTaskExecutor.setMaxPoolSize(this.pool.getMaxSize());
4850
threadPoolTaskExecutor.setQueueCapacity(this.pool.getQueueCapacity());
4951
threadPoolTaskExecutor.setThreadNamePrefix(this.threadNamePrefix);
52+
threadPoolTaskExecutor.initialize();
5053
return threadPoolTaskExecutor;
5154
}
5255

ai-data-processor/src/main/java/com/publicissapient/kpidashboard/job/aiusagestatisticscollector/processor/AccountItemProcessor.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@
1616

1717
package com.publicissapient.kpidashboard.job.aiusagestatisticscollector.processor;
1818

19+
import org.springframework.batch.item.ItemProcessor;
20+
1921
import com.publicissapient.kpidashboard.job.aiusagestatisticscollector.dto.PagedAIUsagePerOrgLevel;
2022
import com.publicissapient.kpidashboard.job.aiusagestatisticscollector.model.AIUsageStatistics;
2123
import com.publicissapient.kpidashboard.job.aiusagestatisticscollector.service.AIUsageStatisticsService;
24+
2225
import jakarta.annotation.Nonnull;
2326
import lombok.AllArgsConstructor;
2427
import lombok.extern.slf4j.Slf4j;
25-
import org.springframework.batch.item.ItemProcessor;
2628

2729
@Slf4j
2830
@AllArgsConstructor
@@ -31,7 +33,7 @@ public class AccountItemProcessor implements ItemProcessor<PagedAIUsagePerOrgLev
3133

3234
@Override
3335
public AIUsageStatistics process(@Nonnull PagedAIUsagePerOrgLevel item) {
34-
log.debug("Fetching AI usage statistics for level name: {}", item.levelName());
36+
log.debug("[ai-usage-statistics-collector job] Fetching AI usage statistics for level name: {}", item.levelName());
3537
return aiUsageStatisticsService.fetchAIUsageStatistics(item.levelName());
3638
}
3739
}

ai-data-processor/src/main/java/com/publicissapient/kpidashboard/job/aiusagestatisticscollector/reader/AccountItemReader.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@
1616

1717
package com.publicissapient.kpidashboard.job.aiusagestatisticscollector.reader;
1818

19+
import org.springframework.batch.item.ItemReader;
20+
1921
import com.publicissapient.kpidashboard.job.aiusagestatisticscollector.dto.PagedAIUsagePerOrgLevel;
2022
import com.publicissapient.kpidashboard.job.aiusagestatisticscollector.service.AccountBatchService;
23+
2124
import lombok.RequiredArgsConstructor;
2225
import lombok.extern.slf4j.Slf4j;
23-
import org.springframework.batch.item.ItemReader;
2426

2527
@Slf4j
2628
@RequiredArgsConstructor
@@ -31,7 +33,7 @@ public class AccountItemReader implements ItemReader<PagedAIUsagePerOrgLevel> {
3133
@Override
3234
public PagedAIUsagePerOrgLevel read() {
3335
PagedAIUsagePerOrgLevel aiUsageStatistics = accountBatchService.getNextAccountPage();
34-
log.info("Reader fetched level name: {}", aiUsageStatistics.levelName());
36+
log.info("[ai-usage-statistics-collector job] Reader fetched level name: {}", aiUsageStatistics.levelName());
3537
return aiUsageStatistics;
3638
}
3739
}

ai-data-processor/src/main/java/com/publicissapient/kpidashboard/job/aiusagestatisticscollector/strategy/AIUsageStatisticsJobStrategy.java

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,20 @@
1616

1717
package com.publicissapient.kpidashboard.job.aiusagestatisticscollector.strategy;
1818

19+
import java.util.Optional;
20+
import java.util.concurrent.Future;
21+
22+
import org.springframework.batch.core.Job;
23+
import org.springframework.batch.core.Step;
24+
import org.springframework.batch.core.job.builder.JobBuilder;
25+
import org.springframework.batch.core.repository.JobRepository;
26+
import org.springframework.batch.core.step.builder.StepBuilder;
27+
import org.springframework.batch.integration.async.AsyncItemProcessor;
28+
import org.springframework.batch.integration.async.AsyncItemWriter;
29+
import org.springframework.core.task.TaskExecutor;
30+
import org.springframework.stereotype.Component;
31+
import org.springframework.transaction.PlatformTransactionManager;
32+
1933
import com.publicissapient.kpidashboard.common.service.ProcessorExecutionTraceLogServiceImpl;
2034
import com.publicissapient.kpidashboard.job.aiusagestatisticscollector.config.AIUsageStatisticsCollectorJobConfig;
2135
import com.publicissapient.kpidashboard.job.aiusagestatisticscollector.dto.PagedAIUsagePerOrgLevel;
@@ -28,34 +42,26 @@
2842
import com.publicissapient.kpidashboard.job.aiusagestatisticscollector.writer.AccountItemWriter;
2943
import com.publicissapient.kpidashboard.job.config.base.SchedulingConfig;
3044
import com.publicissapient.kpidashboard.job.strategy.JobStrategy;
45+
3146
import lombok.AllArgsConstructor;
3247
import lombok.extern.slf4j.Slf4j;
33-
import org.springframework.batch.core.Job;
34-
import org.springframework.batch.core.Step;
35-
import org.springframework.batch.core.job.builder.JobBuilder;
36-
import org.springframework.batch.core.repository.JobRepository;
37-
import org.springframework.batch.core.step.builder.StepBuilder;
38-
import org.springframework.batch.integration.async.AsyncItemProcessor;
39-
import org.springframework.batch.integration.async.AsyncItemWriter;
40-
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
41-
import org.springframework.stereotype.Component;
42-
import org.springframework.transaction.PlatformTransactionManager;
43-
44-
import java.util.Optional;
45-
import java.util.concurrent.Future;
4648

4749
@Slf4j
4850
@Component
4951
@AllArgsConstructor
5052
public class AIUsageStatisticsJobStrategy implements JobStrategy {
5153

52-
private final AIUsageStatisticsCollectorJobConfig aiUsageStatisticsCollectorJobConfig;
5354
private final JobRepository jobRepository;
55+
56+
private final TaskExecutor taskExecutor;
57+
5458
private final PlatformTransactionManager transactionManager;
59+
60+
private final AIUsageStatisticsCollectorJobConfig aiUsageStatisticsCollectorJobConfig;
61+
62+
private final AccountBatchService accountBatchService;
5563
private final AIUsageStatisticsService aiUsageStatisticsService;
5664
private final ProcessorExecutionTraceLogServiceImpl processorExecutionTraceLogServiceImpl;
57-
private final AccountBatchService accountBatchService;
58-
private final ThreadPoolTaskExecutor threadPoolTaskExecutor;
5965

6066
@Override
6167
public String getJobName() {
@@ -92,7 +98,7 @@ private Step chunkProcessAIUsageStatisticsForAccounts() {
9298
private AsyncItemProcessor<PagedAIUsagePerOrgLevel, AIUsageStatistics> asyncAccountProcessor() {
9399
AsyncItemProcessor<PagedAIUsagePerOrgLevel, AIUsageStatistics> asyncItemProcessor = new AsyncItemProcessor<>();
94100
asyncItemProcessor.setDelegate(new AccountItemProcessor(this.aiUsageStatisticsService));
95-
asyncItemProcessor.setTaskExecutor(threadPoolTaskExecutor);
101+
asyncItemProcessor.setTaskExecutor(taskExecutor);
96102
return asyncItemProcessor;
97103
}
98104

ai-data-processor/src/main/java/com/publicissapient/kpidashboard/job/aiusagestatisticscollector/writer/AccountItemWriter.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,17 @@
1616

1717
package com.publicissapient.kpidashboard.job.aiusagestatisticscollector.writer;
1818

19+
import java.util.List;
20+
21+
import org.springframework.batch.item.Chunk;
22+
import org.springframework.batch.item.ItemWriter;
23+
1924
import com.publicissapient.kpidashboard.job.aiusagestatisticscollector.model.AIUsageStatistics;
2025
import com.publicissapient.kpidashboard.job.aiusagestatisticscollector.service.AIUsageStatisticsService;
26+
2127
import lombok.AllArgsConstructor;
2228
import lombok.NonNull;
2329
import lombok.extern.slf4j.Slf4j;
24-
import org.springframework.batch.item.Chunk;
25-
import org.springframework.batch.item.ItemWriter;
26-
27-
import java.util.List;
2830

2931
@Slf4j
3032
@AllArgsConstructor
@@ -33,7 +35,7 @@ public class AccountItemWriter implements ItemWriter<AIUsageStatistics> {
3335

3436
@Override
3537
public void write(@NonNull Chunk<? extends AIUsageStatistics> chunk) {
36-
log.info("Received ai usage statistics chunk items for inserting into database with size: {}", chunk.size());
38+
log.info("[ai-usage-statistics-collector job] Received chunk items for inserting into database with size: {}", chunk.size());
3739
aiUsageStatisticsService.saveAll((List.copyOf(chunk.getItems())));
3840
}
3941
}

ai-data-processor/src/main/java/com/publicissapient/kpidashboard/job/kpimaturitycalculation/strategy/KpiMetricsCalculationJobStrategy.java renamed to ai-data-processor/src/main/java/com/publicissapient/kpidashboard/job/kpimaturitycalculation/strategy/KpiMaturityCalculationJobStrategy.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import org.springframework.batch.core.step.builder.StepBuilder;
2727
import org.springframework.batch.integration.async.AsyncItemProcessor;
2828
import org.springframework.batch.integration.async.AsyncItemWriter;
29-
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
29+
import org.springframework.core.task.TaskExecutor;
3030
import org.springframework.stereotype.Component;
3131
import org.springframework.transaction.PlatformTransactionManager;
3232

@@ -47,11 +47,11 @@
4747

4848
@Component
4949
@RequiredArgsConstructor
50-
public class KpiMetricsCalculationJobStrategy implements JobStrategy {
50+
public class KpiMaturityCalculationJobStrategy implements JobStrategy {
5151

5252
private final JobRepository jobRepository;
5353

54-
private final ThreadPoolTaskExecutor threadPoolTaskExecutor;
54+
private final TaskExecutor taskExecutor;
5555

5656
private final PlatformTransactionManager platformTransactionManager;
5757

@@ -92,7 +92,7 @@ private Step chunkProcessProjects() {
9292
private AsyncItemProcessor<ProjectInputDTO, KpiMaturity> asyncProjectProcessor() {
9393
AsyncItemProcessor<ProjectInputDTO, KpiMaturity> asyncItemProcessor = new AsyncItemProcessor<>();
9494
asyncItemProcessor.setDelegate(new ProjectItemProcessor(this.kpiMaturityCalculationService));
95-
asyncItemProcessor.setTaskExecutor(threadPoolTaskExecutor);
95+
asyncItemProcessor.setTaskExecutor(taskExecutor);
9696
return asyncItemProcessor;
9797
}
9898

ai-data-processor/src/main/java/com/publicissapient/kpidashboard/job/productivitycalculation/strategy/ProductivityCalculationJobStrategy.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import org.springframework.batch.core.step.builder.StepBuilder;
2727
import org.springframework.batch.integration.async.AsyncItemProcessor;
2828
import org.springframework.batch.integration.async.AsyncItemWriter;
29-
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
29+
import org.springframework.core.task.TaskExecutor;
3030
import org.springframework.stereotype.Component;
3131
import org.springframework.transaction.PlatformTransactionManager;
3232

@@ -48,18 +48,17 @@
4848
@Component
4949
@RequiredArgsConstructor
5050
public class ProductivityCalculationJobStrategy implements JobStrategy {
51+
private final JobRepository jobRepository;
5152

52-
private final ProductivityCalculationConfig productivityCalculationJobConfig;
53-
54-
private final ProcessorExecutionTraceLogServiceImpl processorExecutionTraceLogServiceImpl;
55-
private final ProjectBatchService projectBatchService;
56-
private final ProductivityCalculationService productivityCalculationService;
53+
private final TaskExecutor taskExecutor;
5754

5855
private final PlatformTransactionManager platformTransactionManager;
5956

60-
private final JobRepository jobRepository;
57+
private final ProductivityCalculationConfig productivityCalculationJobConfig;
6158

62-
private final ThreadPoolTaskExecutor threadPoolTaskExecutor;
59+
private final ProjectBatchService projectBatchService;
60+
private final ProductivityCalculationService productivityCalculationService;
61+
private final ProcessorExecutionTraceLogServiceImpl processorExecutionTraceLogServiceImpl;
6362

6463
@Override
6564
public String getJobName() {
@@ -90,7 +89,7 @@ private Step chunkProcessProjects() {
9089
private AsyncItemProcessor<ProjectInputDTO, Productivity> asyncProjectProcessor() {
9190
AsyncItemProcessor<ProjectInputDTO, Productivity> asyncItemProcessor = new AsyncItemProcessor<>();
9291
asyncItemProcessor.setDelegate(new ProjectItemProcessor(this.productivityCalculationService));
93-
asyncItemProcessor.setTaskExecutor(threadPoolTaskExecutor);
92+
asyncItemProcessor.setTaskExecutor(taskExecutor);
9493
return asyncItemProcessor;
9594
}
9695

0 commit comments

Comments
 (0)