1 package org.apache.maven.plugin.issues;
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 import java.text.DateFormat;
25 import java.util.List;
26 import java.util.Locale;
27 import java.util.ResourceBundle;
28
29
30
31
32
33
34
35
36
37 public class IssuesReportGenerator extends AbstractIssuesReportGenerator
38 {
39
40
41
42 private static final String NOT_AVAILABLE = "n/a";
43
44
45
46
47
48 private int[] columns;
49
50
51
52
53 public IssuesReportGenerator( int[] includedColumns )
54 {
55 this.columns = includedColumns;
56 }
57
58 public void doGenerateEmptyReport( ResourceBundle bundle, Sink sink )
59 {
60 sinkBeginReport( sink, bundle );
61
62 sink.paragraph();
63
64 sink.text( bundle.getString( "report.issues.error" ) );
65
66 sink.paragraph_();
67
68 sinkEndReport( sink );
69 }
70
71 public void doGenerateReport( ResourceBundle bundle, Sink sink, List issueList )
72 {
73 sinkBeginReport( sink, bundle );
74
75 constructHeaderRow( sink, issueList, bundle );
76
77
78
79
80 constructDetailRows( sink, issueList, bundle, new Locale( "sv" ) );
81
82 sinkEndReport( sink );
83 }
84
85 private void constructHeaderRow( Sink sink, List issueList, ResourceBundle bundle )
86 {
87 if ( issueList == null )
88 {
89 return;
90 }
91
92 sink.table();
93
94 sink.tableRow();
95
96 for ( int columnIndex = 0; columnIndex < columns.length; columnIndex++ )
97 {
98 switch ( columns[columnIndex] )
99 {
100 case IssuesReportHelper.COLUMN_ASSIGNEE:
101 sinkHeader( sink, bundle.getString( "report.issues.label.assignee" ) );
102 break;
103
104 case IssuesReportHelper.COLUMN_COMPONENT:
105 sinkHeader( sink, bundle.getString( "report.issues.label.component" ) );
106 break;
107
108 case IssuesReportHelper.COLUMN_CREATED:
109 sinkHeader( sink, bundle.getString( "report.issues.label.created" ) );
110 break;
111
112 case IssuesReportHelper.COLUMN_FIX_VERSION:
113 sinkHeader( sink, bundle.getString( "report.issues.label.fixVersion" ) );
114 break;
115
116 case IssuesReportHelper.COLUMN_ID:
117 sinkHeader( sink, bundle.getString( "report.issues.label.id" ) );
118 break;
119
120 case IssuesReportHelper.COLUMN_KEY:
121 sinkHeader( sink, bundle.getString( "report.issues.label.key" ) );
122 break;
123
124 case IssuesReportHelper.COLUMN_PRIORITY:
125 sinkHeader( sink, bundle.getString( "report.issues.label.priority" ) );
126 break;
127
128 case IssuesReportHelper.COLUMN_REPORTER:
129 sinkHeader( sink, bundle.getString( "report.issues.label.reporter" ) );
130 break;
131
132 case IssuesReportHelper.COLUMN_RESOLUTION:
133 sinkHeader( sink, bundle.getString( "report.issues.label.resolution" ) );
134 break;
135
136 case IssuesReportHelper.COLUMN_STATUS:
137 sinkHeader( sink, bundle.getString( "report.issues.label.status" ) );
138 break;
139
140 case IssuesReportHelper.COLUMN_SUMMARY:
141 sinkHeader( sink, bundle.getString( "report.issues.label.summary" ) );
142 break;
143
144 case IssuesReportHelper.COLUMN_TYPE:
145 sinkHeader( sink, bundle.getString( "report.issues.label.type" ) );
146 break;
147
148 case IssuesReportHelper.COLUMN_UPDATED:
149 sinkHeader( sink, bundle.getString( "report.issues.label.updated" ) );
150 break;
151
152 case IssuesReportHelper.COLUMN_VERSION:
153 sinkHeader( sink, bundle.getString( "report.issues.label.version" ) );
154 break;
155
156 default:
157
158 break;
159 }
160 }
161
162 sink.tableRow_();
163 }
164
165 private void constructDetailRows( Sink sink, List issueList, ResourceBundle bundle, Locale locale )
166 {
167 if ( issueList == null )
168 {
169 return;
170 }
171
172 for ( int idx = 0; idx < issueList.size(); idx++ )
173 {
174
175 DateFormat df = DateFormat.getDateInstance( DateFormat.SHORT, locale );
176
177 Issue issue = (Issue) issueList.get( idx );
178
179 sink.tableRow();
180
181 for ( int columnIndex = 0; columnIndex < columns.length; columnIndex++ )
182 {
183 switch ( columns[columnIndex] )
184 {
185 case IssuesReportHelper.COLUMN_ASSIGNEE:
186 sinkCell( sink, issue.getAssignee() );
187 break;
188
189 case IssuesReportHelper.COLUMN_COMPONENT:
190 sinkCell( sink, IssuesReportHelper.printValues( issue.getComponents() ) );
191 break;
192
193 case IssuesReportHelper.COLUMN_CREATED:
194 String created = NOT_AVAILABLE;
195 if ( issue.getCreated() != null )
196 {
197 created = df.format( issue.getCreated() );
198 }
199 sinkCell( sink, created );
200 break;
201
202 case IssuesReportHelper.COLUMN_FIX_VERSION:
203 sinkCell( sink, IssuesReportHelper.printValues( issue.getFixVersions() ) );
204 break;
205
206 case IssuesReportHelper.COLUMN_ID:
207 sink.tableCell();
208 sink.link( issue.getLink() );
209 sink.text( issue.getId() );
210 sink.link_();
211 sink.tableCell_();
212 break;
213
214 case IssuesReportHelper.COLUMN_KEY:
215 sink.tableCell();
216 sink.link( issue.getLink() );
217 sink.text( issue.getKey() );
218 sink.link_();
219 sink.tableCell_();
220 break;
221
222 case IssuesReportHelper.COLUMN_PRIORITY:
223 sinkCell( sink, issue.getPriority() );
224 break;
225
226 case IssuesReportHelper.COLUMN_REPORTER:
227 sinkCell( sink, issue.getReporter() );
228 break;
229
230 case IssuesReportHelper.COLUMN_RESOLUTION:
231 sinkCell( sink, issue.getResolution() );
232 break;
233
234 case IssuesReportHelper.COLUMN_STATUS:
235 sinkCell( sink, issue.getStatus() );
236 break;
237
238 case IssuesReportHelper.COLUMN_SUMMARY:
239 sinkCell( sink, issue.getSummary() );
240 break;
241
242 case IssuesReportHelper.COLUMN_TYPE:
243 sinkCell( sink, issue.getType() );
244 break;
245
246 case IssuesReportHelper.COLUMN_UPDATED:
247 String updated = NOT_AVAILABLE;
248 if ( issue.getUpdated() != null )
249 {
250 updated = df.format( issue.getUpdated() );
251 }
252 sinkCell( sink, updated );
253 break;
254
255 case IssuesReportHelper.COLUMN_VERSION:
256 sinkCell( sink, issue.getVersion() );
257 break;
258
259 default:
260
261 break;
262 }
263 }
264
265 sink.tableRow_();
266 }
267
268 sink.table_();
269 }
270 }