DATAKV-36

+ add support for multiple get keys for connection sortParam
This commit is contained in:
Costin Leau
2011-03-07 14:49:53 +02:00
parent 812cd6183f
commit 35f97c6d57
4 changed files with 28 additions and 13 deletions

View File

@@ -15,6 +15,10 @@
*/
package org.springframework.data.keyvalue.redis.connection;
import java.util.ArrayList;
import java.util.List;
/**
* Default implementation for {@link SortParameters}.
@@ -25,7 +29,7 @@ public class DefaultSortParameters implements SortParameters {
private byte[] byPattern;
private Range limit;
private byte[] getPattern;
private final List<byte[]> getPattern = new ArrayList<byte[]>(4);
private Order order;
private Boolean alphabetic;
@@ -56,13 +60,13 @@ public class DefaultSortParameters implements SortParameters {
* @param order
* @param alphabetic
*/
public DefaultSortParameters(byte[] byPattern, Range limit, byte[] getPattern, Order order, Boolean alphabetic) {
public DefaultSortParameters(byte[] byPattern, Range limit, byte[][] getPattern, Order order, Boolean alphabetic) {
super();
this.byPattern = byPattern;
this.limit = limit;
this.getPattern = getPattern;
this.order = order;
this.alphabetic = alphabetic;
setGetPattern(getPattern);
}
@Override
@@ -84,12 +88,20 @@ public class DefaultSortParameters implements SortParameters {
}
@Override
public byte[] getGetPattern() {
return getPattern;
public byte[][] getGetPattern() {
return getPattern.toArray(new byte[getPattern.size()][]);
}
public void setGetPattern(byte[] getPattern) {
this.getPattern = getPattern;
public void addGetPattern(byte[] gPattern) {
getPattern.add(gPattern);
}
public void setGetPattern(byte[][] gPattern) {
getPattern.clear();
for (byte[] bs : getPattern) {
getPattern.add(bs);
}
}
@Override
@@ -130,7 +142,7 @@ public class DefaultSortParameters implements SortParameters {
}
public SortParameters get(byte[] pattern) {
setGetPattern(pattern);
addGetPattern(pattern);
return this;
}

View File

@@ -80,7 +80,7 @@ public interface SortParameters {
*
* @return <tt>GET</tt> pattern.
*/
byte[] getGetPattern();
byte[][] getGetPattern();
/**
* Returns the sorting limit (range or pagination).

View File

@@ -161,7 +161,7 @@ public abstract class JedisUtils {
jedisParams.by(params.getByPattern());
}
byte[] getPattern = params.getGetPattern();
byte[][] getPattern = params.getGetPattern();
if (getPattern != null) {
jedisParams.get(getPattern);
}

View File

@@ -129,9 +129,12 @@ public abstract class JredisUtils {
if (byPattern != null) {
jredisSort.BY(decode(byPattern));
}
byte[] getPattern = params.getGetPattern();
if (getPattern != null) {
jredisSort.GET(decode(getPattern));
byte[][] getPattern = params.getGetPattern();
if (getPattern != null && getPattern.length > 0) {
for (byte[] bs : getPattern) {
jredisSort.GET(decode(bs));
}
}
Range limit = params.getLimit();
if (limit != null) {