package com.cxy.redisclient.integration.list;
import java.util.List;
import com.cxy.redisclient.domain.NodeType;
import com.cxy.redisclient.domain.RedisVersion;
import com.cxy.redisclient.integration.I18nFile;
import com.cxy.redisclient.integration.JedisCommand;
import com.cxy.redisclient.presentation.RedisClient;
public class AddList extends JedisCommand {
protected int db;
protected String key;
private List<String> values;
private boolean headTail;
private boolean exist;
public AddList(int id, int db, String key, List<String> values,
boolean headTail, boolean exist) {
super(id);
this.db = db;
this.key = key;
this.values = values;
this.headTail = headTail;
this.exist = exist;
}
@Override
protected void command() {
jedis.select(db);
if (jedis.exists(key) && getValueType(key) != NodeType.LIST)
throw new RuntimeException(RedisClient.i18nFile.getText(I18nFile.LISTEXIST) + key);
beforeAdd();
for (String value : values) {
if (headTail && exist)
jedis.rpush(key, value);
else if (headTail && !exist)
jedis.rpushx(key, value);
else if (!headTail && exist)
jedis.lpush(key, value);
else
jedis.lpushx(key, value);
}
afterAdd();
}
protected void afterAdd() {
// TODO Auto-generated method stub
}
protected void beforeAdd() {
}
@Override
public RedisVersion getSupportVersion() {
if (headTail && exist)
return RedisVersion.REDIS_1_0;
else if (headTail && !exist)
return RedisVersion.REDIS_2_2;
else if (!headTail && exist)
return RedisVersion.REDIS_1_0;
else
return RedisVersion.REDIS_2_2;
}
}