1 package org.apache.maven.doxia.module.fo;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.doxia.sink.Sink;
23
24
25
26
27
28
29
30 public class NumberedListItem
31 {
32
33
34 private static final String[] DECIMALS =
35 {
36 "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
37 "11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
38 "21", "22", "23", "24", "25", "26"
39 };
40
41
42 private static final String[] LOWER_ALPHAS =
43 {
44 "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
45 "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
46 "u", "v", "w", "x", "y", "z"
47 };
48
49
50 private static final String[] UPPER_ALPHAS =
51 {
52 "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
53 "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
54 "U", "V", "W", "X", "Y", "Z"
55 };
56
57
58 private static final String[] LOWER_ROMANS =
59 {
60 "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix", "x",
61 "xi", "xii", "xiii", "xiv", "xv", "xvi", "xvii", "xviii", "xix", "xx",
62 "xxi", "xxii", "xxiii", "xxiv", "xxv", "xxvi"
63 };
64
65
66 private static final String[] UPPER_ROMANS =
67 {
68 "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X",
69 "XI", "XII", "XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX",
70 "XXI", "XXII", "XXIII", "XXIV", "XXV", "XXVI"
71 };
72
73
74 private int count;
75
76
77 private final int format;
78
79
80
81
82
83
84
85 public NumberedListItem( int itemFormat )
86 {
87 if ( !isValidItemFormat( itemFormat ) )
88 {
89 throw new IllegalArgumentException( "Unknown item format!" );
90 }
91
92 this.format = itemFormat;
93 this.count = 0;
94 }
95
96
97
98
99
100
101 public int count()
102 {
103 return count;
104 }
105
106
107
108
109
110
111 public int format()
112 {
113 return format;
114 }
115
116
117
118
119 public void next()
120 {
121 count++;
122 }
123
124
125
126
127
128
129 public String getListItemSymbol()
130 {
131 int j = count() - 1;
132
133 if ( j < 0 )
134 {
135 j = 0;
136 }
137 else if ( j > DECIMALS.length - 1 )
138 {
139 j = DECIMALS.length - 1;
140 }
141
142 String symbol;
143
144 switch ( format() )
145 {
146 case Sink.NUMBERING_UPPER_ALPHA:
147 symbol = UPPER_ALPHAS[j];
148 break;
149 case Sink.NUMBERING_LOWER_ALPHA:
150 symbol = LOWER_ALPHAS[j];
151 break;
152 case Sink.NUMBERING_UPPER_ROMAN:
153 symbol = UPPER_ROMANS[j];
154 break;
155 case Sink.NUMBERING_LOWER_ROMAN:
156 symbol = LOWER_ROMANS[j];
157 break;
158 case Sink.NUMBERING_DECIMAL:
159 default:
160 symbol = DECIMALS[j];
161 }
162
163 return symbol + ".";
164 }
165
166
167
168
169
170
171
172
173 private boolean isValidItemFormat( int itemFormat )
174 {
175 return ( ( itemFormat == Sink.NUMBERING_UPPER_ALPHA )
176 || ( itemFormat == Sink.NUMBERING_LOWER_ALPHA )
177 || ( itemFormat == Sink.NUMBERING_UPPER_ROMAN )
178 || ( itemFormat == Sink.NUMBERING_LOWER_ROMAN )
179 || ( itemFormat == Sink.NUMBERING_DECIMAL ) );
180 }
181
182 }