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