1 package org.apache.maven.plugins.site;
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.render.RenderingContext;
24 import org.apache.maven.doxia.siterenderer.DocumentRenderer;
25 import org.apache.maven.doxia.siterenderer.Renderer;
26 import org.apache.maven.doxia.siterenderer.RendererException;
27 import org.apache.maven.doxia.siterenderer.SiteRenderingContext;
28 import org.apache.maven.doxia.siterenderer.sink.SiteRendererSink;
29 import org.apache.maven.doxia.tools.MojoLogWrapper;
30 import org.apache.maven.plugin.logging.Log;
31 import org.apache.maven.reporting.MavenReport;
32 import org.codehaus.plexus.i18n.I18N;
33
34 import java.io.FileNotFoundException;
35 import java.io.Writer;
36 import java.util.Collections;
37 import java.util.Iterator;
38 import java.util.List;
39 import java.util.Locale;
40
41
42
43
44
45
46 public class CategorySummaryDocumentRenderer
47 implements DocumentRenderer
48 {
49 private RenderingContext renderingContext;
50
51 private String title;
52
53 private String desc1;
54
55 private String desc2;
56
57 private I18N i18n;
58
59 private List categoryReports;
60
61 private final Log log;
62
63 public CategorySummaryDocumentRenderer( RenderingContext renderingContext, String title, String desc1, String desc2,
64 I18N i18n, List categoryReports )
65 {
66 this( renderingContext, title, desc1, desc2, i18n, categoryReports, null );
67 }
68
69 public CategorySummaryDocumentRenderer( RenderingContext renderingContext, String title, String desc1, String desc2,
70 I18N i18n, List categoryReports, Log log )
71 {
72 this.renderingContext = renderingContext;
73 this.title = title;
74 this.desc1 = desc1;
75 this.desc2 = desc2;
76 this.i18n = i18n;
77 this.categoryReports = Collections.unmodifiableList( categoryReports );
78 this.log = log;
79 }
80
81 public void renderDocument( Writer writer, Renderer renderer, SiteRenderingContext siteRenderingContext )
82 throws RendererException, FileNotFoundException
83 {
84 SiteRendererSink sink = new SiteRendererSink( renderingContext );
85
86 if ( log != null )
87 {
88 sink.enableLogging( new MojoLogWrapper( log ) );
89 }
90
91 sink.head();
92
93 sink.title();
94
95 sink.text( title );
96
97 sink.title_();
98
99 sink.head_();
100
101 sink.body();
102
103 sink.section1();
104 sink.sectionTitle1();
105 sink.text( title );
106 sink.sectionTitle1_();
107
108 sink.paragraph();
109 sink.text( desc1 + " " );
110 sink.link( "http://maven.apache.org" );
111 sink.text( "Maven" );
112 sink.link_();
113 sink.text( " " + desc2 );
114 sink.paragraph_();
115
116 sink.section2();
117 sink.sectionTitle2();
118 Locale locale = siteRenderingContext.getLocale();
119 sink.text( i18n.getString( "site-plugin", locale, "report.category.sectionTitle" ) );
120 sink.sectionTitle2_();
121
122 sink.table();
123
124 sink.tableRows( new int[] {Sink.JUSTIFY_LEFT, Sink.JUSTIFY_LEFT}, false );
125
126 String name = i18n.getString( "site-plugin", locale, "report.category.column.document" );
127 String description = i18n.getString( "site-plugin", locale, "report.category.column.description" );
128
129 sink.tableRow();
130
131 sink.tableHeaderCell();
132
133 sink.text( name );
134
135 sink.tableHeaderCell_();
136
137 sink.tableHeaderCell();
138
139 sink.text( description );
140
141 sink.tableHeaderCell_();
142
143 sink.tableRow_();
144
145 if ( categoryReports != null )
146 {
147 for ( Iterator i1 = categoryReports.iterator(); i1.hasNext(); )
148 {
149 MavenReport report = (MavenReport) i1.next();
150
151 sink.tableRow();
152 sink.tableCell();
153 sink.link( report.getOutputName() + ".html" );
154 sink.text( report.getName( locale ) );
155 sink.link_();
156 sink.tableCell_();
157 sink.tableCell();
158 sink.text( report.getDescription( locale ) );
159 sink.tableCell_();
160 sink.tableRow_();
161 }
162 }
163
164 sink.tableRows_();
165
166 sink.table_();
167
168 sink.section2_();
169
170 sink.section1_();
171
172 sink.body_();
173
174 sink.flush();
175
176 sink.close();
177
178 renderer.generateDocument( writer, sink, siteRenderingContext );
179 }
180
181 public String getOutputName()
182 {
183 return renderingContext.getOutputName();
184 }
185
186 public RenderingContext getRenderingContext()
187 {
188 return renderingContext;
189 }
190
191 public boolean isOverwrite()
192 {
193 return true;
194 }
195 }