org.jscience.economics.money
Class Currency

java.lang.Object
  extended by javax.measure.unit.Unit<Q>
      extended by javax.measure.unit.DerivedUnit<Money>
          extended by org.jscience.economics.money.Currency
All Implemented Interfaces:
java.io.Serializable

public class Currency
extends DerivedUnit<Money>

This class represents a currency Unit. Currencies are a special form of DerivedUnit, conversions between currencies is possible if their respective exchange rates have been set and the conversion factor can be changed dynamically.

Quantities stated in Currency are usually instances of Money.

By default, the label associated to a currency is its ISO-4217 code (see the ISO 4217 maintenance agency for a table of currency codes). An application may change this default using the UnitFormat.label(String) method. For example:[code] UnitFormat.getStandardInstance().label(Currency.EUR, "€"); UnitFormat.getStandardInstance().label(Currency.GBP, "£"); UnitFormat.getStandardInstance().label(Currency.JPY, "¥"); UnitFormat.getStandardInstance().label(Currency.USD, "$"); [/code]

See Also:
setExchangeRate(double), Serialized Form

Field Summary
static Currency AUD
          The Australian Dollar currency unit.
static Currency CAD
          The Canadian Dollar currency unit.
static Currency CNY
          The China Yan currency.
static Currency EUR
          The Euro currency.
static Currency GBP
          The British Pound currency.
static Currency JPY
          The Japanese Yen currency.
static Currency KRW
          The Korean Republic Won currency.
static Currency TWD
          The Taiwanese dollar currency.
static Currency USD
          The United State dollar currency.
 
Fields inherited from class javax.measure.unit.Unit
ONE
 
Constructor Summary
Currency(java.lang.String code)
          Creates the currency unit for the given currency code.
Currency(java.lang.String longName, java.lang.String code)
           
 
Method Summary
 boolean equals(java.lang.Object obj)
          Indicates if the specified unit can be considered equals to the one specified.
 java.lang.String getCode()
          Returns the currency code for this currency.
 int getDefaultFractionDigits()
          Returns the default number of fraction digits used with this currency unit.
 double getExchangeRate()
          Returns the exchange rate for this Currency.
 java.lang.String getLongName()
           
static Currency getReferenceCurrency()
          Returns the currency used as reference when setting the exchange rate.
 Unit<? super Money> getStandardUnit()
          Returns the base unit, alternate unit or product of base units and alternate units this unit is derived from.
 int hashCode()
          Returns the hash code for this unit.
 void setExchangeRate(double refAmount)
          Sets the exchange rate of this Currency relatively to the reference currency.
 void setLongName(java.lang.String longName)
           
static void setReferenceCurrency(Currency currency)
          Sets the reference currency (context-local).
 UnitConverter toStandardUnit()
          Returns the converter from this unit to its system unit.
 
Methods inherited from class javax.measure.unit.Unit
alternate, asType, compound, divide, divide, divide, getConverterTo, getDimension, inverse, isCompatible, isStandardUnit, plus, pow, root, times, times, times, toString, transform, valueOf
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

AUD

public static final Currency AUD
The Australian Dollar currency unit.


CAD

public static final Currency CAD
The Canadian Dollar currency unit.


CNY

public static final Currency CNY
The China Yan currency.


EUR

public static final Currency EUR
The Euro currency.


GBP

public static final Currency GBP
The British Pound currency.


JPY

public static final Currency JPY
The Japanese Yen currency.


KRW

public static final Currency KRW
The Korean Republic Won currency.


TWD

public static final Currency TWD
The Taiwanese dollar currency.


USD

public static final Currency USD
The United State dollar currency.

Constructor Detail

Currency

public Currency(java.lang.String code)
Creates the currency unit for the given currency code. See the ISO 4217 maintenance agency for more information, including a table of currency codes.

Parameters:
code - the ISO-4217 code of the currency (e.g. "EUR", "USD", "JPY").
Throws:
java.lang.IllegalArgumentException - if the specified code is not an ISO-4217 code.

Currency

public Currency(java.lang.String longName,
                java.lang.String code)
Method Detail

getLongName

public java.lang.String getLongName()

setLongName

public void setLongName(java.lang.String longName)

getCode

public java.lang.String getCode()
Returns the currency code for this currency.

Returns:
the ISO-4217 code of the currency (e.g. "EUR", "USD", "JPY").

getDefaultFractionDigits

public int getDefaultFractionDigits()
Returns the default number of fraction digits used with this currency unit. For example, the default number of fraction digits for the EUR is 2, while for the JPY (Yen) it's 0. This method can be overriden for custom currencies returning values different from 2.

Returns:
the default number of fraction digits for this currency.

setReferenceCurrency

public static void setReferenceCurrency(Currency currency)
Sets the reference currency (context-local). Changing the reference currency clears all the exchange rates previously set.

Parameters:
currency - the new reference currency.

getReferenceCurrency

public static Currency getReferenceCurrency()
Returns the currency used as reference when setting the exchange rate. By default, the reference currency is the currency for the default country locale.

Returns:
the reference currency.
See Also:
setExchangeRate(double)

setExchangeRate

public void setExchangeRate(double refAmount)
Sets the exchange rate of this Currency relatively to the reference currency. Setting the exchange rate allows for conversion between Money stated in different currencies. For example:
     Currency.setReferenceCurrency(Currency.USD);
     Currency.EUR.setExchangeRate(1.17); // 1.0 € = 1.17 $
 

Parameters:
refAmount - the amount stated in the getReferenceCurrency() equals to one unit of this Currency.
See Also:
getReferenceCurrency()

getExchangeRate

public double getExchangeRate()
Returns the exchange rate for this Currency.

Returns:
the amount stated in the getReferenceCurrency() equals to one unit of this Currency.
Throws:
ConversionException - if the exchange rate has not be set for this Currency.

equals

public boolean equals(java.lang.Object obj)
Description copied from class: Unit
Indicates if the specified unit can be considered equals to the one specified.

Specified by:
equals in class Unit<Money>
Parameters:
obj - the object to compare to.
Returns:
true if this unit is considered equal to that unit; false otherwise.

hashCode

public int hashCode()
Description copied from class: Unit
Returns the hash code for this unit.

Specified by:
hashCode in class Unit<Money>
Returns:
this unit hashcode value.

getStandardUnit

public Unit<? super Money> getStandardUnit()
Description copied from class: Unit
Returns the base unit, alternate unit or product of base units and alternate units this unit is derived from. The standard unit identifies the "type" of quantity for which this unit is employed. For example:[code] boolean isAngularVelocity(Unit u) { return u.getStandardUnit().equals(RADIAN.divide(SECOND)); } assert(REVOLUTION.divide(MINUTE).isAngularVelocity()); [/code]

Note: Having the same system unit is not sufficient to ensure that a converter exists between the two units (e.g. °C/m and K/m).

Specified by:
getStandardUnit in class Unit<Money>
Returns:
the system unit this unit is derived from.

toStandardUnit

public UnitConverter toStandardUnit()
Description copied from class: Unit
Returns the converter from this unit to its system unit.

Specified by:
toStandardUnit in class Unit<Money>
Returns:
this.getConverterTo(this.getSystemUnit())