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.internal; 010 011import java.math.RoundingMode; 012 013import javax.money.CurrencyUnit; 014import javax.money.MonetaryAmountFactory; 015import javax.money.MonetaryContext; 016import javax.money.MonetaryContext.AmountFlavor; 017 018import org.javamoney.moneta.FastMoney; 019import org.javamoney.moneta.spi.AbstractAmountFactory; 020 021/** 022 * Implementation of {@link MonetaryAmountFactory} creating instances of {@link FastMoney}. 023 * 024 * @author Anatole Tresch 025 */ 026public class FastMoneyAmountFactory extends AbstractAmountFactory<FastMoney> { 027 028 static final MonetaryContext DEFAULT_CONTEXT = new MonetaryContext.Builder( 029 FastMoney.class).setPrecision(18) 030 .setMaxScale(5).setFixedScale(true) 031 .set(RoundingMode.HALF_EVEN) 032 .setFlavor(AmountFlavor.PERFORMANCE).create(); 033 static final MonetaryContext MAX_CONTEXT = new MonetaryContext.Builder( 034 FastMoney.class).setPrecision(18) 035 .setMaxScale(5).setFixedScale(true) 036 .set(RoundingMode.HALF_EVEN) 037 .setFlavor(AmountFlavor.PERFORMANCE).create(); 038 039 @Override 040 protected FastMoney create(CurrencyUnit currency, Number number, 041 MonetaryContext monetaryContext) { 042 return FastMoney.of(currency, number); 043 } 044 045 @Override 046 public Class<FastMoney> getAmountType() { 047 return FastMoney.class; 048 } 049 050 @Override 051 protected MonetaryContext loadDefaultMonetaryContext() { 052 return DEFAULT_CONTEXT; 053 } 054 055 @Override 056 protected MonetaryContext loadMaxMonetaryContext() { 057 return MAX_CONTEXT; 058 } 059 060}