All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.commercetools.sunrise.framework.localization.CurrencyFromCountryProvider Maven / Gradle / Ivy

The newest version!
package com.commercetools.sunrise.framework.localization;

import com.commercetools.sunrise.ctp.project.ProjectContext;
import com.neovisionaries.i18n.CountryCode;

import javax.inject.Inject;
import javax.inject.Provider;
import javax.money.CurrencyUnit;
import javax.money.Monetary;
import java.util.Optional;

/**
 * Provides the {@link CurrencyUnit} corresponding to the injected {@link CountryCode}.
 */
public final class CurrencyFromCountryProvider implements Provider {

    private final CountryCode country;
    private final ProjectContext projectContext;

    @Inject
    CurrencyFromCountryProvider(final CountryCode country, final ProjectContext projectContext) {
        this.country = country;
        this.projectContext = projectContext;
    }

    @Override
    public CurrencyUnit get() {
        return findCurrentCurrency()
                .filter(projectContext::isCurrencySupported)
                .orElseGet(projectContext::defaultCurrency);
    }

    private Optional findCurrentCurrency() {
        return Optional.ofNullable(country.getCurrency())
                .map(countryCurrency -> Monetary.getCurrency(countryCurrency.getCurrencyCode()));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy