/** * Creates a new ProviderContext based on the provider id and rate type(s). * * @param provider the provider id, not null. * @param rateTypes the required {@link RateType}s, not null * @return a new {@link ProviderContext} instance. */ public static ProviderContext of(String provider, RateType rateType, RateType... rateTypes) { return ProviderContextBuilder.of(provider, rateType, rateTypes).build(); }
/** * Create a new ProviderContextBuilder, hereby using the given {@link ProviderContext} * 's values as defaults. This allows changing an existing * {@link ProviderContext} easily. * * @param context the context, not {@code null} * @return a new {@link javax.money.convert.ProviderContextBuilder} instance, never null. */ public static ProviderContextBuilder create(ProviderContext context) { return new ProviderContextBuilder(context); }
/** * Creates a {@link ProviderContextBuilder} initialized with this instance's data. * * @return a new {@link ProviderContextBuilder}, never {@code null}. */ public ProviderContextBuilder toBuilder() { return ProviderContextBuilder.create(this); }
private static ProviderContext createContext(Iterable<ExchangeRateProvider> providers) { Set<RateType> rateTypeSet = new HashSet<>(); StringBuilder providerName = new StringBuilder("Compound: "); List<ProviderContext> childContextList = new ArrayList<>(); for (ExchangeRateProvider exchangeRateProvider : providers) { childContextList.add(exchangeRateProvider.getContext()); providerName.append(exchangeRateProvider.getContext().getProviderName()); providerName.append(',' ); rateTypeSet.addAll(exchangeRateProvider.getContext().getRateTypes()); } providerName.setLength(providerName.length() - 1); ProviderContextBuilder builder = ProviderContextBuilder.of(providerName.toString(), rateTypeSet); builder.set(CHILD_PROVIDER_CONTEXTS_KEY, childContextList); return builder.build(); }
/** * Create a new Builder instance. * * @param provider the provider name, not {@code null}. * @param rateTypes the rate types, not null and not empty. */ private ProviderContextBuilder(String provider, RateType rateType, RateType... rateTypes) { Objects.requireNonNull(rateType, "At least one RateType is required."); Objects.requireNonNull(rateTypes); setProviderName(provider); Set<RateType> rts = new HashSet<>(); rts.add(rateType); Collections.addAll(rts, rateTypes); set(ProviderContext.KEY_RATE_TYPES, rts); }
/** * Create a new Builder, hereby using the given {@link ProviderContext} * 's values as defaults. This allows changing an existing * {@link ProviderContext} easily. * * @param context the context, not {@code null} */ private ProviderContextBuilder(ProviderContext context) { importContext(context); Set<RateType> rts = new HashSet<>(); rts.addAll(context.getRateTypes()); set(ProviderContext.KEY_RATE_TYPES, rts); }
/** * Set the rate types. * * @param rateTypes the rate types, not null and not empty. * @return this, for chaining. * @throws IllegalArgumentException when not at least one {@link RateType} is provided. */ @SuppressWarnings({"unchecked", "rawtypes"}) public ProviderContextBuilder setRateTypes(Collection<RateType> rateTypes) { Objects.requireNonNull(rateTypes); if (rateTypes.isEmpty()) { throw new IllegalArgumentException("At least one RateType is required."); } Set rtSet = new HashSet<>(); rtSet.addAll(rateTypes); set(ProviderContext.KEY_RATE_TYPES, rtSet); return this; }
/** * Set the rate types. * * @param rateTypes the rate types, not null and not empty. * @return this, for chaining. * @throws IllegalArgumentException when not at least one {@link RateType} is provided. */ public ProviderContextBuilder setRateTypes(RateType... rateTypes) { return setRateTypes(Arrays.asList(rateTypes)); }
/** * Create a new Builder instance. * * @param provider the provider name, not {@code null}. * @param rateTypes the rate types, not null and not empty. */ private ProviderContextBuilder(String provider, Collection<RateType> rateTypes) { Objects.requireNonNull(rateTypes); if (rateTypes.isEmpty()) { throw new IllegalArgumentException("At least one RateType is required."); } setProviderName(provider); Set<RateType> rts = new HashSet<>(); rts.addAll(rateTypes); set("rateTypes", rts); }
/** * Create a new ProviderContextBuilder instance. * * @param provider the provider name, not {@code null}. * @param rateTypes the rate types, not null and not empty. * @return a new {@link javax.money.convert.ProviderContextBuilder} instance, never null. */ public static ProviderContextBuilder of(String provider, RateType rateType, RateType... rateTypes) { return new ProviderContextBuilder(provider, rateType, rateTypes); }
/** * Create a new ProviderContextBuilder instance. * * @param provider the provider name, not {@code null}. * @param rateTypes the rate types, not null and not empty. * @return a new {@link javax.money.convert.ProviderContextBuilder} instance, never null. */ public static ProviderContextBuilder of(String provider, Collection<RateType> rateTypes) { return new ProviderContextBuilder(provider, rateTypes); }