This project has retired. For details please refer to its Attic page.
DefaultCassandraArchivaManager xref
View Javadoc
1   package org.apache.archiva.metadata.repository.cassandra;
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 me.prettyprint.cassandra.model.BasicColumnDefinition;
23  import me.prettyprint.cassandra.model.ConfigurableConsistencyLevel;
24  import me.prettyprint.cassandra.serializers.StringSerializer;
25  import me.prettyprint.cassandra.service.CassandraHostConfigurator;
26  import me.prettyprint.cassandra.service.ThriftKsDef;
27  import me.prettyprint.hector.api.Cluster;
28  import me.prettyprint.hector.api.HConsistencyLevel;
29  import me.prettyprint.hector.api.Keyspace;
30  import me.prettyprint.hector.api.ddl.ColumnFamilyDefinition;
31  import me.prettyprint.hector.api.ddl.ColumnIndexType;
32  import me.prettyprint.hector.api.ddl.ComparatorType;
33  import me.prettyprint.hector.api.factory.HFactory;
34  import org.apache.archiva.metadata.repository.RepositorySessionFactoryBean;
35  import org.apache.commons.lang3.StringUtils;
36  import org.slf4j.Logger;
37  import org.slf4j.LoggerFactory;
38  import org.springframework.beans.factory.annotation.Value;
39  import org.springframework.context.ApplicationContext;
40  import org.springframework.stereotype.Service;
41  
42  import javax.annotation.PostConstruct;
43  import javax.annotation.PreDestroy;
44  import javax.inject.Inject;
45  import java.util.ArrayList;
46  import java.util.List;
47  
48  import static org.apache.archiva.metadata.repository.cassandra.model.ColumnNames.*;
49  
50  /**
51   * FIXME make all configuration not hardcoded :-)
52   *
53   * @author Olivier Lamy
54   * @since 2.0.0
55   */
56  @Service("archivaEntityManagerFactory#cassandra")
57  public class DefaultCassandraArchivaManager
58      implements CassandraArchivaManager
59  {
60  
61      private Logger logger = LoggerFactory.getLogger( getClass() );
62  
63      @Inject
64      private ApplicationContext applicationContext;
65  
66      private static final String CLUSTER_NAME = "archiva";
67  
68      private static final String KEYSPACE_NAME = "ArchivaKeySpace";
69  
70      private boolean started;
71  
72      private Cluster cluster;
73  
74      private Keyspace keyspace;
75  
76      // configurable???
77      private String repositoryFamilyName = "repository";
78  
79      private String namespaceFamilyName = "namespace";
80  
81      private String projectFamilyName = PROJECT.toString();
82  
83      private String projectVersionMetadataFamilyName = "projectversionmetadata";
84  
85      private String artifactMetadataFamilyName = "artifactmetadata";
86  
87      private String metadataFacetFamilyName = "metadatafacet";
88  
89      private String mailingListFamilyName = "mailinglist";
90  
91      private String licenseFamilyName = "license";
92  
93      private String dependencyFamilyName = "dependency";
94  
95      private String checksumFamilyName = "checksum";
96  
97      @Value("${cassandra.host}")
98      private String cassandraHost;
99  
100     @Value("${cassandra.port}")
101     private String cassandraPort;
102 
103     @Value("${cassandra.maxActive}")
104     private int maxActive;
105 
106     @Value("${cassandra.readConsistencyLevel}")
107     private String readConsistencyLevel;
108 
109     @Value("${cassandra.writeConsistencyLevel}")
110     private String writeConsistencyLevel;
111 
112     @Value("${cassandra.replicationFactor}")
113     private int replicationFactor;
114 
115     @Value("${cassandra.keyspace.name}")
116     private String keyspaceName;
117 
118     @Value("${cassandra.cluster.name}")
119     private String clusterName;
120 
121     @Inject
122     private RepositorySessionFactoryBean repositorySessionFactoryBean;
123 
124     @PostConstruct
125     public void initialize()
126     {
127         // skip initialisation if not cassandra
128         if ( !StringUtils.equals( repositorySessionFactoryBean.getId(), "cassandra" ) )
129         {
130             return;
131         }
132         final CassandraHostConfigurator configurator =
133             new CassandraHostConfigurator( cassandraHost + ":" + cassandraPort );
134         configurator.setMaxActive( maxActive );
135         //configurator.setCassandraThriftSocketTimeout(  );
136 
137         cluster = HFactory.getOrCreateCluster( clusterName, configurator );
138 
139         final ConfigurableConsistencyLevel consistencyLevelPolicy = new ConfigurableConsistencyLevel();
140         consistencyLevelPolicy.setDefaultReadConsistencyLevel( HConsistencyLevel.valueOf( readConsistencyLevel ) );
141         consistencyLevelPolicy.setDefaultWriteConsistencyLevel( HConsistencyLevel.valueOf( writeConsistencyLevel ) );
142         keyspace = HFactory.createKeyspace( keyspaceName, cluster, consistencyLevelPolicy );
143 
144         List<ColumnFamilyDefinition> cfds = new ArrayList<>();
145 
146         // namespace table
147         {
148 
149             final ColumnFamilyDefinition namespace =
150                 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), //
151                                                        getNamespaceFamilyName(), //
152                                                        ComparatorType.UTF8TYPE );
153             cfds.add( namespace );
154 
155             // creating indexes for cql query
156 
157             BasicColumnDefinition nameColumn = new BasicColumnDefinition();
158             nameColumn.setName( StringSerializer.get().toByteBuffer( NAME.toString() ) );
159             nameColumn.setIndexName( NAME.toString() );
160             nameColumn.setIndexType( ColumnIndexType.KEYS );
161             nameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
162             namespace.addColumnDefinition( nameColumn );
163 
164             BasicColumnDefinition repositoryIdColumn = new BasicColumnDefinition();
165             repositoryIdColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) );
166             repositoryIdColumn.setIndexName( REPOSITORY_NAME.toString() );
167             repositoryIdColumn.setIndexType( ColumnIndexType.KEYS );
168             repositoryIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
169             namespace.addColumnDefinition( repositoryIdColumn );
170         }
171 
172         // repository table
173         {
174             final ColumnFamilyDefinition repository =
175                 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), //
176                                                        getRepositoryFamilyName(), //
177                                                        ComparatorType.UTF8TYPE );
178 
179             cfds.add( repository );
180 
181             BasicColumnDefinition nameColumn = new BasicColumnDefinition();
182             nameColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) );
183             nameColumn.setIndexName( REPOSITORY_NAME.toString() );
184             nameColumn.setIndexType( ColumnIndexType.KEYS );
185             nameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
186             repository.addColumnDefinition( nameColumn );
187         }
188 
189         // project table
190         {
191 
192             final ColumnFamilyDefinition project = HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), //
193                                                                                           getProjectFamilyName(), //
194                                                                                           ComparatorType.UTF8TYPE );
195             cfds.add( project );
196 
197             // creating indexes for cql query
198 
199             BasicColumnDefinition projectIdColumn = new BasicColumnDefinition();
200             projectIdColumn.setName( StringSerializer.get().toByteBuffer( PROJECT_ID.toString() ) );
201             projectIdColumn.setIndexName( PROJECT_ID.toString() );
202             projectIdColumn.setIndexType( ColumnIndexType.KEYS );
203             projectIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
204             project.addColumnDefinition( projectIdColumn );
205 
206             BasicColumnDefinition repositoryIdColumn = new BasicColumnDefinition();
207             repositoryIdColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) );
208             repositoryIdColumn.setIndexName( REPOSITORY_NAME.toString() );
209             repositoryIdColumn.setIndexType( ColumnIndexType.KEYS );
210             repositoryIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
211             project.addColumnDefinition( repositoryIdColumn );
212 
213             BasicColumnDefinition namespaceIdColumn = new BasicColumnDefinition();
214             namespaceIdColumn.setName( StringSerializer.get().toByteBuffer( NAMESPACE_ID.toString() ) );
215             namespaceIdColumn.setIndexName( NAMESPACE_ID.toString() );
216             namespaceIdColumn.setIndexType( ColumnIndexType.KEYS );
217             namespaceIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
218             project.addColumnDefinition( namespaceIdColumn );
219         }
220 
221         //projectversionmetadatamodel
222         {
223 
224             final ColumnFamilyDefinition projectVersionMetadataModel =
225                 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), //
226                                                        getProjectVersionMetadataFamilyName(), //
227                                                        ComparatorType.UTF8TYPE );
228             cfds.add( projectVersionMetadataModel );
229 
230             // creating indexes for cql query
231 
232             BasicColumnDefinition namespaceIdColumn = new BasicColumnDefinition();
233             namespaceIdColumn.setName( StringSerializer.get().toByteBuffer( NAMESPACE_ID.toString() ) );
234             namespaceIdColumn.setIndexName( NAMESPACE_ID.toString() );
235             namespaceIdColumn.setIndexType( ColumnIndexType.KEYS );
236             namespaceIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
237             projectVersionMetadataModel.addColumnDefinition( namespaceIdColumn );
238 
239             BasicColumnDefinition repositoryNameColumn = new BasicColumnDefinition();
240             repositoryNameColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) );
241             repositoryNameColumn.setIndexName( REPOSITORY_NAME.toString() );
242             repositoryNameColumn.setIndexType( ColumnIndexType.KEYS );
243             repositoryNameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
244             projectVersionMetadataModel.addColumnDefinition( repositoryNameColumn );
245 
246             BasicColumnDefinition idColumn = new BasicColumnDefinition();
247             idColumn.setName( StringSerializer.get().toByteBuffer( ID.toString() ) );
248             idColumn.setIndexName( ID.toString() );
249             idColumn.setIndexType( ColumnIndexType.KEYS );
250             idColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
251             projectVersionMetadataModel.addColumnDefinition( idColumn );
252 
253             BasicColumnDefinition projectIdColumn = new BasicColumnDefinition();
254             projectIdColumn.setName( StringSerializer.get().toByteBuffer( PROJECT_ID.toString() ) );
255             projectIdColumn.setIndexName( PROJECT_ID.toString() );
256             projectIdColumn.setIndexType( ColumnIndexType.KEYS );
257             projectIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
258             projectVersionMetadataModel.addColumnDefinition( projectIdColumn );
259 
260         }
261 
262         // artifactmetadatamodel table
263         {
264 
265             final ColumnFamilyDefinition artifactMetadataModel =
266                 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), //
267                                                        getArtifactMetadataFamilyName(), //
268                                                        ComparatorType.UTF8TYPE );
269             cfds.add( artifactMetadataModel );
270 
271             // creating indexes for cql query
272 
273             BasicColumnDefinition idColumn = new BasicColumnDefinition();
274             idColumn.setName( StringSerializer.get().toByteBuffer( ID.toString() ) );
275             idColumn.setIndexName( ID.toString() );
276             idColumn.setIndexType( ColumnIndexType.KEYS );
277             idColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
278             artifactMetadataModel.addColumnDefinition( idColumn );
279 
280             BasicColumnDefinition repositoryNameColumn = new BasicColumnDefinition();
281             repositoryNameColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) );
282             repositoryNameColumn.setIndexName( REPOSITORY_NAME.toString() );
283             repositoryNameColumn.setIndexType( ColumnIndexType.KEYS );
284             repositoryNameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
285             artifactMetadataModel.addColumnDefinition( repositoryNameColumn );
286 
287             BasicColumnDefinition namespaceIdColumn = new BasicColumnDefinition();
288             namespaceIdColumn.setName( StringSerializer.get().toByteBuffer( NAMESPACE_ID.toString() ) );
289             namespaceIdColumn.setIndexName( NAMESPACE_ID.toString() );
290             namespaceIdColumn.setIndexType( ColumnIndexType.KEYS );
291             namespaceIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
292             artifactMetadataModel.addColumnDefinition( namespaceIdColumn );
293 
294             BasicColumnDefinition projectColumn = new BasicColumnDefinition();
295             projectColumn.setName( StringSerializer.get().toByteBuffer( PROJECT.toString() ) );
296             projectColumn.setIndexName( PROJECT.toString() );
297             projectColumn.setIndexType( ColumnIndexType.KEYS );
298             projectColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
299             artifactMetadataModel.addColumnDefinition( projectColumn );
300 
301             BasicColumnDefinition projectVersionColumn = new BasicColumnDefinition();
302             projectVersionColumn.setName( StringSerializer.get().toByteBuffer( PROJECT_VERSION.toString() ) );
303             projectVersionColumn.setIndexName( PROJECT_VERSION.toString() );
304             projectVersionColumn.setIndexType( ColumnIndexType.KEYS );
305             projectVersionColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
306             artifactMetadataModel.addColumnDefinition( projectVersionColumn );
307 
308             BasicColumnDefinition versionColumn = new BasicColumnDefinition();
309             versionColumn.setName( StringSerializer.get().toByteBuffer( VERSION.toString() ) );
310             versionColumn.setIndexName( VERSION.toString() );
311             versionColumn.setIndexType( ColumnIndexType.KEYS );
312             versionColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
313             artifactMetadataModel.addColumnDefinition( versionColumn );
314 
315             BasicColumnDefinition whenGatheredColumn = new BasicColumnDefinition();
316             whenGatheredColumn.setName( StringSerializer.get().toByteBuffer( WHEN_GATHERED.toString() ) );
317             whenGatheredColumn.setIndexName( WHEN_GATHERED.toString() );
318             whenGatheredColumn.setIndexType( ColumnIndexType.KEYS );
319             whenGatheredColumn.setValidationClass( ComparatorType.LONGTYPE.getClassName() );
320             artifactMetadataModel.addColumnDefinition( whenGatheredColumn );
321 
322             BasicColumnDefinition sha1Column = new BasicColumnDefinition();
323             sha1Column.setName( StringSerializer.get().toByteBuffer( SHA1.toString() ) );
324             sha1Column.setIndexName( SHA1.toString() );
325             sha1Column.setIndexType( ColumnIndexType.KEYS );
326             sha1Column.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
327             artifactMetadataModel.addColumnDefinition( sha1Column );
328 
329             BasicColumnDefinition md5Column = new BasicColumnDefinition();
330             md5Column.setName( StringSerializer.get().toByteBuffer( MD5.toString() ) );
331             md5Column.setIndexName( MD5.toString() );
332             md5Column.setIndexType( ColumnIndexType.KEYS );
333             md5Column.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
334             artifactMetadataModel.addColumnDefinition( md5Column );
335 
336 
337         }
338 
339         // metadatafacetmodel table
340         {
341             final ColumnFamilyDefinition metadataFacetModel =
342                 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), //
343                                                        getMetadataFacetFamilyName(), //
344                                                        ComparatorType.UTF8TYPE );
345             cfds.add( metadataFacetModel );
346 
347             // creating indexes for cql query
348 
349             BasicColumnDefinition facetIdColumn = new BasicColumnDefinition();
350             facetIdColumn.setName( StringSerializer.get().toByteBuffer( FACET_ID.toString() ) );
351             facetIdColumn.setIndexName( FACET_ID.toString() );
352             facetIdColumn.setIndexType( ColumnIndexType.KEYS );
353             facetIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
354             metadataFacetModel.addColumnDefinition( facetIdColumn );
355 
356             BasicColumnDefinition repositoryNameColumn = new BasicColumnDefinition();
357             repositoryNameColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) );
358             repositoryNameColumn.setIndexName( REPOSITORY_NAME.toString() );
359             repositoryNameColumn.setIndexType( ColumnIndexType.KEYS );
360             repositoryNameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
361             metadataFacetModel.addColumnDefinition( repositoryNameColumn );
362 
363             BasicColumnDefinition nameColumn = new BasicColumnDefinition();
364             nameColumn.setName( StringSerializer.get().toByteBuffer( NAME.toString() ) );
365             nameColumn.setIndexName( NAME.toString() );
366             nameColumn.setIndexType( ColumnIndexType.KEYS );
367             nameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
368             metadataFacetModel.addColumnDefinition( nameColumn );
369 
370             BasicColumnDefinition namespaceColumn = new BasicColumnDefinition();
371             namespaceColumn.setName( StringSerializer.get().toByteBuffer( NAMESPACE_ID.toString() ) );
372             namespaceColumn.setIndexName( NAMESPACE_ID.toString() );
373             namespaceColumn.setIndexType( ColumnIndexType.KEYS );
374             namespaceColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
375             metadataFacetModel.addColumnDefinition( namespaceColumn );
376 
377             BasicColumnDefinition projectIdColumn = new BasicColumnDefinition();
378             projectIdColumn.setName( StringSerializer.get().toByteBuffer( PROJECT_ID.toString() ) );
379             projectIdColumn.setIndexName( PROJECT_ID.toString() );
380             projectIdColumn.setIndexType( ColumnIndexType.KEYS );
381             projectIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
382             metadataFacetModel.addColumnDefinition( projectIdColumn );
383 
384             BasicColumnDefinition projectVersionColumn = new BasicColumnDefinition();
385             projectVersionColumn.setName( StringSerializer.get().toByteBuffer( PROJECT_VERSION.toString() ) );
386             projectVersionColumn.setIndexName( PROJECT_VERSION.toString() );
387             projectVersionColumn.setIndexType( ColumnIndexType.KEYS );
388             projectVersionColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
389             metadataFacetModel.addColumnDefinition( projectVersionColumn );
390 
391         }
392 
393         // Checksum table
394         {
395             final ColumnFamilyDefinition checksumCf =
396                     HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), //
397                             getChecksumFamilyName(), //
398                             ComparatorType.UTF8TYPE );
399 
400             BasicColumnDefinition artifactMetatadaModel_key = new BasicColumnDefinition();
401             artifactMetatadaModel_key.setName( StringSerializer.get().toByteBuffer( "artifactMetadataModel.key" ) );
402             artifactMetatadaModel_key.setIndexName( "artifactMetadataModel_key" );
403             artifactMetatadaModel_key.setIndexType( ColumnIndexType.KEYS );
404             artifactMetatadaModel_key.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
405             checksumCf.addColumnDefinition( artifactMetatadaModel_key );
406 
407 
408             BasicColumnDefinition checksumAlgorithmColumn = new BasicColumnDefinition();
409             checksumAlgorithmColumn.setName( StringSerializer.get().toByteBuffer( CHECKSUM_ALG.toString() ) );
410             checksumAlgorithmColumn.setIndexName( CHECKSUM_ALG.toString() );
411             checksumAlgorithmColumn.setIndexType( ColumnIndexType.KEYS );
412             checksumAlgorithmColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
413             checksumCf.addColumnDefinition( checksumAlgorithmColumn );
414 
415             BasicColumnDefinition checksumValueColumn = new BasicColumnDefinition();
416             checksumValueColumn.setName( StringSerializer.get().toByteBuffer( CHECKSUM_VALUE.toString() ) );
417             checksumValueColumn.setIndexName( CHECKSUM_VALUE.toString() );
418             checksumValueColumn.setIndexType( ColumnIndexType.KEYS );
419             checksumValueColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
420             checksumCf.addColumnDefinition( checksumValueColumn );
421 
422             BasicColumnDefinition repositoryNameColumn = new BasicColumnDefinition();
423             repositoryNameColumn.setName( StringSerializer.get().toByteBuffer( REPOSITORY_NAME.toString() ) );
424             repositoryNameColumn.setIndexName( REPOSITORY_NAME.toString() );
425             repositoryNameColumn.setIndexType( ColumnIndexType.KEYS );
426             repositoryNameColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
427             checksumCf.addColumnDefinition( repositoryNameColumn );
428 
429 
430             cfds.add( checksumCf );
431 
432             // creating indexes for cql query
433 
434         }
435 
436         // mailinglist table
437         {
438             final ColumnFamilyDefinition mailingListCf =
439                 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), //
440                                                        getMailingListFamilyName(), //
441                                                        ComparatorType.UTF8TYPE );
442 
443             BasicColumnDefinition projectVersionMetadataModel_key = new BasicColumnDefinition();
444             projectVersionMetadataModel_key.setName( StringSerializer.get().toByteBuffer( "projectVersionMetadataModel.key" ) );
445             projectVersionMetadataModel_key.setIndexName( "projectVersionMetadataModel_key" );
446             projectVersionMetadataModel_key.setIndexType( ColumnIndexType.KEYS );
447             projectVersionMetadataModel_key.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
448             mailingListCf.addColumnDefinition( projectVersionMetadataModel_key );
449 
450             cfds.add( mailingListCf );
451 
452             // creating indexes for cql query
453 
454         }
455 
456         // license table
457         {
458             final ColumnFamilyDefinition licenseCf =
459                 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), //
460                                                        getLicenseFamilyName(), //
461                                                        ComparatorType.UTF8TYPE );
462 
463             BasicColumnDefinition projectVersionMetadataModel_key = new BasicColumnDefinition();
464             projectVersionMetadataModel_key.setName( StringSerializer.get().toByteBuffer( "projectVersionMetadataModel.key" ) );
465             projectVersionMetadataModel_key.setIndexName( "projectVersionMetadataModel_key" );
466             projectVersionMetadataModel_key.setIndexType( ColumnIndexType.KEYS );
467             projectVersionMetadataModel_key.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
468             licenseCf.addColumnDefinition( projectVersionMetadataModel_key );
469 
470             cfds.add( licenseCf );
471 
472             // creating indexes for cql query
473 
474         }
475 
476         // dependency table
477         {
478             final ColumnFamilyDefinition dependencyCf =
479                 HFactory.createColumnFamilyDefinition( keyspace.getKeyspaceName(), //
480                                                        getDependencyFamilyName(), //
481                                                        ComparatorType.UTF8TYPE );
482             cfds.add( dependencyCf );
483 
484             // creating indexes for cql query
485 
486             BasicColumnDefinition groupIdColumn = new BasicColumnDefinition();
487             groupIdColumn.setName( StringSerializer.get().toByteBuffer( GROUP_ID.toString() ) );
488             groupIdColumn.setIndexName( "groupIdIdx" );
489             groupIdColumn.setIndexType( ColumnIndexType.KEYS );
490             groupIdColumn.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
491             dependencyCf.addColumnDefinition( groupIdColumn );
492 
493             BasicColumnDefinition projectVersionMetadataModel_key = new BasicColumnDefinition();
494             projectVersionMetadataModel_key.setName( StringSerializer.get().toByteBuffer( "projectVersionMetadataModel.key" ) );
495             projectVersionMetadataModel_key.setIndexName( "projectVersionMetadataModel_key" );
496             projectVersionMetadataModel_key.setIndexType( ColumnIndexType.KEYS );
497             projectVersionMetadataModel_key.setValidationClass( ComparatorType.UTF8TYPE.getClassName() );
498             dependencyCf.addColumnDefinition( projectVersionMetadataModel_key );
499 
500         }
501 
502         // TODO take care of update new table!!
503         { // ensure keyspace exists, here if the keyspace doesn't exist we suppose nothing exist
504             if ( cluster.describeKeyspace( keyspaceName ) == null )
505             {
506                 logger.info( "Creating Archiva Cassandra '{}' keyspace.", keyspaceName );
507                 cluster.addKeyspace( HFactory.createKeyspaceDefinition( keyspaceName, //
508                                                                         ThriftKsDef.DEF_STRATEGY_CLASS, //
509                                                                         replicationFactor, //
510                                                                         cfds )
511                 );
512             }
513         }
514 
515     }
516 
517     @Override
518     public void start()
519     {
520     }
521 
522     @PreDestroy
523     @Override
524     public void shutdown()
525     {
526     }
527 
528 
529     @Override
530     public boolean started()
531     {
532         return started;
533     }
534 
535 
536     @Override
537     public Keyspace getKeyspace()
538     {
539         return keyspace;
540     }
541 
542     @Override
543     public Cluster getCluster()
544     {
545         return cluster;
546     }
547 
548     @Override
549     public String getRepositoryFamilyName()
550     {
551         return repositoryFamilyName;
552     }
553 
554     @Override
555     public String getNamespaceFamilyName()
556     {
557         return namespaceFamilyName;
558     }
559 
560     @Override
561     public String getProjectFamilyName()
562     {
563         return projectFamilyName;
564     }
565 
566     @Override
567     public String getProjectVersionMetadataFamilyName()
568     {
569         return projectVersionMetadataFamilyName;
570     }
571 
572     @Override
573     public String getArtifactMetadataFamilyName()
574     {
575         return artifactMetadataFamilyName;
576     }
577 
578     @Override
579     public String getMetadataFacetFamilyName()
580     {
581         return metadataFacetFamilyName;
582     }
583 
584     @Override
585     public String getMailingListFamilyName()
586     {
587         return mailingListFamilyName;
588     }
589 
590     @Override
591     public String getLicenseFamilyName()
592     {
593         return licenseFamilyName;
594     }
595 
596     @Override
597     public String getDependencyFamilyName()
598     {
599         return dependencyFamilyName;
600     }
601 
602     @Override
603     public String getChecksumFamilyName() {
604         return checksumFamilyName;
605     }
606 }