Search in sources :

Example 6 with Update

use of com.datastax.oss.driver.api.querybuilder.update.Update in project camel-spring-boot by apache.

the class CassandraComponentProducerIT method testRequestMessageStatement.

/**
 * Test with incoming message containing a header with RegularStatement.
 */
@Test
public void testRequestMessageStatement() {
    Update update = QueryBuilder.update("camel_user").setColumn("first_name", bindMarker()).setColumn("last_name", bindMarker()).whereColumn("login").isEqualTo(bindMarker());
    producerTemplate.requestBodyAndHeader(new Object[] { "Claus 2", "Ibsen 2", "c_ibsen" }, CassandraConstants.CQL_QUERY, update.build());
    ResultSet resultSet = getSession().execute(String.format("select login, first_name, last_name from camel_user where login = '%s'", "c_ibsen"));
    Row row = resultSet.one();
    assertNotNull(row);
    assertEquals("Claus 2", row.getString("first_name"));
    assertEquals("Ibsen 2", row.getString("last_name"));
}
Also used : ResultSet(com.datastax.oss.driver.api.core.cql.ResultSet) Row(com.datastax.oss.driver.api.core.cql.Row) Update(com.datastax.oss.driver.api.querybuilder.update.Update) CamelSpringBootTest(org.apache.camel.test.spring.junit5.CamelSpringBootTest) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 7 with Update

use of com.datastax.oss.driver.api.querybuilder.update.Update in project archiva by apache.

the class CassandraMetadataRepository method updateProjectVersion.

@Override
public void updateProjectVersion(RepositorySession repositorySession, String repositoryId, String namespaceId, String projectId, ProjectVersionMetadata versionMetadata) throws MetadataRepositoryException {
    try {
        Namespace namespace = getNamespace(repositoryId, namespaceId);
        if (namespace == null) {
            updateOrAddNamespace(repositoryId, namespaceId);
        }
        if (getProject(repositorySession, repositoryId, namespaceId, projectId) == null) {
            ProjectMetadata projectMetadata = new ProjectMetadata();
            projectMetadata.setNamespace(namespaceId);
            projectMetadata.setId(projectId);
            updateProject(repositorySession, repositoryId, projectMetadata);
        }
    } catch (MetadataResolutionException e) {
        throw new MetadataRepositoryException(e.getMessage(), e);
    }
    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(versionMetadata.getId())).allowFiltering();
        ProjectVersionMetadataModel projectVersionMetadataModel;
        boolean create = true;
        Row result = session.execute(query.build()).one();
        if (result != null) {
            projectVersionMetadataModel = mapProjectVersionMetadataModel(result);
            create = false;
        } else {
            projectVersionMetadataModel = getModelMapper().map(versionMetadata, ProjectVersionMetadataModel.class);
        }
        projectVersionMetadataModel.setProjectId(projectId);
        projectVersionMetadataModel.setNamespace(new Namespace(namespaceId, new Repository(repositoryId)));
        projectVersionMetadataModel.setCiManagement(versionMetadata.getCiManagement());
        projectVersionMetadataModel.setIssueManagement(versionMetadata.getIssueManagement());
        projectVersionMetadataModel.setOrganization(versionMetadata.getOrganization());
        projectVersionMetadataModel.setScm(versionMetadata.getScm());
        projectVersionMetadataModel.setMailingLists(versionMetadata.getMailingLists());
        projectVersionMetadataModel.setDependencies(versionMetadata.getDependencies());
        projectVersionMetadataModel.setLicenses(versionMetadata.getLicenses());
        // we don't test, if repository and namespace really exist !
        String key = // 
        new ProjectVersionMetadataModel.KeyBuilder().withRepository(// 
        repositoryId).withNamespace(// 
        namespaceId).withProjectId(// 
        projectId).withProjectVersion(// 
        versionMetadata.getVersion()).withId(// 
        versionMetadata.getId()).build();
        // Update is upsert
        table = cassandraArchivaManager.getProjectVersionMetadataFamilyName();
        UpdateWithAssignments update = update(table).setColumn(PROJECT_ID.toString(), literal(projectId)).setColumn(REPOSITORY_NAME.toString(), literal(repositoryId)).setColumn(NAMESPACE_ID.toString(), literal(namespaceId)).setColumn(PROJECT_VERSION.toString(), literal(versionMetadata.getVersion())).setColumn(DESCRIPTION.toString(), literal(versionMetadata.getDescription())).setColumn(NAME.toString(), literal(versionMetadata.getName())).setColumn("incomplete", literal(versionMetadata.isIncomplete())).setColumn(URL.toString(), literal(versionMetadata.getUrl()));
        {
            CiManagement ci = versionMetadata.getCiManagement();
            if (ci != null) {
                update = update.setColumn("\"ciManagement.system\"", literal(ci.getSystem())).setColumn("\"ciManagement.url\"", literal(ci.getUrl()));
            }
        }
        {
            IssueManagement issueManagement = versionMetadata.getIssueManagement();
            if (issueManagement != null) {
                update = update.setColumn("\"issueManagement.system\"", literal(issueManagement.getSystem())).setColumn("\"issueManagement.url\"", literal(issueManagement.getUrl()));
            }
        }
        {
            Organization organization = versionMetadata.getOrganization();
            if (organization != null) {
                update = update.setColumn("\"organization.name\"", literal(organization.getName())).setColumn("\"organization.url\"", literal(organization.getUrl()));
            }
        }
        {
            Scm scm = versionMetadata.getScm();
            if (scm != null) {
                update = update.setColumn("\"scm.url\"", literal(scm.getUrl())).setColumn("\"scm.connection\"", literal(scm.getConnection())).setColumn("\"scm.developerConnection\"", literal(scm.getDeveloperConnection()));
            }
        }
        if (versionMetadata.getProperties() != null && versionMetadata.getProperties().size() > 0) {
            for (Map.Entry<String, String> entry : versionMetadata.getProperties().entrySet()) {
                update = update.setMapValue(VERSION_PROPERTIES.toString(), literal(entry.getKey()), literal(entry.getValue()));
            }
        }
        Update finalUpdate = update.whereColumn(DEFAULT_PRIMARY_KEY).isEqualTo(literal(key));
        session.execute(finalUpdate.build());
        if (!create) {
            removeMailingList(key);
            removeLicenses(key);
            removeDependencies(key);
        }
        recordMailingList(key, versionMetadata.getMailingLists());
        recordLicenses(key, versionMetadata.getLicenses());
        recordDependencies(key, versionMetadata.getDependencies(), repositoryId);
        ArtifactMetadataModel artifactMetadataModel = new ArtifactMetadataModel();
        artifactMetadataModel.setRepositoryId(repositoryId);
        artifactMetadataModel.setNamespace(namespaceId);
        artifactMetadataModel.setProject(projectId);
        artifactMetadataModel.setProjectVersion(versionMetadata.getVersion());
        artifactMetadataModel.setVersion(versionMetadata.getVersion());
        updateFacets(versionMetadata, artifactMetadataModel);
    }
}
Also used : MetadataRepositoryException(org.apache.archiva.metadata.repository.MetadataRepositoryException) ArtifactMetadataModel(org.apache.archiva.metadata.repository.cassandra.model.ArtifactMetadataModel) Organization(org.apache.archiva.metadata.model.Organization) UpdateWithAssignments(com.datastax.oss.driver.api.querybuilder.update.UpdateWithAssignments) Update(com.datastax.oss.driver.api.querybuilder.update.Update) CqlSession(com.datastax.oss.driver.api.core.CqlSession) Namespace(org.apache.archiva.metadata.repository.cassandra.model.Namespace) MetadataResolutionException(org.apache.archiva.metadata.repository.MetadataResolutionException) ProjectVersionMetadataModel(org.apache.archiva.metadata.repository.cassandra.model.ProjectVersionMetadataModel) MetadataRepository(org.apache.archiva.metadata.repository.MetadataRepository) Repository(org.apache.archiva.metadata.repository.cassandra.model.Repository) AbstractMetadataRepository(org.apache.archiva.metadata.repository.AbstractMetadataRepository) ProjectMetadata(org.apache.archiva.metadata.model.ProjectMetadata) Select(com.datastax.oss.driver.api.querybuilder.select.Select) CiManagement(org.apache.archiva.metadata.model.CiManagement) Row(com.datastax.oss.driver.api.core.cql.Row) Scm(org.apache.archiva.metadata.model.Scm) IssueManagement(org.apache.archiva.metadata.model.IssueManagement)

Example 8 with Update

use of com.datastax.oss.driver.api.querybuilder.update.Update in project spring-data-cassandra by spring-projects.

the class ReactiveCassandraTemplate method doUpdateVersioned.

private <T> Mono<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, sink) -> {
        if (!result.wasApplied()) {
            sink.error(new OptimisticLockingFailureException(String.format("Cannot save entity %s with version %s to table %s. Has it been modified meanwhile?", toSave, source.getVersion(), tableName)));
            return;
        }
        sink.next(result);
    });
}
Also used : OptimisticLockingFailureException(org.springframework.dao.OptimisticLockingFailureException) SimpleStatement(com.datastax.oss.driver.api.core.cql.SimpleStatement) Update(com.datastax.oss.driver.api.querybuilder.update.Update)

Example 9 with Update

use of com.datastax.oss.driver.api.querybuilder.update.Update in project camel-spring-boot by apache.

the class CassandraComponentProducerUnpreparedIT method testRequestMessageStatement.

/**
 * Test with incoming message containing a header with RegularStatement.
 */
@Test
public void testRequestMessageStatement() {
    Update update = QueryBuilder.update("camel_user").setColumn("first_name", literal("Claus 2")).setColumn("last_name", literal("Ibsen 2")).whereColumn("login").isEqualTo(literal("c_ibsen"));
    producerTemplate.requestBodyAndHeader(null, CassandraConstants.CQL_QUERY, update.build());
    ResultSet resultSet = getSession().execute(String.format("select login, first_name, last_name from camel_user where login = '%s'", "c_ibsen"));
    Row row = resultSet.one();
    assertNotNull(row);
    assertEquals("Claus 2", row.getString("first_name"));
    assertEquals("Ibsen 2", row.getString("last_name"));
}
Also used : ResultSet(com.datastax.oss.driver.api.core.cql.ResultSet) Row(com.datastax.oss.driver.api.core.cql.Row) Update(com.datastax.oss.driver.api.querybuilder.update.Update) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) CamelSpringBootTest(org.apache.camel.test.spring.junit5.CamelSpringBootTest)

Aggregations

Update (com.datastax.oss.driver.api.querybuilder.update.Update)9 Row (com.datastax.oss.driver.api.core.cql.Row)5 CqlSession (com.datastax.oss.driver.api.core.CqlSession)4 ResultSet (com.datastax.oss.driver.api.core.cql.ResultSet)4 ProjectMetadata (org.apache.archiva.metadata.model.ProjectMetadata)3 ArtifactMetadataModel (org.apache.archiva.metadata.repository.cassandra.model.ArtifactMetadataModel)3 Namespace (org.apache.archiva.metadata.repository.cassandra.model.Namespace)3 CamelSpringBootTest (org.apache.camel.test.spring.junit5.CamelSpringBootTest)3 Test (org.junit.jupiter.api.Test)3 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)3 SimpleStatement (com.datastax.oss.driver.api.core.cql.SimpleStatement)2 Insert (com.datastax.oss.driver.api.querybuilder.insert.Insert)2 RegularInsert (com.datastax.oss.driver.api.querybuilder.insert.RegularInsert)2 Select (com.datastax.oss.driver.api.querybuilder.select.Select)2 UpdateWithAssignments (com.datastax.oss.driver.api.querybuilder.update.UpdateWithAssignments)2 ColumnDefinition (com.datastax.oss.driver.api.core.cql.ColumnDefinition)1 ClusteringOrder (com.datastax.oss.driver.api.core.metadata.schema.ClusteringOrder)1 QueryBuilder (com.datastax.oss.driver.api.querybuilder.QueryBuilder)1 Delete (com.datastax.oss.driver.api.querybuilder.delete.Delete)1 UpdateStart (com.datastax.oss.driver.api.querybuilder.update.UpdateStart)1