package com.taobao.tddl.executor.common; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; import com.taobao.tddl.common.jdbc.ParameterContext; import com.taobao.tddl.executor.spi.IRepository; import com.taobao.tddl.executor.spi.ITable; import com.taobao.tddl.executor.spi.ITransaction; import com.taobao.tddl.optimizer.config.table.IndexMeta; /** * 一次执行过程中的上下文 * * @author whisper */ public class ExecutionContext { /** * 当前事务的执行group,只支持单group的事务 */ private String transactionGroup = null; /** * 当前运行时的存储对象 */ private IRepository currentRepository; /** * 是否自动关闭结果集。目前这个东西已经基本无效。除了在update等查询中有使用 */ private boolean closeResultSet; /** * 当前事务 */ private ITransaction transaction; /** * 当前查询所使用的IndexMeta/这个放这里不是非常明确,他其实和生命周期无关。只是为了统一返回值,所以放在一起。 */ private IndexMeta meta; /** * 当前查询所使用的table */ private ITable table; private Map<String, Object> extraCmds = new HashMap(); private Map<Integer, ParameterContext> params = null; private String isolation = null; private ExecutorService concurrentService; private boolean autoCommit = true; private String groupHint = null; public ExecutionContext(){ } public IRepository getCurrentRepository() { return currentRepository; } public void setCurrentRepository(IRepository currentRepository) { this.currentRepository = currentRepository; } public boolean isCloseResultSet() { return closeResultSet; } public void setCloseResultSet(boolean closeResultSet) { this.closeResultSet = closeResultSet; } public ITransaction getTransaction() { return transaction; } public void setTransaction(ITransaction transaction) { this.transaction = transaction; if (transaction != null) { this.transaction.setAutoCommit(isAutoCommit()); } } public IndexMeta getMeta() { return meta; } public void setMeta(IndexMeta meta) { this.meta = meta; } public ITable getTable() { return table; } public void setTable(ITable table) { this.table = table; } public Map<String, Object> getExtraCmds() { return extraCmds; } public void setExtraCmds(Map<String, Object> extraCmds) { this.extraCmds = extraCmds; } public Map<Integer, ParameterContext> getParams() { return params; } public void setParams(Map<Integer, ParameterContext> params) { this.params = params; } public String getIsolation() { return isolation; } public void setIsolation(String isolation) { this.isolation = isolation; } public ExecutorService getExecutorService() { return this.concurrentService; } public void setExecutorService(ExecutorService concurrentService) { this.concurrentService = concurrentService; } public String getTransactionGroup() { return transactionGroup; } public void setTransactionGroup(String transactionGroup) { this.transactionGroup = transactionGroup; } public boolean isAutoCommit() { return autoCommit; } public void setAutoCommit(boolean autoCommit) { this.autoCommit = autoCommit; if (this.getTransaction() != null) { this.getTransaction().setAutoCommit(autoCommit); } } public String getGroupHint() { return groupHint; } public void setGroupHint(String groupHint) { this.groupHint = groupHint; } }