com.ibm.commerce.price.utils

Class CurrencyManager

  • All Implemented Interfaces:
    com.ibm.commerce.registry.Registry


    public class CurrencyManager
    extends UnitManager
    Currency manager. This singleton object allows you to retrieve many types of currency information for a store. To retrieve an instance of the CurrencyManager, use the getInstance() method.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method and Description
      MonetaryAmount convert(MonetaryAmount aMonetaryAmount, com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String toCurrency)
      Convert a monetary amount to a new currency.
      java.lang.String[] getCounterCurrencies(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String aCurrency)
      Get the counter currencies that apply, to a particular currency, in the correct order.
      java.lang.String[] getCounterCurrenciesForStore(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String aCurrency)
      Get the counter currencies that apply, to a particular currency, in the correct order.
      MonetaryAmount[] getCounterValues(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, MonetaryAmount aMonetaryAmount)
      Get the list of counter values in the appropriate order.
      java.lang.String getCurrency(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String aPreferredCurrency, java.lang.Integer aLanguageId)
      Calculate the negotiated shopping currency for the specified store based on the user's preferred currency.
      java.math.BigDecimal getCustomizedRoundingMultiple(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String aUnit)
      Gets the unit to which rounding occurs.
      java.math.BigDecimal getCustomizedRoundingMultiple(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String aUnit, java.lang.String aNumberUsage)
      Gets the unit to which rounding occurs.
      int getCustomizedRoundMethod(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String aUnit)
      Returns 1 if the round method is 'T' (Truncate), returns 2 if the round method is 'R' (Round) or returns 3 if the round method is 'F' (Floor).
      int getCustomizedRoundMethod(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String aUnit, java.lang.String astrNumberUsage)
      Returns 1 if the round method is 'T' (Truncate), returns 2 if the round method is 'R' (Round) or returns 3 if the round method is 'F' (Floor).
      java.lang.String getCustomizedString(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String aCurrency, java.lang.Integer aLanguageId)
      Get the customized string from the format table.
      java.lang.String getDefaultCurrency(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean)
      Get the store level default currency for a particular store.
      java.lang.String getDefaultCurrency(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.Integer aLanguageId)
      Get the default currency for a particular store and language Id.
      java.lang.String getDescription(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String aCurrency, java.lang.Integer aLanguageId)
      Get the description of the specified currency.
      FormattedMonetaryAmount getFormattedMonetaryAmount(MonetaryAmount aMonetaryAmount, com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.Integer aLanguageId)
      Get a formatted monetary amount for display purposes based on the formatting rules defined in the database.
      FormattedMonetaryAmount getFormattedMonetaryAmount(MonetaryAmount aMonetaryAmount, com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.Integer aLanguageId, java.lang.String aNumberUsage)
      Get a formatted monetary amount for display purposes based on the formatting rules defined in the database.
      static CurrencyManager getInstance()
      Get the instance of the currency manager.
      java.math.BigDecimal getMinApproveAmount(com.ibm.commerce.common.objects.StoreAccessBean aStoreAB, java.lang.String aCurrency)
      Get the minimum approved amount.
      java.math.BigDecimal getMinApproveAmount(com.ibm.commerce.common.objects.StoreAccessBean aStoreAB, java.lang.String aCurrency, java.lang.String aNumberUsage)
      Get the minimum approved amount.
      java.math.BigDecimal getRoundingMultiple(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String aUnit)
      Gets the unit to which rounding occurs.
      java.math.BigDecimal getRoundingMultiple(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String aUnit, java.lang.String aNumberUsage)
      Gets the unit to which rounding occurs.
      java.lang.String[] getSupportedCurrencies(com.ibm.commerce.common.objects.StoreAccessBean aStoreAB)
      Get a list of the currencies supported by a store.
      java.lang.String getSymbol(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String aCurrency, java.lang.Integer aLanguageId)
      Get the currency symbol information from the currency format table.
      void initialize()
      Used by the registry manager to initialize the currency manager.
      boolean isSupportedCurrency(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String aCurrency)
      Checks to see if a currency is supported in a store.
      java.math.BigDecimal parsePositiveAmount(java.lang.String anAmount, java.lang.String theUnit, com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.Integer aLanguageId, java.lang.String aNumberUsage)
      Parses a string (representing a positive number) based on the formatting rules defined in the database.
      void round(MonetaryAmount aMonetaryAmount, com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean)
      Round the monetary amount to the appropriate number of decimal places.
      void round(MonetaryAmount aMonetaryAmount, com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String aNumberUsage)
      Round the monetary amount to the appropriate number of decimal places.
      void roundCustomized(MonetaryAmount aMonetaryAmount, com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean)
      Perform customized rounding to the correct number of decimal places.
      void roundCustomized(MonetaryAmount aMonetaryAmount, com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean, java.lang.String aNumberUsage)
      Perform customized rounding to the correct number of decimal places.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • convert

        public MonetaryAmount convert(MonetaryAmount aMonetaryAmount,
                                      com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                      java.lang.String toCurrency)
                               throws com.ibm.commerce.exception.ECSystemException
        Convert a monetary amount to a new currency. A conversion is first searched in the specified store. If not found, a conversion will be searched for along the store path for the relationship type com.ibm.commerce.currency.conversion.
        Parameters:
        aMonetaryAmount - a monetary amount to be converted.
        aStoreAccessBean - the store to use to choose the appropriate conversion rules.
        toCurrency - the currency to convert to.
        Returns:
        the new monetary amount in the target currency. If there is no conversion then null is returned.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getCounterCurrencies

        public java.lang.String[] getCounterCurrencies(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                                       java.lang.String aCurrency)
                                                throws com.ibm.commerce.exception.ECSystemException
        Get the counter currencies that apply, to a particular currency, in the correct order. Counter currencies are searched for along the store path for relationship type com.ibm.commerce.currency.countervalue. Once any counter values are found, the search stops.
        Parameters:
        aStoreAccessBean - a store.
        aCurrency - the currency.
        Returns:
        an array of counter currencies in the correct order.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getCounterCurrenciesForStore

        public java.lang.String[] getCounterCurrenciesForStore(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                                               java.lang.String aCurrency)
                                                        throws com.ibm.commerce.exception.ECSystemException
        Get the counter currencies that apply, to a particular currency, in the correct order.
        Parameters:
        aStoreAccessBean - a store.
        aCurrency - the currency.
        Returns:
        an array of counter currencies in the correct order.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getCounterValues

        public MonetaryAmount[] getCounterValues(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                                 MonetaryAmount aMonetaryAmount)
                                          throws com.ibm.commerce.exception.ECSystemException
        Get the list of counter values in the appropriate order. Counter currencies are searched for along the store path for relationship type com.ibm.commerce.currency.countervalue. Once any counter values are found, the search stops.
        Parameters:
        aStoreAccessBean - the store to use to choose the counter values.
        aMonetaryAmount - the monetary amount to find the counter values for.
        Returns:
        an array of monetary amounts representing the counter values in the correct order.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getCurrency

        public java.lang.String getCurrency(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                            java.lang.String aPreferredCurrency,
                                            java.lang.Integer aLanguageId)
                                     throws com.ibm.commerce.exception.ECSystemException
        Calculate the negotiated shopping currency for the specified store based on the user's preferred currency.
        Parameters:
        aStoreAccessBean - the store for the currency.
        aPreferredCurrency - the user's preferred currency.
        aLanguageId - the language Id of the command context (to choose the default currency)
        Returns:
        the negotiated shopping currency.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getCustomizedRoundingMultiple

        public java.math.BigDecimal getCustomizedRoundingMultiple(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                                                  java.lang.String aUnit)
                                                           throws com.ibm.commerce.exception.ECSystemException
        Gets the unit to which rounding occurs. For instance, if the rounding occurs to the nearest 5 cents then the value 0.05 will be returned.
        Parameters:
        aStoreAccessBean - the store for which the rounding applies.
        aUnit - the currency for which the rounding applies.
        Returns:
        the rounding unit.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getCustomizedRoundingMultiple

        public java.math.BigDecimal getCustomizedRoundingMultiple(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                                                  java.lang.String aUnit,
                                                                  java.lang.String aNumberUsage)
                                                           throws com.ibm.commerce.exception.ECSystemException
        Gets the unit to which rounding occurs. For instance, if the rounding occurs to the nearest 5 cents then the value 0.05 will be returned.
        Parameters:
        aStoreAccessBean - the store for which the rounding applies.
        aUnit - the currency for which the rounding applies.
        aNumberUsage - the number usage code.
        Returns:
        the rounding unit.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getCustomizedRoundMethod

        public int getCustomizedRoundMethod(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                            java.lang.String aUnit)
                                     throws com.ibm.commerce.exception.ECSystemException
        Returns 1 if the round method is 'T' (Truncate), returns 2 if the round method is 'R' (Round) or returns 3 if the round method is 'F' (Floor).
        Overrides:
        getCustomizedRoundMethod in class UnitManager
        Parameters:
        aStoreAccessBean - The store for which the rounding applies.
        aUnit - The currency for which the rounding applies.
        Returns:
        An integer based on the rounding method.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getCustomizedRoundMethod

        public int getCustomizedRoundMethod(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                            java.lang.String aUnit,
                                            java.lang.String astrNumberUsage)
                                     throws com.ibm.commerce.exception.ECSystemException
        Returns 1 if the round method is 'T' (Truncate), returns 2 if the round method is 'R' (Round) or returns 3 if the round method is 'F' (Floor).
        Overrides:
        getCustomizedRoundMethod in class UnitManager
        Parameters:
        aStoreAccessBean - The store for which the rounding applies.
        aUnit - The currency for which the rounding applies.
        astrNumberUsage - The number usage.
        Returns:
        An integer based on the rounding method.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getCustomizedString

        public java.lang.String getCustomizedString(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                                    java.lang.String aCurrency,
                                                    java.lang.Integer aLanguageId)
                                             throws com.ibm.commerce.exception.ECSystemException
        Get the customized string from the format table.
        Parameters:
        aStoreAccessBean - the store for choosing the appropriate customized string.
        aCurrency - the currency for which to choose the customized string.
        aLanguageId - the language Id of the language for the customized string.
        Returns:
        the customized string from the format table.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getDefaultCurrency

        public java.lang.String getDefaultCurrency(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean)
                                            throws com.ibm.commerce.exception.ECSystemException
        Get the store level default currency for a particular store.
        Parameters:
        aStoreAccessBean - a store access bean.
        Returns:
        the default currency.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getDefaultCurrency

        public java.lang.String getDefaultCurrency(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                                   java.lang.Integer aLanguageId)
                                            throws com.ibm.commerce.exception.ECSystemException
        Get the default currency for a particular store and language Id. If there is a store entity level default currency, it will take precedence.
        Parameters:
        aStoreAccessBean - a store access bean.
        aLanguageId - a language Id.
        Returns:
        the default currency.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getDescription

        public java.lang.String getDescription(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                               java.lang.String aCurrency,
                                               java.lang.Integer aLanguageId)
                                        throws com.ibm.commerce.exception.ECSystemException
        Get the description of the specified currency.
        Parameters:
        aStoreAccessBean - the store that the description applies to.
        aCurrency - the currency that the description is for.
        aLanguageId - the language Id of the language for the description.
        Returns:
        the currency description.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getFormattedMonetaryAmount

        public FormattedMonetaryAmount getFormattedMonetaryAmount(MonetaryAmount aMonetaryAmount,
                                                                  com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                                                  java.lang.Integer aLanguageId)
                                                           throws com.ibm.commerce.exception.ECSystemException
        Get a formatted monetary amount for display purposes based on the formatting rules defined in the database. Numbers are rounded to the number of decimal places specified in the formatting rules.
        Parameters:
        aMonetaryAmount - the monetary amount to format.
        aStoreAccessBean - a store.
        aLanguageId - a language ID.
        Returns:
        the formatted monetary amount.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getFormattedMonetaryAmount

        public FormattedMonetaryAmount getFormattedMonetaryAmount(MonetaryAmount aMonetaryAmount,
                                                                  com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                                                  java.lang.Integer aLanguageId,
                                                                  java.lang.String aNumberUsage)
                                                           throws com.ibm.commerce.exception.ECSystemException
        Get a formatted monetary amount for display purposes based on the formatting rules defined in the database. Numbers are rounded to the number of decimal places specified in the formatting rules.
        Parameters:
        aMonetaryAmount - the monetary amount to format.
        aStoreAccessBean - a store.
        aLanguageId - a language ID.
        aNumberUsage - the number usage code.
        Returns:
        the formatted monetary amount.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getInstance

        public static CurrencyManager getInstance()
                                           throws com.ibm.commerce.exception.ECSystemException
        Get the instance of the currency manager.
        Returns:
        the Currency Manager instance.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getMinApproveAmount

        public java.math.BigDecimal getMinApproveAmount(com.ibm.commerce.common.objects.StoreAccessBean aStoreAB,
                                                        java.lang.String aCurrency)
                                                 throws com.ibm.commerce.exception.ECSystemException
        Get the minimum approved amount.
        Parameters:
        aStoreAB - the store access bean.
        aCurrency - the currency.
        Returns:
        the minimum approved amount.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getMinApproveAmount

        public java.math.BigDecimal getMinApproveAmount(com.ibm.commerce.common.objects.StoreAccessBean aStoreAB,
                                                        java.lang.String aCurrency,
                                                        java.lang.String aNumberUsage)
                                                 throws com.ibm.commerce.exception.ECSystemException
        Get the minimum approved amount.
        Parameters:
        aStoreAB - the store access bean.
        aCurrency - the currency.
        aNumberUsage - the number usage code.
        Returns:
        the minimum approved amount.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getRoundingMultiple

        public java.math.BigDecimal getRoundingMultiple(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                                        java.lang.String aUnit)
                                                 throws com.ibm.commerce.exception.ECSystemException
        Gets the unit to which rounding occurs. For instance, if the rounding occurs to the nearest penny then the value 0.01 will be returned.
        Parameters:
        aStoreAccessBean - the store for which the rounding applies.
        aUnit - the currency for which the rounding applies.
        Returns:
        the rounding unit.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getRoundingMultiple

        public java.math.BigDecimal getRoundingMultiple(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                                        java.lang.String aUnit,
                                                        java.lang.String aNumberUsage)
                                                 throws com.ibm.commerce.exception.ECSystemException
        Gets the unit to which rounding occurs. For instance, if the rounding occurs to the nearest penny then the value 0.01 will be returned.
        Parameters:
        aStoreAccessBean - the store for which the rounding applies.
        aUnit - the currency for which the rounding applies.
        aNumberUsage - the number usage code.
        Returns:
        the rounding unit.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getSupportedCurrencies

        public java.lang.String[] getSupportedCurrencies(com.ibm.commerce.common.objects.StoreAccessBean aStoreAB)
                                                  throws com.ibm.commerce.exception.ECSystemException
        Get a list of the currencies supported by a store. All currencies along the store path of the relationship type com.ibm.commerce.currency.supported are supported by a store.
        Parameters:
        aStoreAB - the store access bean for which the currencies are to be found.
        Returns:
        a list of supported currencies.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • getSymbol

        public java.lang.String getSymbol(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                          java.lang.String aCurrency,
                                          java.lang.Integer aLanguageId)
                                   throws com.ibm.commerce.exception.ECSystemException
        Get the currency symbol information from the currency format table.
        Parameters:
        aStoreAccessBean - the store.
        aCurrency - the currency.
        aLanguageId - the language Id of the language for the symbol.
        Returns:
        the currency symbol.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • initialize

        public void initialize()
                        throws java.lang.Exception
        Used by the registry manager to initialize the currency manager.
        Throws:
        java.lang.Exception
      • isSupportedCurrency

        public boolean isSupportedCurrency(com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                           java.lang.String aCurrency)
                                    throws com.ibm.commerce.exception.ECSystemException
        Checks to see if a currency is supported in a store. The store path for relationship type com.ibm.commerce.currency.supported is searched. If the currency is supported anywhere along the store path then it is supported.
        Parameters:
        aStoreAccessBean - The store access bean.
        aCurrency - The currency to check.
        Returns:
        true if the currency is supported; false otherwise.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • parsePositiveAmount

        public java.math.BigDecimal parsePositiveAmount(java.lang.String anAmount,
                                                        java.lang.String theUnit,
                                                        com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                                        java.lang.Integer aLanguageId,
                                                        java.lang.String aNumberUsage)
                                                 throws com.ibm.commerce.exception.ECSystemException,
                                                        java.text.ParseException
        Parses a string (representing a positive number) based on the formatting rules defined in the database.
        Parameters:
        anAmount - the amount to parse.
        theUnit - the unit of the value.
        aStoreAccessBean - a store access bean.
        aLanguageId - a language ID.
        aNumberUsage - The number usage code to use.
        Returns:
        the parsed value.
        Throws:
        com.ibm.commerce.exception.ECSystemException
        java.text.ParseException
      • round

        public void round(MonetaryAmount aMonetaryAmount,
                          com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean)
                   throws com.ibm.commerce.exception.ECSystemException
        Round the monetary amount to the appropriate number of decimal places. This ignores the roundingMultiple and roundingMethod columns of the currency format table.
        Parameters:
        aMonetaryAmount - the monetary amount to round.
        aStoreAccessBean - the store.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • round

        public void round(MonetaryAmount aMonetaryAmount,
                          com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                          java.lang.String aNumberUsage)
                   throws com.ibm.commerce.exception.ECSystemException
        Round the monetary amount to the appropriate number of decimal places. This ignores the roundingMultiple and roundingMethod columns of the currency format table.
        Parameters:
        aMonetaryAmount - the monetary amount to round.
        aStoreAccessBean - the store.
        aNumberUsage - the number usage code.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • roundCustomized

        public void roundCustomized(MonetaryAmount aMonetaryAmount,
                                    com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean)
                             throws com.ibm.commerce.exception.ECSystemException
        Perform customized rounding to the correct number of decimal places. This uses the roundingMultiple and roundingMethod columns of the currency format table.
        Parameters:
        aMonetaryAmount - the monetary amount to round.
        aStoreAccessBean - the store.
        Throws:
        com.ibm.commerce.exception.ECSystemException
      • roundCustomized

        public void roundCustomized(MonetaryAmount aMonetaryAmount,
                                    com.ibm.commerce.common.objects.StoreAccessBean aStoreAccessBean,
                                    java.lang.String aNumberUsage)
                             throws com.ibm.commerce.exception.ECSystemException
        Perform customized rounding to the correct number of decimal places. This uses the roundingMultiple and roundingMethod columns of the currency format table.
        Parameters:
        aMonetaryAmount - the monetary amount to round.
        aStoreAccessBean - the store.
        aNumberUsage - the number usage code.
        Throws:
        com.ibm.commerce.exception.ECSystemException