redis数据集插件。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

58 lines
2.0 KiB

package com.fr.plugin.db.redis.core.visit;
import com.fr.plugin.db.redis.core.DataWrapper;
import com.fr.plugin.db.redis.core.visit.impl.GetVisitor;
import com.fr.plugin.db.redis.core.visit.impl.HashGetVisitor;
import com.fr.plugin.db.redis.core.visit.impl.HashKeysVisitor;
import com.fr.plugin.db.redis.core.visit.impl.HashMGetVisitor;
import com.fr.plugin.db.redis.core.visit.impl.HashVisitor;
import com.fr.plugin.db.redis.core.visit.impl.KeysVisitor;
import com.fr.plugin.db.redis.core.visit.impl.ListVisitor;
import com.fr.plugin.db.redis.core.visit.impl.MGetVisitor;
import com.fr.plugin.db.redis.core.visit.impl.SetVisitor;
import com.fr.plugin.db.redis.core.visit.impl.ZRangeVisitor;
import com.fr.stable.ParameterProvider;
import com.fr.stable.script.CalculatorProvider;
import redis.clients.jedis.Jedis;
import java.util.ArrayList;
import java.util.List;
/**
* Created by richie on 2017/5/2.
*/
public class VisitorFactory {
private static List<Visitor> visitors = new ArrayList<Visitor>();
static {
visitors.add(new GetVisitor());
visitors.add(new ListVisitor());
visitors.add(new HashVisitor());
visitors.add(new HashGetVisitor());
visitors.add(new HashMGetVisitor());
visitors.add(new HashKeysVisitor());
visitors.add(new SetVisitor());
visitors.add(new ZRangeVisitor());
visitors.add(new MGetVisitor());
visitors.add(new KeysVisitor());
}
public static <T> DataWrapper<T> getKeyValueResult(CalculatorProvider calculator, ParameterProvider[] ps, Jedis client, String query, int rowCount) throws Exception {
Visitor visitor = getMatchedVisitor(query);
if (visitor == null) {
return DataWrapper.EMPTY;
} else {
return visitor.buildData(calculator, ps, client, query, rowCount);
}
}
private static Visitor getMatchedVisitor(String query) {
for (Visitor visitor : visitors) {
if (visitor.match(query)) {
return visitor;
}
}
return null;
}
}