]> source.dussan.org Git - archiva.git/blob
b778401500de38dcf5aeaae8054ae18cc9d74541
[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     @SuppressWarnings("unchecked")
183     public static Properties clone( Properties properties )
184     {
185         if ( properties == null )
186         {
187             return null;
188         }
189
190         Properties cloned = new Properties();
191
192         Enumeration<String> keys = (Enumeration<String>) properties.propertyNames();
193         while ( keys.hasMoreElements() )
194         {
195             String key = (String) keys.nextElement();
196             String value = properties.getProperty( key );
197             cloned.setProperty( key, value );
198         }
199
200         return cloned;
201     }
202
203     public static Scm clone( Scm scm )
204     {
205         if ( scm == null )
206         {
207             return null;
208         }
209
210         Scm cloned = new Scm();
211
212         cloned.setConnection( scm.getConnection() );
213         cloned.setDeveloperConnection( scm.getDeveloperConnection() );
214         cloned.setUrl( scm.getUrl() );
215
216         return cloned;
217     }
218
219     public static SnapshotVersion clone( SnapshotVersion snapshotVersion )
220     {
221         if ( snapshotVersion == null )
222         {
223             return null;
224         }
225
226         SnapshotVersion cloned = new SnapshotVersion();
227
228         cloned.setTimestamp( snapshotVersion.getTimestamp() );
229         cloned.setBuildNumber( snapshotVersion.getBuildNumber() );
230
231         return cloned;
232     }
233
234     public static VersionedReference clone( VersionedReference versionedReference )
235     {
236         if ( versionedReference == null )
237         {
238             return null;
239         }
240
241         VersionedReference cloned = new VersionedReference();
242
243         cloned.setGroupId( versionedReference.getGroupId() );
244         cloned.setArtifactId( versionedReference.getArtifactId() );
245         cloned.setVersion( versionedReference.getVersion() );
246
247         return cloned;
248     }
249
250     public static List<ArtifactReference> cloneArtifactReferences( List<ArtifactReference> artifactReferenceList )
251     {
252         if ( artifactReferenceList == null )
253         {
254             return null;
255         }
256
257         List<ArtifactReference> ret = new ArrayList<ArtifactReference>();
258
259         for ( ArtifactReference ref : artifactReferenceList )
260         {
261             ret.add( clone( ref ) );
262         }
263
264         return ret;
265     }
266
267     public static List<Dependency> cloneDependencies( List<Dependency> dependencies )
268     {
269         if ( dependencies == null )
270         {
271             return null;
272         }
273
274         List<Dependency> ret = new ArrayList<Dependency>();
275
276         for ( Dependency dep : dependencies )
277         {
278             if ( dep == null )
279             {
280                 // Skip null dependency.
281                 continue;
282             }
283
284             ret.add( clone( dep ) );
285         }
286
287         return ret;
288     }
289
290     public static List<Exclusion> cloneExclusions( List<Exclusion> exclusions )
291     {
292         if ( exclusions == null )
293         {
294             return null;
295         }
296
297         List<Exclusion> ret = new ArrayList<Exclusion>();
298
299         for ( Exclusion exclusion : exclusions )
300         {
301             Exclusion cloned = new Exclusion();
302
303             cloned.setGroupId( exclusion.getGroupId() );
304             cloned.setArtifactId( exclusion.getArtifactId() );
305
306             ret.add( cloned );
307         }
308
309         return ret;
310     }
311
312     public static List<Individual> cloneIndividuals( List<Individual> individuals )
313     {
314         if ( individuals == null )
315         {
316             return individuals;
317         }
318
319         List<Individual> ret = new ArrayList<Individual>();
320
321         Iterator<Individual> it = individuals.iterator();
322         while ( it.hasNext() )
323         {
324             Individual individual = it.next();
325             Individual cloned = new Individual();
326
327             cloned.setPrincipal( individual.getPrincipal() );
328
329             cloned.setEmail( individual.getEmail() );
330             cloned.setName( individual.getName() );
331             cloned.setOrganization( individual.getOrganization() );
332             cloned.setOrganizationUrl( individual.getOrganizationUrl() );
333             cloned.setUrl( individual.getUrl() );
334             cloned.setTimezone( individual.getTimezone() );
335
336             cloned.setRoles( cloneRoles( individual.getRoles() ) );
337             cloned.setProperties( clone( individual.getProperties() ) );
338
339             ret.add( cloned );
340         }
341
342         return ret;
343     }
344
345     public static List<License> cloneLicenses( List<License> licenses )
346     {
347         if ( licenses == null )
348         {
349             return null;
350         }
351
352         List<License> ret = new ArrayList<License>();
353
354         for ( License license : licenses )
355         {
356             License cloned = new License();
357
358             cloned.setId( license.getId() );
359             cloned.setName( license.getName() );
360             cloned.setUrl( license.getUrl() );
361             cloned.setComments( license.getComments() );
362
363             ret.add( cloned );
364         }
365
366         return ret;
367     }
368
369     public static List<MailingList> cloneMailingLists( List<MailingList> mailingLists )
370     {
371         if ( mailingLists == null )
372         {
373             return null;
374         }
375
376         List<MailingList> ret = new ArrayList<MailingList>();
377
378         for ( MailingList mailingList : mailingLists )
379         {
380             if ( mailingList == null )
381             {
382                 // Skip null mailing list.
383                 continue;
384             }
385
386             ret.add( clone( mailingList ) );
387         }
388
389         return ret;
390     }
391
392     public static List<ArtifactReference> clonePlugins( List<ArtifactReference> plugins )
393     {
394         return cloneArtifactReferences( plugins );
395     }
396
397     public static List<ArtifactReference> cloneReports( List<ArtifactReference> reports )
398     {
399         return cloneArtifactReferences( reports );
400     }
401
402     public static List<ProjectRepository> cloneRepositories( List<ProjectRepository> repositories )
403     {
404         if ( repositories == null )
405         {
406             return null;
407         }
408
409         List<ProjectRepository> ret = new ArrayList<ProjectRepository>();
410
411         for ( ProjectRepository repository : repositories )
412         {
413             ProjectRepository cloned = new ProjectRepository();
414
415             cloned.setId( repository.getId() );
416             cloned.setName( repository.getName() );
417             cloned.setUrl( repository.getUrl() );
418             cloned.setLayout( repository.getLayout() );
419             cloned.setPlugins( repository.isPlugins() );
420             cloned.setReleases( repository.isReleases() );
421             cloned.setSnapshots( repository.isSnapshots() );
422
423             ret.add( cloned );
424         }
425
426         return ret;
427     }
428
429     public static List<String> cloneRoles( List<String> roles )
430     {
431         return cloneSimpleStringList( roles );
432     }
433
434     private static List<String> cloneSimpleStringList( List<String> simple )
435     {
436         if ( simple == null )
437         {
438             return null;
439         }
440
441         List<String> ret = new ArrayList<String>();
442
443         for ( String txt : simple )
444         {
445             ret.add( txt );
446         }
447
448         return ret;
449     }
450
451     public static List<String> cloneAvailableVersions( List<String> availableVersions )
452     {
453         return cloneSimpleStringList( availableVersions );
454     }
455 }