/*
 * Copyright 2012-2016 Credit Suisse
 * Copyright 2018-2020 Werner Keil, Otavio Santana, Trivadis AG
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package javax.money.convert;

import javax.money.AbstractContext;

This class models a context for which a ExchangeRate is valid. It allows to define different settings such as
  • the required RateType,
  • the required target timestamp
  • the required validity duration
  • additional non standard or extended attributes determined by the implementations participating in the ExchangeRateProvider chain.
This class is immutable, thread-safe and serializable.
Author:Anatole Tresch
/** * This class models a context for which a {@link ExchangeRate} is valid. It allows to define * different settings such as * <ul> * <li>the required {@link javax.money.convert.RateType}, </li> * <li>the required target timestamp</li> * <li>the required validity duration</li> * <li>additional non standard or extended attributes determined by the implementations participating in the * ExchangeRateProvider chain.</li> * </ul> * This class is immutable, thread-safe and serializable. * * @author Anatole Tresch */
public final class ConversionContext extends AbstractContext { private static final long serialVersionUID = 2386546659786888877L;
ConversionContext that queries any conversion available.
/** * ConversionContext that queries any conversion available. */
public static final ConversionContext ANY_CONVERSION = new ConversionContextBuilder().setRateType(RateType.ANY).build();
ConversionContext querying for any deferred rates.
/** * ConversionContext querying for any deferred rates. */
public static final ConversionContext DEFERRED_CONVERSION = new ConversionContextBuilder().setRateType(RateType.DEFERRED).build();
ConversionContext querying for any historic rates.
/** * ConversionContext querying for any historic rates. */
public static final ConversionContext HISTORIC_CONVERSION = new ConversionContextBuilder().setRateType(RateType.HISTORIC).build();
ConversionContext querying for real-time rates.
/** * ConversionContext querying for real-time rates. */
public static final ConversionContext REALTIME_CONVERSION = new ConversionContextBuilder().setRateType(RateType.REALTIME).build();
ConversionContext querying for any other rates.
/** * ConversionContext querying for any other rates. */
public static final ConversionContext OTHER_CONVERSION = new ConversionContextBuilder().setRateType(RateType.OTHER).build();
Private constructor, used by ConversionContextBuilder.
Params:
  • builder – the Builder.
/** * Private constructor, used by {@link javax.money.convert.ConversionContextBuilder}. * * @param builder the Builder. */
ConversionContext(ConversionContextBuilder builder) { super(builder); }
Get the deferred flag. Exchange rates can be deferred or real.time.
Returns:the deferred flag, or {code null}.
/** * Get the deferred flag. Exchange rates can be deferred or real.time. * * @return the deferred flag, or {code null}. */
public RateType getRateType() { return get(RateType.class); }
Get the provider of this rate. The provider of a rate can have different contexts in different usage scenarios, such as the service type or the stock exchange.
Returns:the provider, or {code null}.
/** * Get the provider of this rate. The provider of a rate can have different * contexts in different usage scenarios, such as the service type or the * stock exchange. * * @return the provider, or {code null}. */
public String getProviderName() { return getText("provider"); }
Creates a conversion query builder with the context data from this context instance.
Returns:a corresponding conversion query builder instance, never null.
/** * Creates a conversion query builder with the context data from this context instance. * * @return a corresponding conversion query builder instance, never null. */
public ConversionContextBuilder toBuilder() { return ConversionContextBuilder.of(this); }
Creates a query builder based on this context.
Returns:a new instance of ConversionQueryBuilder, never null.
/** * Creates a query builder based on this context. * * @return a new instance of {@link ConversionQueryBuilder}, never null. */
public ConversionQueryBuilder toQueryBuilder() { return ConversionQueryBuilder.of().importContext(this); }
Simple factory method for ConversionContext. For more possibilities to initialize a ConversionContext, please use a ConversionContextBuilder,
Params:
  • provider – the provider name, not null
  • rateType – the required rate type.
Returns:a new instance of ConversionContext
/** * Simple factory method for {@link ConversionContext}. For more * possibilities to initialize a {@link ConversionContext}, please use a * {@link javax.money.convert.ConversionContextBuilder}, * * @param provider the provider name, not {@code null} * @param rateType the required rate type. * @return a new instance of {@link ConversionContext} */
public static ConversionContext of(String provider, RateType rateType) { ConversionContextBuilder b = new ConversionContextBuilder(); b.setRateType(rateType); b.setProviderName(provider); return b.build(); }
Creates a new ConversionContext for the given ProviderContext and the given RateType.

Note: for adding additional attributes use (ProviderContext, RateType).

Params:
  • providerContext – the provider context, not null.
  • rateType – the rate type, not null.
Returns:a corresponding instance of ConversionContext.
/** * Creates a new ConversionContext for the given {@link ProviderContext} and the given {@link RateType}. * <p> * <i>Note:</i> for adding additional attributes use {@link javax.money.convert.ConversionContextBuilder * (ProviderContext, RateType)}. * * @param providerContext the provider context, not null. * @param rateType the rate type, not null. * @return a corresponding instance of ConversionContext. */
public static ConversionContext from(ProviderContext providerContext, RateType rateType) { return ConversionContextBuilder.create(providerContext, rateType).build(); }
Creates a ConversionContext for accessing rates of the given type, without specifying the rate's provider.
Params:
  • rateType – the required rate type.
Returns:a new instance of ConversionContext
/** * Creates a {@link ConversionContext} for accessing rates of the given * type, without specifying the rate's provider. * * @param rateType the required rate type. * @return a new instance of {@link ConversionContext} */
public static ConversionContext of(RateType rateType) { switch (rateType) { case DEFERRED: return DEFERRED_CONVERSION; case HISTORIC: return HISTORIC_CONVERSION; case REALTIME: return REALTIME_CONVERSION; case OTHER: return OTHER_CONVERSION; case ANY: default: return ANY_CONVERSION; } }
Simple factory method for ConversionContext. For more possibilities to initialize a ConversionContext, please use a ConversionContextBuilder,
Returns:a new instance of ConversionContext
/** * Simple factory method for {@link ConversionContext}. For more * possibilities to initialize a {@link ConversionContext}, please use a * {@link javax.money.convert.ConversionContextBuilder}, * * @return a new instance of {@link ConversionContext} */
public static ConversionContext of() { return ANY_CONVERSION; } }