Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#103 - adding pagination #104

Draft
wants to merge 15 commits into
base: development
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 11 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;

import java.util.concurrent.ForkJoinPool;

@Configuration("ExplorationAsyncConfig")
@EnableScheduling
public class AsyncConfig {
Expand All @@ -18,13 +19,8 @@ public TaskScheduler taskScheduler() {
return taskScheduler;
}

@Bean(name = "explorationThreadPoolTaskExecutor")
public ThreadPoolTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(10);// todo Set from config
taskExecutor.setMaxPoolSize(50);// todo Set from config
taskExecutor.setQueueCapacity(500);// todo Set from config
taskExecutor.initialize();
return taskExecutor;
@Bean(name = "explorationForkJoinPool")
public ForkJoinPool forkJoinPool() {
return new ForkJoinPool(50); // todo set from config
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Magic number and a TODO tag, should we not have these summarised in some issue? Maybe deal with it all under one issue?

Ideally, should be configurable.

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public ReceiveNavRouteService receiveNavRouteService(
MessageMapper messageMapper,
@Qualifier("explorationObjectMapper") ObjectMapper objectMapper,
@Qualifier("explorationRetryTemplate") RetryTemplate retryTemplate,
@Qualifier("explorationThreadPoolTaskExecutor") Executor executor
@Qualifier("explorationForkJoinPool") Executor executor
) {
return new ReceiveNavRouteService(
idGenerator,
Expand Down Expand Up @@ -120,7 +120,7 @@ public ProcessPendingSystemCoordinateRequestService processPendingSystemCoordina
MessageMapper messageMapper,
@Qualifier("explorationObjectMapper") ObjectMapper objectMapper,
@Qualifier("explorationRetryTemplate") RetryTemplate retryTemplate,
@Qualifier("explorationThreadPoolTaskExecutor") Executor executor
@Qualifier("explorationForkJoinPool") Executor executor
) {
return new ProcessPendingSystemCoordinateRequestService(
loadAllSystemCoordinateRequestPort,
Expand All @@ -144,7 +144,7 @@ public ProcessPendingSystemEliteIdRequestService processPendingSystemEliteIdRequ
MessageMapper messageMapper,
@Qualifier("explorationObjectMapper") ObjectMapper objectMapper,
@Qualifier("explorationRetryTemplate") RetryTemplate retryTemplate,
@Qualifier("explorationThreadPoolTaskExecutor") Executor executor
@Qualifier("explorationForkJoinPool") Executor executor
) {
return new ProcessPendingSystemEliteIdRequestService(
loadAllSystemEliteIdRequestPort,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;

import java.util.concurrent.ForkJoinPool;

@Configuration("TradeAsyncConfig")
@EnableScheduling
public class AsyncConfig {
Expand All @@ -18,13 +19,8 @@ public TaskScheduler taskScheduler() {
return taskScheduler;
}

@Bean(name = "tradeThreadPoolTaskExecutor")
public ThreadPoolTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(10);// todo Set from config
taskExecutor.setMaxPoolSize(50);// todo Set from config
taskExecutor.setQueueCapacity(500);// todo Set from config
taskExecutor.initialize();
return taskExecutor;
@Bean(name = "tradeForkJoinPool")
public ForkJoinPool forkJoinPool() {
return new ForkJoinPool(50); // todo Set from config
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,79 +4,96 @@
import io.edpn.backend.trade.adapter.persistence.entity.mapper.MybatisCommodityMarketInfoEntityMapper;
import io.edpn.backend.trade.adapter.persistence.entity.mapper.MybatisLocateCommodityEntityMapper;
import io.edpn.backend.trade.adapter.persistence.entity.mapper.MybatisMarketDatumEntityMapper;
import io.edpn.backend.trade.adapter.persistence.entity.mapper.MybatisPageInfoMapper;
import io.edpn.backend.trade.adapter.persistence.entity.mapper.MybatisStationEntityMapper;
import io.edpn.backend.trade.adapter.persistence.entity.mapper.MybatisSystemEntityMapper;
import io.edpn.backend.trade.adapter.persistence.entity.mapper.MybatisValidatedCommodityEntityMapper;
import io.edpn.backend.trade.adapter.persistence.filter.mapper.MybatisPersistenceFindCommodityFilterMapper;
import io.edpn.backend.trade.adapter.persistence.filter.mapper.MybatisPersistenceFindStationFilterMapper;
import io.edpn.backend.trade.adapter.persistence.filter.mapper.MybatisPersistenceFindSystemFilterMapper;
import io.edpn.backend.trade.adapter.persistence.filter.mapper.MybatisPersistenceLocateCommodityFilterMapper;
import io.edpn.backend.trade.adapter.persistence.filter.mapper.MybatisPersistencePageFilterMapper;
import io.edpn.backend.trade.application.dto.persistence.entity.mapper.PersistencePageInfoMapper;
import io.edpn.backend.trade.application.dto.persistence.filter.mapper.PersistenceFindStationFilterMapper;
import io.edpn.backend.trade.application.dto.persistence.filter.mapper.PersistenceFindSystemFilterMapper;
import io.edpn.backend.trade.application.dto.persistence.filter.mapper.PersistencePageFilterMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration("TradeModuleEntityMapperConfig")
public class PersistenceEntityMapperConfig {

@Bean(name = "tradeValidatedCommodityEntityMapper")
public MybatisValidatedCommodityEntityMapper validatedCommodityEntityMapper() {
return new MybatisValidatedCommodityEntityMapper();
}

@Bean(name = "tradeFindCommodityEntityMapper")
public MybatisPersistenceFindCommodityFilterMapper findCommodityFilterMapper() {
return new MybatisPersistenceFindCommodityFilterMapper();
}

@Bean(name = "tradeLocateCommodityEntityMapper")
public MybatisPersistenceLocateCommodityFilterMapper locateCommodityFilterMapper() {
return new MybatisPersistenceLocateCommodityFilterMapper();
public MybatisPersistenceLocateCommodityFilterMapper locateCommodityFilterMapper(PersistencePageFilterMapper persistencePageFilterMapper) {
return new MybatisPersistenceLocateCommodityFilterMapper(persistencePageFilterMapper);
}

@Bean(name = "tradePersistencePageFilterMapper")
public MybatisPersistencePageFilterMapper persistencePageFilterMapper() {
return new MybatisPersistencePageFilterMapper();
}

@Bean(name = "tradePersistenceFindSystemFilterMapper")
public PersistenceFindSystemFilterMapper persistenceFindSystemFilterMapper(){
public PersistenceFindSystemFilterMapper persistenceFindSystemFilterMapper() {
return new MybatisPersistenceFindSystemFilterMapper();
}

@Bean(name = "tradeSystemEntityMapper")
public MybatisSystemEntityMapper systemEntityMapper() {
return new MybatisSystemEntityMapper();
}

@Bean(name = "tradeCommodityEntityMapper")
public MybatisCommodityEntityMapper commodityEntityMapper() {
return new MybatisCommodityEntityMapper();
}

@Bean(name = "tradeMarketDatumEntityMapper")
public MybatisMarketDatumEntityMapper marketDatumEntityMapper(
MybatisCommodityEntityMapper mybatisCommodityEntityMapper) {
return new MybatisMarketDatumEntityMapper(mybatisCommodityEntityMapper);
}

@Bean(name = "tradeStationEntityMapper")
public MybatisStationEntityMapper stationEntityMapper(
MybatisSystemEntityMapper mybatisSystemEntityMapper,
MybatisMarketDatumEntityMapper mybatisMarketDatumEntityMapper) {
return new MybatisStationEntityMapper(mybatisSystemEntityMapper, mybatisMarketDatumEntityMapper);
}

@Bean(name = "tradeLocateCommodityFilterMapper")
public MybatisLocateCommodityEntityMapper locateCommodityEntityMapper(
MybatisValidatedCommodityEntityMapper mybatisValidatedCommodityEntityMapper,
MybatisStationEntityMapper mybatisStationEntityMapper) {
return new MybatisLocateCommodityEntityMapper(mybatisValidatedCommodityEntityMapper, mybatisStationEntityMapper);
}

@Bean(name = "tradeCommodityMarketInfoEntityMapper")
public MybatisCommodityMarketInfoEntityMapper commodityMarketInfoEntityMapper(
MybatisValidatedCommodityEntityMapper mybatisValidatedCommodityEntityMapper,
MybatisStationEntityMapper mybatisStationEntityMapper ){
MybatisStationEntityMapper mybatisStationEntityMapper) {
return new MybatisCommodityMarketInfoEntityMapper(mybatisValidatedCommodityEntityMapper, mybatisStationEntityMapper);
}

@Bean(name = "tradePersistenceFindStationFilterMapper")
public PersistenceFindStationFilterMapper persistenceFindStationFilterMapper(){
public PersistenceFindStationFilterMapper persistenceFindStationFilterMapper() {
return new MybatisPersistenceFindStationFilterMapper();
}

@Bean(name = "tradePersistencePageInfoMapper")
public PersistencePageInfoMapper persistencePageInfoMapper() {
return new MybatisPageInfoMapper();
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import io.edpn.backend.trade.application.dto.persistence.entity.mapper.CommodityEntityMapper;
import io.edpn.backend.trade.application.dto.persistence.entity.mapper.CommodityMarketInfoEntityMapper;
import io.edpn.backend.trade.application.dto.persistence.entity.mapper.LocateCommodityEntityMapper;
import io.edpn.backend.trade.application.dto.persistence.entity.mapper.PersistencePageInfoMapper;
import io.edpn.backend.trade.application.dto.persistence.entity.mapper.StationEntityMapper;
import io.edpn.backend.trade.application.dto.persistence.entity.mapper.SystemEntityMapper;
import io.edpn.backend.trade.application.dto.persistence.entity.mapper.ValidatedCommodityEntityMapper;
Expand Down Expand Up @@ -69,8 +70,9 @@ public CommodityRepository commodityRepository(
public LocateCommodityRepository locateCommodityRepository(
MybatisLocateCommodityRepository mybatisLocateCommodityRepository,
LocateCommodityEntityMapper<MybatisLocateCommodityEntity> mybatisLocateCommodityEntityMapper,
MybatisPersistenceLocateCommodityFilterMapper mybatisPersistenceLocateCommodityFilterMapper) {
return new LocateCommodityRepository(mybatisLocateCommodityRepository, mybatisLocateCommodityEntityMapper, mybatisPersistenceLocateCommodityFilterMapper);
MybatisPersistenceLocateCommodityFilterMapper mybatisPersistenceLocateCommodityFilterMapper,
PersistencePageInfoMapper persistencePageInfoMapper) {
return new LocateCommodityRepository(mybatisLocateCommodityRepository, mybatisLocateCommodityEntityMapper, mybatisPersistenceLocateCommodityFilterMapper, persistencePageInfoMapper);
}

@Bean(name = "tradeMarketDatumRepository")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import io.edpn.backend.trade.application.dto.web.object.mapper.CommodityMarketInfoDtoMapper;
import io.edpn.backend.trade.application.dto.web.object.mapper.LocateCommodityDtoMapper;
import io.edpn.backend.trade.application.dto.web.object.mapper.MessageMapper;
import io.edpn.backend.trade.application.dto.web.object.mapper.PageInfoDtoMapper;
import io.edpn.backend.trade.application.dto.web.object.mapper.ValidatedCommodityDtoMapper;
import io.edpn.backend.trade.application.port.incomming.kafka.RequestDataUseCase;
import io.edpn.backend.trade.application.port.outgoing.commodity.LoadOrCreateCommodityByNamePort;
Expand Down Expand Up @@ -93,8 +94,9 @@ public FindCommodityMarketInfoService findCommodityMarketInfoService(
public LocateCommodityService locateCommodityService(
LocateCommodityByFilterPort locateCommodityByFilterPort,
LocateCommodityFilterDtoMapper locateCommodityFilterDtoMapper,
LocateCommodityDtoMapper locateCommodityDtoMapper) {
return new LocateCommodityService(locateCommodityByFilterPort, locateCommodityFilterDtoMapper, locateCommodityDtoMapper);
LocateCommodityDtoMapper locateCommodityDtoMapper,
PageInfoDtoMapper pageInfoDtoMapper) {
return new LocateCommodityService(locateCommodityByFilterPort, locateCommodityFilterDtoMapper, locateCommodityDtoMapper, pageInfoDtoMapper);
}

@Bean(name = "tradeRecieveCommodityMessageUsecase")
Expand Down Expand Up @@ -228,7 +230,7 @@ public RequestMissingSystemCoordinatesService requestMissingSystemCoordinatesUse
CreateSystemCoordinateRequestPort createSystemCoordinateRequestPort,
SendKafkaMessagePort sendKafkaMessagePort,
@Qualifier("tradeRetryTemplate") RetryTemplate retryTemplate,
@Qualifier("tradeThreadPoolTaskExecutor") Executor executor,
@Qualifier("tradeForkJoinPool") Executor executor,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I cant comment the line apparently, line 246 for tradeRequestMissingStationRequireOdysseyUseCase bean has an invalid executor qualifier now. Revise

ObjectMapper objectMapper,
MessageMapper messageMapper
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,19 @@

import io.edpn.backend.trade.adapter.web.dto.filter.mapper.RestFindCommodityFilterDtoMapper;
import io.edpn.backend.trade.adapter.web.dto.filter.mapper.RestLocateCommodityFilterDtoMapper;
import io.edpn.backend.trade.adapter.web.dto.filter.mapper.RestPageFilterDtoMapper;
import io.edpn.backend.trade.adapter.web.dto.object.mapper.RestCommodityMarketInfoDtoMapper;
import io.edpn.backend.trade.adapter.web.dto.object.mapper.RestLocateCommodityDtoMapper;
import io.edpn.backend.trade.adapter.web.dto.object.mapper.RestPageInfoDtoMapper;
import io.edpn.backend.trade.adapter.web.dto.object.mapper.RestStationDtoMapper;
import io.edpn.backend.trade.adapter.web.dto.object.mapper.RestSystemDtoMapper;
import io.edpn.backend.trade.adapter.web.dto.object.mapper.RestValidatedCommodityDtoMapper;
import io.edpn.backend.trade.application.dto.web.filter.mapper.FindCommodityFilterDtoMapper;
import io.edpn.backend.trade.application.dto.web.filter.mapper.LocateCommodityFilterDtoMapper;
import io.edpn.backend.trade.application.dto.web.filter.mapper.PageFilterDtoMapper;
import io.edpn.backend.trade.application.dto.web.object.mapper.CommodityMarketInfoDtoMapper;
import io.edpn.backend.trade.application.dto.web.object.mapper.LocateCommodityDtoMapper;
import io.edpn.backend.trade.application.dto.web.object.mapper.PageInfoDtoMapper;
import io.edpn.backend.trade.application.dto.web.object.mapper.StationDtoMapper;
import io.edpn.backend.trade.application.dto.web.object.mapper.SystemDtoMapper;
import io.edpn.backend.trade.application.dto.web.object.mapper.ValidatedCommodityDtoMapper;
Expand All @@ -19,44 +23,54 @@

@Configuration("TradeWebDtoMapperConfig")
public class WebDtoMapperConfig {

@Bean(name = "tradeFindCommodityDTOMapper")
public FindCommodityFilterDtoMapper findCommodityDTOMapper() {
return new RestFindCommodityFilterDtoMapper();
}

@Bean(name = "tradeValidatedCommodityDTOMapper")
public ValidatedCommodityDtoMapper validatedCommodityDTOMapper() {
return new RestValidatedCommodityDtoMapper();
}


@Bean(name = "tradePageInfoDtoMapper")
public PageInfoDtoMapper pageInfoDtoMapper() {
return new RestPageInfoDtoMapper();
}

@Bean(name = "tradeSystemDtoMapper")
public SystemDtoMapper systemDtoMapper() {
return new RestSystemDtoMapper();
}

@Bean(name = "tradeStationDtoMapper")
public StationDtoMapper stationDtoMapper(
SystemDtoMapper systemDtoMapper){
SystemDtoMapper systemDtoMapper) {
return new RestStationDtoMapper(systemDtoMapper);
}

@Bean(name = "tradeLocateCommodityDtoMapper")
public LocateCommodityDtoMapper locateCommodityDtoMapper(
StationDtoMapper stationDtoMapper,
ValidatedCommodityDtoMapper validatedCommodityDtoMapper) {
return new RestLocateCommodityDtoMapper(stationDtoMapper, validatedCommodityDtoMapper);
}

@Bean(name = "tradeCommodityMarketInfoDtoMapper")
public CommodityMarketInfoDtoMapper commodityMarketInfoDtoMapper(
ValidatedCommodityDtoMapper validatedCommodityDtoMapper,
StationDtoMapper stationDtoMapper) {
return new RestCommodityMarketInfoDtoMapper(validatedCommodityDtoMapper, stationDtoMapper);
}

@Bean(name = "tradeLocateCommodityFilterDtoMapper")
public LocateCommodityFilterDtoMapper locateCommodityFilterDtoMapper() {
return new RestLocateCommodityFilterDtoMapper();
public LocateCommodityFilterDtoMapper locateCommodityFilterDtoMapper(PageFilterDtoMapper pageFilterDtoMapper) {
return new RestLocateCommodityFilterDtoMapper(pageFilterDtoMapper);
}

@Bean(name = "tradePageFilterDtoMapper")
public PageFilterDtoMapper pageFilterDtoMapper() {
return new RestPageFilterDtoMapper();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@
import io.edpn.backend.trade.adapter.persistence.filter.MybatisLocateCommodityFilter;
import io.edpn.backend.trade.adapter.persistence.repository.MybatisLocateCommodityRepository;
import io.edpn.backend.trade.application.domain.LocateCommodity;
import io.edpn.backend.trade.application.domain.PagedResult;
import io.edpn.backend.trade.application.domain.filter.LocateCommodityFilter;
import io.edpn.backend.trade.application.dto.persistence.entity.mapper.LocateCommodityEntityMapper;
import io.edpn.backend.trade.application.dto.persistence.entity.mapper.PersistencePageInfoMapper;
import io.edpn.backend.trade.application.dto.persistence.entity.mapper.PersistencePagedResultMapper;
import io.edpn.backend.trade.application.dto.persistence.filter.mapper.PersistenceLocateCommodityFilterMapper;
import io.edpn.backend.trade.application.port.outgoing.locatecommodity.LocateCommodityByFilterPort;
import lombok.RequiredArgsConstructor;
Expand All @@ -14,17 +17,19 @@

@RequiredArgsConstructor
public class LocateCommodityRepository implements LocateCommodityByFilterPort {

private final MybatisLocateCommodityRepository mybatisLocateCommodityRepository;
private final LocateCommodityEntityMapper<MybatisLocateCommodityEntity> mybatisLocateCommodityEntityMapper;
private final PersistenceLocateCommodityFilterMapper mybatisPersistenceLocateCommodityFilterMapper;

private final PersistencePageInfoMapper persistencePageInfoMapper;

@Override
public List<LocateCommodity> locateCommodityByFilter(LocateCommodityFilter locateCommodityFilter) {
return mybatisLocateCommodityRepository
.locateCommodityByFilter((MybatisLocateCommodityFilter) mybatisPersistenceLocateCommodityFilterMapper.map(locateCommodityFilter))
.stream()
.map(mybatisLocateCommodityEntityMapper::map)
.toList();
public PagedResult<LocateCommodity> locateCommodityByFilter(LocateCommodityFilter locateCommodityFilter) {
MybatisLocateCommodityFilter filter = (MybatisLocateCommodityFilter) mybatisPersistenceLocateCommodityFilterMapper.map(locateCommodityFilter);
List<MybatisLocateCommodityEntity> entities = mybatisLocateCommodityRepository.locateCommodityByFilter(filter);
return PersistencePagedResultMapper.map(
entities,
mybatisLocateCommodityEntityMapper::map,
persistencePageInfoMapper::map);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,7 @@ public class MybatisLocateCommodityEntity implements LocateCommodityEntity {
private Long buyPrice;
private Long sellPrice;
private Double distance;
private Integer pageSize;
private Integer currentPage;
private Integer totalItems;
}
Loading