001/*
002 * CREDIT SUISSE IS WILLING TO LICENSE THIS SPECIFICATION TO YOU ONLY UPON THE CONDITION THAT YOU
003 * ACCEPT ALL OF THE TERMS CONTAINED IN THIS AGREEMENT. PLEASE READ THE TERMS AND CONDITIONS OF THIS
004 * AGREEMENT CAREFULLY. BY DOWNLOADING THIS SPECIFICATION, YOU ACCEPT THE TERMS AND CONDITIONS OF
005 * THE AGREEMENT. IF YOU ARE NOT WILLING TO BE BOUND BY IT, SELECT THE "DECLINE" BUTTON AT THE
006 * BOTTOM OF THIS PAGE. Specification: JSR-354 Money and Currency API ("Specification") Copyright
007 * (c) 2012-2013, Credit Suisse All rights reserved.
008 */
009package org.javamoney.moneta.format.internal;
010
011import java.text.DecimalFormat;
012import java.text.DecimalFormatSymbols;
013import java.util.Arrays;
014import java.util.Collection;
015import java.util.Locale;
016
017import javax.money.format.AmountFormatSymbols;
018import javax.money.format.AmountStyle;
019import javax.money.format.CurrencyStyle;
020import javax.money.spi.AmountStyleProviderSpi;
021
022/**
023 * Implementation of {@link AmountStyleProviderSpi} based on the corresponding {@link DecimalFormat}
024 * .
025 * 
026 * @author Anatole Tresch
027 */
028public class DefaultAmountStyleProviderSpi implements
029                AmountStyleProviderSpi {
030        /*
031         * (non-Javadoc)
032         * @see javax.money.spi.AmountStyleProviderSpi#getAmountStyle(java.util.Locale)
033         */
034        @Override
035        public AmountStyle getAmountStyle(Locale locale) {
036                DecimalFormat df = (DecimalFormat) DecimalFormat
037                                .getCurrencyInstance(locale);
038                return new AmountStyle.Builder(locale)
039                                .setGroupingSizes(df.getGroupingSize())
040                                .setPattern(df.toPattern())
041                                .setCurrencyStyle(CurrencyStyle.CODE)
042                                .setSymbols(AmountFormatSymbols.of(locale))
043                                .build();
044        }
045
046        /*
047         * (non-Javadoc)
048         * @see javax.money.spi.AmountStyleProviderSpi#getSupportedLocales()
049         */
050        @Override
051        public Collection<Locale> getSupportedLocales() {
052                return Arrays.asList(DecimalFormatSymbols.getAvailableLocales());
053        }
054
055}