|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|