Package api.mpba.rastvdmy.service.impl
Class CurrencyDataServiceImpl
java.lang.Object
api.mpba.rastvdmy.service.impl.CurrencyDataServiceImpl
- All Implemented Interfaces:
CurrencyDataService
Service implementation for managing currency data.
This service handles retrieving currency information from the database and external APIs.
-
Constructor Summary
ConstructorDescriptionCurrencyDataServiceImpl
(CurrencyDataRepository currencyDataRepository, org.springframework.web.client.RestTemplate restTemplate, org.springframework.jdbc.core.JdbcTemplate jdbcTemplate, TokenVerifierService tokenVerifierService) Constructs a new CurrencyDataServiceImpl with the specified repositories, RestTemplate, JdbcTemplate, JwtService, and UserProfileRepository. -
Method Summary
Modifier and TypeMethodDescriptionconvertCurrency
(String baseCurrency, String targetCurrency) Converts an amount from the base currency to the target currency using an external API.findAllCurrencies
(jakarta.servlet.http.HttpServletRequest request) Retrieves all available currencies.void
Retrieves all exchange rates from an external API and updates the database.findByCurrency
(jakarta.servlet.http.HttpServletRequest request, String currencyType) Retrieves currency data for a specified currency type.void
Initializes the database with currency data and connects the admin user to all currencies.
-
Constructor Details
-
CurrencyDataServiceImpl
@Autowired public CurrencyDataServiceImpl(CurrencyDataRepository currencyDataRepository, org.springframework.web.client.RestTemplate restTemplate, org.springframework.jdbc.core.JdbcTemplate jdbcTemplate, TokenVerifierService tokenVerifierService) Constructs a new CurrencyDataServiceImpl with the specified repositories, RestTemplate, JdbcTemplate, JwtService, and UserProfileRepository.- Parameters:
currencyDataRepository
- the repository for currency datarestTemplate
- the RestTemplate for making HTTP requestsjdbcTemplate
- the JdbcTemplate for executing SQL queriestokenVerifierService
- the service for extracting user token and getting user data from the request
-
-
Method Details
-
findAllCurrencies
Retrieves all available currencies.- Specified by:
findAllCurrencies
in interfaceCurrencyDataService
- Parameters:
request
- the HTTP request containing user data- Returns:
- a list of all available currencies
-
findByCurrency
public CurrencyData findByCurrency(jakarta.servlet.http.HttpServletRequest request, String currencyType) Retrieves currency data for a specified currency type. If the currency is not found in the database, it fetches it from an external API.- Specified by:
findByCurrency
in interfaceCurrencyDataService
- Parameters:
request
- the HTTP request containing user datacurrencyType
- the type of currency to retrieve- Returns:
- the currency data for the specified type
- Throws:
ApplicationException
- if the specified currency type is invalid or not found
-
convertCurrency
Converts an amount from the base currency to the target currency using an external API.- Specified by:
convertCurrency
in interfaceCurrencyDataService
- Parameters:
baseCurrency
- the currency from which to converttargetCurrency
- the currency to which to convert- Returns:
- the currency data for the target currency
-
initializeData
@PostConstruct public void initializeData()Initializes the database with currency data and connects the admin user to all currencies. -
findAllExchangeRates
@Scheduled(fixedRate=86400000L) public void findAllExchangeRates()Retrieves all exchange rates from an external API and updates the database. This method is scheduled to run every 24 hours.- Specified by:
findAllExchangeRates
in interfaceCurrencyDataService
-