1 package org.apache.maven.report.projectinfo;
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.tools.SiteTool;
24 import org.apache.maven.plugins.annotations.Mojo;
25 import org.apache.maven.project.MavenProject;
26 import org.codehaus.plexus.i18n.I18N;
27
28 import java.util.Locale;
29
30
31
32
33
34
35
36
37
38 @Mojo( name = "index" )
39 public class ProjectIndexPageReport
40 extends AbstractProjectInfoReport
41 {
42
43
44
45
46 @Override
47 public String getName( Locale locale )
48 {
49 return getI18nString( locale, "title" );
50 }
51
52 @Override
53 public String getDescription( Locale locale )
54 {
55 String desc;
56 if ( project.getDescription() != null )
57 {
58
59 desc = project.getDescription();
60 }
61 else
62 {
63 return getI18nString( locale, "nodescription" );
64 }
65 return desc;
66 }
67
68 @Override
69 public void executeReport( Locale locale )
70 {
71 ProjectIndexRenderer r =
72 new ProjectIndexRenderer( project, getName( locale ), getDescription( locale ), getSink(),
73 getI18N( locale ), locale, siteTool );
74
75 r.render();
76 }
77
78
79 public String getOutputName()
80 {
81 return "index";
82 }
83
84 @Override
85 protected String getI18Nsection()
86 {
87 return "index";
88 }
89
90
91
92
93
94
95
96
97 private static class ProjectIndexRenderer
98 extends ModulesReport.ModulesRenderer
99 {
100 private final String title;
101
102 private final String description;
103
104 private boolean modules = false;
105
106 ProjectIndexRenderer( MavenProject project, String title, String description, Sink sink, I18N i18n,
107 Locale locale, SiteTool siteTool )
108 {
109 super( sink, project, i18n, locale, siteTool );
110
111 this.title = title;
112
113 this.description = description;
114 }
115
116 @Override
117 public String getTitle()
118 {
119 return modules ? super.getTitle() : title;
120 }
121
122 @Override
123 public void renderBody()
124 {
125 startSection( title.trim() + " " + project.getName() );
126
127 paragraph( description );
128
129 if ( !project.getModules().isEmpty() )
130 {
131 modules = true;
132 super.renderBody();
133 }
134
135 endSection();
136 }
137 }
138 }