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