View Javadoc

1   package org.apache.maven.plugin.issues;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *   http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
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   * An abstract super class that helps when generating a report on issues.
30   *
31   * @author Dennis Lundberg
32   * @version $Id: AbstractIssuesReportGenerator.html 816598 2012-05-08 12:46:49Z hboutemy $
33   * @since 2.4
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 }