]> source.dussan.org Git - archiva.git/commitdiff
use directly query filtering
authorOlivier Lamy <olamy@apache.org>
Mon, 24 Mar 2014 01:37:12 +0000 (01:37 +0000)
committerOlivier Lamy <olamy@apache.org>
Mon, 24 Mar 2014 01:37:12 +0000 (01:37 +0000)
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1580694 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/plugins/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java

index 42b0e80fca03238e056b5a7712dd3b04b690fd7e..fd2eed9369802769c7c8ededd1dc9f3edeeb0c16 100644 (file)
@@ -1688,7 +1688,7 @@ public class CassandraMetadataRepository
     }
 
 
-    protected ArtifactMetadata mapArtifactMetadataLongColumnSlice( ColumnSlice<String,Long> columnSlice )
+    protected ArtifactMetadata mapArtifactMetadataLongColumnSlice( ColumnSlice<String, Long> columnSlice )
     {
         ArtifactMetadata artifactMetadata = new ArtifactMetadata();
         artifactMetadata.setNamespace( getAsStringValue( columnSlice, "namespaceId" ) );
@@ -1709,7 +1709,7 @@ public class CassandraMetadataRepository
         return artifactMetadata;
     }
 
-    protected ArtifactMetadata mapArtifactMetadataStringColumnSlice( ColumnSlice<String,String> columnSlice )
+    protected ArtifactMetadata mapArtifactMetadataStringColumnSlice( ColumnSlice<String, String> 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<OrderedRows<String, String, String>> result = query.execute();
 
         for ( Row<String, String, String> row : result.get() )
         {
             ColumnSlice<String, String> 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<String, String, String> row : result.get() )
         {
             ColumnSlice<String, String> 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<ArtifactMetadata> getArtifacts( final String repositoryId )
         throws MetadataRepositoryException
     {
-/*        final List<ArtifactMetadataModel> artifactMetadataModels = new ArrayList<ArtifactMetadataModel>();
-        // FIXME use cql query !
-        getArtifactMetadataModelEntityManager().visitAll( new Function<ArtifactMetadataModel, Boolean>()
-        {
-            @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<ArtifactMetadata> artifactMetadatas = new ArrayList<ArtifactMetadata>( artifactMetadataModels.size() );
 
-        for ( ArtifactMetadataModel model : artifactMetadataModels )
+        RangeSlicesQuery<String, String, String> 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<OrderedRows<String, String, String>> result = query.execute();
+
+        List<ArtifactMetadata> artifactMetadatas = new ArrayList<ArtifactMetadata>( result.get().getCount() );
+
+        for ( Row<String, String, String> row : result.get() )
         {
-            ArtifactMetadata artifactMetadata = getModelMapper().map( model, ArtifactMetadata.class );
-            populateFacets( artifactMetadata );
-            artifactMetadatas.add( artifactMetadata );
+            ColumnSlice<String, String> columnSlice = row.getColumnSlice();
+
+            artifactMetadatas.add( mapArtifactMetadataStringColumnSlice( columnSlice ) );
+
         }
 
-        return artifactMetadatas;*/
-        return Collections.emptyList();
+        return artifactMetadatas;
     }