]> source.dussan.org Git - archiva.git/blob
a4bfed13b1b2a9608fe7271247f436b78854b508
[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         cloned.setProperties( clone(model.getProperties() ) );
69
70         return cloned;
71     }
72
73     public static ArtifactReference clone( ArtifactReference artifactReference )
74     {
75         if ( artifactReference == null )
76         {
77             return null;
78         }
79
80         ArtifactReference cloned = new ArtifactReference();
81
82         cloned.setGroupId( artifactReference.getGroupId() );
83         cloned.setArtifactId( artifactReference.getArtifactId() );
84         cloned.setVersion( artifactReference.getVersion() );
85         cloned.setClassifier( artifactReference.getClassifier() );
86         cloned.setType( artifactReference.getType() );
87
88         return cloned;
89     }
90
91     public static CiManagement clone( CiManagement ciManagement )
92     {
93         if ( ciManagement == null )
94         {
95             return null;
96         }
97
98         CiManagement cloned = new CiManagement();
99
100         cloned.setSystem( ciManagement.getSystem() );
101         cloned.setUrl( ciManagement.getUrl() );
102
103         return cloned;
104     }
105
106     public static Dependency clone( Dependency dependency )
107     {
108         if ( dependency == null )
109         {
110             return null;
111         }
112
113         Dependency cloned = new Dependency();
114
115         // Identification
116         cloned.setGroupId( dependency.getGroupId() );
117         cloned.setArtifactId( dependency.getArtifactId() );
118         cloned.setVersion( dependency.getVersion() );
119         cloned.setClassifier( dependency.getClassifier() );
120         cloned.setType( dependency.getType() );
121
122         // The rest.
123         cloned.setTransitive( dependency.isTransitive() );
124         cloned.setScope( dependency.getScope() );
125         cloned.setOptional( dependency.isOptional() );
126         cloned.setSystemPath( dependency.getSystemPath() );
127         cloned.setUrl( dependency.getUrl() );
128         cloned.setExclusions( cloneExclusions( dependency.getExclusions() ) );
129
130         return cloned;
131     }
132
133     public static IssueManagement clone( IssueManagement issueManagement )
134     {
135         if ( issueManagement == null )
136         {
137             return null;
138         }
139
140         IssueManagement cloned = new IssueManagement();
141
142         cloned.setSystem( issueManagement.getSystem() );
143         cloned.setUrl( issueManagement.getUrl() );
144
145         return cloned;
146     }
147
148     public static MailingList clone( MailingList mailingList )
149     {
150         if ( mailingList == null )
151         {
152             return null;
153         }
154
155         MailingList cloned = new MailingList();
156
157         cloned.setName( mailingList.getName() );
158         cloned.setSubscribeAddress( mailingList.getSubscribeAddress() );
159         cloned.setUnsubscribeAddress( mailingList.getUnsubscribeAddress() );
160         cloned.setPostAddress( mailingList.getPostAddress() );
161         cloned.setMainArchiveUrl( mailingList.getMainArchiveUrl() );
162         cloned.setOtherArchives( cloneSimpleStringList( mailingList.getOtherArchives() ) );
163
164         return cloned;
165     }
166
167     public static Organization clone( Organization organization )
168     {
169         if ( organization == null )
170         {
171             return null;
172         }
173
174         Organization cloned = new Organization();
175
176         cloned.setFavicon( organization.getFavicon() );
177         cloned.setName( organization.getName() );
178         cloned.setUrl( organization.getUrl() );
179
180         return cloned;
181     }
182
183     @SuppressWarnings("unchecked")
184     public static Properties clone( Properties properties )
185     {
186         if ( properties == null )
187         {
188             return null;
189         }
190
191         Properties cloned = new Properties();
192
193         Enumeration<String> keys = (Enumeration<String>) properties.propertyNames();
194         while ( keys.hasMoreElements() )
195         {
196             String key = (String) keys.nextElement();
197             String value = properties.getProperty( key );
198             cloned.setProperty( key, value );
199         }
200
201         return cloned;
202     }
203
204     public static Scm clone( Scm scm )
205     {
206         if ( scm == null )
207         {
208             return null;
209         }
210
211         Scm cloned = new Scm();
212
213         cloned.setConnection( scm.getConnection() );
214         cloned.setDeveloperConnection( scm.getDeveloperConnection() );
215         cloned.setUrl( scm.getUrl() );
216
217         return cloned;
218     }
219
220     public static SnapshotVersion clone( SnapshotVersion snapshotVersion )
221     {
222         if ( snapshotVersion == null )
223         {
224             return null;
225         }
226
227         SnapshotVersion cloned = new SnapshotVersion();
228
229         cloned.setTimestamp( snapshotVersion.getTimestamp() );
230         cloned.setBuildNumber( snapshotVersion.getBuildNumber() );
231
232         return cloned;
233     }
234
235     public static VersionedReference clone( VersionedReference versionedReference )
236     {
237         if ( versionedReference == null )
238         {
239             return null;
240         }
241
242         VersionedReference cloned = new VersionedReference();
243
244         cloned.setGroupId( versionedReference.getGroupId() );
245         cloned.setArtifactId( versionedReference.getArtifactId() );
246         cloned.setVersion( versionedReference.getVersion() );
247
248         return cloned;
249     }
250
251     public static List<ArtifactReference> cloneArtifactReferences( List<ArtifactReference> artifactReferenceList )
252     {
253         if ( artifactReferenceList == null )
254         {
255             return null;
256         }
257
258         List<ArtifactReference> ret = new ArrayList<ArtifactReference>();
259
260         for ( ArtifactReference ref : artifactReferenceList )
261         {
262             ret.add( clone( ref ) );
263         }
264
265         return ret;
266     }
267
268     public static List<Dependency> cloneDependencies( List<Dependency> dependencies )
269     {
270         if ( dependencies == null )
271         {
272             return null;
273         }
274
275         List<Dependency> ret = new ArrayList<Dependency>();
276
277         for ( Dependency dep : dependencies )
278         {
279             if ( dep == null )
280             {
281                 // Skip null dependency.
282                 continue;
283             }
284
285             ret.add( clone( dep ) );
286         }
287
288         return ret;
289     }
290
291     public static List<Exclusion> cloneExclusions( List<Exclusion> exclusions )
292     {
293         if ( exclusions == null )
294         {
295             return null;
296         }
297
298         List<Exclusion> ret = new ArrayList<Exclusion>();
299
300         for ( Exclusion exclusion : exclusions )
301         {
302             Exclusion cloned = new Exclusion();
303
304             cloned.setGroupId( exclusion.getGroupId() );
305             cloned.setArtifactId( exclusion.getArtifactId() );
306
307             ret.add( cloned );
308         }
309
310         return ret;
311     }
312
313     public static List<Individual> cloneIndividuals( List<Individual> individuals )
314     {
315         if ( individuals == null )
316         {
317             return individuals;
318         }
319
320         List<Individual> ret = new ArrayList<Individual>();
321
322         Iterator<Individual> it = individuals.iterator();
323         while ( it.hasNext() )
324         {
325             Individual individual = it.next();
326             Individual cloned = new Individual();
327
328             cloned.setPrincipal( individual.getPrincipal() );
329
330             cloned.setEmail( individual.getEmail() );
331             cloned.setName( individual.getName() );
332             cloned.setOrganization( individual.getOrganization() );
333             cloned.setOrganizationUrl( individual.getOrganizationUrl() );
334             cloned.setUrl( individual.getUrl() );
335             cloned.setTimezone( individual.getTimezone() );
336
337             cloned.setRoles( cloneRoles( individual.getRoles() ) );
338             cloned.setProperties( clone( individual.getProperties() ) );
339
340             ret.add( cloned );
341         }
342
343         return ret;
344     }
345
346     public static List<License> cloneLicenses( List<License> licenses )
347     {
348         if ( licenses == null )
349         {
350             return null;
351         }
352
353         List<License> ret = new ArrayList<License>();
354
355         for ( License license : licenses )
356         {
357             License cloned = new License();
358
359             cloned.setId( license.getId() );
360             cloned.setName( license.getName() );
361             cloned.setUrl( license.getUrl() );
362             cloned.setComments( license.getComments() );
363
364             ret.add( cloned );
365         }
366
367         return ret;
368     }
369
370     public static List<MailingList> cloneMailingLists( List<MailingList> mailingLists )
371     {
372         if ( mailingLists == null )
373         {
374             return null;
375         }
376
377         List<MailingList> ret = new ArrayList<MailingList>();
378
379         for ( MailingList mailingList : mailingLists )
380         {
381             if ( mailingList == null )
382             {
383                 // Skip null mailing list.
384                 continue;
385             }
386
387             ret.add( clone( mailingList ) );
388         }
389
390         return ret;
391     }
392
393     public static List<ArtifactReference> clonePlugins( List<ArtifactReference> plugins )
394     {
395         return cloneArtifactReferences( plugins );
396     }
397
398     public static List<ArtifactReference> cloneReports( List<ArtifactReference> reports )
399     {
400         return cloneArtifactReferences( reports );
401     }
402
403     public static List<ProjectRepository> cloneRepositories( List<ProjectRepository> repositories )
404     {
405         if ( repositories == null )
406         {
407             return null;
408         }
409
410         List<ProjectRepository> ret = new ArrayList<ProjectRepository>();
411
412         for ( ProjectRepository repository : repositories )
413         {
414             ProjectRepository cloned = new ProjectRepository();
415
416             cloned.setId( repository.getId() );
417             cloned.setName( repository.getName() );
418             cloned.setUrl( repository.getUrl() );
419             cloned.setLayout( repository.getLayout() );
420             cloned.setPlugins( repository.isPlugins() );
421             cloned.setReleases( repository.isReleases() );
422             cloned.setSnapshots( repository.isSnapshots() );
423
424             ret.add( cloned );
425         }
426
427         return ret;
428     }
429
430     public static List<String> cloneRoles( List<String> roles )
431     {
432         return cloneSimpleStringList( roles );
433     }
434
435     private static List<String> cloneSimpleStringList( List<String> simple )
436     {
437         if ( simple == null )
438         {
439             return null;
440         }
441
442         List<String> ret = new ArrayList<String>();
443
444         for ( String txt : simple )
445         {
446             ret.add( txt );
447         }
448
449         return ret;
450     }
451
452     public static List<String> cloneAvailableVersions( List<String> availableVersions )
453     {
454         return cloneSimpleStringList( availableVersions );
455     }
456 }