Commit ce36aafa authored by terrymanu's avatar terrymanu
Browse files

simplify ConnectionStrictlyExecuteEngine & MemoryStrictlyExecuteEngine

parent f38eb2d5
Loading
Loading
Loading
Loading
+7 −12
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ public final class ConnectionStrictlyExecuteEngine extends JDBCExecuteEngine {
            sqlUnitStatements.put(entry.getKey(), createSQLUnitStatement(entry.getKey(), entry.getValue(), isReturnGeneratedKeys));
        }
        Collection<ExecuteResponseUnit> executeResponseUnits = BackendExecutorContext.getInstance().getExecuteEngine().groupExecute(
                sqlUnitStatements, new FirstTransactionGroupExecuteCallback(isReturnGeneratedKeys), new TransactionGroupExecuteCallback(isReturnGeneratedKeys));
                sqlUnitStatements, new FirstSQLGroupExecuteCallback(isReturnGeneratedKeys), new SQLGroupExecuteCallback(isReturnGeneratedKeys));
        return getExecuteQueryResponse(executeResponseUnits);
    }
    
@@ -107,7 +107,7 @@ public final class ConnectionStrictlyExecuteEngine extends JDBCExecuteEngine {
    }
    
    @RequiredArgsConstructor
    class FirstTransactionGroupExecuteCallback implements ShardingGroupExecuteCallback<StatementExecuteUnit, ExecuteResponseUnit> {
    private class FirstSQLGroupExecuteCallback implements ShardingGroupExecuteCallback<StatementExecuteUnit, ExecuteResponseUnit> {
        
        private final boolean isReturnGeneratedKeys;
        
@@ -115,25 +115,20 @@ public final class ConnectionStrictlyExecuteEngine extends JDBCExecuteEngine {
        public Collection<ExecuteResponseUnit> execute(final String dataSourceName, final Collection<StatementExecuteUnit> statementExecuteUnits) throws SQLException {
            Collection<ExecuteResponseUnit> result = new LinkedList<>();
            boolean hasMetaData = false;
            Connection connection = getBackendConnection().getConnection(dataSourceName);
            for (StatementExecuteUnit each : statementExecuteUnits) {
                String actualSQL = each.getSqlExecutionUnit().getSqlUnit().getSql();
                Statement statement = getJdbcExecutorWrapper().createStatement(connection, actualSQL, isReturnGeneratedKeys);
                ExecuteResponseUnit response;
                if (hasMetaData) {
                    response = executeWithoutMetadata(statement, actualSQL, isReturnGeneratedKeys);
                    result.add(executeWithoutMetadata(each.getStatement(), each.getSqlExecutionUnit().getSqlUnit().getSql(), isReturnGeneratedKeys));
                } else {
                    response = executeWithMetadata(statement, actualSQL, isReturnGeneratedKeys);
                    result.add(executeWithMetadata(each.getStatement(), each.getSqlExecutionUnit().getSqlUnit().getSql(), isReturnGeneratedKeys));
                    hasMetaData = true;
                }
                result.add(response);
            }
            return result;
        }
    }
    
    @RequiredArgsConstructor
    class TransactionGroupExecuteCallback implements ShardingGroupExecuteCallback<StatementExecuteUnit, ExecuteResponseUnit> {
    private class SQLGroupExecuteCallback implements ShardingGroupExecuteCallback<StatementExecuteUnit, ExecuteResponseUnit> {
        
        private final boolean isReturnGeneratedKeys;
        
+5 −8
Original line number Diff line number Diff line
@@ -63,7 +63,7 @@ public final class MemoryStrictlyExecuteEngine extends JDBCExecuteEngine {
            statementExecuteUnits.add(new ProxyStatementExecuteUnit(each, statement));
        }
        Collection<ExecuteResponseUnit> executeResponseUnits = BackendExecutorContext.getInstance().getExecuteEngine().execute(
                statementExecuteUnits, new FirstTransactionExecuteCallback(isReturnGeneratedKeys), new TransactionExecuteCallback(isReturnGeneratedKeys));
                statementExecuteUnits, new FirstSQLExecuteCallback(isReturnGeneratedKeys), new SQLExecuteCallback(isReturnGeneratedKeys));
        ExecuteResponseUnit firstExecuteResponseUnit = executeResponseUnits.iterator().next();
        return firstExecuteResponseUnit instanceof ExecuteQueryResponseUnit
                ? getExecuteQueryResponse((ExecuteQueryResponseUnit) firstExecuteResponseUnit, executeResponseUnits) : getExecuteUpdateResponse(executeResponseUnits);
@@ -92,27 +92,24 @@ public final class MemoryStrictlyExecuteEngine extends JDBCExecuteEngine {
    }
    
    @RequiredArgsConstructor
    class FirstTransactionExecuteCallback implements ShardingExecuteCallback<StatementExecuteUnit, ExecuteResponseUnit> {
    private class FirstSQLExecuteCallback implements ShardingExecuteCallback<StatementExecuteUnit, ExecuteResponseUnit> {
        
        private final boolean isReturnGeneratedKeys;
        
        @Override
        public ExecuteResponseUnit execute(final StatementExecuteUnit statementExecuteUnit) throws SQLException {
            Statement statement = getJdbcExecutorWrapper().createStatement(getBackendConnection().getConnection(statementExecuteUnit.getSqlExecutionUnit().getDataSource()), 
                    statementExecuteUnit.getSqlExecutionUnit().getSqlUnit().getSql(), isReturnGeneratedKeys);
            return executeWithMetadata(statement, statementExecuteUnit.getSqlExecutionUnit().getSqlUnit().getSql(), isReturnGeneratedKeys);
            return executeWithMetadata(statementExecuteUnit.getStatement(), statementExecuteUnit.getSqlExecutionUnit().getSqlUnit().getSql(), isReturnGeneratedKeys);
        }
    }
    
    @RequiredArgsConstructor
    class TransactionExecuteCallback implements ShardingExecuteCallback<StatementExecuteUnit, ExecuteResponseUnit> {
    private class SQLExecuteCallback implements ShardingExecuteCallback<StatementExecuteUnit, ExecuteResponseUnit> {
        
        private final boolean isReturnGeneratedKeys;
        
        @Override
        public ExecuteResponseUnit execute(final StatementExecuteUnit statementExecuteUnit) throws SQLException {
            String actualSQL = statementExecuteUnit.getSqlExecutionUnit().getSqlUnit().getSql();
            return executeWithoutMetadata(statementExecuteUnit.getStatement(), actualSQL, isReturnGeneratedKeys);
            return executeWithoutMetadata(statementExecuteUnit.getStatement(), statementExecuteUnit.getSqlExecutionUnit().getSqlUnit().getSql(), isReturnGeneratedKeys);
        }
    }
}