]> source.dussan.org Git - archiva.git/blob
aa635e9ff94b64feca8318db174ec805f22f7f38
[archiva.git] /
1 package org.apache.archiva.metadata.repository.cassandra.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 javax.persistence.Column;
23 import javax.persistence.Entity;
24 import javax.persistence.Id;
25 import java.io.Serializable;
26 import java.util.Date;
27
28 /**
29  * Cassandra storage model for {@link org.apache.archiva.metadata.model.ArtifactMetadata}
30  *
31  * @author Olivier Lamy
32  */
33 @Entity
34 public class ArtifactMetadataModel
35     implements Serializable
36 {
37
38     // repositoryId + namespaceId + project + projectVersion + id
39     @Id
40     private String artifactMetadataModelId;
41
42     @Column(name = "id")
43     private String id;
44
45     @Column(name = "repositoryId")
46     private String repositoryId;
47
48     @Column(name = "namespace")
49     private String namespace;
50
51     @Column(name = "project")
52     private String project;
53
54     @Column(name = "projectVersion")
55     private String projectVersion;
56
57     @Column(name = "version")
58     private String version;
59
60     @Column(name = "fileLastModified")
61     private long fileLastModified;
62
63     @Column(name = "size")
64     private long size;
65
66     @Column(name = "md5")
67     private String md5;
68
69     @Column(name = "sha1")
70     private String sha1;
71
72     @Column(name = "whenGathered")
73     private long whenGathered;
74
75     public ArtifactMetadataModel()
76     {
77         // no op
78     }
79
80     public ArtifactMetadataModel( String artifactMetadataModelId, String id, String repositoryId, String namespace,
81                                   String project, String projectVersion, String version, Date fileLastModified,
82                                   long size, String md5, String sha1, Date whenGathered )
83     {
84         this.artifactMetadataModelId = artifactMetadataModelId;
85         this.id = id;
86         this.repositoryId = repositoryId;
87         this.namespace = namespace;
88         this.project = project;
89         this.projectVersion = projectVersion;
90         this.version = version;
91         this.fileLastModified = ( fileLastModified != null ? fileLastModified.getTime() : 0 );
92         this.size = size;
93         this.md5 = md5;
94         this.sha1 = sha1;
95         this.whenGathered = whenGathered != null ? whenGathered.getTime() : new Date().getTime();
96     }
97
98     public String getArtifactMetadataModelId()
99     {
100         return artifactMetadataModelId;
101     }
102
103     public void setArtifactMetadataModelId( String artifactMetadataModelId )
104     {
105         this.artifactMetadataModelId = artifactMetadataModelId;
106     }
107
108     public String getId()
109     {
110         return id;
111     }
112
113     public void setId( String id )
114     {
115         this.id = id;
116     }
117
118     public String getRepositoryId()
119     {
120         return repositoryId;
121     }
122
123     public void setRepositoryId( String repositoryId )
124     {
125         this.repositoryId = repositoryId;
126     }
127
128     public String getNamespace()
129     {
130         return namespace;
131     }
132
133     public void setNamespace( String namespace )
134     {
135         this.namespace = namespace;
136     }
137
138     public String getProject()
139     {
140         return project;
141     }
142
143     public void setProject( String project )
144     {
145         this.project = project;
146     }
147
148     public String getProjectVersion()
149     {
150         return projectVersion;
151     }
152
153     public void setProjectVersion( String projectVersion )
154     {
155         this.projectVersion = projectVersion;
156     }
157
158     public String getVersion()
159     {
160         return version;
161     }
162
163     public void setVersion( String version )
164     {
165         this.version = version;
166     }
167
168     public long getFileLastModified()
169     {
170         return fileLastModified;
171     }
172
173     public void setFileLastModified( long fileLastModified )
174     {
175         this.fileLastModified = fileLastModified;
176     }
177
178     public long getSize()
179     {
180         return size;
181     }
182
183     public void setSize( long size )
184     {
185         this.size = size;
186     }
187
188     public String getMd5()
189     {
190         return md5;
191     }
192
193     public void setMd5( String md5 )
194     {
195         this.md5 = md5;
196     }
197
198     public String getSha1()
199     {
200         return sha1;
201     }
202
203     public void setSha1( String sha1 )
204     {
205         this.sha1 = sha1;
206     }
207
208     public Date getWhenGathered()
209     {
210         return new Date( whenGathered );
211     }
212
213     public void setWhenGathered( long whenGathered )
214     {
215         this.whenGathered = whenGathered;
216     }
217
218     @Override
219     public boolean equals( Object o )
220     {
221         if ( this == o )
222         {
223             return true;
224         }
225         if ( o == null || getClass() != o.getClass() )
226         {
227             return false;
228         }
229
230         ArtifactMetadataModel that = (ArtifactMetadataModel) o;
231
232         if ( !artifactMetadataModelId.equals( that.artifactMetadataModelId ) )
233         {
234             return false;
235         }
236
237         return true;
238     }
239
240     @Override
241     public int hashCode()
242     {
243         return artifactMetadataModelId.hashCode();
244     }
245
246     @Override
247     public String toString()
248     {
249         final StringBuilder sb = new StringBuilder( "ArtifactMetadataModel{" );
250         sb.append( "artifactMetadataModelId='" ).append( artifactMetadataModelId ).append( '\'' );
251         sb.append( ", id='" ).append( id ).append( '\'' );
252         sb.append( ", repositoryId='" ).append( repositoryId ).append( '\'' );
253         sb.append( ", namespace='" ).append( namespace ).append( '\'' );
254         sb.append( ", project='" ).append( project ).append( '\'' );
255         sb.append( ", projectVersion='" ).append( projectVersion ).append( '\'' );
256         sb.append( ", version='" ).append( version ).append( '\'' );
257         sb.append( ", fileLastModified=" ).append( fileLastModified );
258         sb.append( ", size=" ).append( size );
259         sb.append( ", md5='" ).append( md5 ).append( '\'' );
260         sb.append( ", sha1='" ).append( sha1 ).append( '\'' );
261         sb.append( ", whenGathered=" ).append( whenGathered );
262         sb.append( '}' );
263         return sb.toString();
264     }
265
266     public static class KeyBuilder
267     {
268
269         private String project;
270
271         private String id;
272
273         private String namespaceId;
274
275         private String repositoryId;
276
277         private String projectVersion;
278
279         public KeyBuilder()
280         {
281
282         }
283
284         public KeyBuilder withId( String id )
285         {
286             this.id = id;
287             return this;
288         }
289
290
291         public KeyBuilder withNamespace( Namespace namespace )
292         {
293             this.namespaceId = namespace.getName();
294             this.repositoryId = namespace.getRepository().getId();
295             return this;
296         }
297
298         public KeyBuilder withNamespace( String namespaceId )
299         {
300             this.namespaceId = namespaceId;
301             return this;
302         }
303
304         public KeyBuilder withProject( String project )
305         {
306             this.project = project;
307             return this;
308         }
309
310         public KeyBuilder withProjectVersion( String projectVersion )
311         {
312             this.projectVersion = projectVersion;
313             return this;
314         }
315
316         public KeyBuilder withRepositoryId( String repositoryId )
317         {
318             this.repositoryId = repositoryId;
319             return this;
320         }
321
322         public String build()
323         {
324             //repositoryId + namespaceId + project + projectVersion + id
325             // FIXME add some controls
326             return this.repositoryId + "-" + this.namespaceId + "-" + this.project + "-" + this.projectVersion + "-"
327                 + this.id;
328         }
329     }
330
331 }