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