/**
* Alipay.com Inc.
* Copyright (c) 2004-2012 All Rights Reserved.
*/
package com.alipay.zdal.client.dispatcher;
import java.util.List;
import com.alipay.zdal.client.RouteCondition;
import com.alipay.zdal.common.DBType;
import com.alipay.zdal.common.exception.checked.ZdalCheckedExcption;
/**
* ��TStatement�ĽǶȿ���ֻ�贫��sql����������Ϳ��Եõ�������Ϣ��
* 1. ���sql��Ҫ����Щ�����ִ��
* 2. ��Щsql������Щ����ĺ�������ҪTStatement���ر�Ĵ�������
* a)
* b)
* �����������ӿ�
*
* Ҫ�������ӿ�Ҫ��������������Ҫ���²��裺
* 1. ����sql�õ�sql����Ľṹ����Ϣ
* 2. �ӽ�������õ�������, �Ӷ��õ���Ӧ��һ����
* 3. �ӹ���õ��ֿ�ֱ��ֶ���Ϣ���ӽ�������õ���Щ�ֶ���sql�е�����
* 4. ���ݷֿ�ֱ��ֶ���sql�е�������=��Χ����������ƥ��
*
* ����Ҫ��һ�������¼����ӿ�: ����������ƥ��
*
*/
public interface SqlDispatcher extends DatabaseChoicer {
/**
* ��ȡ��ǰ���ݿ�ͱ�
* @param sql
* @param args
* @return
* @throws ZdalCheckedExcption
*/
DispatcherResult getDBAndTables(String sql, List<Object> args) throws ZdalCheckedExcption;
/**
* ������SQL����ThreadLocal�����ָ������RouteCondition�����������Ŀ�ĵصĽӿ�
* @param rc
* @return
*/
DispatcherResult getDBAndTables(RouteCondition rc);
DBType getDBType();
Result getAllDatabasesAndTables(String logicTableName);
}