]> source.dussan.org Git - archiva.git/commitdiff
[MRM-980] Add getArtifacts() method to be able to retrieve all artifacts in a repository
authorBrett Porter <brett@apache.org>
Thu, 8 Jul 2010 05:53:27 +0000 (05:53 +0000)
committerBrett Porter <brett@apache.org>
Thu, 8 Jul 2010 05:53:27 +0000 (05:53 +0000)
Submitted by: Patti Arachchige Eshan Sudharaka

git-svn-id: https://svn.apache.org/repos/asf/archiva/branches/archiva-MRM-980@961576 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/metadata/repository/TestMetadataRepository.java
archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/archiva/metadata/repository/memory/TestMetadataRepository.java
archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/archiva/metadata/repository/TestMetadataRepository.java
archiva-modules/metadata/metadata-repository-api/src/main/java/org/apache/archiva/metadata/repository/MetadataRepository.java
archiva-modules/metadata/metadata-repository-api/src/test/java/org/apache/archiva/metadata/repository/AbstractMetadataRepositoryTest.java
archiva-modules/plugins/maven2-repository/src/test/java/org/apache/archiva/metadata/repository/TestMetadataRepository.java
archiva-modules/plugins/metadata-repository-file/src/main/java/org/apache/archiva/metadata/repository/file/FileMetadataRepository.java

index 26393052b3e31770b9a361f2702bc3e287b55056..60ebf4ee7cd35048ae456db5ecb81fddd50b384d 100644 (file)
@@ -159,4 +159,8 @@ public class TestMetadataRepository
     {
         return null;  //To change body of implemented methods use File | Settings | File Templates.
     }
+
+    public List<ArtifactMetadata> getArtifacts(String repositoryId){
+        return null;
+    }
 }
index cd7ef6a0ddd5c8ac1108ac468562e354adf3f43e..164922604c834b339ce2c0691dd2c74b186b8150 100644 (file)
@@ -199,4 +199,8 @@ public class TestMetadataRepository
     {
         return artifacts;
     }
+
+    public List<ArtifactMetadata> getArtifacts(String repositoryId){
+        return artifacts;
+    }
 }
\ No newline at end of file
index 26393052b3e31770b9a361f2702bc3e287b55056..d5dae295c00f8fe2fff614c5bf398ad6c04d55f2 100644 (file)
@@ -159,4 +159,7 @@ public class TestMetadataRepository
     {
         return null;  //To change body of implemented methods use File | Settings | File Templates.
     }
+    public List<ArtifactMetadata> getArtifacts(String repositoryId){
+        return null;
+    }
 }
index 823129212eaa5405f6f1fc4f96d9b6373c1a239d..cc7c513fc0e2f37af84e895011ac4905e23cc8b4 100644 (file)
@@ -75,4 +75,6 @@ public interface MetadataRepository
      * @param repositoryId the repository to delete
      */
     void deleteRepository( String repositoryId );
+
+    List<ArtifactMetadata> getArtifacts(String repositoryId);
 }
index ca59dcc56af7548fbc5b3988097b2150f56aacb4..fd8362f484e5c507c2b2af8acd78f13936d3fbdc 100644 (file)
@@ -484,6 +484,17 @@ public abstract class AbstractMetadataRepositoryTest
 
         Date upper = new Date( artifact.getWhenGathered().getTime() - 10000 );
         assertTrue( repository.getArtifactsByDateRange( TEST_REPO_ID, null, upper ).isEmpty() );
+    }
+
+     public void testGetArtifactsByRepoId()
+    {
+        repository.updateNamespace( TEST_REPO_ID, TEST_NAMESPACE );
+        repository.updateProject( TEST_REPO_ID, createProject() );
+        ArtifactMetadata artifact = createArtifact();
+        repository.updateArtifact( TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
+        assertFalse( repository.getArtifacts(TEST_REPO_ID).isEmpty());
+
+
     }
 
     public void testGetNamespacesWithSparseDepth()
index ea51c9e319bdf7fce6ac2a1e2a9aeeae5b65666c..932152b683de36d36a8fb6b845e3de2412a7fadf 100644 (file)
@@ -114,4 +114,7 @@ public class TestMetadataRepository
     {
         //To change body of implemented methods use File | Settings | File Templates.
     }
+    public List<ArtifactMetadata> getArtifacts(String repositoryId){
+        return null;
+    }
 }
\ No newline at end of file
index aca1bace7d166cc1c5ec1bdae1db8b09fe5fe0bf..eab85f2970e266f91ae08550e7747215f46209b3 100644 (file)
@@ -140,7 +140,7 @@ public class FileMetadataRepository
             {
                 properties.remove( name );
             }
-            
+
             // clear the facet contents so old properties are no longer written
             clearMetadataFacetProperties( versionMetadata, properties );
         }
@@ -227,7 +227,7 @@ public class FileMetadataRepository
             }
         }
     }
-    
+
     private void clearMetadataFacetProperties( ProjectVersionMetadata versionMetadata, Properties properties )
     {
         List<Object> propsToRemove = new ArrayList<Object>();
@@ -242,7 +242,7 @@ public class FileMetadataRepository
                 }
             }
         }
-        
+
         for( Object key : propsToRemove )
         {
             properties.remove( key );
@@ -577,7 +577,7 @@ public class FileMetadataRepository
         properties.remove( "artifact:sha1:" + id );
         properties.remove( "artifact:version:" + id );
         properties.remove( "artifact:facetIds:" + id );
-        
+
         String prefix = "artifact:facet:" + id + ":";
         for ( Object key : new ArrayList( properties.keySet() ) )
         {
@@ -1075,4 +1075,36 @@ public class FileMetadataRepository
             return artifact1.getWhenGathered().compareTo( artifact2.getWhenGathered() );
         }
     }
+
+    public List<ArtifactMetadata> getArtifacts( String repoId )
+    {
+
+        List<ArtifactMetadata> artifacts = new ArrayList<ArtifactMetadata>();
+        for ( String ns : getRootNamespaces( repoId ) )
+        {
+            getArtifacts( artifacts, repoId, ns );
+        }
+        return artifacts;
+    }
+
+    private void getArtifacts( List<ArtifactMetadata> artifacts, String repoId, String ns )
+    {
+        for ( String namespace : getNamespaces( repoId, ns ) )
+        {
+            getArtifacts( artifacts, repoId, ns + "." + namespace );
+        }
+
+        for ( String project : getProjects( repoId, ns ) )
+        {
+            for ( String version : getProjectVersions( repoId, ns, project ) )
+            {
+                for ( ArtifactMetadata artifact : getArtifacts( repoId, ns, project, version ) )
+                {
+
+                    artifacts.add( artifact );
+
+                }
+            }
+        }
+    }
 }