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