1 /*
2 * $Id$
3 */
4
5 package org.apache.maven.model;
6
7 //---------------------------------/
8 //- Imported classes and packages -/
9 //---------------------------------/
10
11 import java.util.Date;
12
13 /**
14 *
15 *
16 * The <code><plugin></code> element contains
17 * informations required for a report plugin.
18 *
19 *
20 *
21 * @version $Revision$ $Date$
22 */
23 public class ReportPlugin implements java.io.Serializable {
24
25
26 //--------------------------/
27 //- Class/Member Variables -/
28 //--------------------------/
29
30 /**
31 * The group ID of the reporting plugin in the repository.
32 */
33 private String groupId = "org.apache.maven.plugins";
34
35 /**
36 * The artifact ID of the reporting plugin in the repository.
37 */
38 private String artifactId;
39
40 /**
41 * The version of the reporting plugin to be used.
42 */
43 private String version;
44
45 /**
46 * Whether the configuration in this plugin should be made
47 * available to projects
48 * that inherit from this one.
49 */
50 private String inherited;
51
52 /**
53 * The configuration of the reporting plugin.
54 */
55 private Object configuration;
56
57 /**
58 * Field reportSets.
59 */
60 private java.util.List reportSets;
61
62
63 //-----------/
64 //- Methods -/
65 //-----------/
66
67 /**
68 * Method addReportSet.
69 *
70 * @param reportSet
71 */
72 public void addReportSet( ReportSet reportSet )
73 {
74 if ( !(reportSet instanceof ReportSet) )
75 {
76 throw new ClassCastException( "ReportPlugin.addReportSets(reportSet) parameter must be instanceof " + ReportSet.class.getName() );
77 }
78 getReportSets().add( reportSet );
79 } //-- void addReportSet( ReportSet )
80
81 /**
82 * Get the artifact ID of the reporting plugin in the
83 * repository.
84 *
85 * @return String
86 */
87 public String getArtifactId()
88 {
89 return this.artifactId;
90 } //-- String getArtifactId()
91
92 /**
93 * Get the configuration of the reporting plugin.
94 *
95 * @return Object
96 */
97 public Object getConfiguration()
98 {
99 return this.configuration;
100 } //-- Object getConfiguration()
101
102 /**
103 * Get the group ID of the reporting plugin in the repository.
104 *
105 * @return String
106 */
107 public String getGroupId()
108 {
109 return this.groupId;
110 } //-- String getGroupId()
111
112 /**
113 * Get whether the configuration in this plugin should be made
114 * available to projects
115 * that inherit from this one.
116 *
117 * @return String
118 */
119 public String getInherited()
120 {
121 return this.inherited;
122 } //-- String getInherited()
123
124 /**
125 * Method getReportSets.
126 *
127 * @return java.util.List
128 */
129 public java.util.List getReportSets()
130 {
131 if ( this.reportSets == null )
132 {
133 this.reportSets = new java.util.ArrayList();
134 }
135
136 return this.reportSets;
137 } //-- java.util.List getReportSets()
138
139 /**
140 * Get the version of the reporting plugin to be used.
141 *
142 * @return String
143 */
144 public String getVersion()
145 {
146 return this.version;
147 } //-- String getVersion()
148
149 /**
150 * Method removeReportSet.
151 *
152 * @param reportSet
153 */
154 public void removeReportSet( ReportSet reportSet )
155 {
156 if ( !(reportSet instanceof ReportSet) )
157 {
158 throw new ClassCastException( "ReportPlugin.removeReportSets(reportSet) parameter must be instanceof " + ReportSet.class.getName() );
159 }
160 getReportSets().remove( reportSet );
161 } //-- void removeReportSet( ReportSet )
162
163 /**
164 * Set the artifact ID of the reporting plugin in the
165 * repository.
166 *
167 * @param artifactId
168 */
169 public void setArtifactId( String artifactId )
170 {
171 this.artifactId = artifactId;
172 } //-- void setArtifactId( String )
173
174 /**
175 * Set the configuration of the reporting plugin.
176 *
177 * @param configuration
178 */
179 public void setConfiguration( Object configuration )
180 {
181 this.configuration = configuration;
182 } //-- void setConfiguration( Object )
183
184 /**
185 * Set the group ID of the reporting plugin in the repository.
186 *
187 * @param groupId
188 */
189 public void setGroupId( String groupId )
190 {
191 this.groupId = groupId;
192 } //-- void setGroupId( String )
193
194 /**
195 * Set whether the configuration in this plugin should be made
196 * available to projects
197 * that inherit from this one.
198 *
199 * @param inherited
200 */
201 public void setInherited( String inherited )
202 {
203 this.inherited = inherited;
204 } //-- void setInherited( String )
205
206 /**
207 * Set
208 *
209 * Multiple specifications of a set of reports,
210 * each having (possibly) different
211 * configuration. This is the reporting parallel to
212 * an <code>execution</code> in the build.
213 *
214 *
215 *
216 * @param reportSets
217 */
218 public void setReportSets( java.util.List reportSets )
219 {
220 this.reportSets = reportSets;
221 } //-- void setReportSets( java.util.List )
222
223 /**
224 * Set the version of the reporting plugin to be used.
225 *
226 * @param version
227 */
228 public void setVersion( String version )
229 {
230 this.version = version;
231 } //-- void setVersion( String )
232
233
234
235 private java.util.Map reportSetMap = null;
236
237 /**
238 * Reset the <code>reportSetMap</code> field to <code>null</code>
239 */
240 public void flushReportSetMap()
241 {
242 this.reportSetMap = null;
243 }
244
245 /**
246 * @return a Map of reportSets field with <code>ReportSet#getId()</code> as key
247 * @see org.apache.maven.model.ReportSet#getId()
248 */
249 public java.util.Map getReportSetsAsMap()
250 {
251 if ( reportSetMap == null )
252 {
253 reportSetMap = new java.util.LinkedHashMap();
254 if ( getReportSets() != null )
255 {
256 for ( java.util.Iterator i = getReportSets().iterator(); i.hasNext(); )
257 {
258 ReportSet reportSet = (ReportSet) i.next();
259 reportSetMap.put( reportSet.getId(), reportSet );
260 }
261 }
262 }
263
264 return reportSetMap;
265 }
266
267 /**
268 * @return the key of the report plugin, ie <code>groupId:artifactId</code>
269 */
270 public String getKey()
271 {
272 return constructKey( groupId, artifactId );
273 }
274
275 /**
276 * @param groupId
277 * @param artifactId
278 * @return the key of the report plugin, ie <code>groupId:artifactId</code>
279 */
280 public static String constructKey( String groupId, String artifactId )
281 {
282 return groupId + ":" + artifactId;
283 }
284
285 private boolean inheritanceApplied = true;
286
287 public void unsetInheritanceApplied()
288 {
289 this.inheritanceApplied = false;
290 }
291
292 public boolean isInheritanceApplied()
293 {
294 return inheritanceApplied;
295 }
296
297 /**
298 * @see java.lang.Object#equals(java.lang.Object)
299 */
300 public boolean equals( Object other )
301 {
302 if ( other instanceof ReportPlugin )
303 {
304 ReportPlugin otherPlugin = (ReportPlugin) other;
305
306 return getKey().equals( otherPlugin.getKey() );
307 }
308
309 return false;
310 }
311
312 /**
313 * @see java.lang.Object#hashCode()
314 */
315 public int hashCode()
316 {
317 return getKey().hashCode();
318 }
319
320 /**
321 * @see java.lang.Object#toString()
322 */
323 public String toString()
324 {
325 return "ReportPlugin [" + getKey() + "]";
326 }
327
328
329 private String modelEncoding = "UTF-8";
330
331 /**
332 * Set an encoding used for reading/writing the model.
333 *
334 * @param modelEncoding the encoding used when reading/writing the model.
335 */
336 public void setModelEncoding( String modelEncoding )
337 {
338 this.modelEncoding = modelEncoding;
339 }
340
341 /**
342 * @return the current encoding used when reading/writing this model.
343 */
344 public String getModelEncoding()
345 {
346 return modelEncoding;
347 }
348 }