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 }