You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2013/05/20 12:25:54 UTC

svn commit: r1484416 - in /archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra: CassandraMetadataRepository.java model/Namespace.java model/Project.java

Author: olamy
Date: Mon May 20 10:25:53 2013
New Revision: 1484416

URL: http://svn.apache.org/r1484416
Log:
start implementation for project storing

Added:
    archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Project.java   (with props)
Modified:
    archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
    archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Namespace.java

Modified: archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java
URL: http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java?rev=1484416&r1=1484415&r2=1484416&view=diff
==============================================================================
--- archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java (original)
+++ archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepository.java Mon May 20 10:25:53 2013
@@ -36,6 +36,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.Namespace;
+import org.apache.archiva.metadata.repository.cassandra.model.Project;
 import org.apache.archiva.metadata.repository.cassandra.model.Repository;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
@@ -71,6 +72,8 @@ public class CassandraMetadataRepository
 
     private EntityManager<Namespace, String> namespaceEntityManager;
 
+    private EntityManager<Project, String> projectEntityManager;
+
     public CassandraMetadataRepository( Map<String, MetadataFacetFactory> metadataFacetFactories,
                                         ArchivaConfiguration configuration, Keyspace keyspace )
     {
@@ -111,6 +114,16 @@ public class CassandraMetadataRepository
             {
                 namespaceEntityManager.createStorage( null );
             }
+
+            projectEntityManager =
+                new DefaultEntityManager.Builder<Project, String>().withEntityType( Project.class ).withKeyspace(
+                    keyspace ).build();
+
+            exists = columnFamilyExists( "project" );
+            if ( !exists )
+            {
+                projectEntityManager.createStorage( null );
+            }
         }
         catch ( PersistenceException e )
         {
@@ -409,10 +422,34 @@ public class CassandraMetadataRepository
 
 
     @Override
-    public void updateProject( String repositoryId, ProjectMetadata project )
+    public void updateProject( String repositoryId, ProjectMetadata projectMetadata )
         throws MetadataRepositoryException
     {
-        //To change body of implemented methods use File | Settings | File Templates.
+
+        // project exists ? if yes return
+        String projectKey = new Project.KeyBuilder().withProjectId( projectMetadata.getId() ).withNamespace(
+            new Namespace( projectMetadata.getNamespace(), new Repository( repositoryId ) ) ).build();
+
+        Project project = projectEntityManager.get( projectKey );
+        if ( project != null )
+        {
+            return;
+        }
+
+        // FIXME really needed ?
+        // test if the namespace exist
+        String namespaceKey = new Namespace.KeyBuilder().withRepositoryId( repositoryId ).withNamespace(
+            projectMetadata.getNamespace() ).build();
+        Namespace namespace = namespaceEntityManager.get( namespaceKey );
+        if ( namespace == null )
+        {
+            updateNamespace( repositoryId, projectMetadata.getNamespace() );
+        }
+
+        project = new Project( projectKey, namespace );
+
+        projectEntityManager.put( project );
+
     }
 
     @Override
@@ -610,7 +647,7 @@ public class CassandraMetadataRepository
     }
 
     @Override
-    public <T>T obtainAccess( Class<T> aClass )
+    public <T> T obtainAccess( Class<T> aClass )
         throws MetadataRepositoryException
     {
         throw new IllegalArgumentException(

Modified: archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Namespace.java
URL: http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Namespace.java?rev=1484416&r1=1484415&r2=1484416&view=diff
==============================================================================
--- archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Namespace.java (original)
+++ archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Namespace.java Mon May 20 10:25:53 2013
@@ -184,7 +184,7 @@ public class Namespace
         public String build()
         {
             // FIXME add some controls
-            return this.namespace + "-" + this.repositoryId;
+            return this.repositoryId + "-" + this.namespace;
         }
     }
 }

Added: archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Project.java
URL: http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Project.java?rev=1484416&view=auto
==============================================================================
--- archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Project.java (added)
+++ archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Project.java Mon May 20 10:25:53 2013
@@ -0,0 +1,121 @@
+package org.apache.archiva.metadata.repository.cassandra.model;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+/**
+ * @author Olivier Lamy
+ */
+@Entity
+public class Project
+    implements Serializable
+{
+    @Id
+    @Column( name = "projectId" )
+    private String projectId;
+
+    @Column( name = "id" )
+    private String id;
+
+    @Column( name = "repository" )
+    private Namespace namespace;
+
+    public Project()
+    {
+        // no op
+    }
+
+    public Project( String id, Namespace namespace )
+    {
+        this.id = id;
+        this.namespace = namespace;
+    }
+
+    public String getId()
+    {
+        return id;
+    }
+
+    public void setId( String id )
+    {
+        this.id = id;
+    }
+
+    public Namespace getNamespace()
+    {
+        return namespace;
+    }
+
+    public void setNamespace( Namespace namespace )
+    {
+        this.namespace = namespace;
+    }
+
+    @Override
+    public boolean equals( Object o )
+    {
+        if ( this == o )
+        {
+            return true;
+        }
+        if ( o == null || getClass() != o.getClass() )
+        {
+            return false;
+        }
+
+        Project project = (Project) o;
+
+        if ( !id.equals( project.id ) )
+        {
+            return false;
+        }
+        if ( !namespace.equals( project.namespace ) )
+        {
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    public int hashCode()
+    {
+        int result = id.hashCode();
+        result = 31 * result + namespace.hashCode();
+        return result;
+    }
+
+    public static class KeyBuilder
+    {
+
+        private Namespace namespace;
+
+        private String projectId;
+
+        public KeyBuilder()
+        {
+            // no op
+        }
+
+        public KeyBuilder withNamespace( Namespace namespace )
+        {
+            this.namespace = namespace;
+            return this;
+        }
+
+        public KeyBuilder withProjectId( String projectId )
+        {
+            this.projectId = projectId;
+            return this;
+        }
+
+
+        public String build()
+        {
+            // FIXME add some controls
+            return new Namespace.KeyBuilder().withNamespace( this.namespace ) + "-" + this.projectId;
+        }
+    }
+}

Propchange: archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Project.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/Project.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision