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