]> source.dussan.org Git - archiva.git/blob
8eba80c1fd3132532a17618910d7e948f5b7063e
[archiva.git] /
1 package org.apache.maven.archiva.model;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import java.util.ArrayList;
23 import java.util.Enumeration;
24 import java.util.Iterator;
25 import java.util.List;
26 import java.util.Properties;
27
28 /**
29  * Utility methods for cloning various Archiva Model objects. 
30  *
31  * @version $Id$
32  */
33 public class ArchivaModelCloner
34 {
35     public static ArchivaProjectModel clone( ArchivaProjectModel model )
36     {
37         if ( model == null )
38         {
39             return null;
40         }
41
42         ArchivaProjectModel cloned = new ArchivaProjectModel();
43
44         cloned.setGroupId( model.getGroupId() );
45         cloned.setArtifactId( model.getArtifactId() );
46         cloned.setVersion( model.getVersion() );
47
48         cloned.setParentProject( clone( model.getParentProject() ) );
49
50         cloned.setName( model.getName() );
51         cloned.setDescription( model.getDescription() );
52         cloned.setUrl( model.getUrl() );
53         cloned.setPackaging( model.getPackaging() );
54         cloned.setOrigin( model.getOrigin() );
55
56         cloned.setMailingLists( cloneMailingLists( model.getMailingLists() ) );
57         cloned.setCiManagement( clone( model.getCiManagement() ) );
58         cloned.setIndividuals( cloneIndividuals( model.getIndividuals() ) );
59         cloned.setIssueManagement( clone( model.getIssueManagement() ) );
60         cloned.setLicenses( cloneLicenses( model.getLicenses() ) );
61         cloned.setOrganization( clone( model.getOrganization() ) );
62         cloned.setScm( clone( model.getScm() ) );
63         cloned.setRepositories( cloneRepositories( model.getRepositories() ) );
64         cloned.setDependencies( cloneDependencies( model.getDependencies() ) );
65         cloned.setPlugins( clonePlugins( model.getPlugins() ) );
66         cloned.setReports( cloneReports( model.getReports() ) );
67         cloned.setDependencyManagement( cloneDependencies( model.getDependencyManagement() ) );
68
69         return cloned;
70     }
71
72     public static ArtifactReference clone( ArtifactReference artifactReference )
73     {
74         if ( artifactReference == null )
75         {
76             return null;
77         }
78
79         ArtifactReference cloned = new ArtifactReference();
80
81         cloned.setGroupId( artifactReference.getGroupId() );
82         cloned.setArtifactId( artifactReference.getArtifactId() );
83         cloned.setVersion( artifactReference.getVersion() );
84         cloned.setClassifier( artifactReference.getClassifier() );
85         cloned.setType( artifactReference.getType() );
86
87         return cloned;
88     }
89
90     public static CiManagement clone( CiManagement ciManagement )
91     {
92         if ( ciManagement == null )
93         {
94             return null;
95         }
96
97         CiManagement cloned = new CiManagement();
98
99         cloned.setSystem( ciManagement.getSystem() );
100         cloned.setUrl( ciManagement.getUrl() );
101
102         return cloned;
103     }
104
105     public static Dependency clone( Dependency dependency )
106     {
107         if ( dependency == null )
108         {
109             return null;
110         }
111
112         Dependency cloned = new Dependency();
113
114         // Identification
115         cloned.setGroupId( dependency.getGroupId() );
116         cloned.setArtifactId( dependency.getArtifactId() );
117         cloned.setVersion( dependency.getVersion() );
118         cloned.setClassifier( dependency.getClassifier() );
119         cloned.setType( dependency.getType() );
120
121         // The rest.
122         cloned.setTransitive( dependency.isTransitive() );
123         cloned.setScope( dependency.getScope() );
124         cloned.setOptional( dependency.isOptional() );
125         cloned.setSystemPath( dependency.getSystemPath() );
126         cloned.setUrl( dependency.getUrl() );
127         cloned.setExclusions( cloneExclusions( dependency.getExclusions() ) );
128
129         return cloned;
130     }
131
132     public static IssueManagement clone( IssueManagement issueManagement )
133     {
134         if ( issueManagement == null )
135         {
136             return null;
137         }
138
139         IssueManagement cloned = new IssueManagement();
140
141         cloned.setSystem( issueManagement.getSystem() );
142         cloned.setUrl( issueManagement.getUrl() );
143
144         return cloned;
145     }
146
147     public static MailingList clone( MailingList mailingList )
148     {
149         if ( mailingList == null )
150         {
151             return null;
152         }
153
154         MailingList cloned = new MailingList();
155
156         cloned.setName( mailingList.getName() );
157         cloned.setSubscribeAddress( mailingList.getSubscribeAddress() );
158         cloned.setUnsubscribeAddress( mailingList.getUnsubscribeAddress() );
159         cloned.setPostAddress( mailingList.getPostAddress() );
160         cloned.setMainArchiveUrl( mailingList.getMainArchiveUrl() );
161         cloned.setOtherArchives( cloneSimpleStringList( mailingList.getOtherArchives() ) );
162
163         return cloned;
164     }
165
166     public static Organization clone( Organization organization )
167     {
168         if ( organization == null )
169         {
170             return null;
171         }
172
173         Organization cloned = new Organization();
174
175         cloned.setFavicon( organization.getFavicon() );
176         cloned.setName( organization.getName() );
177         cloned.setUrl( organization.getUrl() );
178
179         return cloned;
180     }
181
182     public static Properties clone( Properties properties )
183     {
184         if ( properties == null )
185         {
186             return null;
187         }
188
189         Properties cloned = new Properties();
190
191         Enumeration keys = properties.propertyNames();
192         while ( keys.hasMoreElements() )
193         {
194             String key = (String) keys.nextElement();
195             String value = properties.getProperty( key );
196             cloned.setProperty( key, value );
197         }
198
199         return cloned;
200     }
201
202     public static Scm clone( Scm scm )
203     {
204         if ( scm == null )
205         {
206             return null;
207         }
208
209         Scm cloned = new Scm();
210
211         cloned.setConnection( scm.getConnection() );
212         cloned.setDeveloperConnection( scm.getDeveloperConnection() );
213         cloned.setUrl( scm.getUrl() );
214
215         return cloned;
216     }
217
218     public static SnapshotVersion clone( SnapshotVersion snapshotVersion )
219     {
220         if ( snapshotVersion == null )
221         {
222             return null;
223         }
224
225         SnapshotVersion cloned = new SnapshotVersion();
226
227         cloned.setTimestamp( snapshotVersion.getTimestamp() );
228         cloned.setBuildNumber( snapshotVersion.getBuildNumber() );
229
230         return cloned;
231     }
232
233     public static VersionedReference clone( VersionedReference versionedReference )
234     {
235         if ( versionedReference == null )
236         {
237             return null;
238         }
239
240         VersionedReference cloned = new VersionedReference();
241
242         cloned.setGroupId( versionedReference.getGroupId() );
243         cloned.setArtifactId( versionedReference.getArtifactId() );
244         cloned.setVersion( versionedReference.getVersion() );
245
246         return cloned;
247     }
248
249     public static List cloneArtifactReferences( List artifactReferenceList )
250     {
251         if ( artifactReferenceList == null )
252         {
253             return null;
254         }
255
256         List ret = new ArrayList();
257
258         Iterator it = artifactReferenceList.iterator();
259         while ( it.hasNext() )
260         {
261             ArtifactReference artifactReference = (ArtifactReference) it.next();
262             ret.add( clone( artifactReference ) );
263         }
264
265         return ret;
266     }
267
268     public static List cloneDependencies( List dependencies )
269     {
270         if ( dependencies == null )
271         {
272             return null;
273         }
274
275         List ret = new ArrayList();
276
277         Iterator it = dependencies.iterator();
278         while ( it.hasNext() )
279         {
280             Dependency dep = (Dependency) it.next();
281
282             if ( dep == null )
283             {
284                 // Skip null dependency.
285                 continue;
286             }
287
288             ret.add( clone( dep ) );
289         }
290
291         return ret;
292     }
293
294     public static List cloneExclusions( List exclusions )
295     {
296         if ( exclusions == null )
297         {
298             return null;
299         }
300
301         List ret = new ArrayList();
302
303         Iterator it = exclusions.iterator();
304         while ( it.hasNext() )
305         {
306             Exclusion exclusion = (Exclusion) it.next();
307             Exclusion cloned = new Exclusion();
308
309             cloned.setGroupId( exclusion.getGroupId() );
310             cloned.setArtifactId( exclusion.getArtifactId() );
311
312             ret.add( cloned );
313         }
314
315         return ret;
316     }
317
318     public static List cloneIndividuals( List individuals )
319     {
320         if ( individuals == null )
321         {
322             return individuals;
323         }
324
325         List ret = new ArrayList();
326
327         Iterator it = individuals.iterator();
328         while ( it.hasNext() )
329         {
330             Individual individual = (Individual) it.next();
331             Individual cloned = new Individual();
332
333             cloned.setPrincipal( individual.getPrincipal() );
334
335             cloned.setEmail( individual.getEmail() );
336             cloned.setName( individual.getName() );
337             cloned.setOrganization( individual.getOrganization() );
338             cloned.setOrganizationUrl( individual.getOrganizationUrl() );
339             cloned.setUrl( individual.getUrl() );
340             cloned.setTimezone( individual.getTimezone() );
341
342             cloned.setRoles( cloneRoles( individual.getRoles() ) );
343             cloned.setProperties( clone( individual.getProperties() ) );
344
345             ret.add( cloned );
346         }
347
348         return ret;
349     }
350
351     public static List cloneLicenses( List licenses )
352     {
353         if ( licenses == null )
354         {
355             return null;
356         }
357
358         List ret = new ArrayList();
359
360         Iterator it = licenses.iterator();
361         while ( it.hasNext() )
362         {
363             License license = (License) it.next();
364             License cloned = new License();
365
366             cloned.setId( license.getId() );
367             cloned.setName( license.getName() );
368             cloned.setUrl( license.getUrl() );
369             cloned.setComments( license.getComments() );
370
371             ret.add( cloned );
372         }
373
374         return ret;
375     }
376
377     public static List cloneMailingLists( List mailingLists )
378     {
379         if ( mailingLists == null )
380         {
381             return null;
382         }
383
384         List ret = new ArrayList();
385
386         Iterator it = mailingLists.iterator();
387         while ( it.hasNext() )
388         {
389             MailingList mailingList = (MailingList) it.next();
390
391             if ( mailingList == null )
392             {
393                 // Skip null mailing list.
394                 continue;
395             }
396
397             ret.add( clone( mailingList ) );
398         }
399
400         return ret;
401     }
402
403     public static List clonePlugins( List plugins )
404     {
405         return cloneArtifactReferences( plugins );
406     }
407
408     public static List cloneReports( List reports )
409     {
410         return cloneArtifactReferences( reports );
411     }
412
413     public static List cloneRepositories( List repositories )
414     {
415         if ( repositories == null )
416         {
417             return null;
418         }
419
420         List ret = new ArrayList();
421
422         Iterator it = repositories.iterator();
423         while ( it.hasNext() )
424         {
425             ProjectRepository repository = (ProjectRepository) it.next();
426             ProjectRepository cloned = new ProjectRepository();
427
428             cloned.setId( repository.getId() );
429             cloned.setName( repository.getName() );
430             cloned.setUrl( repository.getUrl() );
431             cloned.setLayout( repository.getLayout() );
432             cloned.setPlugins( repository.isPlugins() );
433             cloned.setReleases( repository.isReleases() );
434             cloned.setSnapshots( repository.isSnapshots() );
435
436             ret.add( cloned );
437         }
438
439         return ret;
440     }
441
442     public static List cloneRoles( List roles )
443     {
444         return cloneSimpleStringList( roles );
445     }
446
447     private static List cloneSimpleStringList( List simple )
448     {
449         if ( simple == null )
450         {
451             return null;
452         }
453
454         List ret = new ArrayList();
455
456         Iterator it = simple.iterator();
457
458         while ( it.hasNext() )
459         {
460             String txt = (String) it.next();
461             ret.add( txt );
462         }
463
464         return ret;
465     }
466
467     public static List cloneAvailableVersions( List availableVersions )
468     {
469         return cloneSimpleStringList( availableVersions );
470     }
471 }