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.model.IssueManagement;
24 import org.apache.maven.model.Model;
25 import org.codehaus.plexus.i18n.I18N;
26 import org.codehaus.plexus.util.StringUtils;
27
28 import java.util.Locale;
29
30
31
32
33
34
35
36
37
38 public class IssueTrackingReport
39 extends AbstractProjectInfoReport
40 {
41
42
43
44
45
46 public void executeReport( Locale locale )
47 {
48 IssueTrackingRenderer r = new IssueTrackingRenderer( getSink(), getProject().getModel(), i18n, locale );
49
50 r.render();
51 }
52
53
54 public String getOutputName()
55 {
56 return "issue-tracking";
57 }
58
59 protected String getI18Nsection()
60 {
61 return "issuetracking";
62 }
63
64
65
66
67
68
69
70
71 private static class IssueTrackingRenderer
72 extends AbstractProjectInfoRenderer
73 {
74 private Model model;
75
76 IssueTrackingRenderer( Sink sink, Model model, I18N i18n, Locale locale )
77 {
78 super( sink, i18n, locale );
79
80 this.model = model;
81 }
82
83 protected String getI18Nsection()
84 {
85 return "issuetracking";
86 }
87
88
89 public void renderBody()
90 {
91 IssueManagement issueManagement = model.getIssueManagement();
92 if ( issueManagement == null )
93 {
94 startSection( getTitle() );
95
96 paragraph( getI18nString( "noissueManagement" ) );
97
98 endSection();
99
100 return;
101 }
102
103 String system = issueManagement.getSystem();
104 String url = issueManagement.getUrl();
105
106
107 startSection( getI18nString( "overview.title" ) );
108
109 if ( isIssueManagementSystem( system, "jira" ) )
110 {
111 sink.paragraph();
112 linkPatternedText( getI18nString( "jira.intro" ) );
113 sink.paragraph_();
114 }
115 else if ( isIssueManagementSystem( system, "bugzilla" ) )
116 {
117 sink.paragraph();
118 linkPatternedText( getI18nString( "bugzilla.intro" ) );
119 sink.paragraph_();
120 }
121 else if ( isIssueManagementSystem( system, "scarab" ) )
122 {
123 sink.paragraph();
124 linkPatternedText( getI18nString( "scarab.intro" ) );
125 sink.paragraph_();
126 }
127 else if ( system == null || "".equals( system.trim() ) )
128 {
129 paragraph( getI18nString( "general.intro" ) );
130 }
131 else
132 {
133 paragraph( getI18nString( "custom.intro" ).replaceFirst( "%issueManagementSystem%", system ) );
134 }
135
136 endSection();
137
138
139 startSection( getTitle() );
140
141 paragraph( getI18nString( "intro" ) );
142
143 verbatimLink( url, url );
144
145 endSection();
146 }
147
148
149
150
151
152
153
154
155 private boolean isIssueManagementSystem( String system, String im )
156 {
157 if ( StringUtils.isEmpty( system ) )
158 {
159 return false;
160 }
161
162 if ( StringUtils.isEmpty( im ) )
163 {
164 return false;
165 }
166
167 return system.toLowerCase( Locale.ENGLISH ).startsWith( im.toLowerCase( Locale.ENGLISH ) );
168 }
169 }
170 }