1 package org.apache.maven.plugin.trac;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.text.SimpleDateFormat;
23 import java.util.ArrayList;
24 import java.util.List;
25 import java.util.ResourceBundle;
26
27 import org.apache.maven.doxia.sink.Sink;
28
29
30
31
32
33
34
35 public class TracReportGenerator
36 {
37
38 public TracReportGenerator()
39 {
40
41 }
42
43 public void doGenerateEmptyReport( ResourceBundle bundle, Sink sink )
44 {
45 sinkBeginReport( sink, bundle );
46
47 sink.text( bundle.getString( "report.trac.error" ) );
48
49 sinkEndReport( sink );
50 }
51
52 public void doGenerateReport( ResourceBundle bundle, Sink sink, ArrayList ticketList )
53 {
54
55 sinkBeginReport( sink, bundle );
56
57 constructHeaderRow( sink, ticketList, bundle );
58
59 constructDetailRows( sink, ticketList, bundle );
60
61 sinkEndReport( sink );
62 }
63
64 private void constructHeaderRow( Sink sink, List ticketList, ResourceBundle bundle )
65 {
66 if ( ticketList == null )
67 {
68 return;
69 }
70
71 sink.table();
72
73 sink.tableRow();
74
75 sinkHeader( sink, bundle.getString( "report.trac.label.id" ) );
76
77 sinkHeader( sink, bundle.getString( "report.trac.label.type" ) );
78
79 sinkHeader( sink, bundle.getString( "report.trac.label.summary" ) );
80
81 sinkHeader( sink, bundle.getString( "report.trac.label.owner" ) );
82
83 sinkHeader( sink, bundle.getString( "report.trac.label.reporter" ) );
84
85 sinkHeader( sink, bundle.getString( "report.trac.label.priority" ) );
86
87 sinkHeader( sink, bundle.getString( "report.trac.label.status" ) );
88
89 sinkHeader( sink, bundle.getString( "report.trac.label.resolution" ) );
90
91 sinkHeader( sink, bundle.getString( "report.trac.label.created" ) );
92
93 sinkHeader( sink, bundle.getString( "report.trac.label.changed" ) );
94
95 sink.tableRow_();
96 }
97
98 private void constructDetailRows( Sink sink, List ticketList, ResourceBundle bundle )
99 {
100 if ( ticketList == null )
101 {
102 return;
103 }
104
105 for ( int idx = 0; idx < ticketList.size(); idx++ )
106 {
107 SimpleDateFormat sdf = new SimpleDateFormat( bundle.getString( "report.trac.dateformat" ) );
108
109 TracTicket ticket = (TracTicket) ticketList.get( idx );
110
111 sink.tableRow();
112
113 sink.tableCell();
114
115 sink.link( ticket.getLink() );
116
117 sink.text( ticket.getId() );
118
119 sink.link_();
120
121 sink.tableCell_();
122
123 sinkCell( sink, ticket.getType() );
124
125 sinkCell( sink, ticket.getSummary() );
126
127 sinkCell( sink, ticket.getOwner() );
128
129 sinkCell( sink, ticket.getReporter() );
130
131 sinkCell( sink, ticket.getPriority() );
132
133 sinkCell( sink, ticket.getStatus() );
134
135 sinkCell( sink, ticket.getResolution() );
136
137 sinkCell( sink, sdf.format( ticket.getTimeCreated() ) );
138
139 sinkCell( sink, sdf.format( ticket.getTimeChanged() ) );
140
141 sink.tableRow_();
142 }
143
144 sink.table_();
145 }
146
147 private void sinkBeginReport( Sink sink, ResourceBundle bundle )
148 {
149 sink.head();
150
151 sink.text( bundle.getString( "report.trac.header" ) );
152
153 sink.head_();
154
155 sink.body();
156
157 sinkSectionTitle1( sink, bundle.getString( "report.trac.header" ) );
158
159 }
160
161 private void sinkEndReport( Sink sink )
162 {
163 sink.body_();
164
165 sink.flush();
166
167 sink.close();
168 }
169
170 private void sinkFigure( Sink sink, String image )
171 {
172 sink.figure();
173
174 sink.figureGraphics( image );
175
176 sink.figure_();
177 }
178
179 private void sinkHeader( Sink sink, String header )
180 {
181 sink.tableHeaderCell();
182
183 sink.text( header );
184
185 sink.tableHeaderCell_();
186 }
187
188 private void sinkCell( Sink sink, String text )
189 {
190 sink.tableCell();
191
192 if ( text != null )
193 {
194 sink.rawText( text );
195 }
196 else
197 {
198 sink.rawText( " " );
199 }
200
201 sink.tableCell_();
202 }
203
204 private void sinkSectionTitle1( Sink sink, String text )
205 {
206 sink.sectionTitle1();
207
208 sink.text( text );
209
210 sink.sectionTitle1_();
211 }
212 }