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
38 extends AbstractIssuesReportGenerator
39 {
40
41
42
43 private static final String NOT_AVAILABLE = "n/a";
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<Issue> 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<Issue> issueList, ResourceBundle bundle )
86 {
87 if ( issueList == null )
88 {
89 return;
90 }
91
92 sink.table();
93
94 sink.tableRow();
95
96 for ( int column : columns )
97 {
98 switch ( column )
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<Issue> issueList, ResourceBundle bundle, Locale locale )
166 {
167 if ( issueList == null )
168 {
169 return;
170 }
171
172 for ( Issue issue : issueList )
173 {
174
175 DateFormat df = DateFormat.getDateInstance( DateFormat.SHORT, locale );
176
177 sink.tableRow();
178
179 for ( int column : columns )
180 {
181 switch ( column )
182 {
183 case IssuesReportHelper.COLUMN_ASSIGNEE:
184 sinkCell( sink, issue.getAssignee() );
185 break;
186
187 case IssuesReportHelper.COLUMN_COMPONENT:
188 sinkCell( sink, IssuesReportHelper.printValues( issue.getComponents() ) );
189 break;
190
191 case IssuesReportHelper.COLUMN_CREATED:
192 String created = NOT_AVAILABLE;
193 if ( issue.getCreated() != null )
194 {
195 created = df.format( issue.getCreated() );
196 }
197 sinkCell( sink, created );
198 break;
199
200 case IssuesReportHelper.COLUMN_FIX_VERSION:
201 sinkCell( sink, IssuesReportHelper.printValues( issue.getFixVersions() ) );
202 break;
203
204 case IssuesReportHelper.COLUMN_ID:
205 sink.tableCell();
206 sink.link( issue.getLink() );
207 sink.text( issue.getId() );
208 sink.link_();
209 sink.tableCell_();
210 break;
211
212 case IssuesReportHelper.COLUMN_KEY:
213 sink.tableCell();
214 sink.link( issue.getLink() );
215 sink.text( issue.getKey() );
216 sink.link_();
217 sink.tableCell_();
218 break;
219
220 case IssuesReportHelper.COLUMN_PRIORITY:
221 sinkCell( sink, issue.getPriority() );
222 break;
223
224 case IssuesReportHelper.COLUMN_REPORTER:
225 sinkCell( sink, issue.getReporter() );
226 break;
227
228 case IssuesReportHelper.COLUMN_RESOLUTION:
229 sinkCell( sink, issue.getResolution() );
230 break;
231
232 case IssuesReportHelper.COLUMN_STATUS:
233 sinkCell( sink, issue.getStatus() );
234 break;
235
236 case IssuesReportHelper.COLUMN_SUMMARY:
237 sinkCell( sink, issue.getSummary() );
238 break;
239
240 case IssuesReportHelper.COLUMN_TYPE:
241 sinkCell( sink, issue.getType() );
242 break;
243
244 case IssuesReportHelper.COLUMN_UPDATED:
245 String updated = NOT_AVAILABLE;
246 if ( issue.getUpdated() != null )
247 {
248 updated = df.format( issue.getUpdated() );
249 }
250 sinkCell( sink, updated );
251 break;
252
253 case IssuesReportHelper.COLUMN_VERSION:
254 sinkCell( sink, issue.getVersion() );
255 break;
256
257 default:
258
259 break;
260 }
261 }
262
263 sink.tableRow_();
264 }
265
266 sink.table_();
267 }
268 }