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