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}