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.CiManagement;
24 import org.apache.maven.model.Model;
25 import org.apache.maven.model.Notifier;
26 import org.apache.maven.plugins.annotations.Mojo;
27 import org.codehaus.plexus.i18n.I18N;
28 import org.codehaus.plexus.util.StringUtils;
29
30 import java.util.List;
31 import java.util.Locale;
32
33
34
35
36
37
38
39
40 @Mojo( name = "cim" )
41 public class CimReport
42 extends AbstractProjectInfoReport
43 {
44
45
46
47
48 @Override
49 public void executeReport( Locale locale )
50 {
51 CimRenderer r = new CimRenderer( getSink(), getProject().getModel(), getI18N( locale ), locale );
52
53 r.render();
54 }
55
56
57 public String getOutputName()
58 {
59 return "integration";
60 }
61
62 @Override
63 protected String getI18Nsection()
64 {
65 return "cim";
66 }
67
68
69
70
71
72
73
74
75 private static class CimRenderer
76 extends AbstractProjectInfoRenderer
77 {
78 private Model model;
79
80 CimRenderer( Sink sink, Model model, I18N i18n, Locale locale )
81 {
82 super( sink, i18n, locale );
83
84 this.model = model;
85 }
86
87 @Override
88 protected String getI18Nsection()
89 {
90 return "cim";
91 }
92
93 @Override
94 public void renderBody()
95 {
96 CiManagement cim = model.getCiManagement();
97 if ( cim == null )
98 {
99 startSection( getTitle() );
100
101 paragraph( getI18nString( "nocim" ) );
102
103 endSection();
104
105 return;
106 }
107
108 String system = cim.getSystem();
109 String url = cim.getUrl();
110 List<Notifier> notifiers = cim.getNotifiers();
111
112
113 startSection( getI18nString( "overview.title" ) );
114
115 sink.paragraph();
116 if ( isCimSystem( system, "anthill" ) )
117 {
118 linkPatternedText( getI18nString( "anthill.intro" ) );
119 }
120 else if ( isCimSystem( system, "bamboo" ) )
121 {
122 linkPatternedText( getI18nString( "bamboo.intro" ) );
123 }
124 else if ( isCimSystem( system, "buildforge" ) )
125 {
126 linkPatternedText( getI18nString( "buildforge.intro" ) );
127 }
128 else if ( isCimSystem( system, "continuum" ) )
129 {
130 linkPatternedText( getI18nString( "continuum.intro" ) );
131 }
132 else if ( isCimSystem( system, "cruisecontrol" ) )
133 {
134 linkPatternedText( getI18nString( "cruisecontrol.intro" ) );
135 }
136 else if ( isCimSystem( system, "hudson" ) )
137 {
138 linkPatternedText( getI18nString( "hudson.intro" ) );
139 }
140 else if ( isCimSystem( system, "jenkins" ) )
141 {
142 linkPatternedText( getI18nString( "jenkins.intro" ) );
143 }
144 else if ( isCimSystem( system, "luntbuild" ) )
145 {
146 linkPatternedText( getI18nString( "luntbuild.intro" ) );
147 }
148 else
149 {
150 linkPatternedText( getI18nString( "general.intro" ) );
151 }
152 sink.paragraph_();
153
154 endSection();
155
156
157 startSection( getI18nString( "access" ) );
158
159 if ( !StringUtils.isEmpty( url ) )
160 {
161 paragraph( getI18nString( "url" ) );
162
163 verbatimLink( url, url );
164 }
165 else
166 {
167 paragraph( getI18nString( "nourl" ) );
168 }
169
170 endSection();
171
172
173 startSection( getI18nString( "notifiers.title" ) );
174
175 if ( notifiers == null || notifiers.isEmpty() )
176 {
177 paragraph( getI18nString( "notifiers.nolist" ) );
178 }
179 else
180 {
181 sink.paragraph();
182 sink.text( getI18nString( "notifiers.intro" ) );
183 sink.paragraph_();
184
185 startTable();
186
187 String type = getI18nString( "notifiers.column.type" );
188 String address = getI18nString( "notifiers.column.address" );
189 String configuration = getI18nString( "notifiers.column.configuration" );
190
191 tableHeader( new String[]{type, address, configuration} );
192
193 for ( Notifier notifier : notifiers )
194 {
195 tableRow( new String[]{notifier.getType(),
196 createLinkPatternedText( notifier.getAddress(), notifier.getAddress() ),
197 propertiesToString( notifier.getConfiguration() )} );
198 }
199
200 endTable();
201 }
202
203 endSection();
204 }
205
206
207
208
209
210
211
212
213 private boolean isCimSystem( String connection, String cim )
214 {
215 if ( StringUtils.isEmpty( connection ) )
216 {
217 return false;
218 }
219
220 if ( StringUtils.isEmpty( cim ) )
221 {
222 return false;
223 }
224
225 return connection.toLowerCase( Locale.ENGLISH ).startsWith( cim.toLowerCase( Locale.ENGLISH ) );
226 }
227 }
228 }