Tabnine Logo
ExchangeRate
Code IndexAdd Tabnine to your IDE (free)

How to use
ExchangeRate
in
javax.money.convert

Best Java code snippets using javax.money.convert.ExchangeRate (Showing top 20 results out of 315)

origin: org.javamoney.moneta/moneta-core

/**
 * Initialize the {@link ExchangeRateBuilder} with an {@link javax.money.convert.ExchangeRate}. This is
 * useful for creating a new rate, reusing some properties from an
 * existing one.
 *
 * @param rate the base rate
 * @return the Builder, for chaining.
 */
public ExchangeRateBuilder setRate(ExchangeRate rate) {
  this.base = rate.getBaseCurrency();
  this.term = rate.getCurrency();
  this.conversionContext = rate.getContext();
  this.factor = rate.getFactor();
  this.rateChain = rate.getExchangeRateChain();
  this.term = rate.getCurrency();
  return this;
}
origin: ConsensusJ/consensusj

/**
 * @param rate specifies the base and target currencies
 */
public CurrencyUnitPair(ExchangeRate rate) {
  this(rate.getBaseCurrency(), rate.getCurrency());
}
origin: org.javamoney/javamoney-tck

@Override
public ExchangeRate getReversed(ExchangeRate rate) {
  ConversionQuery reverseQuery = rate.getContext().toQueryBuilder().setBaseCurrency(rate.getCurrency())
      .setTermCurrency(rate.getBaseCurrency()).build();
  if(isAvailable(reverseQuery)){
    return getExchangeRate(reverseQuery);
  }
  return null;
}
origin: org.javamoney.moneta/moneta-convert-ecb

private ExchangeRate reverse(ExchangeRate rate) {
  if (Objects.isNull(rate)) {
    throw new IllegalArgumentException("Rate null is not reversible.");
  }
  return new ExchangeRateBuilder(rate).setRate(rate).setBase(rate.getCurrency()).setTerm(rate.getBaseCurrency())
      .setFactor(divide(DefaultNumberValue.ONE, rate.getFactor(), MathContext.DECIMAL64)).build();
}
origin: org.javamoney.moneta/moneta-convert-ecb

private ExchangeRate createExchangeRate(ConversionQuery query,
                    ExchangeRateBuilder builder, ExchangeRate sourceRate,
                    ExchangeRate target) {
  if (areBothBaseCurrencies(query)) {
    builder.setFactor(DefaultNumberValue.ONE);
    return builder.build();
  } else if (BASE_CURRENCY_CODE.equals(query.getCurrency().getCurrencyCode())) {
    if (Objects.isNull(sourceRate)) {
      return null;
    }
    return reverse(sourceRate);
  } else if (BASE_CURRENCY_CODE.equals(query.getBaseCurrency()
      .getCurrencyCode())) {
    return target;
  } else {
    ExchangeRate rate1 = getExchangeRate(
        query.toBuilder().setTermCurrency(Monetary.getCurrency(BASE_CURRENCY_CODE)).build());
    ExchangeRate rate2 = getExchangeRate(
        query.toBuilder().setBaseCurrency(Monetary.getCurrency(BASE_CURRENCY_CODE))
            .setTermCurrency(query.getCurrency()).build());
    if (Objects.nonNull(rate1) && Objects.nonNull(rate2)) {
      builder.setFactor(multiply(rate1.getFactor(), rate2.getFactor()));
      builder.setRateChain(rate1, rate2);
      return builder.build();
    }
    throw new CurrencyConversionException(query.getBaseCurrency(),
        query.getCurrency(), sourceRate.getContext());
  }
}
origin: org.javamoney/javamoney-tck

/**
 * Test correct rate evaluation for different provider chains, providers defined by the TCK.<p>
 * Hint do not use non TCK provider for this test, it will make results undeterministic.
 */
@Test(description = "4.3.4 Test correct rate evaluation for different conversion provider chains, " +
    "with duplicate provider entries.")
@SpecAssertion(id = "434-A1", section = "4.3.4")
public void testCorrectRateEvaluationInChain_sameProviders() {
  ExchangeRateProvider prov1 = MonetaryConversions
      .getExchangeRateProvider("TestRateProvider1", "TestRateProvider1", "TestRateProvider1");
  ExchangeRate rate = prov1.getExchangeRate("CHF", "EUR");
  AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 1);
  prov1 = MonetaryConversions.getExchangeRateProvider("TestRateProvider1", "TestRateProvider1");
  rate = prov1.getExchangeRate("CHF", "EUR");
  AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 1);
  prov1 = MonetaryConversions.getExchangeRateProvider("TestRateProvider1");
  rate = prov1.getExchangeRate("CHF", "EUR");
  AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 1);
}
origin: org.javamoney/javamoney-tck

/**
 * Ensure additional ConversionContext is passed correctly to SPIs.<p>
 * Hint: this assertion will require some custom SPIs to be registered and selected for chain inclusion!
 */
@Test(description = "4.3.3 Ensure additional ConversionQuery data is passed correctly to SPIs.")
@SpecAssertion(id = "433-A2", section = "4.3.3")
public void testPassingOverConversionContextToSPIs() {
  ExchangeRateProvider prov = MonetaryConversions.getExchangeRateProvider("TestRateProvider");
  ConversionQuery ctx = ConversionQueryBuilder.of().set(Locale.CANADA).set("Foo", "bar").setBaseCurrency(FOO_UNIT)
      .setTermCurrency(Monetary.getCurrency("XXX")).build();
  ExchangeRate rate = prov.getExchangeRate(ctx);
  AssertJUnit.assertNotNull("No test rate returned by getExchangeRate(ConversionQuery), " +
      "probably TestProvider is not correct registered.");
  AssertJUnit.assertEquals(
      "Text parameter Locale.class was not correctly passed to ExchangeRateProvider implementation.", "bar",
      rate.getContext().getText("Foo"));
  AssertJUnit.assertEquals(
      "Object parameter Locale.class was not correctly passed to ExchangeRateProvider implementation.",
      Locale.CANADA, rate.getContext().get(Locale.class));
}
origin: javax.money/money-api

/**
 * Allows to evaluate if this exchange rate is a derived exchange rate.
 * Derived exchange rates are defined by an ordered list of subconversions
 * with intermediate steps, whereas a direct conversion is possible in one
 * steps.
 * <p>
 * This method always returns {@code true}, if the chain contains more than
 * one rate. Direct rates, have also a chain, but with exact one rate.
 *
 * @return true, if the exchange rate is derived.
 */
default boolean isDerived() {
  return getExchangeRateChain().size() > 1;
}
origin: org.javamoney/javamoney-tck

@Override
public ExchangeRate getReversed(ExchangeRate rate) {
  ConversionQuery reverseQuery = rate.getContext().toQueryBuilder().setBaseCurrency(rate.getCurrency())
      .setTermCurrency(rate.getBaseCurrency()).build();
  if(isAvailable(reverseQuery)){
    return getExchangeRate(reverseQuery);
  }
  return null;
}
origin: org.javamoney/javamoney-tck

/**
 * Test access to conversion rates.<p>
 * Hint: this assertion will require multiple tests to be written!
 */
@Test(description = "4.3.3 Test access of Conversion Rates, using TCK provided rate provider.")
@SpecAssertion(id = "433-A1", section = "4.3.3")
public void testAccessKnownRates() {
  ExchangeRateProvider prov = MonetaryConversions.getExchangeRateProvider("TestRateProvider");
  // Use test provider
  for (CurrencyUnit base : Monetary.getCurrencies()) {
    if (base.equals(FOO_UNIT)) {
      continue;
    }
    ExchangeRate rate = prov.getExchangeRate(base, FOO_UNIT);
    AssertJUnit.assertNotNull(
        "Identity rate, accessed by getExchangeRate(CurrencyUnit, CurrencyUnit), is not defined for " +
            base.getCurrencyCode() + " -> " + FOO_UNIT.getCurrencyCode());
    AssertJUnit.assertEquals(rate.getBaseCurrency().getCurrencyCode(), base.getCurrencyCode());
    AssertJUnit.assertEquals(rate.getCurrency().getCurrencyCode(), FOO_UNIT.getCurrencyCode());
    AssertJUnit.assertEquals(rate.getFactor().intValueExact(), 2);
  }
}
origin: org.javamoney/javamoney-tck

/**
 * Test correct rate evaluation for different provider chains, providers defined by the TCK,
 * with historic rates.<p>
 * Hint do not use non TCK provider for this test, it will make results undeterministic.
 */
@Test(description = "4.3.4 Test correct rate evaluation for different conversion provider chains, " +
    "with historic rates.")
@SpecAssertion(id = "434-A2", section = "4.3.4")
public void testCorrectRateEvaluationInChainHistoric() {
  ExchangeRateProvider prov1 = MonetaryConversions
      .getExchangeRateProvider("TestRateProvider1", "TestRateProvider2", "TestRateProvider3");
  ExchangeRate rate = prov1.getExchangeRate("CHF", "EUR");
  AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 1);
  rate = prov1.getExchangeRate("EUR", "USD");
  AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 2);
  Calendar cal = GregorianCalendar.getInstance();
  cal.setTimeInMillis(0L);
  rate = prov1.getExchangeRate(
      ConversionQueryBuilder.of()
          .set(cal)
          .setBaseCurrency("EUR")
          .setTermCurrency("USD")
          .build());
  AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", 2, rate.getFactor().intValueExact());
}
origin: org.javamoney/javamoney-tck

  /**
   * Initialize the {@link Builder} with an {@link javax.money.convert.ExchangeRate}. This is
   * useful for creating a new rate, reusing some properties from an
   * existing one.
   *
   * @param rate the base rate
   * @return the Builder, for chaining.
   */
  public Builder setRate(ExchangeRate rate) {
    this.base = rate.getBaseCurrency();
    this.term = rate.getCurrency();
    this.conversionContext = rate.getContext();
    this.factor = rate.getFactor();
    this.rateChain = rate.getExchangeRateChain();
    this.term = rate.getCurrency();
    return this;
  }
}
origin: org.javamoney/javamoney-tck

@Override
public ExchangeRate getReversed(ExchangeRate rate) {
  ConversionQuery reverseQuery = rate.getContext().toQueryBuilder().setBaseCurrency(rate.getCurrency())
      .setTermCurrency(rate.getBaseCurrency()).build();
  if(isAvailable(reverseQuery)){
    return getExchangeRate(reverseQuery);
  }
  return null;
}
origin: org.javamoney/javamoney-tck

/**
 * Test access to conversion rates.<p>
 * Hint: this assertion will require multiple tests to be written!
 */
@Test(description = "4.3.3 Test access to exchange rates from TestRateProvider, using target currency code.")
@SpecAssertion(id = "433-A1", section = "4.3.3")
public void testAccessKnownRatesWithCodes() {
  ExchangeRateProvider prov = MonetaryConversions.getExchangeRateProvider("TestRateProvider");
  // Use test provider
  for (CurrencyUnit base : Monetary.getCurrencies()) {
    if (base.equals(FOO_UNIT)) {
      continue;
    }
    ExchangeRate rate = prov.getExchangeRate(base.getCurrencyCode(), "XXX");
    AssertJUnit
        .assertNotNull("Identity rate, accessed by getExchangeRate(String, String), is not defined for " +
            base.getCurrencyCode() + " -> " + FOO_UNIT.getCurrencyCode(), rate);
    AssertJUnit.assertEquals(rate.getBaseCurrency().getCurrencyCode(), base.getCurrencyCode());
    AssertJUnit.assertEquals(rate.getCurrency().getCurrencyCode(), "FOO");
    AssertJUnit.assertEquals(rate.getFactor().intValueExact(), 2);
  }
}
origin: org.javamoney/javamoney-tck

    .getExchangeRateProvider("TestRateProvider1", "TestRateProvider2", "TestRateProvider3");
ExchangeRate rate = prov1.getExchangeRate("CHF", "EUR");
AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 1);
prov1 = MonetaryConversions.getExchangeRateProvider("TestRateProvider1", "TestRateProvider2");
rate = prov1.getExchangeRate("EUR", "USD");
AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 2);
prov1 = MonetaryConversions.getExchangeRateProvider("TestRateProvider3");
rate = prov1.getExchangeRate("USD", "INR");
AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 3);
prov1 = MonetaryConversions
    .getExchangeRateProvider("TestRateProvider1", "TestRateProvider3", "TestRateProvider2");
rate = prov1.getExchangeRate("CHF", "EUR");
AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 1);
rate = prov1.getExchangeRate("EUR", "USD");
AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 2);
rate = prov1.getExchangeRate("USD", "INR");
AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 3);
AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 1);
prov1 = MonetaryConversions
    .getExchangeRateProvider("TestRateProvider2", "TestRateProvider1", "TestRateProvider3");
rate = prov1.getExchangeRate("EUR", "USD");
AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 2);
rate = prov1.getExchangeRate("USD", "INR");
AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 3);
        "TestRateProvider02");
rate = prov1.getExchangeRate("CHF", "EUR");
AssertJUnit.assertEquals("Invalid ExchangeRateProvider selected.", rate.getFactor().intValueExact(), 1);
origin: org.javamoney.moneta/moneta-core

/**
 * Sets the exchange rate type
 *
 * @param rate the {@link javax.money.convert.ExchangeRate} to be applied
 */
public ExchangeRateBuilder(ExchangeRate rate) {
  setContext(rate.getContext());
  setFactor(rate.getFactor());
  setTerm(rate.getCurrency());
  setBase(rate.getBaseCurrency());
  setRateChain(rate.getExchangeRateChain());
}
origin: org.javamoney/javamoney-tck

@Override
public ExchangeRate getReversed(ExchangeRate rate) {
  ConversionQuery reverseQuery = rate.getContext().toQueryBuilder().setBaseCurrency(rate.getCurrency())
      .setTermCurrency(rate.getBaseCurrency()).build();
  if(isAvailable(reverseQuery)){
    return getExchangeRate(reverseQuery);
  }
  return null;
}
origin: org.javamoney/javamoney-tck

/**
 * Test access to conversion rates.<p>
 * Hint: this assertion will require multiple tests to be written!
 */
@Test(description = "4.3.3 Test access to exchange rates from TestRateProvider, using target CUrrencyUnit.")
@SpecAssertion(id = "433-A1", section = "4.3.3")
public void testAccessKnownRatesAndContext() {
  ExchangeRateProvider prov = MonetaryConversions.getExchangeRateProvider("TestRateProvider");
  // Use test provider
  for (CurrencyUnit base : Monetary.getCurrencies()) {
    if (base.equals(FOO_UNIT)) {
      continue;
    }
    ExchangeRate rate = prov.getExchangeRate(base, FOO_UNIT);
    AssertJUnit.assertNotNull(
        "Identity rate, accessed by getExchangeRate(CurrencyUnit, CurrencyUnit, ConversionContext), " +
            "is not defined for " +
            base.getCurrencyCode() + " -> " + FOO_UNIT.getCurrencyCode());
    AssertJUnit.assertEquals(rate.getBaseCurrency().getCurrencyCode(), base.getCurrencyCode());
    AssertJUnit.assertEquals(rate.getCurrency().getCurrencyCode(), FOO_UNIT.getCurrencyCode());
    AssertJUnit.assertEquals(rate.getFactor().intValueExact(), 2);
  }
}
origin: org.javamoney/javamoney-tck

/**
 * Sets the exchange rate type
 *
 * @param rate the {@link javax.money.convert.ExchangeRate} to be applied
 */
public Builder(ExchangeRate rate) {
  setContext(rate.getContext());
  setFactor(rate.getFactor());
  setTerm(rate.getCurrency());
  setBase(rate.getBaseCurrency());
  setRateChain(rate.getExchangeRateChain());
}
origin: org.javamoney.moneta/moneta-core

@Override
public int compareTo(ExchangeRate o) {
  Objects.requireNonNull(o);
  int compare = this.getBaseCurrency().getCurrencyCode().compareTo(o.getBaseCurrency().getCurrencyCode());
  if (compare == 0) {
    compare = this.getCurrency().getCurrencyCode().compareTo(o.getCurrency().getCurrencyCode());
  }
  if (compare == 0) {
    compare = this.getContext().getProviderName().compareTo(o.getContext().getProviderName());
  }
  return compare;
}
javax.money.convertExchangeRate

Javadoc

This class models an exchange rate, which defines the factor the numeric value of a base amount in some currency 'A' must be multiplied to get the corresponding amount in the terminating currency 'B'. Hereby
  • an exchange rate always models one rate from a base (source) to a term (target) CurrencyUnit.
  • an exchange rate is always bound to a rate type, which typically matches the data source of the conversion data, e.g. different credit card providers may use different rates for the same conversion.
  • an exchange rate may restrict its validity. In most of the use cases a rates' validity will be well defined, but it is also possible that the data provider is not able to support the rate's validity, leaving it undefined-
  • an exchange rate has a provider, which is responsible for defining the rate. A provider hereby may be, but must not be the same as the rate's data source.
  • an exchange rate can be a direct rate, where its factor is represented by a single conversion step. Or it can model a derived rate, where multiple conversion steps are required to define the overall base/term conversion. In case of derived rates the chained rates define the overall factor, by multiplying the individual chain rate factors. Of course, this also requires that each subsequent rate's base currency in the chain does match the previous term currency (and vice versa):
  • Whereas the factor should be directly implied by the format rate chain for derived rates, this is obviously not the case for the validity range, since rates can have a undefined validity range. Nevertheless in many cases also the validity range can (but must not) be derived from the rate chain.
  • Finally a conversion rate is always unidirectional. There might be cases where the reciprocal value of #getFactor()} matches the correct reverse rate. But in most use cases the reverse rate either has a different rate (not equal to the reciprocal value), or might not be defined at all. Therefore for reversing a ExchangeRate one must access an ExchangeRateProvider and query for the reverse rate.

The class also implements Comparable to allow sorting of multiple exchange rates using the following sorting order;

  • Exchange rate type
  • Exchange rate provider
  • base currency
  • term currency

Finally ExchangeRate is modeled as an immutable and thread safe type. Also exchange rates are Serializable, hereby serializing in the following form and order:

  • The base CurrencyUnit
  • The target CurrencyUnit
  • The factor (NumberValue)
  • The ConversionContext
  • The rate chain

Implementation Specification

Implementations of this interface

  • must be Comparable(with ExchangeRate)
  • must implement equals/hashCode considering #getBaseCurrency, #getCurrency, #getFactor and #getContext.
  • should be thread-safe
  • should be serializable
  • should provide a fluent builder API for constructing new rate instances easily.

Most used methods

  • getBaseCurrency
    Get the base (source) CurrencyUnit.
  • getCurrency
    Get the term (target) CurrencyUnit.
  • getContext
    Access the ConversionContext of ExchangeRate.
  • getExchangeRateChain
    Access the chain of exchange rates.
  • getFactor
    Access the rate's bid factor.

Popular in Java

  • Reading from database using SQL prepared statement
  • runOnUiThread (Activity)
  • findViewById (Activity)
  • getExternalFilesDir (Context)
  • BufferedInputStream (java.io)
    A BufferedInputStream adds functionality to another input stream-namely, the ability to buffer the i
  • Arrays (java.util)
    This class contains various methods for manipulating arrays (such as sorting and searching). This cl
  • Hashtable (java.util)
    A plug-in replacement for JDK1.5 java.util.Hashtable. This version is based on org.cliffc.high_scale
  • JCheckBox (javax.swing)
  • StringUtils (org.apache.commons.lang)
    Operations on java.lang.String that arenull safe. * IsEmpty/IsBlank - checks if a String contains
  • Location (org.springframework.beans.factory.parsing)
    Class that models an arbitrary location in a Resource.Typically used to track the location of proble
  • Top 12 Jupyter Notebook extensions
Tabnine Logo
  • Products

    Search for Java codeSearch for JavaScript code
  • IDE Plugins

    IntelliJ IDEAWebStormVisual StudioAndroid StudioEclipseVisual Studio CodePyCharmSublime TextPhpStormVimGoLandRubyMineEmacsJupyter NotebookJupyter LabRiderDataGripAppCode
  • Company

    About UsContact UsCareers
  • Resources

    FAQBlogTabnine AcademyTerms of usePrivacy policyJava Code IndexJavascript Code Index
Get Tabnine for your IDE now