From 7d10f63b87eb918253ee018d998975b9c0bbb63f Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Mon, 24 Mar 2014 01:37:12 +0000 Subject: [PATCH] use directly query filtering git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1580694 13f79535-47bb-0310-9956-ffa450edef68 --- .../CassandraMetadataRepository.java | 67 ++++++++----------- 1 file changed, 29 insertions(+), 38 deletions(-) diff --git a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java index 42b0e80fc..fd2eed936 100644 --- a/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java +++ b/archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java @@ -1688,7 +1688,7 @@ public class CassandraMetadataRepository } - protected ArtifactMetadata mapArtifactMetadataLongColumnSlice( ColumnSlice columnSlice ) + protected ArtifactMetadata mapArtifactMetadataLongColumnSlice( ColumnSlice columnSlice ) { ArtifactMetadata artifactMetadata = new ArtifactMetadata(); artifactMetadata.setNamespace( getAsStringValue( columnSlice, "namespaceId" ) ); @@ -1709,7 +1709,7 @@ public class CassandraMetadataRepository return artifactMetadata; } - protected ArtifactMetadata mapArtifactMetadataStringColumnSlice( ColumnSlice columnSlice ) + protected ArtifactMetadata mapArtifactMetadataStringColumnSlice( ColumnSlice columnSlice ) { ArtifactMetadata artifactMetadata = new ArtifactMetadata(); artifactMetadata.setNamespace( getStringValue( columnSlice, "namespaceId" ) ); @@ -1802,19 +1802,16 @@ public class CassandraMetadataRepository .setColumnNames( "namespaceId", "size", "id", "fileLastModified", "md5", "project", "projectVersion", "repositoryName", "version", "whenGathered", "sha1" ); // - query = query.addEqualsExpression( "sha1", checksum ); + query = query.addEqualsExpression( "sha1", checksum ).addEqualsExpression( "repositoryName", repositoryId ); QueryResult> result = query.execute(); for ( Row row : result.get() ) { ColumnSlice columnSlice = row.getColumnSlice(); - String repositoryName = getStringValue( columnSlice, "repositoryName" ); - if ( StringUtils.equals( repositoryName, repositoryId ) ) - { - artifactMetadataMap.put( row.getKey(), mapArtifactMetadataStringColumnSlice( columnSlice ) ); - } + artifactMetadataMap.put( row.getKey(), mapArtifactMetadataStringColumnSlice( columnSlice ) ); + } query = HFactory // @@ -1823,19 +1820,16 @@ public class CassandraMetadataRepository .setColumnNames( "namespaceId", "size", "id", "fileLastModified", "md5", "project", "projectVersion", "repositoryName", "version", "whenGathered", "sha1" ); // - query = query.addEqualsExpression( "md5", checksum ); + query = query.addEqualsExpression( "md5", checksum ).addEqualsExpression( "repositoryName", repositoryId ); result = query.execute(); for ( Row row : result.get() ) { ColumnSlice columnSlice = row.getColumnSlice(); - String repositoryName = getStringValue( columnSlice, "repositoryName" ); - if ( StringUtils.equals( repositoryName, repositoryId ) ) - { - artifactMetadataMap.put( row.getKey(), mapArtifactMetadataStringColumnSlice( columnSlice ) ); - } + artifactMetadataMap.put( row.getKey(), mapArtifactMetadataStringColumnSlice( columnSlice ) ); + } return artifactMetadataMap.values(); @@ -1922,36 +1916,33 @@ public class CassandraMetadataRepository public List getArtifacts( final String repositoryId ) throws MetadataRepositoryException { -/* final List artifactMetadataModels = new ArrayList(); - // FIXME use cql query ! - getArtifactMetadataModelEntityManager().visitAll( new Function() - { - @Override - public Boolean apply( ArtifactMetadataModel artifactMetadataModel ) - { - if ( artifactMetadataModel != null ) - { - if ( StringUtils.equals( repositoryId, artifactMetadataModel.getRepositoryId() ) ) - { - artifactMetadataModels.add( artifactMetadataModel ); - } - } + Keyspace keyspace = cassandraArchivaManager.getKeyspace(); + StringSerializer ss = StringSerializer.get(); - return Boolean.TRUE; - } - } ); + // cql cannot run or in queries so running twice the query - List artifactMetadatas = new ArrayList( artifactMetadataModels.size() ); - for ( ArtifactMetadataModel model : artifactMetadataModels ) + RangeSlicesQuery query = HFactory // + .createRangeSlicesQuery( keyspace, ss, ss, ss ) // + .setColumnFamily( cassandraArchivaManager.getArtifactMetadataModelFamilyName() ) // + .setColumnNames( "namespaceId", "size", "id", "fileLastModified", "md5", "project", "projectVersion", + "repositoryName", "version", "whenGathered", "sha1" ); // + + query = query.addEqualsExpression( "repositoryName", repositoryId ); + + QueryResult> result = query.execute(); + + List artifactMetadatas = new ArrayList( result.get().getCount() ); + + for ( Row row : result.get() ) { - ArtifactMetadata artifactMetadata = getModelMapper().map( model, ArtifactMetadata.class ); - populateFacets( artifactMetadata ); - artifactMetadatas.add( artifactMetadata ); + ColumnSlice columnSlice = row.getColumnSlice(); + + artifactMetadatas.add( mapArtifactMetadataStringColumnSlice( columnSlice ) ); + } - return artifactMetadatas;*/ - return Collections.emptyList(); + return artifactMetadatas; } -- 2.39.5