forked from fanruan/demo-tabledata-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
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; |
|
} |
|
}
|
|
|