]> source.dussan.org Git - archiva.git/blob
5a3fb46e88d6a712ac04a27190f51156d46adb72
[archiva.git] /
1 package org.apache.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.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, String repositoryId )
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         if ( empty( repositoryId ) )
66         {
67             throw new IllegalArgumentException( "Unable to create ArchivaArtifact with empty repositoryId ["
68                 + Keys.toKey( groupId, artifactId, version, classifier, type ) + "]" );
69         }
70
71         model = new ArchivaArtifactModel();
72
73         model.setGroupId( groupId );
74         model.setArtifactId( artifactId );
75         model.setVersion( version );
76         model.setClassifier( StringUtils.defaultString( classifier ) );
77         model.setType( type );
78         model.setSnapshot( VersionUtil.isSnapshot( version ) );
79         model.setRepositoryId(repositoryId);
80         
81         this.baseVersion = VersionUtil.getBaseVersion( version );
82     }
83
84     public ArchivaArtifact( ArchivaArtifactModel artifactModel )
85     {
86         this.model = artifactModel;
87         model.setSnapshot( VersionUtil.isSnapshot( model.getVersion() ) );
88         this.baseVersion = VersionUtil.getBaseVersion( model.getVersion() );
89     }
90     
91     public ArchivaArtifact( ArtifactReference ref, String repositoryId )
92     {
93         this( ref.getGroupId(), ref.getArtifactId(), ref.getVersion(), ref.getClassifier(), ref.getType(), repositoryId );
94     }
95
96     public ArchivaArtifactModel getModel()
97     {
98         return model;
99     }
100
101     public String getGroupId()
102     {
103         return model.getGroupId();
104     }
105
106     public String getArtifactId()
107     {
108         return model.getArtifactId();
109     }
110
111     public String getVersion()
112     {
113         return model.getVersion();
114     }
115
116     public String getBaseVersion()
117     {
118         return baseVersion;
119     }
120
121     public boolean isSnapshot()
122     {
123         return model.isSnapshot();
124     }
125
126     public String getClassifier()
127     {
128         return model.getClassifier();
129     }
130
131     public String getType()
132     {
133         return model.getType();
134     }
135
136     public boolean hasClassifier()
137     {
138         return StringUtils.isNotEmpty( model.getClassifier() );
139     }
140
141     public String getRepositoryId()
142     {
143         return model.getRepositoryId();
144     }
145
146     @Override
147     public int hashCode()
148     {
149         final int PRIME = 31;
150         int result = 1;
151         if ( model != null )
152         {
153             result = PRIME * result + ( ( model.getGroupId() == null ) ? 0 : model.getGroupId().hashCode() );
154             result = PRIME * result + ( ( model.getArtifactId() == null ) ? 0 : model.getArtifactId().hashCode() );
155             result = PRIME * result + ( ( model.getVersion() == null ) ? 0 : model.getVersion().hashCode() );
156             result = PRIME * result + ( ( model.getClassifier() == null ) ? 0 : model.getClassifier().hashCode() );
157             result = PRIME * result + ( ( model.getType() == null ) ? 0 : model.getType().hashCode() );
158         }
159         return result;
160     }
161
162     @Override
163     public boolean equals( Object obj )
164     {
165         if ( this == obj )
166         {
167             return true;
168         }
169
170         if ( obj == null )
171         {
172             return false;
173         }
174
175         if ( getClass() != obj.getClass() )
176         {
177             return false;
178         }
179
180         final ArchivaArtifact other = (ArchivaArtifact) obj;
181
182         if ( model == null )
183         {
184             if ( other.model != null )
185             {
186                 return false;
187             }
188         }
189         if ( !model.equals( other.model ) )
190         {
191             return false;
192         }
193
194         return true;
195     }
196
197     @Override
198     public String toString()
199     {
200         StringBuffer sb = new StringBuffer();
201         if ( model.getGroupId() != null )
202         {
203             sb.append( model.getGroupId() );
204             sb.append( ":" );
205         }
206         appendArtifactTypeClassifierString( sb );
207         sb.append( ":" );
208         if ( model.getVersion() != null )
209         {
210             sb.append( model.getVersion() );
211         }
212
213         return sb.toString();
214     }
215
216     private void appendArtifactTypeClassifierString( StringBuffer sb )
217     {
218         sb.append( model.getArtifactId() );
219         sb.append( ":" );
220         sb.append( getType() );
221         if ( hasClassifier() )
222         {
223             sb.append( ":" );
224             sb.append( getClassifier() );
225         }
226     }
227
228     private boolean empty( String value )
229     {
230         return ( value == null ) || ( value.trim().length() < 1 );
231     }
232
233     public ArchivaArtifactPlatformDetails getPlatformDetails()
234     {
235         return platformDetails;
236     }
237
238     public void setPlatformDetails( ArchivaArtifactPlatformDetails platformDetails )
239     {
240         this.platformDetails = platformDetails;
241     }
242 }