
com.trigonic.jedis.NamespaceHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jedis-namespace Show documentation
Show all versions of jedis-namespace Show documentation
Namespace support for Jedis keys
The newest version!
package com.trigonic.jedis;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import redis.clients.jedis.Response;
import redis.clients.jedis.SortingParams;
import redis.clients.util.SafeEncoder;
import com.google.common.primitives.Bytes;
public class NamespaceHandler {
private String namespace;
private String prefix;
private byte[] binaryPrefix;
public NamespaceHandler(String namespace) {
this.namespace = namespace;
prefix = namespace + ":";
binaryPrefix = SafeEncoder.encode(prefix);
}
public String get() {
return namespace;
}
public String add(String key) {
return key == null ? null : prefix + key;
}
public String[] add(String[] keys) {
String[] result = null;
if (keys != null) {
result = new String[keys.length];
for (int i = 0; i < keys.length; ++i) {
result[i] = add(keys[i]);
}
}
return result;
}
public String[] addEveryOther(String[] keys) {
String[] result = null;
if (keys != null) {
result = new String[keys.length];
for (int i = 0; i < keys.length; ++i) {
result[i] = (i % 2 == 0 ? add(keys[i]) : keys[i]);
}
}
return result;
}
public byte[][] addEveryOther(byte[][] keys) {
byte[][] result = null;
if (keys != null) {
result = new byte[keys.length][];
for (int i = 0; i < keys.length; ++i) {
result[i] = (i % 2 == 0 ? add(keys[i]) : keys[i]);
}
}
return result;
}
public byte[] add(byte[] key) {
return key == null ? null : Bytes.concat(binaryPrefix, key);
}
public byte[][] add(byte[][] keys) {
byte[][] result = null;
if (keys != null) {
result = new byte[keys.length][];
for (int i = 0; i < keys.length; ++i) {
result[i] = add(keys[i]);
}
}
return result;
}
public SortingParams add(SortingParams params) {
List rawParams = new ArrayList(params.getParams());
SortingParams result = new SortingParams();
for (int i = 0; i < rawParams.size(); ++i) {
String paramName = SafeEncoder.encode(rawParams.get(i));
if (paramName.equals("alpha")) {
result.alpha();
} else if (paramName.equals("asc")) {
result.asc();
} else if (paramName.equals("by")) {
result.by(add(rawParams.get(++i)));
} else if (paramName.equals("desc")) {
result.desc();
} else if (paramName.equals("get")) {
result.get(add(rawParams.get(++i)));
} else if (paramName.equals("limit")) {
int start = Integer.valueOf(SafeEncoder.encode(rawParams.get(++i)));
int count = Integer.valueOf(SafeEncoder.encode(rawParams.get(++i)));
result.limit(start, count);
} else if (paramName.equals("nosort")) {
result.nosort();
}
}
return result;
}
public String remove(String key) {
if (key != null && key.startsWith(prefix)) {
key = key.substring(prefix.length());
}
return key;
}
public Set remove(Set keys) {
Set result = null;
if (keys != null) {
result = new LinkedHashSet(keys.size());
for (String key : keys) {
result.add(remove(key));
}
}
return result;
}
public Response> remove(Response> response) {
return new FilteredResponse>(response) {
@Override
protected Set filter(Set value) {
return remove(value);
}
};
}
public byte[] removeNamespace(byte[] key) {
if (key != null && Bytes.indexOf(key, binaryPrefix) == 0) {
key = Arrays.copyOfRange(key, binaryPrefix.length, key.length);
}
return key;
}
public List removeFirst(List list) {
List result = null;
if (list != null) {
result = new ArrayList(list.size());
result.addAll(list);
result.set(0, remove(result.get(0)));
}
return result;
}
public Response> removeFirst(Response> response) {
return new FilteredResponse>(response) {
@Override
protected List filter(List list) {
return removeFirst(list);
}
};
}
public List removeFirstBytes(List list) {
List result = null;
if (list != null) {
result = new ArrayList(list.size());
result.addAll(list);
result.set(0, removeNamespace(result.get(0)));
}
return result;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy