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 import org.apache.maven.doxia.util.HtmlTools;
24 import org.codehaus.plexus.util.StringUtils;
25
26 import java.util.ResourceBundle;
27
28
29
30
31
32
33
34
35 public abstract class AbstractIssuesReportGenerator
36 {
37 protected String author;
38
39 protected String title;
40
41 public AbstractIssuesReportGenerator()
42 {
43 }
44
45 public String getAuthor()
46 {
47 return author;
48 }
49
50 public void setAuthor( String author )
51 {
52 this.author = author;
53 }
54
55 public String getTitle()
56 {
57 return title;
58 }
59
60 public void setTitle( String title )
61 {
62 this.title = title;
63 }
64
65 protected void sinkBeginReport( Sink sink, ResourceBundle bundle )
66 {
67 sink.head();
68
69 String title = null;
70 if ( this.title != null )
71 {
72 title = this.title;
73 }
74 else
75 {
76 title = bundle.getString( "report.issues.header" );
77 }
78 sink.title();
79 sink.text( title );
80 sink.title_();
81
82 if ( StringUtils.isNotEmpty( author ) )
83 {
84 sink.author();
85 sink.text( author );
86 sink.author_();
87 }
88
89 sink.head_();
90
91 sink.body();
92
93 sink.section1();
94
95 sinkSectionTitle1Anchor( sink, title, title );
96 }
97
98 protected void sinkCell( Sink sink, String text )
99 {
100 sink.tableCell();
101
102 if ( text != null )
103 {
104 sink.text( text );
105 }
106 else
107 {
108 sink.nonBreakingSpace();
109 }
110
111 sink.tableCell_();
112 }
113
114 protected void sinkCellLink( Sink sink, String text, String link )
115 {
116 sink.tableCell();
117
118 sinkLink( sink, text, link );
119
120 sink.tableCell_();
121 }
122
123 protected void sinkEndReport( Sink sink )
124 {
125 sink.section1_();
126
127 sink.body_();
128
129 sink.flush();
130
131 sink.close();
132 }
133
134 protected void sinkFigure( Sink sink, String image, String altText )
135 {
136 sink.figure();
137
138 sink.figureGraphics( image );
139
140 sink.figureCaption();
141
142 sink.text( altText );
143
144 sink.figureCaption_();
145
146 sink.figure_();
147 }
148
149 protected void sinkHeader( Sink sink, String header )
150 {
151 sink.tableHeaderCell();
152
153 sink.text( header );
154
155 sink.tableHeaderCell_();
156 }
157
158 protected void sinkLink( Sink sink, String text, String link )
159 {
160 sink.link( link );
161
162 sink.text( text );
163
164 sink.link_();
165 }
166
167 protected void sinkSectionTitle1Anchor( Sink sink, String text, String anchor )
168 {
169 sink.sectionTitle1();
170
171 sink.text( text );
172
173 sink.sectionTitle1_();
174
175 sink.anchor( HtmlTools.encodeId( anchor ) );
176 sink.anchor_();
177 }
178
179 protected void sinkSectionTitle2Anchor( Sink sink, String text, String anchor )
180 {
181 sink.sectionTitle2();
182 sink.text( text );
183 sink.sectionTitle2_();
184
185 sink.anchor( HtmlTools.encodeId( anchor ) );
186 sink.anchor_();
187 }
188
189 protected void sinkShowTypeIcon( Sink sink, String type )
190 {
191 String image = "";
192 String altText = "";
193
194 if ( type == null )
195 {
196 image = "images/icon_help_sml.gif";
197 altText = "?";
198 }
199 else if ( type.equals( "fix" ) )
200 {
201 image = "images/fix.gif";
202 altText = "fix";
203 }
204 else if ( type.equals( "update" ) )
205 {
206 image = "images/update.gif";
207 altText = "update";
208 }
209 else if ( type.equals( "add" ) )
210 {
211 image = "images/add.gif";
212 altText = "add";
213 }
214 else if ( type.equals( "remove" ) )
215 {
216 image = "images/remove.gif";
217 altText = "remove";
218 }
219
220 sink.tableCell();
221
222 sinkFigure( sink, image, altText );
223
224 sink.tableCell_();
225 }
226 }