Skip to content

Commit

Permalink
fix: update
Browse files Browse the repository at this point in the history
  • Loading branch information
Angular2Guy committed Aug 30, 2024
1 parent 05a528f commit 2a284fd
Showing 1 changed file with 14 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public Long importDailyQuoteHistory(String symbol, UserKeys userKeys) {
.save(this.overviewImport(symbol, mySymbolEntity, Duration.ofMillis(200))))
.flatMap(symbolEntity -> Stream.of(
this.customImport(symbol, this.currencyService.getCurrencyMap(), symbolEntity, null, userKeys))
.flatMap(value -> Stream.of(this.saveAllDailyQuotes(value))))
.flatMap(value -> Stream.of(this.saveAllDailyQuotes(value, true))))
.count();
}

Expand All @@ -84,7 +84,8 @@ private List<DailyQuote> customImport(String symbol, Map<LocalDate, Collection<C
case YAHOO -> this.yahooImport(symbol, currencyMap, symbolEntity, delay);
default -> List.of();
};
LOGGER.info("{} Dailyquotes for Symbol {} imported from {}", result.size(), symbol, symbolEntity.getQuoteSource());
LOGGER.info("{} Dailyquotes for Symbol {} imported from {}", result.size(), symbol,
symbolEntity.getQuoteSource());
return result;
}

Expand All @@ -107,7 +108,7 @@ public Long importUpdateDailyQuotes(Set<String> symbols, Duration delay, UserKey
.flatMap(symbol -> Stream.of(this.findSymbolsFor(symbol.toLowerCase()).stream()
.flatMap(mySymbol -> Stream.of(this.customImport(mySymbol.getSymbol().toLowerCase(),
this.currencyService.getCurrencyMap(), mySymbol, delay, userKeys)))
.map(values -> this.saveAllDailyQuotes(values)).count()))
.map(values -> this.saveAllDailyQuotes(values, false)).count()))
.reduce(0L, (a, b) -> a + b);
}

Expand All @@ -116,7 +117,7 @@ private List<Symbol> findSymbolsFor(String symbol) {
var result = withQuotes.isEmpty() ? this.symbolRepository.findBySymbolSingle(symbol.toLowerCase()) : withQuotes;
return result;
}

public void storeDailyQuoteData(
List<ch.xxx.manager.domain.model.entity.dto.DailyQuoteImportDto> dailyQuoteImportDtos) {
Map<String, Symbol> symbolMap = dailyQuoteImportDtos.stream().map(myDto -> myDto.getSymbol()).distinct()
Expand Down Expand Up @@ -169,23 +170,23 @@ private Symbol updateSymbol(RapidOverviewImportDto dto, Symbol symbol) {
}

private List<DailyQuote> yahooImport(String symbol, Map<LocalDate, Collection<Currency>> currencyMap,
Symbol symbolEntity, Duration delay) {
Symbol symbolEntity, Duration delay) {
return symbolEntity.getDailyQuotes() == null || symbolEntity.getDailyQuotes().isEmpty()
? this.yahooClient.getTimeseriesDailyHistory(symbol, delay).stream()
.filter(QuoteImportService::filterEmptyValuesDto)
.map(importDtos -> this.convert(symbolEntity, importDtos, currencyMap)).toList()
: this.yahooClient.getTimeseriesDailyHistory(symbol, delay).stream()
.filter(QuoteImportService::filterEmptyValuesDto)
.map(importDtos -> this.convert(symbolEntity, importDtos, currencyMap))
.filter(entity -> this.filterEntities(symbolEntity, entity))
.filter(dto -> this.filterEntities(symbolEntity, dto))
.map(importDto -> this.convert(symbolEntity, importDto, currencyMap))
.collect(Collectors.toList());
}

private boolean filterEntities(Symbol symbolEntity, DailyQuote dailyQuoteEntity) {
return symbolEntity.getDailyQuotes().stream()
.noneMatch(myEntity -> myEntity.getLocalDay().isEqual(dailyQuoteEntity.getLocalDay()));
private boolean filterEntities(Symbol symbolEntity, YahooDailyQuoteImportDto importDto) {
return symbolEntity.getDailyQuotes().stream()
.noneMatch(myEntity -> myEntity.getLocalDay().isEqual(importDto.getDate()));
}

private static boolean filterEmptyValuesDto(YahooDailyQuoteImportDto dto) {
return dto.getAdjClose() != null && dto.getVolume() != null;
}
Expand All @@ -200,9 +201,9 @@ private DailyQuote convert(Symbol symbolEntity, YahooDailyQuoteImportDto importD
return entity;
}

private List<DailyQuote> saveAllDailyQuotes(List<DailyQuote> entities) {
private List<DailyQuote> saveAllDailyQuotes(List<DailyQuote> entities, boolean clearOldQuotes) {
LOGGER.info("importDailyQuotes() {} to import", entities.size());
if (entities != null && !entities.isEmpty()) {
if (clearOldQuotes && entities != null && !entities.isEmpty()) {
this.dailyQuoteRepository.deleteAll(this.dailyQuoteRepository.findBySymbol(entities.get(0).getSymbolKey()));
}
return this.dailyQuoteRepository.saveAll(entities);
Expand Down

0 comments on commit 2a284fd

Please sign in to comment.