use of org.apache.archiva.metadata.repository.cassandra.CassandraArchivaManager.DEFAULT_PRIMARY_KEY in project archiva by apache.
the class CassandraMetadataRepository method removeMetadataFacet.
@Override
public void removeMetadataFacet(RepositorySession repositorySession, final String repositoryId, final String facetId, final String name) 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)).whereColumn(NAME.toString()).isEqualTo(literal(name)).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 org.apache.archiva.metadata.repository.cassandra.CassandraArchivaManager.DEFAULT_PRIMARY_KEY 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 org.apache.archiva.metadata.repository.cassandra.CassandraArchivaManager.DEFAULT_PRIMARY_KEY 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 org.apache.archiva.metadata.repository.cassandra.CassandraArchivaManager.DEFAULT_PRIMARY_KEY in project archiva by apache.
the class CassandraMetadataRepository method removeProject.
@Override
public void removeProject(RepositorySession repositorySession, 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();
CqlSession session = cassandraArchivaManager.getSession();
{
String table = cassandraArchivaManager.getProjectFamilyName();
Delete delete = deleteFrom(table).whereColumn(DEFAULT_PRIMARY_KEY).isEqualTo(literal(key));
session.execute(delete.build());
table = cassandraArchivaManager.getProjectVersionMetadataFamilyName();
Select query = selectFrom(table).columns(DEFAULT_PRIMARY_KEY, PROJECT_ID.toString()).whereColumn(REPOSITORY_NAME.toString()).isEqualTo(literal(repositoryId)).whereColumn(NAMESPACE_ID.toString()).isEqualTo(literal(namespaceId)).whereColumn(PROJECT_ID.toString()).isEqualTo(literal(projectId)).allowFiltering();
ResultSet result = session.execute(query.build());
result.forEach(row -> removeMailingList(row.get(DEFAULT_PRIMARY_KEY, String.class)));
List<String> tables = Arrays.asList(cassandraArchivaManager.getProjectVersionMetadataFamilyName(), cassandraArchivaManager.getArtifactMetadataFamilyName());
for (String dTable : tables) {
Select deleteRows = selectFrom(dTable).column(DEFAULT_PRIMARY_KEY).whereColumn(REPOSITORY_NAME.toString()).isEqualTo(literal(repositoryId)).whereColumn(NAMESPACE_ID.toString()).isEqualTo(literal(namespaceId)).whereColumn(PROJECT_ID.toString()).isEqualTo(literal(projectId)).allowFiltering();
result = session.execute(deleteRows.build());
StreamSupport.stream(result.spliterator(), false).map(row -> row.getString(DEFAULT_PRIMARY_KEY)).forEach(delKey -> session.execute(deleteFrom(dTable).column(PROJECT_ID.toString()).whereColumn(DEFAULT_PRIMARY_KEY).isEqualTo(literal(delKey)).build()));
}
}
}
use of org.apache.archiva.metadata.repository.cassandra.CassandraArchivaManager.DEFAULT_PRIMARY_KEY in project archiva by apache.
the class CassandraMetadataRepository method getProjectVersion.
@Override
public ProjectVersionMetadata getProjectVersion(RepositorySession repositorySession, final String repositoryId, final String namespaceId, final String projectId, final String projectVersion) throws MetadataResolutionException {
CqlSession session = cassandraArchivaManager.getSession();
{
String table = cassandraArchivaManager.getProjectVersionMetadataFamilyName();
Select query = selectFrom(table).column(PROJECT_ID.toString()).all().whereColumn(REPOSITORY_NAME.toString()).isEqualTo(literal(repositoryId)).whereColumn(NAMESPACE_ID.toString()).isEqualTo(literal(namespaceId)).whereColumn(PROJECT_ID.toString()).isEqualTo(literal(projectId)).whereColumn(PROJECT_VERSION.toString()).isEqualTo(literal(projectVersion)).allowFiltering();
Row result = session.execute(query.build()).one();
if (result == null) {
return null;
}
String key = result.getString(DEFAULT_PRIMARY_KEY);
ProjectVersionMetadata projectVersionMetadata = new ProjectVersionMetadata();
projectVersionMetadata.setId(result.getString(PROJECT_VERSION.toString()));
projectVersionMetadata.setDescription(result.getString(DESCRIPTION.toString()));
projectVersionMetadata.setName(result.getString(NAME.toString()));
projectVersionMetadata.setIncomplete(result.getBoolean("incomplete"));
projectVersionMetadata.setUrl(result.getString(URL.toString()));
{
String ciUrl = result.getString("\"ciManagement.url\"");
String ciSystem = result.getString("\"ciManagement.system\"");
if (StringUtils.isNotEmpty(ciSystem) || StringUtils.isNotEmpty(ciUrl)) {
projectVersionMetadata.setCiManagement(new CiManagement(ciSystem, ciUrl));
}
}
{
String issueUrl = result.getString("\"issueManagement.url\"");
String issueSystem = result.getString("\"issueManagement.system\"");
if (StringUtils.isNotEmpty(issueSystem) || StringUtils.isNotEmpty(issueUrl)) {
projectVersionMetadata.setIssueManagement(new IssueManagement(issueSystem, issueUrl));
}
}
{
String organizationUrl = result.getString("\"organization.url\"");
String organizationName = result.getString("\"organization.name\"");
if (StringUtils.isNotEmpty(organizationUrl) || StringUtils.isNotEmpty(organizationName)) {
projectVersionMetadata.setOrganization(new Organization(organizationName, organizationUrl));
}
}
{
String devConn = result.getString("\"scm.developerConnection\"");
String conn = result.getString("\"scm.connection\"");
String url = result.getString("\"scm.url\"");
if (StringUtils.isNotEmpty(devConn) || StringUtils.isNotEmpty(conn) || StringUtils.isNotEmpty(url)) {
projectVersionMetadata.setScm(new Scm(conn, devConn, url));
}
}
projectVersionMetadata.setMailingLists(getMailingLists(key));
projectVersionMetadata.setLicenses(getLicenses(key));
projectVersionMetadata.setDependencies(getDependencies(key));
// Facets
table = cassandraArchivaManager.getMetadataFacetFamilyName();
query = selectFrom(table).column(PROJECT_ID.toString()).column(FACET_ID.toString()).column(KEY.toString()).column(VALUE.toString()).whereColumn(REPOSITORY_NAME.toString()).isEqualTo(literal(repositoryId)).whereColumn(NAMESPACE_ID.toString()).isEqualTo(literal(namespaceId)).whereColumn(PROJECT_ID.toString()).isEqualTo(literal(projectId)).whereColumn(PROJECT_VERSION.toString()).isEqualTo(literal(projectVersion)).allowFiltering();
ResultSet rows = session.execute(query.build());
Map<String, Map<String, String>> metadataFacetsPerFacetIds = StreamSupport.stream(rows.spliterator(), false).collect(Collectors.groupingBy(row -> row.getString(FACET_ID.toString()), Collectors.toMap(row -> row.getString(KEY.toString()), row -> row.getString(VALUE.toString()))));
if (!metadataFacetsPerFacetIds.isEmpty()) {
for (Map.Entry<String, Map<String, String>> entry : metadataFacetsPerFacetIds.entrySet()) {
MetadataFacetFactory<?> metadataFacetFactory = getFacetFactory(entry.getKey());
if (metadataFacetFactory != null) {
MetadataFacet metadataFacet = metadataFacetFactory.createMetadataFacet();
metadataFacet.fromProperties(entry.getValue());
projectVersionMetadata.addFacet(metadataFacet);
}
}
}
return projectVersionMetadata;
}
}
Aggregations