use of com.datastax.oss.driver.api.querybuilder.update.Update in project spring-data-cassandra by spring-projects.
the class CassandraTemplate method doUpdateVersioned.
private <T> EntityWriteResult<T> doUpdateVersioned(T entity, UpdateOptions options, CqlIdentifier tableName, CassandraPersistentEntity<?> persistentEntity) {
AdaptibleEntity<T> source = getEntityOperations().forEntity(entity, getConverter().getConversionService());
Number previousVersion = source.getVersion();
T toSave = source.incrementVersion();
StatementBuilder<Update> builder = getStatementFactory().update(toSave, options, persistentEntity, tableName);
SimpleStatement update = source.appendVersionCondition(builder, previousVersion).build();
return executeSave(toSave, tableName, update, result -> {
if (!result.wasApplied()) {
throw new OptimisticLockingFailureException(String.format("Cannot save entity %s with version %s to table %s. Has it been modified meanwhile?", toSave, source.getVersion(), tableName));
}
});
}
use of com.datastax.oss.driver.api.querybuilder.update.Update 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.querybuilder.update.Update 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.querybuilder.update.Update in project archiva by apache.
the class CassandraMetadataRepository method updateArtifact.
@Override
public void updateArtifact(RepositorySession repositorySession, 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(repositorySession, repositoryId, projectMetadata);
String key = new ArtifactMetadataModel.KeyBuilder().withNamespace(namespace).withProject(projectId).withId(artifactMeta.getId()).withProjectVersion(projectVersion).build();
String table = this.cassandraArchivaManager.getArtifactMetadataFamilyName();
CqlSession session = cassandraArchivaManager.getSession();
{
Update update = update(table).setColumn(ID.toString(), //
literal(artifactMeta.getId())).setColumn(REPOSITORY_NAME.toString(), //
literal(repositoryId)).setColumn(NAMESPACE_ID.toString(), //
literal(namespaceId)).setColumn(PROJECT_ID.toString(), //
literal(artifactMeta.getProject())).setColumn(PROJECT_VERSION.toString(), //
literal(projectVersion)).setColumn(VERSION.toString(), //
literal(artifactMeta.getVersion())).setColumn(FILE_LAST_MODIFIED.toString(), //
literal(artifactMeta.getFileLastModified().toInstant().toEpochMilli())).setColumn(SIZE.toString(), //
literal(artifactMeta.getSize())).setColumn((WHEN_GATHERED.toString()), literal(artifactMeta.getWhenGathered().toInstant().toEpochMilli())).whereColumn(DEFAULT_PRIMARY_KEY).isEqualTo(literal(key));
session.execute(update.build()).wasApplied();
removeChecksums(key);
recordChecksums(repositoryId, key, mapChecksums(artifactMeta.getChecksums()));
key = //
new ProjectVersionMetadataModel.KeyBuilder().withRepository(//
repositoryId).withNamespace(//
namespace).withProjectId(//
projectId).withProjectVersion(//
projectVersion).withId(//
artifactMeta.getId()).build();
table = cassandraArchivaManager.getProjectVersionMetadataFamilyName();
Insert insert = insertInto(table).value(DEFAULT_PRIMARY_KEY, literal(key)).value(REPOSITORY_NAME.toString(), literal(repositoryId)).value(NAMESPACE_ID.toString(), literal(namespaceId)).value(PROJECT_ID.toString(), literal(projectId)).value(PROJECT_VERSION.toString(), literal(projectVersion)).value(VERSION.toString(), literal(artifactMeta.getVersion())).ifNotExists();
session.execute(insert.build());
}
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 ? ZonedDateTime.now().toInstant().toEpochMilli() : artifactMeta.getFileLastModified().toInstant().toEpochMilli());
artifactMetadataModel.setChecksums(mapChecksums(artifactMeta.getChecksums()));
// now facets
updateFacets(artifactMeta, artifactMetadataModel);
}
use of com.datastax.oss.driver.api.querybuilder.update.Update in project camel-spring-boot by apache.
the class CassandraComponentProducerIT method testEndpointNoCqlParameter.
/**
* Simulate different CQL statements in the incoming message containing a header with RegularStatement, justifying
* the cassandracql endpoint not containing a "cql" Uri parameter
*/
@Test
public void testEndpointNoCqlParameter() {
Update update = QueryBuilder.update("camel_user").setColumn("first_name", bindMarker()).whereColumn("login").isEqualTo(bindMarker());
producerTemplateNoEndpointCql.sendBodyAndHeader(new Object[] { "Claus 2", "c_ibsen" }, CassandraConstants.CQL_QUERY, update.build());
ResultSet resultSet1 = getSession().execute(String.format("select login, first_name, last_name from camel_user where login = '%s'", "c_ibsen"));
Row row1 = resultSet1.one();
assertNotNull(row1);
assertEquals("Claus 2", row1.getString("first_name"));
assertEquals("Ibsen", row1.getString("last_name"));
update = QueryBuilder.update("camel_user").setColumn("last_name", bindMarker()).whereColumn("login").isEqualTo(bindMarker());
producerTemplateNoEndpointCql.sendBodyAndHeader(new Object[] { "Ibsen 2", "c_ibsen" }, CassandraConstants.CQL_QUERY, update.build());
ResultSet resultSet2 = getSession().execute(String.format("select login, first_name, last_name from camel_user where login = '%s'", "c_ibsen"));
Row row2 = resultSet2.one();
assertNotNull(row2);
assertEquals("Claus 2", row2.getString("first_name"));
assertEquals("Ibsen 2", row2.getString("last_name"));
}
Aggregations