From 24094c838a751ddb6ee3ccbc2bef3592944c695e Mon Sep 17 00:00:00 2001 From: sameira Date: Mon, 30 Nov 2015 02:10:05 +0530 Subject: [PATCH] Adding initial files --- .../cassandra/config/CassandraConfig.java | 33 ++++++++ .../spring/data/cassandra/model/Event.java | 46 +++++++++++ .../cassandra/repository/EventRepository.java | 14 ++++ .../src/main/resources/beans.xml | 20 +++++ .../src/main/resources/logback.xml | 20 +++++ .../src/main/resources/test.png | Bin 0 -> 855 bytes .../cassandra/config/CassandraTestConfig.java | 66 ++++++++++++++++ .../EventRepositoryIntegrationTest.java | 73 ++++++++++++++++++ 8 files changed, 272 insertions(+) create mode 100644 spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java create mode 100644 spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Event.java create mode 100644 spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/EventRepository.java create mode 100644 spring-data-cassandra/src/main/resources/beans.xml create mode 100644 spring-data-cassandra/src/main/resources/logback.xml create mode 100644 spring-data-cassandra/src/main/resources/test.png create mode 100644 spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/config/CassandraTestConfig.java create mode 100644 spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/EventRepositoryIntegrationTest.java diff --git a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java new file mode 100644 index 0000000000..254de23eb6 --- /dev/null +++ b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java @@ -0,0 +1,33 @@ +package org.baeldung.spring.data.cassandra.config; + + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.cassandra.config.CassandraClusterFactoryBean; +import org.springframework.data.cassandra.config.java.AbstractCassandraConfiguration; +import org.springframework.data.cassandra.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.mapping.CassandraMappingContext; +import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories; + +@Configuration +@EnableCassandraRepositories(basePackages = "org.baeldung.spring.data.cassandra.repository") +public class CassandraConfig extends AbstractCassandraConfiguration { + + @Override + protected String getKeyspaceName() { + return "event"; + } + + @Bean + public CassandraClusterFactoryBean cluster() { + CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean(); + cluster.setContactPoints("127.0.0.1"); + cluster.setPort(9142); + return cluster; + } + + @Bean + public CassandraMappingContext cassandraMapping() throws ClassNotFoundException { + return new BasicCassandraMappingContext(); + } +} \ No newline at end of file diff --git a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Event.java b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Event.java new file mode 100644 index 0000000000..dd81fa071c --- /dev/null +++ b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Event.java @@ -0,0 +1,46 @@ +package org.baeldung.spring.data.cassandra.model; + +import org.springframework.cassandra.core.Ordering; +import org.springframework.cassandra.core.PrimaryKeyType; +import org.springframework.data.cassandra.mapping.Column; +import org.springframework.data.cassandra.mapping.PrimaryKeyColumn; +import org.springframework.data.cassandra.mapping.Table; + +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + +@Table +public class Event { + @PrimaryKeyColumn(name = "id", ordinal = 2, type = PrimaryKeyType.CLUSTERED, ordering = Ordering.DESCENDING) + private UUID id; + @PrimaryKeyColumn(name = "type", ordinal = 0, type = PrimaryKeyType.PARTITIONED) + private String type; + @PrimaryKeyColumn(name = "bucket", ordinal = 1, type = PrimaryKeyType.PARTITIONED) + private String bucket; + @Column + private Set tags = new HashSet(); + + public Event(UUID id, String type, String bucket, Set tags) { + this.id = id; + this.type = type; + this.bucket = bucket; + this.tags.addAll(tags); + } + + public UUID getId() { + return id; + } + + public String getType() { + return type; + } + + public String getBucket() { + return bucket; + } + + public Set getTags() { + return tags; + } +} diff --git a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/EventRepository.java b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/EventRepository.java new file mode 100644 index 0000000000..73b96ae2ec --- /dev/null +++ b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/EventRepository.java @@ -0,0 +1,14 @@ +package org.baeldung.spring.data.cassandra.repository; + + +import org.baeldung.spring.data.cassandra.model.Event; +import org.springframework.data.cassandra.repository.CassandraRepository; +import org.springframework.data.cassandra.repository.Query; +import org.springframework.stereotype.Repository; + +@Repository +public interface EventRepository extends CassandraRepository { + @Query("select * from event where type = ?0 and bucket=?1") + Iterable findByTypeAndBucket(String type, String bucket); +} + diff --git a/spring-data-cassandra/src/main/resources/beans.xml b/spring-data-cassandra/src/main/resources/beans.xml new file mode 100644 index 0000000000..fc1fb36ee2 --- /dev/null +++ b/spring-data-cassandra/src/main/resources/beans.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-data-cassandra/src/main/resources/logback.xml b/spring-data-cassandra/src/main/resources/logback.xml new file mode 100644 index 0000000000..215eeede64 --- /dev/null +++ b/spring-data-cassandra/src/main/resources/logback.xml @@ -0,0 +1,20 @@ + + + + + web - %date [%thread] %-5level %logger{36} - %message%n + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-data-cassandra/src/main/resources/test.png b/spring-data-cassandra/src/main/resources/test.png new file mode 100644 index 0000000000000000000000000000000000000000..c3b5e8027635ff4f0a0b10c0a9a6aa7a014e6086 GIT binary patch literal 855 zcmex=6kE^cmKJ|O{KK0!WiZUHd? zL17V5QBfX#aS1UI2_X?t5k_Vf7B*H^PBu0!em)*P5fKr7L0%pn0bT(feo-D?UVdI4 zpg0dNAHM*Q$HT+J$HNcg@q#%Zh5rvQ2y!sUFvu`73NkPWGBOJ?{y)MX0rV0OKpYGv zIoQ})S%5M+0t`%y%uFn-%&bsZMkb)c1=$oC*g1rh3>^~-jRG5mMVuBM1ge%|WME=O zF^8Fjk%^U!0Vt;gv=3+$3p2tNMkYaKCBqLwfr*X6ijMzpG4L=04G?4&WUyx___R78 z`bEZ3n*%y$c1p?=OzsY{vOIcDRID^@mH5k5n_VmCLN*tlQtc~BqmaI3acZm^A1dHBrChNRU-KfIG`3a9F1Z+JCT zaBkFRt*1+W!zihZ}s%F&cxn?h~EIRD%9;ni-#KyOjOZ3l7 z_6Ks(XSKVYPbdvPm!tpIJj%Ot(S2`WC0AaXj1Ds{Yc~e@JYj`ND^=I^G)#%-Q1qX7 z;Q8}@p=SNS>z3K2PrXivv`$()); + Event event1 = new Event(UUIDs.timeBased(), "type1", TIME_BUCKET, ImmutableSet.of("tag1", "tag2")); + Event event2 = new Event(UUIDs.timeBased(), "type1", TIME_BUCKET, ImmutableSet.of("tag3")); + eventRepository.save(ImmutableSet.of(event1, event2)); + + Iterable events = eventRepository.findByTypeAndBucket("type1", TIME_BUCKET); + + assertThat(events, hasItem(event1)); + assertThat(events, hasItem(event2)); + } + + // @Test + public void repositoryDeletesStoredEvents() { + Event event1 = new Event(UUIDs.timeBased(), "type1", TIME_BUCKET, ImmutableSet.of("tag1", "tag2")); + Event event2 = new Event(UUIDs.timeBased(), "type1", TIME_BUCKET, ImmutableSet.of("tag3")); + eventRepository.save(ImmutableSet.of(event1, event2)); + + eventRepository.delete(event1); + eventRepository.delete(event2); + + Iterable events = eventRepository.findByTypeAndBucket("type1", TIME_BUCKET); + + assertThat(events, not(hasItem(event1))); + assertThat(events, not(hasItem(event2))); + } + +}