]> source.dussan.org Git - archiva.git/blob
54bf1a828ae5a9051af8d29e946736c1cdb85397
[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 org.apache.commons.lang.StringUtils;
23 import org.apache.maven.archiva.common.utils.VersionUtil;
24
25 /**
26  * ArchivaArtifact - Mutable artifact object.
27  *
28  * @version $Id$
29  */
30 public class ArchivaArtifact
31 {
32     private ArchivaArtifactModel model;
33
34     private ArchivaArtifactPlatformDetails platformDetails;
35
36     private String baseVersion;
37
38     public ArchivaArtifact( String groupId, String artifactId, String version,
39                             String classifier, String type )
40     {
41         if ( empty( groupId ) )
42         {
43             throw new IllegalArgumentException( "Unable to create ArchivaArtifact with empty groupId ["
44                 + Keys.toKey( groupId, artifactId, version, classifier, type ) + "]" );
45         }
46
47         if ( empty( artifactId ) )
48         {
49             throw new IllegalArgumentException( "Unable to create ArchivaArtifact with empty artifactId ["
50                 + Keys.toKey( groupId, artifactId, version, classifier, type ) + "]" );
51         }
52
53         if ( empty( version ) )
54         {
55             throw new IllegalArgumentException( "Unable to create ArchivaArtifact with empty version ["
56                 + Keys.toKey( groupId, artifactId, version, classifier, type ) + "]" );
57         }
58
59         if ( empty( type ) )
60         {
61             throw new IllegalArgumentException( "Unable to create ArchivaArtifact with empty type ["
62                 + Keys.toKey( groupId, artifactId, version, classifier, type ) + "]" );
63         }
64
65         model = new ArchivaArtifactModel();
66
67         model.setGroupId( groupId );
68         model.setArtifactId( artifactId );
69         model.setVersion( version );
70         model.setClassifier( StringUtils.defaultString( classifier ) );
71         model.setType( type );
72         model.setSnapshot( VersionUtil.isSnapshot( version ) );
73         
74         this.baseVersion = VersionUtil.getBaseVersion( version );
75     }
76
77     public ArchivaArtifact( ArchivaArtifactModel artifactModel )
78     {
79         this.model = artifactModel;
80         model.setSnapshot( VersionUtil.isSnapshot( model.getVersion() ) );
81         this.baseVersion = VersionUtil.getBaseVersion( model.getVersion() );
82     }
83     
84     public ArchivaArtifact( ArtifactReference ref )
85     {
86         this( ref.getGroupId(), ref.getArtifactId(), ref.getVersion(), ref.getClassifier(), ref.getType() );
87     }
88
89     public ArchivaArtifactModel getModel()
90     {
91         return model;
92     }
93
94     public String getGroupId()
95     {
96         return model.getGroupId();
97     }
98
99     public String getArtifactId()
100     {
101         return model.getArtifactId();
102     }
103
104     public String getVersion()
105     {
106         return model.getVersion();
107     }
108
109     public String getBaseVersion()
110     {
111         return baseVersion;
112     }
113
114     public boolean isSnapshot()
115     {
116         return model.isSnapshot();
117     }
118
119     public String getClassifier()
120     {
121         return model.getClassifier();
122     }
123
124     public String getType()
125     {
126         return model.getType();
127     }
128
129     public boolean hasClassifier()
130     {
131         return StringUtils.isNotEmpty( model.getClassifier() );
132     }
133
134     public int hashCode()
135     {
136         final int PRIME = 31;
137         int result = 1;
138         if ( model != null )
139         {
140             result = PRIME * result + ( ( model.getGroupId() == null ) ? 0 : model.getGroupId().hashCode() );
141             result = PRIME * result + ( ( model.getArtifactId() == null ) ? 0 : model.getArtifactId().hashCode() );
142             result = PRIME * result + ( ( model.getVersion() == null ) ? 0 : model.getVersion().hashCode() );
143             result = PRIME * result + ( ( model.getClassifier() == null ) ? 0 : model.getClassifier().hashCode() );
144             result = PRIME * result + ( ( model.getType() == null ) ? 0 : model.getType().hashCode() );
145         }
146         return result;
147     }
148
149     public boolean equals( Object obj )
150     {
151         if ( this == obj )
152         {
153             return true;
154         }
155
156         if ( obj == null )
157         {
158             return false;
159         }
160
161         if ( getClass() != obj.getClass() )
162         {
163             return false;
164         }
165
166         final ArchivaArtifact other = (ArchivaArtifact) obj;
167
168         if ( model == null )
169         {
170             if ( other.model != null )
171             {
172                 return false;
173             }
174         }
175         if ( !model.equals( other.model ) )
176         {
177             return false;
178         }
179
180         return true;
181     }
182
183     public String toString()
184     {
185         StringBuffer sb = new StringBuffer();
186         if ( model.getGroupId() != null )
187         {
188             sb.append( model.getGroupId() );
189             sb.append( ":" );
190         }
191         appendArtifactTypeClassifierString( sb );
192         sb.append( ":" );
193         if ( model.getVersion() != null )
194         {
195             sb.append( model.getVersion() );
196         }
197
198         return sb.toString();
199     }
200
201     private void appendArtifactTypeClassifierString( StringBuffer sb )
202     {
203         sb.append( model.getArtifactId() );
204         sb.append( ":" );
205         sb.append( getType() );
206         if ( hasClassifier() )
207         {
208             sb.append( ":" );
209             sb.append( getClassifier() );
210         }
211     }
212
213     private boolean empty( String value )
214     {
215         return ( value == null ) || ( value.trim().length() < 1 );
216     }
217
218     public ArchivaArtifactPlatformDetails getPlatformDetails()
219     {
220         return platformDetails;
221     }
222
223     public void setPlatformDetails( ArchivaArtifactPlatformDetails platformDetails )
224     {
225         this.platformDetails = platformDetails;
226     }
227 }