use of org.apache.archiva.metadata.repository.cassandra.model.Namespace in project archiva by apache.
the class CassandraMetadataRepository method updateArtifact.
@Override
public void updateArtifact(String repositoryId, String namespaceId, String projectId, String projectVersion, ArtifactMetadata artifactMeta) throws MetadataRepositoryException {
Namespace namespace = getNamespace(repositoryId, namespaceId);
if (namespace == null) {
namespace = updateOrAddNamespace(repositoryId, namespaceId);
}
ProjectMetadata projectMetadata = new ProjectMetadata();
projectMetadata.setId(projectId);
projectMetadata.setNamespace(namespaceId);
updateProject(repositoryId, projectMetadata);
String key = new ArtifactMetadataModel.KeyBuilder().withNamespace(namespace).withProject(projectId).withId(artifactMeta.getId()).withProjectVersion(projectVersion).build();
// exists?
boolean exists = this.artifactMetadataTemplate.isColumnsExist(key);
if (exists) {
// updater
ColumnFamilyUpdater<String, String> updater = this.artifactMetadataTemplate.createUpdater(key);
updater.setLong(FILE_LAST_MODIFIED.toString(), artifactMeta.getFileLastModified().getTime());
updater.setLong(WHEN_GATHERED.toString(), artifactMeta.getWhenGathered().getTime());
updater.setLong(SIZE.toString(), artifactMeta.getSize());
addUpdateStringValue(updater, MD5.toString(), artifactMeta.getMd5());
addUpdateStringValue(updater, SHA1.toString(), artifactMeta.getSha1());
addUpdateStringValue(updater, VERSION.toString(), artifactMeta.getVersion());
this.artifactMetadataTemplate.update(updater);
} else {
String cf = this.cassandraArchivaManager.getArtifactMetadataFamilyName();
// create
//
this.artifactMetadataTemplate.createMutator().addInsertion(key, cf, //
column(ID.toString(), artifactMeta.getId())).addInsertion(key, cf, //
column(REPOSITORY_NAME.toString(), repositoryId)).addInsertion(key, cf, //
column(NAMESPACE_ID.toString(), namespaceId)).addInsertion(key, cf, //
column(PROJECT.toString(), artifactMeta.getProject())).addInsertion(key, cf, //
column(PROJECT_VERSION.toString(), projectVersion)).addInsertion(key, cf, //
column(VERSION.toString(), artifactMeta.getVersion())).addInsertion(key, cf, //
column(FILE_LAST_MODIFIED.toString(), artifactMeta.getFileLastModified().getTime())).addInsertion(key, cf, //
column(SIZE.toString(), artifactMeta.getSize())).addInsertion(key, cf, //
column(MD5.toString(), artifactMeta.getMd5())).addInsertion(key, cf, //
column(SHA1.toString(), artifactMeta.getSha1())).addInsertion(key, cf, //
column(WHEN_GATHERED.toString(), artifactMeta.getWhenGathered().getTime())).execute();
}
key = //
new ProjectVersionMetadataModel.KeyBuilder().withRepository(//
repositoryId).withNamespace(//
namespace).withProjectId(//
projectId).withProjectVersion(//
projectVersion).withId(//
artifactMeta.getId()).build();
QueryResult<OrderedRows<String, String, String>> result = //
HFactory.createRangeSlicesQuery(keyspace, ss, ss, //
ss).setColumnFamily(//
cassandraArchivaManager.getProjectVersionMetadataFamilyName()).setColumnNames(//
VERSION.toString()).addEqualsExpression(REPOSITORY_NAME.toString(), //
repositoryId).addEqualsExpression(NAMESPACE_ID.toString(), //
namespaceId).addEqualsExpression(PROJECT_ID.toString(), //
projectId).addEqualsExpression(PROJECT_VERSION.toString(), //
projectVersion).addEqualsExpression(VERSION.toString(), //
artifactMeta.getVersion()).execute();
exists = result.get().getCount() > 0;
if (!exists) {
String cf = this.cassandraArchivaManager.getProjectVersionMetadataFamilyName();
//
projectVersionMetadataTemplate.createMutator().addInsertion(key, cf, //
column(NAMESPACE_ID.toString(), namespace.getName())).addInsertion(key, cf, //
column(REPOSITORY_NAME.toString(), repositoryId)).addInsertion(key, cf, //
column(PROJECT_VERSION.toString(), projectVersion)).addInsertion(key, cf, //
column(PROJECT_ID.toString(), projectId)).addInsertion(key, cf, //
column(VERSION.toString(), artifactMeta.getVersion())).execute();
}
ArtifactMetadataModel artifactMetadataModel = new ArtifactMetadataModel();
artifactMetadataModel.setRepositoryId(repositoryId);
artifactMetadataModel.setNamespace(namespaceId);
artifactMetadataModel.setProject(projectId);
artifactMetadataModel.setProjectVersion(projectVersion);
artifactMetadataModel.setVersion(artifactMeta.getVersion());
artifactMetadataModel.setFileLastModified(artifactMeta.getFileLastModified() == null ? new Date().getTime() : artifactMeta.getFileLastModified().getTime());
// now facets
updateFacets(artifactMeta, artifactMetadataModel);
}
use of org.apache.archiva.metadata.repository.cassandra.model.Namespace in project archiva by apache.
the class CassandraMetadataRepository method removeProject.
@Override
public void removeProject(final String repositoryId, final String namespaceId, final String projectId) throws MetadataRepositoryException {
String key = //
new Project.KeyBuilder().withProjectId(//
projectId).withNamespace(//
new Namespace(namespaceId, new Repository(repositoryId))).build();
this.projectTemplate.deleteRow(key);
QueryResult<OrderedRows<String, String, String>> result = //
HFactory.createRangeSlicesQuery(keyspace, ss, ss, //
ss).setColumnFamily(//
cassandraArchivaManager.getProjectVersionMetadataFamilyName()).setColumnNames(//
ID.toString()).addEqualsExpression(REPOSITORY_NAME.toString(), //
repositoryId).addEqualsExpression(NAMESPACE_ID.toString(), //
namespaceId).addEqualsExpression(PROJECT_ID.toString(), //
projectId).execute();
for (Row<String, String, String> row : result.get()) {
this.projectVersionMetadataTemplate.deleteRow(row.getKey());
removeMailingList(row.getKey());
}
result = //
HFactory.createRangeSlicesQuery(keyspace, ss, ss, //
ss).setColumnFamily(//
cassandraArchivaManager.getArtifactMetadataFamilyName()).setColumnNames(//
PROJECT_ID.toString()).addEqualsExpression(REPOSITORY_NAME.toString(), //
repositoryId).addEqualsExpression(NAMESPACE_ID.toString(), //
namespaceId).addEqualsExpression(PROJECT_ID.toString(), //
projectId).execute();
for (Row<String, String, String> row : result.get()) {
this.artifactMetadataTemplate.deleteRow(row.getKey());
}
}
Aggregations