Class DefaultCurrencyConversionService
- java.lang.Object
-
- com.broadleafcommerce.pricing.service.DefaultCurrencyConversionService
-
- All Implemented Interfaces:
CurrencyConversionService
public class DefaultCurrencyConversionService extends Object implements CurrencyConversionService
Implementation ofCurrencyConversionServicethat relies on an implementation of ExchangeRateService and provides a mapping from and to for each item included in the ExchangeRateService- Author:
- Brian Polster (bpolster)
-
-
Constructor Summary
Constructors Constructor Description DefaultCurrencyConversionService(ExchangeRateInfoProvider provider)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Map<javax.money.CurrencyUnit,javax.money.convert.ExchangeRate>buildExchangeRatesFromMap(javax.money.CurrencyUnit targetCurrency, Map<javax.money.CurrencyUnit,javax.money.convert.ExchangeRate> baseExchangeRates)booleancanCovert(javax.money.CurrencyUnit from, javax.money.CurrencyUnit to)Determine if conversion support is available based on a currencyCode from and to.protected booleancanEqual(Object other)javax.money.MonetaryAmountconvert(javax.money.MonetaryAmount fromAmount, javax.money.CurrencyUnit toCurrency)Converts the passed in MonetaryAmount to the requested currency.protected javax.money.convert.ExchangeRateconvertExchangeRate(javax.money.convert.ExchangeRate fromBaseToSrc, javax.money.convert.ExchangeRate fromBaseToTarget, javax.money.NumberValue newFactor)booleanequals(Object o)List<String>getBaseCurrencies()protected javax.money.convert.ConversionContextgetDefaultContext()javax.money.CurrencyUnitgetDefaultCurrency()protected RoundingModegetDefaultRoundingMode()protected intgetDefaultScale()Map<javax.money.CurrencyUnit,Map<javax.money.CurrencyUnit,javax.money.convert.ExchangeRate>>getExchangeMap()ExchangeRateInfoProvidergetExchangeRateInfoProvider()inthashCode()voidinit()protected javax.money.convert.ExchangeRateinvertExchangeRate(javax.money.convert.ExchangeRate origRate, javax.money.NumberValue newFactor)booleanisAllowMappingThroughBaseCurrency()protected voidpopulateBaseExchangeRates(ExchangeRateInfo exchangeRateInfo, Map<javax.money.CurrencyUnit,javax.money.convert.ExchangeRate> rates)protected voidpopulateOtherExchangeRatesFromBase(javax.money.CurrencyUnit baseCurrency, Map<javax.money.CurrencyUnit,Map<javax.money.CurrencyUnit,javax.money.convert.ExchangeRate>> ratesMap)voidrefreshExchangeRateData()protected voidrefreshExchangeRateDataByCurrency(Optional<String> baseCurrency)voidsetAllowMappingThroughBaseCurrency(boolean allowMappingThroughBaseCurrency)voidsetBaseCurrencies(List<String> baseCurrencies)voidsetDefaultCurrency(javax.money.CurrencyUnit defaultCurrency)voidsetExchangeMap(Map<javax.money.CurrencyUnit,Map<javax.money.CurrencyUnit,javax.money.convert.ExchangeRate>> exchangeMap)voidsetExchangeRateInfoProvider(ExchangeRateInfoProvider exchangeRateInfoProvider)StringtoString()
-
-
-
Constructor Detail
-
DefaultCurrencyConversionService
public DefaultCurrencyConversionService(ExchangeRateInfoProvider provider)
-
-
Method Detail
-
init
@PostConstruct public void init()
-
canCovert
public boolean canCovert(javax.money.CurrencyUnit from, javax.money.CurrencyUnit to)Determine if conversion support is available based on a currencyCode from and to. By default, if both currencies are found in the- Specified by:
canCovertin interfaceCurrencyConversionService- Parameters:
from- The currency to convert from.to- The currency to convert to.- Returns:
-
convert
public javax.money.MonetaryAmount convert(javax.money.MonetaryAmount fromAmount, javax.money.CurrencyUnit toCurrency)Converts the passed in MonetaryAmount to the requested currency. The value will be rounded to the scale appropriate for the currency and as such, this method should not be used in intermediary calculations. Throws NullPointerException if the currencies cannot be converted. Call canConvert(from,to) before calling to insure support for the convert operation.- Specified by:
convertin interfaceCurrencyConversionService- Parameters:
fromAmount-toCurrency-- Returns:
-
refreshExchangeRateData
@Scheduled(fixedDelayString="${exchange.refresh.rate.in.milliseconds:86400000}") public void refreshExchangeRateData()
-
refreshExchangeRateDataByCurrency
protected void refreshExchangeRateDataByCurrency(Optional<String> baseCurrency)
-
populateBaseExchangeRates
protected void populateBaseExchangeRates(ExchangeRateInfo exchangeRateInfo, Map<javax.money.CurrencyUnit,javax.money.convert.ExchangeRate> rates)
-
populateOtherExchangeRatesFromBase
protected void populateOtherExchangeRatesFromBase(javax.money.CurrencyUnit baseCurrency, Map<javax.money.CurrencyUnit,Map<javax.money.CurrencyUnit,javax.money.convert.ExchangeRate>> ratesMap)
-
buildExchangeRatesFromMap
protected Map<javax.money.CurrencyUnit,javax.money.convert.ExchangeRate> buildExchangeRatesFromMap(javax.money.CurrencyUnit targetCurrency, Map<javax.money.CurrencyUnit,javax.money.convert.ExchangeRate> baseExchangeRates)
-
invertExchangeRate
protected javax.money.convert.ExchangeRate invertExchangeRate(javax.money.convert.ExchangeRate origRate, javax.money.NumberValue newFactor)
-
getDefaultContext
protected javax.money.convert.ConversionContext getDefaultContext()
-
convertExchangeRate
protected javax.money.convert.ExchangeRate convertExchangeRate(javax.money.convert.ExchangeRate fromBaseToSrc, javax.money.convert.ExchangeRate fromBaseToTarget, javax.money.NumberValue newFactor)
-
getDefaultRoundingMode
protected RoundingMode getDefaultRoundingMode()
-
getDefaultScale
protected int getDefaultScale()
-
getDefaultCurrency
public javax.money.CurrencyUnit getDefaultCurrency()
-
getExchangeRateInfoProvider
public ExchangeRateInfoProvider getExchangeRateInfoProvider()
-
getExchangeMap
public Map<javax.money.CurrencyUnit,Map<javax.money.CurrencyUnit,javax.money.convert.ExchangeRate>> getExchangeMap()
-
isAllowMappingThroughBaseCurrency
public boolean isAllowMappingThroughBaseCurrency()
-
setDefaultCurrency
public void setDefaultCurrency(javax.money.CurrencyUnit defaultCurrency)
-
setExchangeRateInfoProvider
public void setExchangeRateInfoProvider(ExchangeRateInfoProvider exchangeRateInfoProvider)
-
setExchangeMap
public void setExchangeMap(Map<javax.money.CurrencyUnit,Map<javax.money.CurrencyUnit,javax.money.convert.ExchangeRate>> exchangeMap)
-
setAllowMappingThroughBaseCurrency
public void setAllowMappingThroughBaseCurrency(boolean allowMappingThroughBaseCurrency)
-
canEqual
protected boolean canEqual(Object other)
-
-