]> source.dussan.org Git - archiva.git/blob
8d8b57b1acaab61b1c6e7cee7558df70b4cf2d41
[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 com.netflix.astyanax.entitystore.Serializer;
23 import org.apache.archiva.metadata.model.CiManagement;
24 import org.apache.archiva.metadata.model.Dependency;
25 import org.apache.archiva.metadata.model.IssueManagement;
26 import org.apache.archiva.metadata.model.License;
27 import org.apache.archiva.metadata.model.MailingList;
28 import org.apache.archiva.metadata.model.Organization;
29 import org.apache.archiva.metadata.model.Scm;
30 import org.apache.archiva.metadata.repository.cassandra.CassandraUtils;
31
32 import javax.persistence.Column;
33 import javax.persistence.Entity;
34 import javax.persistence.Id;
35 import java.util.ArrayList;
36 import java.util.List;
37
38 /**
39  * @author Olivier Lamy
40  */
41 @Entity
42 public class ProjectVersionMetadataModel
43 {
44     // repositoryId + namespace + projectId + id (version)
45     @Id
46     @Serializer( HugeStringSerializer.class )
47     private String rowId;
48
49     @Column( name = "namespace" )
50     private Namespace namespace;
51
52     /**
53      * id is the version
54      */
55     @Column( name = "id" )
56     @Serializer( HugeStringSerializer.class )
57     private String id;
58
59     @Column( name = "projectId" )
60     @Serializer( HugeStringSerializer.class )
61     private String projectId;
62
63     @Column( name = "url" )
64     @Serializer( HugeStringSerializer.class )
65     private String url;
66
67     @Column( name = "name" )
68     @Serializer( HugeStringSerializer.class )
69     private String name;
70
71     @Column( name = "description" )
72     @Serializer( HugeStringSerializer.class )
73     private String description;
74
75     @Column( name = "organization" )
76     private Organization organization;
77
78     @Column( name = "issueManagement" )
79     private IssueManagement issueManagement;
80
81     @Column( name = "scm" )
82     private Scm scm;
83
84     @Column( name = "ciManagement" )
85     private CiManagement ciManagement;
86
87     // FIXME store those values in a separate table
88     @Column( name = "licenses" )
89     private List<License> licenses = new ArrayList<License>();
90
91     @Column( name = "mailingLists" )
92     private List<MailingList> mailingLists = new ArrayList<MailingList>();
93
94     @Column( name = "dependencies" )
95     private List<Dependency> dependencies = new ArrayList<Dependency>();
96
97     @Column( name = "incomplete" )
98     private boolean incomplete;
99
100     public String getProjectId()
101     {
102         return projectId;
103     }
104
105     public void setProjectId( String projectId )
106     {
107         this.projectId = projectId;
108     }
109
110     public String getRowId()
111     {
112         return rowId;
113     }
114
115     public void setRowId( String rowId )
116     {
117         this.rowId = rowId;
118     }
119
120     // FIXME must be renamed getVersion !!!
121     public String getId()
122     {
123         return id;
124     }
125
126     public void setId( String id )
127     {
128         this.id = id;
129     }
130
131     public String getUrl()
132     {
133         return url;
134     }
135
136     public void setUrl( String url )
137     {
138         this.url = url;
139     }
140
141     public String getName()
142     {
143         return name;
144     }
145
146     public void setName( String name )
147     {
148         this.name = name;
149     }
150
151     public String getDescription()
152     {
153         return description;
154     }
155
156     public void setDescription( String description )
157     {
158         this.description = description;
159     }
160
161     public Organization getOrganization()
162     {
163         return organization;
164     }
165
166     public void setOrganization( Organization organization )
167     {
168         this.organization = organization;
169     }
170
171     public IssueManagement getIssueManagement()
172     {
173         return issueManagement;
174     }
175
176     public void setIssueManagement( IssueManagement issueManagement )
177     {
178         this.issueManagement = issueManagement;
179     }
180
181     public Scm getScm()
182     {
183         return scm;
184     }
185
186     public void setScm( Scm scm )
187     {
188         this.scm = scm;
189     }
190
191     public CiManagement getCiManagement()
192     {
193         return ciManagement;
194     }
195
196     public void setCiManagement( CiManagement ciManagement )
197     {
198         this.ciManagement = ciManagement;
199     }
200
201     public boolean isIncomplete()
202     {
203         return incomplete;
204     }
205
206     public void setIncomplete( boolean incomplete )
207     {
208         this.incomplete = incomplete;
209     }
210
211     public Namespace getNamespace()
212     {
213         return namespace;
214     }
215
216     public void setNamespace( Namespace namespace )
217     {
218         this.namespace = namespace;
219     }
220
221     public List<License> getLicenses()
222     {
223         return licenses;
224     }
225
226     public void setLicenses( List<License> licenses )
227     {
228         this.licenses = licenses;
229     }
230
231     public List<MailingList> getMailingLists()
232     {
233         return mailingLists;
234     }
235
236     public void setMailingLists( List<MailingList> mailingLists )
237     {
238         this.mailingLists = mailingLists;
239     }
240
241     public List<Dependency> getDependencies()
242     {
243         return dependencies;
244     }
245
246     public void setDependencies( List<Dependency> dependencies )
247     {
248         this.dependencies = dependencies;
249     }
250
251
252     @Override
253     public String toString()
254     {
255         final StringBuilder sb = new StringBuilder( "ProjectVersionMetadataModel{" );
256         sb.append( "rowId='" ).append( rowId ).append( '\'' );
257         sb.append( ", namespace=" ).append( namespace );
258         sb.append( ", id='" ).append( id ).append( '\'' );
259         sb.append( ", projectId='" ).append( projectId ).append( '\'' );
260         sb.append( ", url='" ).append( url ).append( '\'' );
261         sb.append( ", name='" ).append( name ).append( '\'' );
262         sb.append( ", description='" ).append( description ).append( '\'' );
263         sb.append( ", organization=" ).append( organization );
264         sb.append( ", issueManagement=" ).append( issueManagement );
265         sb.append( ", scm=" ).append( scm );
266         sb.append( ", ciManagement=" ).append( ciManagement );
267         sb.append( ", incomplete=" ).append( incomplete );
268         sb.append( '}' );
269         return sb.toString();
270     }
271
272     @Override
273     public boolean equals( Object o )
274     {
275         if ( this == o )
276         {
277             return true;
278         }
279         if ( o == null || getClass() != o.getClass() )
280         {
281             return false;
282         }
283
284         ProjectVersionMetadataModel that = (ProjectVersionMetadataModel) o;
285
286         if ( !rowId.equals( that.rowId ) )
287         {
288             return false;
289         }
290
291         return true;
292     }
293
294
295     @Override
296     public int hashCode()
297     {
298         return rowId.hashCode();
299     }
300
301     public static class KeyBuilder
302     {
303
304         private String namespace;
305
306         private String repositoryId;
307
308         private String projectId;
309
310         private String id;
311
312         public KeyBuilder()
313         {
314
315         }
316
317         public KeyBuilder withNamespace( Namespace namespace )
318         {
319             this.namespace = namespace.getName();
320             this.repositoryId = namespace.getRepository().getId();
321             return this;
322         }
323
324         public KeyBuilder withNamespace( String namespace )
325         {
326             this.namespace = namespace;
327             return this;
328         }
329
330         public KeyBuilder withRepository( String repositoryId )
331         {
332             this.repositoryId = repositoryId;
333             return this;
334         }
335
336         public KeyBuilder withRepository( Repository repository )
337         {
338             this.repositoryId = repository.getId();
339             return this;
340         }
341
342         public KeyBuilder withProjectId( String projectId )
343         {
344             this.projectId = projectId;
345             return this;
346         }
347
348         public KeyBuilder withId( String id )
349         {
350             this.id = id;
351             return this;
352         }
353
354         public String build()
355         {
356             // FIXME add some controls
357             return CassandraUtils.generateKey( this.repositoryId, this.namespace, this.projectId, this.id );
358         }
359     }
360 }