View Javadoc

1   /*
2    *  Copyright 2001-2005 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.time.format;
17  
18  import java.io.IOException;
19  import java.io.Writer;
20  import java.util.Locale;
21  
22  import org.joda.time.Chronology;
23  import org.joda.time.DateTimeZone;
24  import org.joda.time.ReadablePartial;
25  
26  /**
27   * Internal interface for creating textual representations of datetimes.
28   * <p>
29   * Application users will rarely use this class directly. Instead, you
30   * will use one of the factory classes to create a {@link DateTimeFormatter}.
31   * <p>
32   * The factory classes are:<br />
33   * - {@link DateTimeFormatterBuilder}<br />
34   * - {@link DateTimeFormat}<br />
35   * - {@link ISODateTimeFormat}<br />
36   *
37   * @author Brian S O'Neill
38   * @author Stephen Colebourne
39   * @see DateTimeFormatterBuilder
40   * @see DateTimeFormat
41   * @see ISODateTimeFormat
42   * @since 1.0
43   */
44  public interface DateTimePrinter {
45  
46      /**
47       * Returns the expected maximum number of characters produced.
48       * The actual amount should rarely exceed this estimate.
49       * 
50       * @return the estimated length
51       */
52      int estimatePrintedLength();
53  
54      //-----------------------------------------------------------------------
55      /**
56       * Prints an instant from milliseconds since 1970-01-01T00:00:00Z,
57       * using the given Chronology.
58       *
59       * @param buf  formatted instant is appended to this buffer, not null
60       * @param instant  millis since 1970-01-01T00:00:00Z
61       * @param chrono  the chronology to use, not null
62       * @param displayOffset  if a time zone offset is printed, force it to use
63       * this millisecond value
64       * @param displayZone  the time zone to use, null means local time
65       * @param locale  the locale to use, null means default locale
66       */
67      void printTo(StringBuffer buf, long instant, Chronology chrono,
68                   int displayOffset, DateTimeZone displayZone, Locale locale);
69  
70      /**
71       * Prints an instant from milliseconds since 1970-01-01T00:00:00Z,
72       * using the given Chronology.
73       *
74       * @param out  formatted instant is written out
75       * @param instant  millis since 1970-01-01T00:00:00Z
76       * @param chrono  the chronology to use, not null
77       * @param displayOffset  if a time zone offset is printed, force it to use
78       * this millisecond value
79       * @param displayZone  the time zone to use, null means local time
80       * @param locale  the locale to use, null means default locale
81       */
82      void printTo(Writer out, long instant, Chronology chrono,
83                   int displayOffset, DateTimeZone displayZone, Locale locale) throws IOException;
84  
85      //-----------------------------------------------------------------------
86      /**
87       * Prints a ReadablePartial.
88       *
89       * @param buf  formatted partial is appended to this buffer, not null
90       * @param partial  partial to format, not null
91       * @param locale  the locale to use, null means default locale
92       */
93      void printTo(StringBuffer buf, ReadablePartial partial, Locale locale);
94  
95      /**
96       * Prints a ReadablePartial.
97       *
98       * @param out  formatted partial is written out, not null
99       * @param partial  partial to format, not null
100      * @param locale  the locale to use, null means default locale
101      */
102     void printTo(Writer out, ReadablePartial partial, Locale locale) throws IOException;
103 
104 }