use of com.datastax.oss.driver.api.core.CqlSession in project archiva by apache.
the class CassandraMetadataRepository method updateFacets.
/*
* 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) {
String table = cassandraArchivaManager.getMetadataFacetFamilyName();
CqlSession session = cassandraArchivaManager.getSession();
{
for (final String facetId : getSupportedFacets()) {
MetadataFacet metadataFacet = facetedMetadata.getFacet(facetId);
if (metadataFacet != null) {
Select deleteRows = selectFrom(table).column(DEFAULT_PRIMARY_KEY).whereColumn(REPOSITORY_NAME.toString()).isEqualTo(literal(artifactMetadataModel.getRepositoryId())).whereColumn(NAMESPACE_ID.toString()).isEqualTo(literal(artifactMetadataModel.getNamespace())).whereColumn(PROJECT_ID.toString()).isEqualTo(literal(artifactMetadataModel.getProject())).whereColumn(PROJECT_VERSION.toString()).isEqualTo(literal(artifactMetadataModel.getProjectVersion())).whereColumn(FACET_ID.toString()).isEqualTo(literal(facetId)).allowFiltering();
ResultSet resultSet = session.execute(deleteRows.build());
StreamSupport.stream(resultSet.spliterator(), false).map(row -> row.getString(DEFAULT_PRIMARY_KEY)).distinct().forEach(key -> {
Delete delete = deleteFrom(table).whereColumn(DEFAULT_PRIMARY_KEY).isEqualTo(literal(key));
session.execute(delete.build());
});
Map<String, String> properties = metadataFacet.toProperties();
for (Map.Entry<String, String> entry : properties.entrySet()) {
String key = new MetadataFacetModel.KeyBuilder().withKey(entry.getKey()).withArtifactMetadataModel(artifactMetadataModel).withFacetId(facetId).withName(metadataFacet.getName()).build();
Update update = update(table).setColumn(REPOSITORY_NAME.toString(), literal(artifactMetadataModel.getRepositoryId())).setColumn(NAMESPACE_ID.toString(), literal(artifactMetadataModel.getNamespace())).setColumn(PROJECT_ID.toString(), literal(artifactMetadataModel.getProject())).setColumn(PROJECT_VERSION.toString(), literal(artifactMetadataModel.getProjectVersion())).setColumn(FACET_ID.toString(), literal(facetId)).setColumn(KEY.toString(), literal(entry.getKey())).setColumn(VALUE.toString(), literal(entry.getValue())).whereColumn(DEFAULT_PRIMARY_KEY).isEqualTo(literal(key));
session.execute(update.build());
}
}
}
}
}
use of com.datastax.oss.driver.api.core.CqlSession in project archiva by apache.
the class CassandraMetadataRepository method getArtifactsByChecksum.
@Override
public List<ArtifactMetadata> getArtifactsByChecksum(RepositorySession repositorySession, final String repositoryId, final String checksum) throws MetadataRepositoryException {
String table = cassandraArchivaManager.getChecksumFamilyName();
CqlSession session = cassandraArchivaManager.getSession();
{
Select query = selectFrom(table).column(ARTIFACT_METADATA_MODEL_KEY.toString()).whereColumn(REPOSITORY_NAME.toString()).isEqualTo(literal(repositoryId)).whereColumn(CHECKSUM_VALUE.toString()).isEqualTo(literal(checksum)).allowFiltering();
ResultSet result = session.execute(query.build());
List<String> artifactKeys = StreamSupport.stream(result.spliterator(), false).map(row -> row.getString(ARTIFACT_METADATA_MODEL_KEY.toString())).distinct().collect(Collectors.toList());
List<ArtifactMetadata> metadataList = new ArrayList<>();
for (String key : artifactKeys) {
table = cassandraArchivaManager.getArtifactMetadataFamilyName();
query = selectFrom(table).all().whereColumn(DEFAULT_PRIMARY_KEY.toString()).isEqualTo(literal(key));
Row row = session.execute(query.build()).one();
if (row != null) {
metadataList.add(mapArtifactMetadata(row));
}
}
return metadataList;
}
}
use of com.datastax.oss.driver.api.core.CqlSession in project archiva by apache.
the class CassandraMetadataRepository method removeMetadataFacets.
@Override
public void removeMetadataFacets(RepositorySession repositorySession, final String repositoryId, final String facetId) throws MetadataRepositoryException {
final String table = cassandraArchivaManager.getMetadataFacetFamilyName();
CqlSession session = cassandraArchivaManager.getSession();
{
Select deleteRows = selectFrom(table).column(DEFAULT_PRIMARY_KEY).whereColumn(REPOSITORY_NAME.toString()).isEqualTo(literal(repositoryId)).whereColumn(FACET_ID.toString()).isEqualTo(literal(facetId)).allowFiltering();
ResultSet result = session.execute(deleteRows.build());
StreamSupport.stream(result.spliterator(), false).map(row -> row.getString(DEFAULT_PRIMARY_KEY)).distinct().forEach(delKey -> session.execute(deleteFrom(table).whereColumn(DEFAULT_PRIMARY_KEY).isEqualTo(literal(delKey)).build()));
}
}
use of com.datastax.oss.driver.api.core.CqlSession in project archiva by apache.
the class CassandraMetadataRepository method addMetadataFacet.
@Override
public void addMetadataFacet(RepositorySession repositorySession, String repositoryId, MetadataFacet metadataFacet) throws MetadataRepositoryException {
if (metadataFacet == null) {
return;
}
final String table = this.cassandraArchivaManager.getMetadataFacetFamilyName();
if (metadataFacet.toProperties().isEmpty()) {
String key = new MetadataFacetModel.KeyBuilder().withRepositoryId(repositoryId).withFacetId(metadataFacet.getFacetId()).withName(metadataFacet.getName()).build();
CqlSession session = cassandraArchivaManager.getSession();
{
Update update = update(table).setColumn(REPOSITORY_NAME.toString(), literal(repositoryId)).setColumn(FACET_ID.toString(), literal(metadataFacet.getFacetId())).setColumn(NAME.toString(), literal(metadataFacet.getName())).whereColumn(DEFAULT_PRIMARY_KEY).isEqualTo(literal(key));
session.execute(update.build());
}
} else {
CqlSession session = cassandraArchivaManager.getSession();
{
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();
Update update = update(table).setColumn(REPOSITORY_NAME.toString(), literal(repositoryId)).setColumn(FACET_ID.toString(), literal(metadataFacet.getFacetId())).setColumn(NAME.toString(), literal(metadataFacet.getName())).setColumn(KEY.toString(), literal(entry.getKey())).setColumn(VALUE.toString(), literal(entry.getValue())).whereColumn(DEFAULT_PRIMARY_KEY).isEqualTo(literal(key));
session.execute(update.build());
}
}
}
}
use of com.datastax.oss.driver.api.core.CqlSession in project archiva by apache.
the class CassandraMetadataRepository method removeArtifact.
@Override
public void removeArtifact(RepositorySession repositorySession, final String repositoryId, final String namespace, final String project, final String version, final String id) throws MetadataRepositoryException {
logger.debug("removeTimestampedArtifact repositoryId: '{}', namespace: '{}', project: '{}', version: '{}', id: '{}'", repositoryId, namespace, project, version, id);
CqlSession session = cassandraArchivaManager.getSession();
{
String key = new ArtifactMetadataModel.KeyBuilder().withRepositoryId(repositoryId).withNamespace(namespace).withId(id).withProjectVersion(version).withProject(project).build();
String table = cassandraArchivaManager.getArtifactMetadataFamilyName();
Delete delete = deleteFrom(table).whereColumn(DEFAULT_PRIMARY_KEY).isEqualTo(literal(key));
session.execute(delete.build());
key = //
new ProjectVersionMetadataModel.KeyBuilder().withRepository(//
repositoryId).withNamespace(//
namespace).withProjectId(//
project).withProjectVersion(//
version).withId(//
id).build();
table = cassandraArchivaManager.getProjectVersionMetadataFamilyName();
delete = deleteFrom(table).whereColumn(DEFAULT_PRIMARY_KEY).isEqualTo(literal(key));
session.execute(delete.build());
}
}
Aggregations