
cn.schoolwow.quickdao.module.parent.kit.DAOInvocationHandler Maven / Gradle / Ivy
package cn.schoolwow.quickdao.module.parent.kit;
import cn.schoolwow.quickdao.domain.QuickDAOConfig;
import cn.schoolwow.quickdao.module.common.operation.kit.CommonDatabaseOption;
import cn.schoolwow.quickdao.module.common.operation.kit.CommonDatabaseOptionImpl;
import cn.schoolwow.quickdao.module.common.query.kit.QueryOperation;
import cn.schoolwow.quickdao.module.common.query.kit.QueryOperationImpl;
import cn.schoolwow.quickdao.module.database.dcl.kit.DatabaseControl;
import cn.schoolwow.quickdao.module.database.dcl.kit.DatabaseControlImpl;
import cn.schoolwow.quickdao.module.database.ddl.kit.DatabaseDefinition;
import cn.schoolwow.quickdao.module.database.ddl.kit.DatabaseDefinitionImpl;
import cn.schoolwow.quickdao.module.database.dml.kit.DatabaseManipulationImpl;
import cn.schoolwow.quickdao.module.database.dql.query.kit.DatabaseQuery;
import cn.schoolwow.quickdao.module.database.dql.query.kit.DatabaseQueryImpl;
import cn.schoolwow.quickdao.module.operation.kit.DAOOperation;
import cn.schoolwow.quickdao.module.operation.kit.DAOOperationImpl;
import cn.schoolwow.quickflow.QuickFlow;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
/**
* DAO接口调用代理模式对象
*/
public class DAOInvocationHandler implements InvocationHandler {
private DatabaseControl databaseControl;
private DatabaseDefinition databaseDefinition;
private DatabaseQuery databaseQuery;
private QueryOperation queryOperation;
private DAOOperation daoOperation;
private CommonDatabaseOption commonDatabaseOption;
private QuickFlow quickFlow;
private QuickDAOConfig quickDAOConfig;
public DAOInvocationHandler(QuickFlow quickFlow, QuickDAOConfig quickDAOConfig) {
this.quickFlow = quickFlow;
this.quickDAOConfig = quickDAOConfig;
databaseControl = new DatabaseControlImpl(quickFlow);
databaseDefinition = new DatabaseDefinitionImpl(quickFlow);
databaseQuery = new DatabaseQueryImpl(quickFlow);
queryOperation = new QueryOperationImpl(quickFlow);
daoOperation = new DAOOperationImpl(quickFlow);
commonDatabaseOption = new CommonDatabaseOptionImpl(quickFlow);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
String interfaceName = method.getDeclaringClass().getSimpleName();
Object result = null;
switch (interfaceName) {
case "DatabaseControl": {
result = method.invoke(databaseControl, args);
}
break;
case "DatabaseDefinition": {
result = method.invoke(databaseDefinition, args);
}
break;
case "DatabaseManipulation": {
result = method.invoke(new DatabaseManipulationImpl(quickFlow), args);
}
break;
case "DatabaseQuery": {
result = method.invoke(databaseQuery, args);
}
break;
case "QueryOperation":{
result = method.invoke(queryOperation, args);
}break;
case "DAOOperation":{
result = method.invoke(daoOperation, args);
}break;
case "CommonDatabaseOption":{
result = method.invoke(commonDatabaseOption, args);
}break;
case "Object":{
result = method.invoke(quickDAOConfig, args);
}break;
default: {
throw new IllegalAccessError("不支持调用该方法!方法名:"+method.getName());
}
}
return result;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy