001package org.javamoney.moneta.internal; 002 003import org.javamoney.moneta.RoundedMoney; 004import org.javamoney.moneta.spi.AbstractAmountFactory; 005 006import javax.money.CurrencyUnit; 007import javax.money.MonetaryContext; 008import javax.money.MonetaryContext.AmountFlavor; 009import java.math.RoundingMode; 010 011/** 012 * Implementation of {@link javax.money.MonetaryAmountFactory} creating instances of {@link org.javamoney.moneta 013 * .RoundedMoney}. 014 * 015 * @author Anatole Tresch 016 */ 017public class RoundedMoneyAmountFactory extends AbstractAmountFactory<RoundedMoney>{ 018 019 static final MonetaryContext DEFAULT_CONTEXT = 020 new MonetaryContext.Builder(RoundedMoney.class).setPrecision(0).set(RoundingMode.HALF_EVEN) 021 .setFlavor(AmountFlavor.UNDEFINED).create(); 022 static final MonetaryContext MAX_CONTEXT = 023 new MonetaryContext.Builder(RoundedMoney.class).setPrecision(0).set(RoundingMode.HALF_EVEN) 024 .setFlavor(AmountFlavor.UNDEFINED).create(); 025 026 /* 027 * (non-Javadoc) 028 * @see org.javamoney.moneta.spi.AbstractAmountFactory#create(javax.money.CurrencyUnit, 029 * java.lang.Number, javax.money.MonetaryContext) 030 */ 031 @Override 032 protected RoundedMoney create(CurrencyUnit currency, Number number, MonetaryContext monetaryContext){ 033 return RoundedMoney.of(currency, number); 034 } 035 036 /* 037 * (non-Javadoc) 038 * @see javax.money.MonetaryAmountFactory#getAmountType() 039 */ 040 @Override 041 public Class<RoundedMoney> getAmountType(){ 042 return RoundedMoney.class; 043 } 044 045 /* 046 * (non-Javadoc) 047 * @see org.javamoney.moneta.spi.AbstractAmountFactory#loadDefaultMonetaryContext() 048 */ 049 @Override 050 protected MonetaryContext loadDefaultMonetaryContext(){ 051 return DEFAULT_CONTEXT; 052 } 053 054 /* 055 * (non-Javadoc) 056 * @see org.javamoney.moneta.spi.AbstractAmountFactory#loadMaxMonetaryContext() 057 */ 058 @Override 059 protected MonetaryContext loadMaxMonetaryContext(){ 060 return MAX_CONTEXT; 061 } 062 063}