Author: olamy
Date: Tue May 21 13:28:32 2013
New Revision: 1484801
URL: http://svn.apache.org/r1484801
Log:
more implementations with cassandra
Added:
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ProjectVersionMetadataModel.java
(with props)
Modified:
archiva/sandbox/trunk/metadata-store-cassandra/pom.xml
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/MetadataFacetModel.java
archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java
Modified: archiva/sandbox/trunk/metadata-store-cassandra/pom.xml
URL:
http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/pom.xml?rev=1484801&r1=1484800&r2=1484801&view=diff
==============================================================================
--- archiva/sandbox/trunk/metadata-store-cassandra/pom.xml (original)
+++ archiva/sandbox/trunk/metadata-store-cassandra/pom.xml Tue May 21 13:28:32
2013
@@ -60,7 +60,24 @@
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jpa_2.0_spec</artifactId>
- <version>1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>net.sf.beanlib</groupId>
+ <artifactId>beanlib</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>cglib</groupId>
+ <artifactId>cglib</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>aopalliance</groupId>
+ <artifactId>aopalliance</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<!--
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=1484801&r1=1484800&r2=1484801&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
Tue May 21 13:28:32 2013
@@ -25,8 +25,10 @@ import com.netflix.astyanax.connectionpo
import com.netflix.astyanax.connectionpool.exceptions.NotFoundException;
import com.netflix.astyanax.entitystore.DefaultEntityManager;
import com.netflix.astyanax.entitystore.EntityManager;
+import net.sf.beanlib.provider.replicator.BeanReplicator;
import org.apache.archiva.configuration.ArchivaConfiguration;
import org.apache.archiva.metadata.model.ArtifactMetadata;
+import org.apache.archiva.metadata.model.FacetedMetadata;
import org.apache.archiva.metadata.model.MetadataFacet;
import org.apache.archiva.metadata.model.MetadataFacetFactory;
import org.apache.archiva.metadata.model.ProjectMetadata;
@@ -39,6 +41,7 @@ import org.apache.archiva.metadata.repos
import
org.apache.archiva.metadata.repository.cassandra.model.MetadataFacetModel;
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.ProjectVersionMetadataModel;
import org.apache.archiva.metadata.repository.cassandra.model.Repository;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
@@ -81,6 +84,8 @@ public class CassandraMetadataRepository
private EntityManager<MetadataFacetModel, String>
metadataFacetModelEntityManager;
+ private EntityManager<ProjectVersionMetadataModel, String>
projectVersionMetadataModelEntityManager;
+
public CassandraMetadataRepository( Map<String, MetadataFacetFactory>
metadataFacetFactories,
ArchivaConfiguration configuration,
Keyspace keyspace )
{
@@ -152,6 +157,16 @@ public class CassandraMetadataRepository
metadataFacetModelEntityManager.createStorage( null );
}
+ projectVersionMetadataModelEntityManager =
+ new DefaultEntityManager.Builder<ProjectVersionMetadataModel,
String>().withEntityType(
+ ProjectVersionMetadataModel.class ).withKeyspace( keyspace
).build();
+
+ exists = columnFamilyExists( "projectversionmetadatamodel" );
+ if ( !exists )
+ {
+ projectVersionMetadataModelEntityManager.createStorage( null );
+ }
+
}
catch ( PersistenceException e )
{
@@ -232,6 +247,17 @@ public class CassandraMetadataRepository
this.metadataFacetModelEntityManager = metadataFacetModelEntityManager;
}
+ public EntityManager<ProjectVersionMetadataModel, String>
getProjectVersionMetadataModelEntityManager()
+ {
+ return projectVersionMetadataModelEntityManager;
+ }
+
+ public void setProjectVersionMetadataModelEntityManager(
+ EntityManager<ProjectVersionMetadataModel, String>
projectVersionMetadataModelEntityManager )
+ {
+ this.projectVersionMetadataModelEntityManager =
projectVersionMetadataModelEntityManager;
+ }
+
@Override
public void updateNamespace( String repositoryId, String namespaceId )
throws MetadataRepositoryException
@@ -536,10 +562,23 @@ public class CassandraMetadataRepository
}
// now facets
- // iterate over available facets to update/add/remove from the
artifactMetadata
+ updateFacets( artifactMeta, artifactMetadataModel );
+
+ }
+
+ /**
+ * iterate over available facets to remove/add from the artifactMetadata
+ *
+ * @param facetedMetadata
+ * @param artifactMetadataModel only use for the key
+ */
+ private void updateFacets( final FacetedMetadata facetedMetadata,
+ final ArtifactMetadataModel
artifactMetadataModel )
+ {
+
for ( final String facetId : metadataFacetFactories.keySet() )
{
- MetadataFacet metadataFacet = artifactMeta.getFacet( facetId );
+ MetadataFacet metadataFacet = facetedMetadata.getFacet( facetId );
if ( metadataFacet == null )
{
continue;
@@ -553,7 +592,11 @@ public class CassandraMetadataRepository
@Override
public Boolean apply( MetadataFacetModel metadataFacetModel )
{
- if ( StringUtils.equals( metadataFacetModel.getFacetId(),
facetId ) )
+ ArtifactMetadataModel tmp =
metadataFacetModel.getArtifactMetadataModel();
+ if ( StringUtils.equals( metadataFacetModel.getFacetId(),
facetId ) && StringUtils.equals(
+ tmp.getRepositoryId(),
artifactMetadataModel.getRepositoryId() ) && StringUtils.equals(
+ tmp.getNamespace(),
artifactMetadataModel.getNamespace() ) && StringUtils.equals(
+ tmp.getProject(), artifactMetadataModel.getProject() )
)
{
metadataFacetModels.add( metadataFacetModel );
}
@@ -570,17 +613,17 @@ public class CassandraMetadataRepository
for ( Map.Entry<String, String> entry : properties.entrySet() )
{
- key = new MetadataFacetModel.KeyBuilder().withKey(
entry.getKey() ).withArtifactMetadataModel(
- artifactMetadataModel ).withFacetId( facetId ).build();
+ String key = new MetadataFacetModel.KeyBuilder().withKey(
entry.getKey() ).withArtifactMetadataModel(
+ artifactMetadataModel ).withFacetId( facetId ).withName(
metadataFacet.getName() ).build();
MetadataFacetModel metadataFacetModel =
new MetadataFacetModel( key, artifactMetadataModel,
facetId, entry.getKey(), entry.getValue(),
metadataFacet.getName() );
+ metadataFacetModelsToAdd.add( metadataFacetModel );
}
- metadataFacetModelEntityManager.put( metadataFacetModels );
+ metadataFacetModelEntityManager.put( metadataFacetModelsToAdd );
}
-
}
@Override
@@ -588,9 +631,36 @@ public class CassandraMetadataRepository
ProjectVersionMetadata versionMetadata )
throws MetadataRepositoryException
{
- foo
+ // we don't test of repository and namespace really exist !
+ String key = new
ProjectVersionMetadataModel.KeyBuilder().withRepository( repositoryId
).withNamespace(
+ namespace ).withProjectId( projectId ).withId(
versionMetadata.getId() ).build();
+
+ ProjectVersionMetadataModel projectVersionMetadataModel =
projectVersionMetadataModelEntityManager.get( key );
+
+ projectVersionMetadataModel =
+ new BeanReplicator().replicateBean( versionMetadata,
ProjectVersionMetadataModel.class );
+ projectVersionMetadataModel.setRowId( key );
+
+ projectVersionMetadataModel.setCiManagement(
versionMetadata.getCiManagement() );
+ projectVersionMetadataModel.setIssueManagement(
versionMetadata.getIssueManagement() );
+ projectVersionMetadataModel.setOrganization(
versionMetadata.getOrganization() );
+ projectVersionMetadataModel.setScm( versionMetadata.getScm() );
+ // FIXME collections !!
+
+ projectVersionMetadataModelEntityManager.put(
projectVersionMetadataModel );
+
+ ArtifactMetadataModel artifactMetadataModel = new
ArtifactMetadataModel();
+ artifactMetadataModel.setArtifactMetadataModelId(
+ new ArtifactMetadataModel.KeyBuilder().withId(
versionMetadata.getId() ).withRepositoryId(
+ repositoryId ).withNamespace( namespace ).withProjectVersion(
versionMetadata.getVersion() ).build() );
+ artifactMetadataModel.setRepositoryId( repositoryId );
+ artifactMetadataModel.setNamespace( namespace );
+ artifactMetadataModel.setProject( projectId );
+ // facets etc...
+ updateFacets( versionMetadata, artifactMetadataModel );
}
+
private static class BooleanHolder
{
private boolean value;
@@ -676,35 +746,237 @@ public class CassandraMetadataRepository
public void addMetadataFacet( String repositoryId, MetadataFacet
metadataFacet )
throws MetadataRepositoryException
{
- //To change body of implemented methods use File | Settings | File
Templates.
+
+ if ( metadataFacet == null || metadataFacet.toProperties() == null ||
metadataFacet.toProperties().isEmpty() )
+ {
+ return;
+ }
+ for ( Map.Entry<String, String> entry :
metadataFacet.toProperties().entrySet() )
+ {
+
+ String key = new MetadataFacetModel.KeyBuilder().withRepositoryId(
repositoryId ).withFacetId(
+ metadataFacet.getFacetId() ).withName( metadataFacet.getName()
).withKey( entry.getKey() ).build();
+
+ MetadataFacetModel metadataFacetModel =
metadataFacetModelEntityManager.get( key );
+ if ( metadataFacetModel == null )
+ {
+ metadataFacetModel = new MetadataFacetModel();
+ // we need to store the repositoryId
+ ArtifactMetadataModel artifactMetadataModel = new
ArtifactMetadataModel();
+ artifactMetadataModel.setRepositoryId( repositoryId );
+ metadataFacetModel.setArtifactMetadataModel(
artifactMetadataModel );
+ metadataFacetModel.setId( key );
+ metadataFacetModel.setKey( entry.getKey() );
+ metadataFacetModel.setFacetId( metadataFacet.getFacetId() );
+ metadataFacetModel.setName( metadataFacetModel.getName() );
+ }
+ metadataFacetModel.setValue( entry.getValue() );
+ metadataFacetModelEntityManager.put( metadataFacetModel );
+
+ }
}
@Override
- public void removeMetadataFacets( String repositoryId, String facetId )
+ public void removeMetadataFacets( final String repositoryId, final String
facetId )
throws MetadataRepositoryException
{
- //To change body of implemented methods use File | Settings | File
Templates.
+ logger.debug( "removeMetadataFacets repositoryId: '{}', facetId:
'{}'", repositoryId, facetId );
+ final List<MetadataFacetModel> toRemove = new
ArrayList<MetadataFacetModel>();
+
+ // FIXME cql query
+ metadataFacetModelEntityManager.visitAll( new
Function<MetadataFacetModel, Boolean>()
+ {
+ @Override
+ public Boolean apply( MetadataFacetModel metadataFacetModel )
+ {
+ if ( metadataFacetModel != null )
+ {
+ if ( StringUtils.equals(
metadataFacetModel.getArtifactMetadataModel().getRepositoryId(),
+ repositoryId ) &&
StringUtils.equals( metadataFacetModel.getFacetId(),
+
facetId ) )
+ {
+ toRemove.add( metadataFacetModel );
+ }
+ }
+ return Boolean.TRUE;
+ }
+ } );
+ logger.debug( "removeMetadataFacets repositoryId: '{}', facetId: '{}',
toRemove: {}", repositoryId, facetId,
+ toRemove );
+ metadataFacetModelEntityManager.remove( toRemove );
}
@Override
- public void removeMetadataFacet( String repositoryId, String facetId,
String name )
+ public void removeMetadataFacet( final String repositoryId, final String
facetId, final String name )
throws MetadataRepositoryException
{
- //To change body of implemented methods use File | Settings | File
Templates.
+ logger.debug( "removeMetadataFacets repositoryId: '{}', facetId:
'{}'", repositoryId, facetId );
+ final List<MetadataFacetModel> toRemove = new
ArrayList<MetadataFacetModel>();
+
+ // FIXME cql query
+ metadataFacetModelEntityManager.visitAll( new
Function<MetadataFacetModel, Boolean>()
+ {
+ @Override
+ public Boolean apply( MetadataFacetModel metadataFacetModel )
+ {
+ if ( metadataFacetModel != null )
+ {
+ if ( StringUtils.equals(
metadataFacetModel.getArtifactMetadataModel().getRepositoryId(),
+ repositoryId ) &&
StringUtils.equals( metadataFacetModel.getFacetId(),
+
facetId ) && StringUtils.equals(
+ metadataFacetModel.getName(), name ) )
+ {
+ toRemove.add( metadataFacetModel );
+ }
+ }
+ return Boolean.TRUE;
+ }
+ } );
+ logger.debug( "removeMetadataFacets repositoryId: '{}', facetId: '{}',
toRemove: {}", repositoryId, facetId,
+ toRemove );
+ metadataFacetModelEntityManager.remove( toRemove );
}
@Override
- public List<ArtifactMetadata> getArtifactsByDateRange( String
repositoryId, Date startTime, Date endTime )
+ public List<ArtifactMetadata> getArtifactsByDateRange( final String
repositoryId, final Date startTime,
+ final Date endTime )
throws MetadataRepositoryException
{
- return null; //To change body of implemented methods use File |
Settings | File Templates.
+
+ final List<ArtifactMetadataModel> artifactMetadataModels = new
ArrayList<ArtifactMetadataModel>();
+
+ // FIXME cql query
+ artifactMetadataModelEntityManager.visitAll( new
Function<ArtifactMetadataModel, Boolean>()
+ {
+ @Override
+ public Boolean apply( ArtifactMetadataModel artifactMetadataModel )
+ {
+ if ( artifactMetadataModel != null )
+ {
+ if ( StringUtils.equals(
artifactMetadataModel.getRepositoryId(), repositoryId )
+ && artifactMetadataModel.getNamespace() != null &&
+ artifactMetadataModel.getProject() != null &&
artifactMetadataModel.getId() != null )
+ {
+
+ Date when = artifactMetadataModel.getWhenGathered();
+ if ( when.getTime() >= startTime.getTime() &&
when.getTime() <= endTime.getTime() )
+ {
+ artifactMetadataModels.add( artifactMetadataModel
);
+ }
+ }
+ }
+ return Boolean.TRUE;
+ }
+ } );
+ List<ArtifactMetadata> artifactMetadatas = new
ArrayList<ArtifactMetadata>( artifactMetadataModels.size() );
+
+ for ( ArtifactMetadataModel model : artifactMetadataModels )
+ {
+ ArtifactMetadata artifactMetadata = new
BeanReplicator().replicateBean( model, ArtifactMetadata.class );
+ populateFacets( artifactMetadata );
+ artifactMetadatas.add( artifactMetadata );
+ }
+
+ logger.debug( "getArtifactsByDateRange repositoryId: {}, startTime:
{}, endTime: {}, artifactMetadatas: {}",
+ repositoryId, startTime, endTime, artifactMetadatas );
+
+ return artifactMetadatas;
+ }
+
+ protected void populateFacets( final ArtifactMetadata artifactMetadata )
+ {
+ final List<MetadataFacetModel> metadataFacetModels = new
ArrayList<MetadataFacetModel>();
+
+ metadataFacetModelEntityManager.visitAll( new
Function<MetadataFacetModel, Boolean>()
+ {
+ @Override
+ public Boolean apply( MetadataFacetModel metadataFacetModel )
+ {
+ if ( metadataFacetModel != null )
+ {
+ ArtifactMetadataModel artifactMetadataModel =
metadataFacetModel.getArtifactMetadataModel();
+ if ( artifactMetadataModel != null )
+ {
+ if ( StringUtils.equals(
artifactMetadata.getRepositoryId(),
+
artifactMetadataModel.getRepositoryId() ) && StringUtils.equals(
+ artifactMetadata.getNamespace(),
artifactMetadataModel.getNamespace() )
+ && StringUtils.equals(
artifactMetadata.getRepositoryId(),
+
artifactMetadataModel.getRepositoryId() ) && StringUtils.equals(
+ artifactMetadata.getProject(),
artifactMetadataModel.getProject() ) && StringUtils.equals(
+ artifactMetadata.getId(),
artifactMetadataModel.getId() ) )
+ {
+ metadataFacetModels.add( metadataFacetModel );
+ }
+ }
+ }
+ return Boolean.TRUE;
+ }
+ } );
+ Map<String, Map<String, String>> facetValuesPerFacet = new
HashMap<String, Map<String, String>>();
+
+ for ( MetadataFacetModel model : metadataFacetModels )
+ {
+ Map<String, String> values = facetValuesPerFacet.get(
model.getName() );
+ if ( values == null )
+ {
+ values = new HashMap<String, String>();
+ }
+ values.put( model.getKey(), model.getValue() );
+ facetValuesPerFacet.put( model.getName(), values );
+ }
+
+ for ( Map.Entry<String, Map<String, String>> entry :
facetValuesPerFacet.entrySet() )
+ {
+ MetadataFacetFactory factory = metadataFacetFactories.get(
entry.getKey() );
+ MetadataFacet metadataFacet =
+ factory.createMetadataFacet(
artifactMetadata.getRepositoryId(), entry.getKey() );
+ metadataFacet.fromProperties( entry.getValue() );
+ artifactMetadata.addFacet( metadataFacet );
+ }
}
@Override
- public List<ArtifactMetadata> getArtifactsByChecksum( String repositoryId,
String checksum )
+ public List<ArtifactMetadata> getArtifactsByChecksum( final String
repositoryId, final String checksum )
throws MetadataRepositoryException
{
- return null; //To change body of implemented methods use File |
Settings | File Templates.
+ final List<ArtifactMetadataModel> artifactMetadataModels = new
ArrayList<ArtifactMetadataModel>();
+
+ // FIXME cql query
+ artifactMetadataModelEntityManager.visitAll( new
Function<ArtifactMetadataModel, Boolean>()
+ {
+ @Override
+ public Boolean apply( ArtifactMetadataModel artifactMetadataModel )
+ {
+ if ( artifactMetadataModel != null )
+ {
+ if ( StringUtils.equals(
artifactMetadataModel.getRepositoryId(), repositoryId )
+ && artifactMetadataModel.getNamespace() != null &&
+ artifactMetadataModel.getProject() != null &&
artifactMetadataModel.getId() != null )
+ {
+
+ if ( StringUtils.equals( checksum,
artifactMetadataModel.getMd5() ) || StringUtils.equals(
+ checksum, artifactMetadataModel.getSha1() ) )
+ {
+ artifactMetadataModels.add( artifactMetadataModel
);
+ }
+ }
+ }
+ return Boolean.TRUE;
+ }
+ } );
+ List<ArtifactMetadata> artifactMetadatas = new
ArrayList<ArtifactMetadata>( artifactMetadataModels.size() );
+
+ for ( ArtifactMetadataModel model : artifactMetadataModels )
+ {
+ ArtifactMetadata artifactMetadata = new
BeanReplicator().replicateBean( model, ArtifactMetadata.class );
+ populateFacets( artifactMetadata );
+ artifactMetadatas.add( artifactMetadata );
+ }
+
+ logger.debug( "getArtifactsByChecksum repositoryId: {}, checksum: {},
artifactMetadatas: {}", repositoryId,
+ checksum, artifactMetadatas );
+
+ return artifactMetadatas;
}
@Override
Modified:
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/MetadataFacetModel.java
URL:
http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/MetadataFacetModel.java?rev=1484801&r1=1484800&r2=1484801&view=diff
==============================================================================
---
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/MetadataFacetModel.java
(original)
+++
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/MetadataFacetModel.java
Tue May 21 13:28:32 2013
@@ -178,6 +178,8 @@ public class MetadataFacetModel
private String facetId;
+ private String repositoryId;
+
public KeyBuilder()
{
@@ -207,10 +209,20 @@ public class MetadataFacetModel
return this;
}
+ public KeyBuilder withRepositoryId( String repositoryId )
+ {
+ this.repositoryId = repositoryId;
+ return this;
+ }
+
public String build()
{
// FIXME add some controls
- return this.artifactMetadataModel.getArtifactMetadataModelId() +
"-" + this.facetId + "-" + this.name + "-"
+ // getArtifactMetadataModelId can have no namespace, no project
and no projectid for statistics
+ // only repositoryId with artifactMetadataModel
+ return ( this.artifactMetadataModel == null
+ ? this.repositoryId
+ : this.artifactMetadataModel.getArtifactMetadataModelId() ) +
"-" + this.facetId + "-" + this.name + "-"
+ this.key;
}
}
Added:
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ProjectVersionMetadataModel.java
URL:
http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ProjectVersionMetadataModel.java?rev=1484801&view=auto
==============================================================================
---
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ProjectVersionMetadataModel.java
(added)
+++
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ProjectVersionMetadataModel.java
Tue May 21 13:28:32 2013
@@ -0,0 +1,251 @@
+package org.apache.archiva.metadata.repository.cassandra.model;
+
+import org.apache.archiva.metadata.model.CiManagement;
+import org.apache.archiva.metadata.model.Dependency;
+import org.apache.archiva.metadata.model.IssueManagement;
+import org.apache.archiva.metadata.model.License;
+import org.apache.archiva.metadata.model.MailingList;
+import org.apache.archiva.metadata.model.Organization;
+import org.apache.archiva.metadata.model.Scm;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Olivier Lamy
+ */
+@Entity
+public class ProjectVersionMetadataModel
+{
+ // repositoryId + namespace + projectId + id (version)
+ @Id
+ private String rowId;
+
+ /**
+ * id is the version
+ */
+ @Column(name = "id")
+ private String id;
+
+ @Column(name = "url")
+ private String url;
+
+ @Column(name = "name")
+ private String name;
+
+ @Column(name = "description")
+ private String description;
+
+ @Column(name = "organization")
+ private Organization organization;
+
+ @Column(name = "issueManagement")
+ private IssueManagement issueManagement;
+
+ @Column(name = "scm")
+ private Scm scm;
+
+ @Column(name = "issueManagement")
+ private CiManagement ciManagement;
+
+ // FIXME store those values in a separate table
+ //private List<License> licenses = new ArrayList<License>();
+
+ //private List<MailingList> mailingLists = new ArrayList<MailingList>();
+
+ //private List<Dependency> dependencies = new ArrayList<Dependency>();
+
+ @Column(name = "incomplete")
+ private boolean incomplete;
+
+ public String getRowId()
+ {
+ return rowId;
+ }
+
+ public void setRowId( String rowId )
+ {
+ this.rowId = rowId;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public void setId( String id )
+ {
+ this.id = id;
+ }
+
+ public String getUrl()
+ {
+ return url;
+ }
+
+ public void setUrl( String url )
+ {
+ this.url = url;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+
+ public String getDescription()
+ {
+ return description;
+ }
+
+ public void setDescription( String description )
+ {
+ this.description = description;
+ }
+
+ public Organization getOrganization()
+ {
+ return organization;
+ }
+
+ public void setOrganization( Organization organization )
+ {
+ this.organization = organization;
+ }
+
+ public IssueManagement getIssueManagement()
+ {
+ return issueManagement;
+ }
+
+ public void setIssueManagement( IssueManagement issueManagement )
+ {
+ this.issueManagement = issueManagement;
+ }
+
+ public Scm getScm()
+ {
+ return scm;
+ }
+
+ public void setScm( Scm scm )
+ {
+ this.scm = scm;
+ }
+
+ public CiManagement getCiManagement()
+ {
+ return ciManagement;
+ }
+
+ public void setCiManagement( CiManagement ciManagement )
+ {
+ this.ciManagement = ciManagement;
+ }
+
+ public boolean isIncomplete()
+ {
+ return incomplete;
+ }
+
+ public void setIncomplete( boolean incomplete )
+ {
+ this.incomplete = incomplete;
+ }
+
+ @Override
+ public boolean equals( Object o )
+ {
+ if ( this == o )
+ {
+ return true;
+ }
+ if ( o == null || getClass() != o.getClass() )
+ {
+ return false;
+ }
+
+ ProjectVersionMetadataModel that = (ProjectVersionMetadataModel) o;
+
+ if ( !rowId.equals( that.rowId ) )
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return rowId.hashCode();
+ }
+
+ public static class KeyBuilder
+ {
+
+ private String namespace;
+
+ private String repositoryId;
+
+ private String projectId;
+
+ private String id;
+
+ public KeyBuilder()
+ {
+
+ }
+
+ public KeyBuilder withNamespace( Namespace namespace )
+ {
+ this.namespace = namespace.getId();
+ this.repositoryId = namespace.getRepository().getId();
+ return this;
+ }
+
+ public KeyBuilder withNamespace( String namespace )
+ {
+ this.namespace = namespace;
+ return this;
+ }
+
+ public KeyBuilder withRepository( String repositoryId )
+ {
+ this.repositoryId = repositoryId;
+ return this;
+ }
+
+ public KeyBuilder withRepository( Repository repository )
+ {
+ this.repositoryId = repository.getId();
+ return this;
+ }
+
+ public KeyBuilder withProjectId( String projectId )
+ {
+ this.projectId = projectId;
+ return this;
+ }
+
+ public KeyBuilder withId( String id )
+ {
+ this.id = id;
+ return this;
+ }
+
+ public String build()
+ {
+ // FIXME add some controls
+ return this.repositoryId + "-" + this.namespace + "-" +
this.projectId + "-" + this.id;
+ }
+ }
+}
Propchange:
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ProjectVersionMetadataModel.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
archiva/sandbox/trunk/metadata-store-cassandra/src/main/java/org/apache/archiva/metadata/repository/cassandra/model/ProjectVersionMetadataModel.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified:
archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java
URL:
http://svn.apache.org/viewvc/archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java?rev=1484801&r1=1484800&r2=1484801&view=diff
==============================================================================
---
archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java
(original)
+++
archiva/sandbox/trunk/metadata-store-cassandra/src/test/java/org/apache/archiva/metadata/repository/cassandra/CassandraMetadataRepositoryTest.java
Tue May 21 13:28:32 2013
@@ -25,6 +25,7 @@ import org.apache.archiva.metadata.repos
import
org.apache.archiva.metadata.repository.cassandra.model.MetadataFacetModel;
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.ProjectVersionMetadataModel;
import org.apache.archiva.metadata.repository.cassandra.model.Repository;
import org.apache.commons.io.FileUtils;
import org.junit.After;
@@ -47,7 +48,7 @@ public class CassandraMetadataRepository
private Logger logger = LoggerFactory.getLogger( getClass() );
@Inject
- @Named(value = "archivaEntityManagerFactory#cassandra")
+ @Named( value = "archivaEntityManagerFactory#cassandra" )
CassandraEntityManagerFactory cassandraEntityManagerFactory;
CassandraMetadataRepository cmr;
@@ -101,6 +102,10 @@ public class CassandraMetadataRepository
List<MetadataFacetModel> metadataFacetModels =
cmr.getMetadataFacetModelEntityManager().getAll();
cmr.getMetadataFacetModelEntityManager().remove( metadataFacetModels );
+ List<ProjectVersionMetadataModel> projectVersionMetadataModels =
+ cmr.getProjectVersionMetadataModelEntityManager().getAll();
+ cmr.getProjectVersionMetadataModelEntityManager().remove(
projectVersionMetadataModels );
+
}
}