You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/07/25 02:20:12 UTC
svn commit: r679632 -
/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/LocalRepositoryReader.java
Author: ogusakov
Date: Thu Jul 24 17:20:12 2008
New Revision: 679632
URL: http://svn.apache.org/viewvc?rev=679632&view=rev
Log:
adjusting APIs, started LocalRepositoryReader
Added:
maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/LocalRepositoryReader.java
Added: maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/LocalRepositoryReader.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/LocalRepositoryReader.java?rev=679632&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/LocalRepositoryReader.java (added)
+++ maven/sandbox/trunk/mercury/src/main/java/org/apache/maven/mercury/repository/LocalRepositoryReader.java Thu Jul 24 17:20:12 2008
@@ -0,0 +1,130 @@
+package org.apache.maven.mercury.repository;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.maven.mercury.ArtifactBasicMetadata;
+import org.apache.maven.mercury.ArtifactMetadata;
+import org.apache.maven.mercury.DefaultArtifact;
+import org.apache.maven.mercury.metadata.version.VersionException;
+import org.apache.maven.mercury.metadata.version.VersionRange;
+import org.apache.maven.mercury.repository.api.RepositoryException;
+import org.apache.maven.mercury.repository.api.RepositoryOperationResult;
+import org.apache.maven.mercury.repository.api.RepositoryReader;
+
+public class LocalRepositoryReader
+implements RepositoryReader
+{
+ //---------------------------------------------------------------------------------------------------------------
+ LocalRepository _repo;
+ File _repoDir;
+ //---------------------------------------------------------------------------------------------------------------
+ public LocalRepositoryReader( LocalRepository repo )
+ {
+ if( repo == null )
+ throw new IllegalArgumentException("localRepo cannot be null");
+
+ _repoDir = repo.getDirectory();
+ if( _repoDir == null )
+ throw new IllegalArgumentException("localRepo directory cannot be null");
+
+ if( !_repoDir.exists() )
+ throw new IllegalArgumentException("localRepo directory \""+_repoDir.getAbsolutePath()+"\" should exist");
+
+ _repo = repo;
+ }
+ //---------------------------------------------------------------------------------------------------------------
+ public Repository getRepository()
+ {
+ return _repo;
+ }
+ //---------------------------------------------------------------------------------------------------------------
+ public RepositoryOperationResult<DefaultArtifact> readArtifacts( List<? extends ArtifactBasicMetadata> query )
+ throws RepositoryException,
+ IllegalArgumentException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ //---------------------------------------------------------------------------------------------------------------
+ /**
+ *
+ */
+ public RepositoryOperationResult<ArtifactMetadata> readMetadata( List<? extends ArtifactBasicMetadata> query )
+ throws RepositoryException,
+ IllegalArgumentException
+ {
+ if( query == null || query.size() < 1 )
+ return null;
+
+ RepositoryOperationResult<ArtifactMetadata> rr = new RepositoryOperationResult<ArtifactMetadata>();
+
+ File gavDir = null;
+ for( ArtifactBasicMetadata bmd : query )
+ {
+ gavDir = new File( _repoDir, bmd.getGroupId().replace( '.', '/' )+"/"+bmd.getArtifactId()+"/"+bmd.getVersion() );
+ // TODO og: the rest
+ }
+
+ return rr;
+ }
+ //---------------------------------------------------------------------------------------------------------------
+ /**
+ * direct disk search, no redirects, first attempt
+ */
+ public Map<ArtifactBasicMetadata, RepositoryOperationResult<ArtifactBasicMetadata>> readVersions(
+ List<? extends ArtifactBasicMetadata> query )
+ throws RepositoryException,
+ IllegalArgumentException
+ {
+ if( query == null || query.size() < 1 )
+ return null;
+ Map<ArtifactBasicMetadata, RepositoryOperationResult<ArtifactBasicMetadata>> res = new HashMap<ArtifactBasicMetadata, RepositoryOperationResult<ArtifactBasicMetadata>>( query.size() );
+
+ File gaDir = null;
+ for( ArtifactBasicMetadata bmd : query )
+ {
+ gaDir = new File( _repoDir, bmd.getGroupId().replace( '.', '/' )+"/"+bmd.getArtifactId() );
+ if( ! gaDir.exists() )
+ continue;
+
+ File [] versionFiles = gaDir.listFiles();
+
+ RepositoryOperationResult<ArtifactBasicMetadata> rr = null;
+ VersionRange versionQuery;
+ try
+ {
+ versionQuery = new VersionRange( bmd.getVersion() );
+ }
+ catch( VersionException e )
+ {
+ rr = RepositoryOperationResult.add( rr, new RepositoryException(e) );
+ continue;
+ }
+
+ for( File vf : versionFiles )
+ {
+ if( !vf.isDirectory() )
+ continue;
+
+ if( !versionQuery.includes( vf.getName() ) )
+ continue;
+
+ ArtifactBasicMetadata vmd = new ArtifactBasicMetadata();
+ vmd.setGroupId( bmd.getGroupId() );
+ vmd.setArtifactId( bmd.getArtifactId() );
+ vmd.setClassifier( bmd.getClassifier() );
+ vmd.setType( bmd.getType() );
+ vmd.setVersion( vf.getName() );
+
+ rr = RepositoryOperationResult.add( rr, vmd );
+ }
+ }
+
+ return res;
+ }
+ //---------------------------------------------------------------------------------------------------------------
+ //---------------------------------------------------------------------------------------------------------------
+}