diff --git a/.project b/.project
new file mode 100644
index 000000000..72d752915
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ spring-datastore-keyvalue-dist
+
+
+
+
+
+ org.maven.ide.eclipse.maven2Builder
+
+
+
+
+
+ org.maven.ide.eclipse.maven2Nature
+
+
diff --git a/.settings/org.maven.ide.eclipse.prefs b/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 000000000..fc929aaef
--- /dev/null
+++ b/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Mon Oct 11 17:02:20 EDT 2010
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/spring-datastore-keyvalue-core/.classpath b/spring-datastore-keyvalue-core/.classpath
index f42fb64cf..0bb7ad5ca 100644
--- a/spring-datastore-keyvalue-core/.classpath
+++ b/spring-datastore-keyvalue-core/.classpath
@@ -1,10 +1,7 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/spring-datastore-keyvalue-parent/.project b/spring-datastore-keyvalue-parent/.project
new file mode 100644
index 000000000..fc55d1f3a
--- /dev/null
+++ b/spring-datastore-keyvalue-parent/.project
@@ -0,0 +1,17 @@
+
+
+ spring-datastore-keyvalue-parent
+
+
+
+
+
+ org.maven.ide.eclipse.maven2Builder
+
+
+
+
+
+ org.maven.ide.eclipse.maven2Nature
+
+
diff --git a/spring-datastore-keyvalue-parent/.settings/org.maven.ide.eclipse.prefs b/spring-datastore-keyvalue-parent/.settings/org.maven.ide.eclipse.prefs
new file mode 100644
index 000000000..fc929aaef
--- /dev/null
+++ b/spring-datastore-keyvalue-parent/.settings/org.maven.ide.eclipse.prefs
@@ -0,0 +1,9 @@
+#Mon Oct 11 17:02:20 EDT 2010
+activeProfiles=
+eclipse.preferences.version=1
+fullBuildGoals=process-test-resources
+includeModules=false
+resolveWorkspaceProjects=true
+resourceFilterGoals=process-resources resources\:testResources
+skipCompilerPlugin=true
+version=1
diff --git a/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/core/DefaultSetOperations.java b/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/core/DefaultSetOperations.java
new file mode 100644
index 000000000..35289e357
--- /dev/null
+++ b/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/core/DefaultSetOperations.java
@@ -0,0 +1,93 @@
+package org.springframework.datastore.redis.core;
+
+import java.util.Set;
+
+public class DefaultSetOperations implements SetOperations {
+
+ private RedisTemplate redisTemplate;
+ public DefaultSetOperations(RedisTemplate redisTemplate) {
+ this.redisTemplate = redisTemplate;
+ }
+
+ public boolean add(final String key, final String member) {
+ return redisTemplate.execute(new RedisCallback() {
+ public Boolean doInRedis(RedisClient redisClient) throws Exception {
+ return (redisClient.sadd(key, member) == 0) ? true : false;
+ }
+ });
+ }
+
+ public Set getAll(final String key) {
+ return redisTemplate.execute(new RedisCallback>() {
+ public Set doInRedis(RedisClient redisClient) throws Exception {
+ return redisClient.smembers(key);
+ }
+ });
+ }
+
+ public boolean remove(String key, String member) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean removeRandom(String key) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean moveBetweenSets(String srckey, String dstkey, String member) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public int size(String key) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public boolean contains(String key, String member) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public Set getIntersectionOfSets(String... keys) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void storeIntersectionOfSets(final String dstkey, final String... keys) {
+ redisTemplate.execute(new RedisCallback() {
+ public Void doInRedis(RedisClient redisClient) throws Exception {
+ redisClient.sinterstore(dstkey, keys);
+ return null;
+ }
+ });
+ }
+
+ public Set getUnionOfSets(String... keys) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void storeUnionOfSets(String dstkey, String... keys) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public Set getDifferenceBetweenSets(String... keys) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void storeDifferenceBetweenSets(String dstkey, String... keys) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public String getRandom(String key) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+
+}
diff --git a/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/core/RedisTemplate.java b/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/core/RedisTemplate.java
index 5594cb431..dd32b18cc 100644
--- a/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/core/RedisTemplate.java
+++ b/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/core/RedisTemplate.java
@@ -281,8 +281,7 @@ public class RedisTemplate extends RedisAccessor implements RedisOperations {
}
public SetOperations getSetOperations() {
- // TODO Auto-generated method stub
- return null;
+ return new DefaultSetOperations(this);
}
diff --git a/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/util/RedisSet.java b/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/util/RedisSet.java
index dbf30f2ca..0cf25d240 100644
--- a/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/util/RedisSet.java
+++ b/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/util/RedisSet.java
@@ -15,7 +15,7 @@ public class RedisSet extends AbstractRedisCollection implements Set {
public RedisSet(RedisTemplate redisTemplate, String redisKey) {
super(redisTemplate, redisKey);
}
-
+
public int size() {
return redisTemplate.getSetOperations().size(redisKey);
}
@@ -58,11 +58,29 @@ public class RedisSet extends AbstractRedisCollection implements Set {
return redisTemplate.getSetOperations().removeRandom(redisKey);
}
-
- void intersection(RedisSet... redisSets) {
+ /*
+ public intersection(RedisSet... redisSets) {
//storeIntersectionOfSets..
+ return null;
+ }
+ */
+
+ public RedisSet intersection(String newKey, RedisSet... redisSets) {
+ String[] keys = new String[redisSets.length];
+ int i = 0;
+ for (RedisSet redisSet : redisSets) {
+ keys[i] = redisSet.getRedisKey();
+ i++;
+ }
+ redisTemplate.getSetOperations().storeIntersectionOfSets(newKey, keys);
+
+ RedisSet resultSet = new RedisSet(redisTemplate, newKey);
+ Set results = redisTemplate.getSetOperations().getAll(newKey);
+ resultSet.addAll(results);
+ return resultSet;
}
+
void union(RedisSet... redisSets) {
//storeUnionOfSets
}
diff --git a/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/util/Sets.java b/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/util/Sets.java
index 8c095ea14..44f209b29 100644
--- a/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/util/Sets.java
+++ b/spring-datastore-redis/src/main/java/org/springframework/datastore/redis/util/Sets.java
@@ -1,5 +1,7 @@
package org.springframework.datastore.redis.util;
+import java.util.Set;
+
import org.springframework.datastore.redis.core.RedisTemplate;
public class Sets {
diff --git a/spring-datastore-redis/src/test/java/org/springframework/datastore/redis/core/AbstractClientIntegrationTests.java b/spring-datastore-redis/src/test/java/org/springframework/datastore/redis/core/AbstractClientIntegrationTests.java
index 9b3035364..5af72d6ac 100644
--- a/spring-datastore-redis/src/test/java/org/springframework/datastore/redis/core/AbstractClientIntegrationTests.java
+++ b/spring-datastore-redis/src/test/java/org/springframework/datastore/redis/core/AbstractClientIntegrationTests.java
@@ -21,6 +21,7 @@ import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.util.Map;
+import java.util.Set;
import junit.framework.Assert;
@@ -102,4 +103,6 @@ public abstract class AbstractClientIntegrationTests {
Person p = new Person("Joe", "Trader", 33);
}
+
+
}
diff --git a/spring-datastore-redis/src/test/java/org/springframework/datastore/redis/core/jedis/JedisRedisClientIntegrationTests.java b/spring-datastore-redis/src/test/java/org/springframework/datastore/redis/core/jedis/JedisRedisClientIntegrationTests.java
index fb52ab8fb..ee493184d 100644
--- a/spring-datastore-redis/src/test/java/org/springframework/datastore/redis/core/jedis/JedisRedisClientIntegrationTests.java
+++ b/spring-datastore-redis/src/test/java/org/springframework/datastore/redis/core/jedis/JedisRedisClientIntegrationTests.java
@@ -16,21 +16,52 @@
package org.springframework.datastore.redis.core.jedis;
+import java.util.Set;
+
import org.junit.Before;
+import org.junit.Test;
import org.springframework.datastore.redis.core.AbstractClientIntegrationTests;
import org.springframework.datastore.redis.core.RedisClientFactory;
+import org.springframework.datastore.redis.core.RedisTemplate;
+import org.springframework.datastore.redis.util.RedisSet;
public class JedisRedisClientIntegrationTests extends
AbstractClientIntegrationTests {
+ RedisClientFactory clientFactory;
@Before
public void setUp() {
- RedisClientFactory clientFactory = new JedisClientFactory();
+ clientFactory = new JedisClientFactory();
clientFactory.setPassword("foobared");
client = clientFactory.createClient();
client.flushAll();
}
-
+ @Test
+ public void setAdd() {
+ client.sadd("s1", "1");
+ client.sadd("s1", "2");
+ client.sadd("s1", "3");
+ client.sadd("s2", "2");
+ client.sadd("s2", "3");
+ Set intersection = client.sinter("s1", "s2");
+ System.out.println(intersection);
+
+
+ }
+
+ @Test
+ public void setIntersectionTests() {
+ RedisTemplate template = new RedisTemplate(clientFactory);
+ RedisSet s1 = new RedisSet(template, "s1");
+ s1.add("1"); s1.add("2"); s1.add("3");
+ RedisSet s2 = new RedisSet(template, "s2");
+ s2.add("2"); s2.add("3");
+ Set s3 = s1.intersection("s3", s1, s2);
+ for (Object object : s3) {
+ System.out.println(object);
+ }
+
+ }
}