]> source.dussan.org Git - archiva.git/blob
74ac18972b76aa53dade9c2cd3f23bb9ccdfaa1a
[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 javax.persistence.Id;
26 import java.io.Serializable;
27
28 /**
29  * @author Olivier Lamy
30  * @since 2.0.0
31  */
32 public class Project
33     implements Serializable
34 {
35     @Id
36     @Column(name = "projectKey")
37     private String projectKey;
38
39     @Column(name = "projectId")
40     private String projectId;
41
42
43     @Column(name = "repository")
44     private Namespace namespace;
45
46     public Project()
47     {
48         // no op
49     }
50
51     public Project( String projectKey, String projectId, Namespace namespace )
52     {
53         this.projectId = projectId;
54         this.projectKey = projectKey;
55         this.namespace = namespace;
56     }
57
58     public String getProjectKey()
59     {
60         return projectKey;
61     }
62
63     public void setProjectKey( String projectKey )
64     {
65         this.projectKey = projectKey;
66     }
67
68     public Namespace getNamespace()
69     {
70         return namespace;
71     }
72
73     public void setNamespace( Namespace namespace )
74     {
75         this.namespace = namespace;
76     }
77
78     public String getProjectId()
79     {
80         return projectId;
81     }
82
83     public void setProjectId( String projectId )
84     {
85         this.projectId = projectId;
86     }
87
88     @Override
89     public boolean equals( Object o )
90     {
91         if ( this == o )
92         {
93             return true;
94         }
95         if ( o == null || getClass() != o.getClass() )
96         {
97             return false;
98         }
99
100         Project project = (Project) o;
101
102         if ( !projectKey.equals( project.projectKey ) )
103         {
104             return false;
105         }
106         if ( !namespace.equals( project.namespace ) )
107         {
108             return false;
109         }
110
111         return true;
112     }
113
114     @Override
115     public int hashCode()
116     {
117         int result = projectKey.hashCode();
118         result = 31 * result + namespace.hashCode();
119         return result;
120     }
121
122     @Override
123     public String toString()
124     {
125         final StringBuilder sb = new StringBuilder( "Project{" );
126         sb.append( "projectKey='" ).append( projectKey ).append( '\'' );
127         sb.append( ", projectId='" ).append( projectId ).append( '\'' );
128         sb.append( ", namespace=" ).append( namespace );
129         sb.append( '}' );
130         return sb.toString();
131     }
132
133     public static class KeyBuilder
134     {
135
136         private Namespace namespace;
137
138         private String projectId;
139
140         public KeyBuilder()
141         {
142             // no op
143         }
144
145         public KeyBuilder withNamespace( Namespace namespace )
146         {
147             this.namespace = namespace;
148             return this;
149         }
150
151         public KeyBuilder withProjectId( String projectId )
152         {
153             this.projectId = projectId;
154             return this;
155         }
156
157
158         public String build()
159         {
160             // FIXME add some controls
161             return CassandraUtils.generateKey( new Namespace.KeyBuilder().withNamespace( this.namespace ).build(),
162                                                this.projectId );
163         }
164     }
165 }