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