]> source.dussan.org Git - archiva.git/blob
3346e8ecd4291c366eb903306b9ce8d6b1597e93
[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
26 /**
27  * Cassandra storage model for {@link org.apache.archiva.metadata.model.MetadataFacet}
28  *
29  * @author Olivier Lamy
30  * @since 2.0.0
31  */
32 public class MetadataFacetModel
33 {
34     // id is repositoryId + namespaceId + projectId + facetId + name + mapKey
35
36     //@Column(name = "artifactMetadataModel")
37     //private ArtifactMetadataModel artifactMetadataModel;
38
39     @Column(name = "facetId")
40     private String facetId;
41
42     @Column(name = "key")
43     private String key;
44
45     @Column(name = "name")
46     private String name;
47
48     @Column(name = "value")
49     private String value;
50
51     private String projectVersion;
52
53     public MetadataFacetModel()
54     {
55         // no op
56     }
57
58     public MetadataFacetModel( String facetId, String key, String value, String name, String projectVersion )
59     {
60         this.key = key;
61         this.value = value;
62         this.name = name;
63         this.facetId = facetId;
64         this.projectVersion = projectVersion;
65     }
66
67     public String getFacetId()
68     {
69         return facetId;
70     }
71
72     public void setFacetId( String facetId )
73     {
74         this.facetId = facetId;
75     }
76
77
78     public String getName()
79     {
80         return name;
81     }
82
83     public void setName( String name )
84     {
85         this.name = name;
86     }
87
88     public String getKey()
89     {
90         return key;
91     }
92
93     public void setKey( String key )
94     {
95         this.key = key;
96     }
97
98     public String getValue()
99     {
100         return value;
101     }
102
103     public void setValue( String value )
104     {
105         this.value = value;
106     }
107
108     public String getProjectVersion()
109     {
110         return projectVersion;
111     }
112
113     public void setProjectVersion( String projectVersion )
114     {
115         this.projectVersion = projectVersion;
116     }
117
118     @Override
119     public String toString()
120     {
121         final StringBuilder sb = new StringBuilder( "MetadataFacetModel{" );
122         sb.append( ", key='" ).append( key ).append( '\'' );
123         sb.append( ", value='" ).append( value ).append( '\'' );
124         sb.append( '}' );
125         return sb.toString();
126     }
127
128     public static class KeyBuilder
129     {
130
131         private ArtifactMetadataModel artifactMetadataModel;
132
133         private String key;
134
135         private String name;
136
137         private String facetId;
138
139         private String repositoryId;
140
141         public KeyBuilder()
142         {
143
144         }
145
146         public KeyBuilder withArtifactMetadataModel( ArtifactMetadataModel artifactMetadataModel )
147         {
148             this.artifactMetadataModel = artifactMetadataModel;
149             return this;
150         }
151
152         public KeyBuilder withKey( String key )
153         {
154             this.key = key;
155             return this;
156         }
157
158         public KeyBuilder withName( String name )
159         {
160             this.name = name;
161             return this;
162         }
163
164         public KeyBuilder withFacetId( String facetId )
165         {
166             this.facetId = facetId;
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             // getArtifactMetadataModelId can have no namespace, no project and no projectid for statistics
180             // only repositoryId with artifactMetadataModel
181             String str = CassandraUtils.generateKey( this.artifactMetadataModel == null
182                                                          ? this.repositoryId
183                                                          : new ArtifactMetadataModel.KeyBuilder().withNamespace(
184                                                              this.artifactMetadataModel.getNamespace() ) //
185                                                              .withProject( this.artifactMetadataModel.getProject() )  //
186                                                              .withProjectVersion(
187                                                                  this.artifactMetadataModel.getProjectVersion() ) //
188                                                              .withRepositoryId(
189                                                                  this.artifactMetadataModel.getRepositoryId() ) //
190                                                              .withId( this.artifactMetadataModel.getId() ) //
191                                                              .build(), //
192                                                      this.facetId, //
193                                                      this.name, //
194                                                      this.key
195             );
196
197             return str;
198         }
199     }
200 }