View Javadoc

1   /*
2    *  Copyright 2009-2013 Stephen Colebourne
3    *
4    *  Licensed under the Apache License, Version 2.0 (the "License");
5    *  you may not use this file except in compliance with the License.
6    *  You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   *  Unless required by applicable law or agreed to in writing, software
11   *  distributed under the License is distributed on an "AS IS" BASIS,
12   *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   *  See the License for the specific language governing permissions and
14   *  limitations under the License.
15   */
16  package org.joda.money.format;
17  
18  import java.io.IOException;
19  
20  import org.joda.money.BigMoney;
21  
22  /**
23   * Prints part of a monetary value to the output appendable.
24   * <p>
25   * The printer may print any part, or the whole, of the input {@link BigMoney}.
26   * Typically, a complete print is constructed from a number of smaller printers
27   * that have been combined using {@link MoneyFormatterBuilder}.
28   * <p>
29   * This interface must be implemented with care to ensure other classes operate correctly.
30   * All instantiable implementations must be thread-safe, and should generally
31   * be final and immutable.
32   */
33  public interface MoneyPrinter {
34  
35      /**
36       * Prints part of a monetary value to the output appendable.
37       * <p>
38       * The implementation determines what to append, which may be some or all
39       * of the data held in the {@code BigMoney}.
40       * <p>
41       * The context is not a thread-safe object and a new instance will be created
42       * for each print. The context must not be stored in an instance variable
43       * or shared with any other threads.
44       * 
45       * @param context  the context being used, not null
46       * @param appendable  the appendable to add to, not null
47       * @param money  the money to print, not null
48       * @throws MoneyFormatException if there is a problem while printing
49       * @throws IOException if an IO exception occurs
50       */
51      void print(MoneyPrintContext context, Appendable appendable, BigMoney money) throws IOException;
52  
53  }