]> source.dussan.org Git - archiva.git/blob
c5eb24d613e504febb7effd84bf7452043ec0adc
[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 /**
32  * @author Olivier Lamy
33  */
34 @Entity
35 //@Table( name = "namespace", schema = "ArchivaKeySpace@archiva")
36 public class Namespace
37     implements Serializable
38 {
39
40     @Id
41     @Column( name = "id" )
42     @Serializer( HugeStringSerializer.class )
43     private String id;
44
45     @Column( name = "name" )
46     @Serializer( HugeStringSerializer.class )
47     private String name;
48
49     @Column( name = "repository" )
50     private Repository repository;
51
52     //@ManyToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
53     //@JoinColumn(name = "repository_id")
54     //private transient Repository repository;
55
56
57     public Namespace()
58     {
59         // no op
60     }
61
62
63     public Namespace( String id, Repository repository )
64     {
65         this.id = new KeyBuilder().withNamespace( id ).withRepositoryId( repository.getId() ).build();
66         this.name = id;
67         this.repository = repository;
68     }
69
70     public String getId()
71     {
72         return id;
73     }
74
75     public void setId( String id )
76     {
77         this.id = id;
78     }
79
80     public String getName()
81     {
82         return name;
83     }
84
85     public void setName( String name )
86     {
87         this.name = name;
88     }
89
90     public Repository getRepository()
91     {
92         return repository;
93     }
94
95     public void setRepository( Repository repository )
96     {
97         this.repository = repository;
98     }
99
100     @Override
101     public boolean equals( Object o )
102     {
103         if ( this == o )
104         {
105             return true;
106         }
107         if ( o == null || getClass() != o.getClass() )
108         {
109             return false;
110         }
111
112         Namespace namespace = (Namespace) o;
113
114         if ( !id.equals( namespace.id ) )
115         {
116             return false;
117         }
118         if ( !repository.getId().equals( namespace.repository.getId() ) )
119         {
120             return false;
121         }
122
123         return true;
124     }
125
126     @Override
127     public int hashCode()
128     {
129         int result = id.hashCode();
130         result = 31 * result + repository.getId().hashCode();
131         return result;
132     }
133
134     @Override
135     public String toString()
136     {
137         final StringBuilder sb = new StringBuilder( "Namespace{" );
138         sb.append( "id='" ).append( id ).append( '\'' );
139         sb.append( ", name='" ).append( name ).append( '\'' );
140         sb.append( ", repository='" ).append( repository ).append( '\'' );
141         sb.append( '}' );
142         return sb.toString();
143     }
144
145     public static class KeyBuilder
146     {
147
148         private String namespace;
149
150         private String repositoryId;
151
152         public KeyBuilder()
153         {
154
155         }
156
157         public KeyBuilder withNamespace( Namespace namespace )
158         {
159             this.namespace = namespace.getName();
160             this.repositoryId = namespace.getRepository().getId();
161             return this;
162         }
163
164         public KeyBuilder withNamespace( String namespace )
165         {
166             this.namespace = namespace;
167             return this;
168         }
169
170         public KeyBuilder withRepositoryId( String repositoryId )
171         {
172             this.repositoryId = repositoryId;
173             return this;
174         }
175
176         public String build()
177         {
178             // FIXME add some controls
179             return CassandraUtils.generateKey( this.repositoryId, this.namespace );
180         }
181     }
182 }