]> source.dussan.org Git - archiva.git/blob
a77c29ddae93f60dff3c57a9eb2fd0716baee02a
[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 com.netflix.astyanax.serializers.GzipStringSerializer;
24 import org.apache.archiva.metadata.repository.cassandra.CassandraUtils;
25
26 import javax.persistence.Column;
27 import javax.persistence.Entity;
28 import javax.persistence.Id;
29
30 /**
31  * Cassandra storage model for {@link org.apache.archiva.metadata.model.MetadataFacet}
32  *
33  * @author Olivier Lamy
34  */
35 @Entity
36 public class MetadataFacetModel
37 {
38     // id is repositoryId + namespaceId + projectId + facetId + name + mapKey
39     @Id
40     @Column( name = "id" )
41     @Serializer( HugeStringSerializer.class )
42     private String id;
43
44     @Column( name = "artifactMetadataModel" )
45     private ArtifactMetadataModel artifactMetadataModel;
46
47     @Column( name = "facetId" )
48     @Serializer( HugeStringSerializer.class )
49     private String facetId;
50
51     @Column( name = "key" )
52     @Serializer( HugeStringSerializer.class )
53     private String key;
54
55     @Column( name = "name" )
56     @Serializer( HugeStringSerializer.class )
57     private String name;
58
59     @Column( name = "value" )
60     @Serializer( HugeStringSerializer.class )
61     private String value;
62
63     public MetadataFacetModel()
64     {
65         // no op
66     }
67
68     public MetadataFacetModel( String id, ArtifactMetadataModel artifactMetadataModel, String facetId, String key,
69                                String value, String name )
70     {
71         this.id = id;
72         this.artifactMetadataModel = artifactMetadataModel;
73         this.key = key;
74         this.value = value;
75         this.name = name;
76         this.facetId = facetId;
77     }
78
79     public String getFacetId()
80     {
81         return facetId;
82     }
83
84     public void setFacetId( String facetId )
85     {
86         this.facetId = facetId;
87     }
88
89     public String getId()
90     {
91         return id;
92     }
93
94     public void setId( String id )
95     {
96         this.id = id;
97     }
98
99     public ArtifactMetadataModel getArtifactMetadataModel()
100     {
101         return artifactMetadataModel;
102     }
103
104     public void setArtifactMetadataModel( ArtifactMetadataModel artifactMetadataModel )
105     {
106         this.artifactMetadataModel = artifactMetadataModel;
107     }
108
109     public String getName()
110     {
111         return name;
112     }
113
114     public void setName( String name )
115     {
116         this.name = name;
117     }
118
119     public String getKey()
120     {
121         return key;
122     }
123
124     public void setKey( String key )
125     {
126         this.key = key;
127     }
128
129     public String getValue()
130     {
131         return value;
132     }
133
134     public void setValue( String value )
135     {
136         this.value = value;
137     }
138
139     @Override
140     public boolean equals( Object o )
141     {
142         if ( this == o )
143         {
144             return true;
145         }
146         if ( o == null || getClass() != o.getClass() )
147         {
148             return false;
149         }
150
151         MetadataFacetModel that = (MetadataFacetModel) o;
152
153         if ( !id.equals( that.id ) )
154         {
155             return false;
156         }
157
158         return true;
159     }
160
161     @Override
162     public int hashCode()
163     {
164         return id.hashCode();
165     }
166
167     @Override
168     public String toString()
169     {
170         final StringBuilder sb = new StringBuilder( "MetadataFacetModel{" );
171         sb.append( "id='" ).append( id ).append( '\'' );
172         sb.append( ", artifactMetadataModel=" ).append( artifactMetadataModel );
173         sb.append( ", key='" ).append( key ).append( '\'' );
174         sb.append( ", value='" ).append( value ).append( '\'' );
175         sb.append( '}' );
176         return sb.toString();
177     }
178
179     public static class KeyBuilder
180     {
181
182         private ArtifactMetadataModel artifactMetadataModel;
183
184         private String key;
185
186         private String name;
187
188         private String facetId;
189
190         private String repositoryId;
191
192         public KeyBuilder()
193         {
194
195         }
196
197         public KeyBuilder withArtifactMetadataModel( ArtifactMetadataModel artifactMetadataModel )
198         {
199             this.artifactMetadataModel = artifactMetadataModel;
200             return this;
201         }
202
203         public KeyBuilder withKey( String key )
204         {
205             this.key = key;
206             return this;
207         }
208
209         public KeyBuilder withName( String name )
210         {
211             this.name = name;
212             return this;
213         }
214
215         public KeyBuilder withFacetId( String facetId )
216         {
217             this.facetId = facetId;
218             return this;
219         }
220
221         public KeyBuilder withRepositoryId( String repositoryId )
222         {
223             this.repositoryId = repositoryId;
224             return this;
225         }
226
227         public String build()
228         {
229             // FIXME add some controls
230             // getArtifactMetadataModelId can have no namespace, no project and no projectid for statistics
231             // only repositoryId with artifactMetadataModel
232             String str = CassandraUtils.generateKey( this.artifactMetadataModel == null
233                                                          ? this.repositoryId
234                                                          : this.artifactMetadataModel.getArtifactMetadataModelId(),
235                                                      this.facetId, this.name, this.key );
236
237             //return Long.toString( str.hashCode() );
238             return str;
239         }
240     }
241 }