Author: olamy
Date: Thu Mar 20 23:24:15 2014
New Revision: 1579831
URL: http://svn.apache.org/r1579831
Log:
more impl still far from 0 failures :-)
Modified:
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java
Modified:
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java?rev=1579831&r1=1579830&r2=1579831&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
(original)
+++
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
Thu Mar 20 23:24:15 2014
@@ -19,6 +19,9 @@ package org.apache.archiva.metadata.repo
* under the License.
*/
+import me.prettyprint.cassandra.model.CqlQuery;
+import me.prettyprint.cassandra.model.CqlRows;
+import me.prettyprint.cassandra.serializers.LongSerializer;
import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.cassandra.service.template.ColumnFamilyTemplate;
import me.prettyprint.cassandra.service.template.ColumnFamilyUpdater;
@@ -43,6 +46,7 @@ import org.apache.archiva.metadata.repos
import org.apache.archiva.metadata.repository.MetadataRepositoryException;
import org.apache.archiva.metadata.repository.MetadataResolutionException;
import
org.apache.archiva.metadata.repository.cassandra.model.ArtifactMetadataModel;
+import
org.apache.archiva.metadata.repository.cassandra.model.MetadataFacetModel;
import org.apache.archiva.metadata.repository.cassandra.model.Namespace;
import org.apache.archiva.metadata.repository.cassandra.model.Project;
import
org.apache.archiva.metadata.repository.cassandra.model.ProjectVersionMetadataModel;
@@ -87,6 +91,8 @@ public class CassandraMetadataRepository
private final ColumnFamilyTemplate<String, String>
artifactMetadataTemplate;
+ private final ColumnFamilyTemplate<String, String> metadataFacetTemplate;
+
public CassandraMetadataRepository( Map<String, MetadataFacetFactory>
metadataFacetFactories,
ArchivaConfiguration configuration,
CassandraArchivaManager
cassandraArchivaManager )
@@ -113,6 +119,13 @@ public class CassandraMetadataRepository
//
StringSerializer.get(), //
StringSerializer.get() );
+
+ this.metadataFacetTemplate =
+ new ThriftColumnFamilyTemplate<String, String>(
cassandraArchivaManager.getKeyspace(), //
+
cassandraArchivaManager.getMetadataFacetModelFamilyName(),
+ //
+
StringSerializer.get(), //
+
StringSerializer.get() );
}
@@ -544,7 +557,7 @@ public class CassandraMetadataRepository
.addEqualsExpression( "projectId", projectMetadata.getId() ) //
.execute();
- Namespace namespace = updateOrAddNamespace( repositoryId,
projectMetadata.getNamespace() );
+
// project exists ? if yes return nothing to update here
if ( result.get().getCount() > 0 )
@@ -553,6 +566,7 @@ public class CassandraMetadataRepository
}
else
{
+ Namespace namespace = updateOrAddNamespace( repositoryId,
projectMetadata.getNamespace() );
String key =
new Project.KeyBuilder().withProjectId(
projectMetadata.getId() ).withNamespace( namespace ).build();
@@ -976,7 +990,7 @@ public class CassandraMetadataRepository
Namespace namespace = getNamespace( repositoryId, namespaceId );
if ( namespace == null )
{
- updateOrAddNamespace( repositoryId, namespaceId );
+ namespace = updateOrAddNamespace( repositoryId, namespaceId );
}
ProjectMetadata projectMetadata = new ProjectMetadata();
@@ -1018,7 +1032,8 @@ public class CassandraMetadataRepository
column( "namespaceId", namespaceId )
).addInsertion( key, //
cf, //
column( "project",
-
artifactMeta.getProject() ) ) //
+
artifactMeta.getProject() )
+ ) //
.addInsertion( key, //
cf, //
column( "projectVersion",
artifactMeta.getProjectVersion() ) ) //
@@ -1393,7 +1408,7 @@ public class CassandraMetadataRepository
public void addMetadataFacet( String repositoryId, MetadataFacet
metadataFacet )
throws MetadataRepositoryException
{
-/*
+
if ( metadataFacet == null )
{
return;
@@ -1403,27 +1418,26 @@ public class CassandraMetadataRepository
{
String key = new MetadataFacetModel.KeyBuilder().withRepositoryId(
repositoryId ).withFacetId(
metadataFacet.getFacetId() ).withName( metadataFacet.getName()
).build();
- MetadataFacetModel metadataFacetModel =
getMetadataFacetModelEntityManager().get( key );
- if ( metadataFacetModel == null )
- {
- metadataFacetModel = new MetadataFacetModel();
- }
- // we need to store the repositoryId
- ArtifactMetadataModel artifactMetadataModel = new
ArtifactMetadataModel();
- artifactMetadataModel.setRepositoryId( repositoryId );
- metadataFacetModel.setArtifactMetadataModel( artifactMetadataModel
);
- metadataFacetModel.setId( key );
- metadataFacetModel.setFacetId( metadataFacet.getFacetId() );
- metadataFacetModel.setName( metadataFacet.getName() );
- try
- {
- getMetadataFacetModelEntityManager().put( metadataFacetModel );
- }
- catch ( PersistenceException e )
+ boolean exists = this.metadataFacetTemplate.isColumnsExist( key );
+
+ if ( exists )
{
- throw new MetadataRepositoryException( e.getMessage(), e );
+ ColumnFamilyUpdater<String, String> updater =
this.metadataFacetTemplate.createUpdater( key );
+ updater.setString( "facetId", metadataFacet.getFacetId() );
+ updater.setString( "name", metadataFacet.getName() );
+ this.metadataFacetTemplate.update( updater );
+ }
+ else
+ {
+ String cf =
this.cassandraArchivaManager.getMetadataFacetModelFamilyName();
+ this.metadataFacetTemplate.createMutator() //
+ .addInsertion( key, cf, column( "repositoryName",
repositoryId ) ) //
+ .addInsertion( key, cf, column( "facetId",
metadataFacet.getFacetId() ) ) //
+ .addInsertion( key, cf, column( "name",
metadataFacet.getName() ) ) //
+ .execute();
}
+
}
else
{
@@ -1433,92 +1447,85 @@ public class CassandraMetadataRepository
String key = new
MetadataFacetModel.KeyBuilder().withRepositoryId( repositoryId ).withFacetId(
metadataFacet.getFacetId() ).withName(
metadataFacet.getName() ).withKey( entry.getKey() ).build();
- MetadataFacetModel metadataFacetModel =
getMetadataFacetModelEntityManager().get( key );
- if ( metadataFacetModel == null )
+ boolean exists = this.metadataFacetTemplate.isColumnsExist(
key );
+ if ( !exists )
{
- metadataFacetModel = new MetadataFacetModel();
+ //metadataFacetModel = new MetadataFacetModel();
// we need to store the repositoryId
- ArtifactMetadataModel artifactMetadataModel = new
ArtifactMetadataModel();
- artifactMetadataModel.setRepositoryId( repositoryId );
- metadataFacetModel.setArtifactMetadataModel(
artifactMetadataModel );
- metadataFacetModel.setId( key );
- metadataFacetModel.setKey( entry.getKey() );
- metadataFacetModel.setFacetId( metadataFacet.getFacetId()
);
- metadataFacetModel.setName( metadataFacet.getName() );
- }
- metadataFacetModel.setValue( entry.getValue() );
- try
- {
- getMetadataFacetModelEntityManager().put(
metadataFacetModel );
+ //ArtifactMetadataModel artifactMetadataModel = new
ArtifactMetadataModel();
+ //artifactMetadataModel.setRepositoryId( repositoryId );
+ //metadataFacetModel.setArtifactMetadataModel(
artifactMetadataModel );
+ //metadataFacetModel.setId( key );
+ //metadataFacetModel.setKey( entry.getKey() );
+ //metadataFacetModel.setFacetId(
metadataFacet.getFacetId() );
+ //metadataFacetModel.setName( metadataFacet.getName() );
+
+ String cf =
this.cassandraArchivaManager.getMetadataFacetModelFamilyName();
+ this.metadataFacetTemplate.createMutator() //
+ .addInsertion( key, cf, column( "repositoryName",
repositoryId ) ) //
+ .addInsertion( key, cf, column( "facetId",
metadataFacet.getFacetId() ) ) //
+ .addInsertion( key, cf, column( "name",
metadataFacet.getName() ) ) //
+ .addInsertion( key, cf, column( "key", entry.getKey()
) ) //
+ .addInsertion( key, cf, column( "value",
entry.getValue() ) ) //
+ .execute();
+
+ }
+ else
+ {
+ ColumnFamilyUpdater<String, String> updater =
this.metadataFacetTemplate.createUpdater( key );
+ updater.setString( "value", entry.getValue() );
+ this.metadataFacetTemplate.update( updater );
}
- catch ( PersistenceException e )
- {
- throw new MetadataRepositoryException( e.getMessage(), e );
- }
-
}
- }*/
+ }
}
@Override
public void removeMetadataFacets( final String repositoryId, final String
facetId )
throws MetadataRepositoryException
{
-/* logger.debug( "removeMetadataFacets repositoryId: '{}', facetId:
'{}'", repositoryId, facetId );
- final List<MetadataFacetModel> toRemove = new
ArrayList<MetadataFacetModel>();
+ Keyspace keyspace = cassandraArchivaManager.getKeyspace();
- // FIXME cql query
- getMetadataFacetModelEntityManager().visitAll( new
Function<MetadataFacetModel, Boolean>()
+ QueryResult<OrderedRows<String, String, String>> result = HFactory //
+ .createRangeSlicesQuery( keyspace, //
+ StringSerializer.get(), //
+ StringSerializer.get(), //
+ StringSerializer.get() ) //
+ .setColumnFamily(
cassandraArchivaManager.getMetadataFacetModelFamilyName() ) //
+ .setColumnNames( "key", "value" ) //
+ .addEqualsExpression( "repositoryName", repositoryId ) //
+ .addEqualsExpression( "facetId", facetId ) //
+ .execute();
+
+ for ( Row<String, String, String> row : result.get() )
{
- @Override
- public Boolean apply( MetadataFacetModel metadataFacetModel )
- {
- if ( metadataFacetModel != null )
- {
- if ( StringUtils.equals(
metadataFacetModel.getArtifactMetadataModel().getRepositoryId(),
- repositoryId ) &&
StringUtils.equals( metadataFacetModel.getFacetId(),
-
facetId ) )
- {
- toRemove.add( metadataFacetModel );
- }
- }
- return Boolean.TRUE;
- }
- } );
- logger.debug( "removeMetadataFacets repositoryId: '{}', facetId: '{}',
toRemove: {}", repositoryId, facetId,
- toRemove );
- getMetadataFacetModelEntityManager().remove( toRemove );*/
+ this.metadataFacetTemplate.deleteRow( row.getKey() );
+ }
+
}
@Override
public void removeMetadataFacet( final String repositoryId, final String
facetId, final String name )
throws MetadataRepositoryException
{
-/* logger.debug( "removeMetadataFacets repositoryId: '{}', facetId:
'{}'", repositoryId, facetId );
- final List<MetadataFacetModel> toRemove = new
ArrayList<MetadataFacetModel>();
+ Keyspace keyspace = cassandraArchivaManager.getKeyspace();
- // FIXME cql query
- getMetadataFacetModelEntityManager().visitAll( new
Function<MetadataFacetModel, Boolean>()
+ QueryResult<OrderedRows<String, String, String>> result = HFactory //
+ .createRangeSlicesQuery( keyspace, //
+ StringSerializer.get(), //
+ StringSerializer.get(), //
+ StringSerializer.get() ) //
+ .setColumnFamily(
cassandraArchivaManager.getMetadataFacetModelFamilyName() ) //
+ .setColumnNames( "key", "value" ) //
+ .addEqualsExpression( "repositoryName", repositoryId ) //
+ .addEqualsExpression( "facetId", facetId ) //
+ .addEqualsExpression( "name", name ) //
+ .execute();
+
+ for ( Row<String, String, String> row : result.get() )
{
- @Override
- public Boolean apply( MetadataFacetModel metadataFacetModel )
- {
- if ( metadataFacetModel != null )
- {
- if ( StringUtils.equals(
metadataFacetModel.getArtifactMetadataModel().getRepositoryId(),
- repositoryId ) &&
StringUtils.equals( metadataFacetModel.getFacetId(),
-
facetId ) && StringUtils.equals(
- metadataFacetModel.getName(), name ) )
- {
- toRemove.add( metadataFacetModel );
- }
- }
- return Boolean.TRUE;
- }
- } );
- logger.debug( "removeMetadataFacets repositoryId: '{}', facetId: '{}',
toRemove: {}", repositoryId, facetId,
- toRemove );
- getMetadataFacetModelEntityManager().remove( toRemove );*/
+ this.metadataFacetTemplate.deleteRow( row.getKey() );
+ }
}
@Override
@@ -1527,6 +1534,38 @@ public class CassandraMetadataRepository
throws MetadataRepositoryException
{
+ Keyspace keyspace = cassandraArchivaManager.getKeyspace();
+
+ // FIXME cql query to filter in repositoryName column
+ /*
+ QueryResult<OrderedRows<String, String, Long>> result = HFactory //
+ .createRangeSlicesQuery( keyspace, //
+ StringSerializer.get(), //
+ StringSerializer.get(), //
+ LongSerializer.get() ) //
+
+ .setColumnFamily(
cassandraArchivaManager.getArtifactMetadataModelFamilyName() ) //
+ .setColumnNames( "whenGathered", "repositoryName" ) //
+ .addGteExpression( "whenGathered", startTime.getTime() ) //
+ .addLteExpression( "whenGathered", endTime.getTime() )
+ .execute();
+ */
+ StringSerializer ss = StringSerializer.get();
+ CqlQuery<String,String,String> cqlQuery = new
CqlQuery<String,String,String>(keyspace, ss, ss, ss);
+ cqlQuery.setQuery("select * from " +
cassandraArchivaManager.getArtifactMetadataModelFamilyName() //
+ + " where 'whenGathered' >= " +
startTime.getTime() //
+ + " and 'whenGathered' <= " + endTime.getTime()
//
+ + " and respositoryName = '" + repositoryId +
"'");
+ QueryResult<CqlRows<String,String,String>> result = cqlQuery.execute();
+ List<String> keys = new ArrayList<String>( result.get().getCount() );
+
+ for (Row<String,String,String> row : result.get())
+ {
+ keys.add( row.getKey() );
+ }
+
+
+
/* final List<ArtifactMetadataModel> artifactMetadataModels = new
ArrayList<ArtifactMetadataModel>();
// FIXME cql query
@@ -1727,6 +1766,9 @@ public class CassandraMetadataRepository
final String version, final MetadataFacet
metadataFacet )
throws MetadataRepositoryException
{
+
+
+
/* final List<ArtifactMetadataModel> artifactMetadataModels = new
ArrayList<ArtifactMetadataModel>();
getArtifactMetadataModelEntityManager().visitAll( new
Function<ArtifactMetadataModel, Boolean>()
{
Modified:
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java?rev=1579831&r1=1579830&r2=1579831&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java
(original)
+++
archiva/trunk/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/DefaultCassandraArchivaManager.java
Thu Mar 20 23:24:15 2014
@@ -268,19 +268,28 @@ public class DefaultCassandraArchivaMana
artifactMetadataModel.addColumnDefinition( projectColumn );
BasicColumnDefinition projectVersionColumn = new
BasicColumnDefinition();
- projectVersionColumn.setName( StringSerializer.get().toByteBuffer(
"project" ) );
+ projectVersionColumn.setName( StringSerializer.get().toByteBuffer(
"projectVersion" ) );
projectVersionColumn.setIndexName( "projectVersion" );
projectVersionColumn.setIndexType( ColumnIndexType.KEYS );
projectVersionColumn.setValidationClass(
ComparatorType.UTF8TYPE.getClassName() );
artifactMetadataModel.addColumnDefinition( projectVersionColumn );
BasicColumnDefinition versionColumn = new BasicColumnDefinition();
- versionColumn.setName( StringSerializer.get().toByteBuffer(
"project" ) );
+ versionColumn.setName( StringSerializer.get().toByteBuffer(
"version" ) );
versionColumn.setIndexName( "version" );
versionColumn.setIndexType( ColumnIndexType.KEYS );
versionColumn.setValidationClass(
ComparatorType.UTF8TYPE.getClassName() );
artifactMetadataModel.addColumnDefinition( versionColumn );
+ BasicColumnDefinition whenGatheredColumn = new
BasicColumnDefinition();
+ whenGatheredColumn.setName( StringSerializer.get().toByteBuffer(
"whenGathered" ) );
+ whenGatheredColumn.setIndexName( "whenGathered" );
+ whenGatheredColumn.setIndexType( ColumnIndexType.KEYS );
+ whenGatheredColumn.setValidationClass(
ComparatorType.LONGTYPE.getClassName() );
+ artifactMetadataModel.addColumnDefinition( whenGatheredColumn );
+
+
+
}
// metadatafacetmodel table