1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  package org.apache.maven.report.projectinfo;
20  
21  import javax.inject.Inject;
22  
23  import java.util.List;
24  import java.util.Locale;
25  
26  import org.apache.maven.artifact.repository.ArtifactRepository;
27  import org.apache.maven.doxia.sink.Sink;
28  import org.apache.maven.doxia.tools.SiteTool;
29  import org.apache.maven.plugin.logging.Log;
30  import org.apache.maven.plugins.annotations.Mojo;
31  import org.apache.maven.project.MavenProject;
32  import org.apache.maven.project.ProjectBuilder;
33  import org.apache.maven.project.ProjectBuildingRequest;
34  import org.apache.maven.repository.RepositorySystem;
35  import org.codehaus.plexus.i18n.I18N;
36  
37  
38  
39  
40  
41  
42  
43  
44  @Mojo(name = "index")
45  public class IndexReport extends AbstractProjectInfoReport {
46  
47      @Inject
48      public IndexReport(RepositorySystem repositorySystem, I18N i18n, ProjectBuilder projectBuilder) {
49          super(repositorySystem, i18n, projectBuilder);
50      }
51      
52      
53      
54  
55      @Override
56      public String getName(Locale locale) {
57          return getI18nString(locale, "title");
58      }
59  
60      @Override
61      public String getDescription(Locale locale) {
62          String desc;
63          if (project.getDescription() != null) {
64              
65              desc = project.getDescription();
66          } else {
67              return getI18nString(locale, "nodescription");
68          }
69          return desc;
70      }
71  
72      @Override
73      public void executeReport(Locale locale) {
74          ProjectIndexRenderer r = new ProjectIndexRenderer(
75                  project,
76                  getReactorProjects(),
77                  projectBuilder,
78                  getSession().getProjectBuildingRequest(),
79                  getSession().getLocalRepository(),
80                  getName(locale),
81                  getDescription(locale),
82                  getSink(),
83                  getI18N(locale),
84                  locale,
85                  getLog(),
86                  siteTool);
87  
88          r.render();
89      }
90  
91      
92      public String getOutputName() {
93          return "index";
94      }
95  
96      @Override
97      protected String getI18Nsection() {
98          return "index";
99      }
100 
101     
102     
103     
104 
105     
106 
107 
108     private static class ProjectIndexRenderer extends ModulesReport.ModulesRenderer {
109         private final String title;
110 
111         private final String description;
112 
113         private boolean modules = false;
114 
115         ProjectIndexRenderer(
116                 MavenProject project,
117                 List<MavenProject> reactorProjects,
118                 ProjectBuilder projectBuilder,
119                 ProjectBuildingRequest buildingRequest,
120                 ArtifactRepository localRepository,
121                 String title,
122                 String description,
123                 Sink sink,
124                 I18N i18n,
125                 Locale locale,
126                 Log log,
127                 SiteTool siteTool) {
128             super(
129                     sink,
130                     project,
131                     reactorProjects,
132                     projectBuilder,
133                     buildingRequest,
134                     localRepository,
135                     i18n,
136                     locale,
137                     log,
138                     siteTool);
139 
140             this.title = title;
141 
142             this.description = description;
143         }
144 
145         @Override
146         public String getTitle() {
147             return modules ? super.getTitle() : title;
148         }
149 
150         @Override
151         protected void renderBody() {
152             startSection(title.trim() + " " + project.getName());
153 
154             paragraph(description);
155 
156             if (!project.getModel().getModules().isEmpty()) {
157                 modules = true;
158                 super.renderBody();
159             }
160 
161             endSection();
162         }
163     }
164 }