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