From e5bd30e774dba285e0e22bbfa5e4e0d936d88e6b Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期四, 12 三月 2026 10:32:26 +0800
Subject: [PATCH] 430代码 SQL server

---
 src/main/java/org/activiti/engine/impl/db/DbSqlSessionFactory.java |  301 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 301 insertions(+), 0 deletions(-)

diff --git a/src/main/java/org/activiti/engine/impl/db/DbSqlSessionFactory.java b/src/main/java/org/activiti/engine/impl/db/DbSqlSessionFactory.java
new file mode 100644
index 0000000..a71afda
--- /dev/null
+++ b/src/main/java/org/activiti/engine/impl/db/DbSqlSessionFactory.java
@@ -0,0 +1,301 @@
+package org.activiti.engine.impl.db;
+
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+import org.activiti.engine.ActivitiException;
+import org.activiti.engine.impl.cfg.IdGenerator;
+import org.activiti.engine.impl.interceptor.CommandContext;
+import org.activiti.engine.impl.interceptor.Session;
+import org.activiti.engine.impl.interceptor.SessionFactory;
+import org.activiti.engine.impl.persistence.entity.Entity;
+import org.activiti.engine.impl.persistence.entity.EventLogEntryEntityImpl;
+import org.apache.ibatis.session.SqlSessionFactory;
+
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class DbSqlSessionFactory implements SessionFactory {
+    protected static final Map<String, Map<String, String>> databaseSpecificStatements = new HashMap();
+    protected static Map<Class<? extends Entity>, Boolean> bulkInsertableMap;
+    protected String databaseType;
+    protected String databaseTablePrefix = "";
+    private boolean tablePrefixIsSchema;
+    protected String databaseCatalog;
+    protected String databaseSchema;
+    protected SqlSessionFactory sqlSessionFactory;
+    protected IdGenerator idGenerator;
+    protected Map<String, String> statementMappings;
+    protected Map<Class<?>, String> insertStatements = new ConcurrentHashMap();
+    protected Map<Class<?>, String> bulkInsertStatements = new ConcurrentHashMap();
+    protected Map<Class<?>, String> updateStatements = new ConcurrentHashMap();
+    protected Map<Class<?>, String> deleteStatements = new ConcurrentHashMap();
+    protected Map<Class<?>, String> bulkDeleteStatements = new ConcurrentHashMap();
+    protected Map<Class<?>, String> selectStatements = new ConcurrentHashMap();
+    protected boolean isDbIdentityUsed = true;
+    protected boolean isDbHistoryUsed = true;
+    protected int maxNrOfStatementsInBulkInsert = 100;
+
+    public DbSqlSessionFactory() {
+    }
+
+    public Class<?> getSessionType() {
+        return DbSqlSession.class;
+    }
+
+    public Session openSession(CommandContext commandContext) {
+        DbSqlSession dbSqlSession = new DbSqlSession(this, commandContext.getEntityCache());
+        SQLException e;
+        if (this.getDatabaseSchema() != null && this.getDatabaseSchema().length() > 0) {
+            try {
+                dbSqlSession.getSqlSession().getConnection().setSchema(this.getDatabaseSchema());
+            } catch (SQLException var5) {
+                e = var5;
+                throw new ActivitiException("Could not set database schema on connection", e);
+            }
+        }
+
+        if (this.getDatabaseCatalog() != null && this.getDatabaseCatalog().length() > 0) {
+            try {
+                dbSqlSession.getSqlSession().getConnection().setCatalog(this.getDatabaseCatalog());
+            } catch (SQLException var4) {
+                e = var4;
+                throw new ActivitiException("Could not set database catalog on connection", e);
+            }
+        }
+
+        return dbSqlSession;
+    }
+
+    public String getInsertStatement(Entity object) {
+        return this.getStatement(object.getClass(), this.insertStatements, "insert");
+    }
+
+    public String getInsertStatement(Class<? extends Entity> clazz) {
+        return this.getStatement(clazz, this.insertStatements, "insert");
+    }
+
+    public String getBulkInsertStatement(Class clazz) {
+        return this.getStatement(clazz, this.bulkInsertStatements, "bulkInsert");
+    }
+
+    public String getUpdateStatement(Entity object) {
+        return this.getStatement(object.getClass(), this.updateStatements, "update");
+    }
+
+    public String getDeleteStatement(Class<?> entityClass) {
+        return this.getStatement(entityClass, this.deleteStatements, "delete");
+    }
+
+    public String getBulkDeleteStatement(Class<?> entityClass) {
+        return this.getStatement(entityClass, this.bulkDeleteStatements, "bulkDelete");
+    }
+
+    public String getSelectStatement(Class<?> entityClass) {
+        return this.getStatement(entityClass, this.selectStatements, "select");
+    }
+
+    private String getStatement(Class<?> entityClass, Map<Class<?>, String> cachedStatements, String prefix) {
+        String statement = (String)cachedStatements.get(entityClass);
+        if (statement != null) {
+            return statement;
+        } else {
+            statement = prefix + entityClass.getSimpleName();
+            if (statement.endsWith("Impl")) {
+                statement = statement.substring(0, statement.length() - 10);
+            } else {
+                statement = statement.substring(0, statement.length() - 6);
+            }
+
+            cachedStatements.put(entityClass, statement);
+            return statement;
+        }
+    }
+
+    protected static void addDatabaseSpecificStatement(String databaseType, String activitiStatement, String ibatisStatement) {
+        Map<String, String> specificStatements = (Map)databaseSpecificStatements.get(databaseType);
+        if (specificStatements == null) {
+            specificStatements = new HashMap();
+            databaseSpecificStatements.put(databaseType, specificStatements);
+        }
+
+        ((Map)specificStatements).put(activitiStatement, ibatisStatement);
+    }
+
+    public String mapStatement(String statement) {
+        if (this.statementMappings == null) {
+            return statement;
+        } else {
+            String mappedStatement = (String)this.statementMappings.get(statement);
+            return mappedStatement != null ? mappedStatement : statement;
+        }
+    }
+
+    public void setDatabaseType(String databaseType) {
+        this.databaseType = databaseType;
+        this.statementMappings = (Map)databaseSpecificStatements.get(databaseType);
+    }
+
+    public void setBulkInsertEnabled(boolean isBulkInsertEnabled, String databaseType) {
+        if (isBulkInsertEnabled) {
+            this.initBulkInsertEnabledMap(databaseType);
+        }
+
+    }
+
+    protected void initBulkInsertEnabledMap(String databaseType) {
+        bulkInsertableMap = new HashMap();
+        Iterator var2 = EntityDependencyOrder.INSERT_ORDER.iterator();
+
+        while(var2.hasNext()) {
+            Class<? extends Entity> clazz = (Class)var2.next();
+            bulkInsertableMap.put(clazz, Boolean.TRUE);
+        }
+
+        if ("oracle".equals(databaseType) || "dm".equals(databaseType)) {
+            bulkInsertableMap.put(EventLogEntryEntityImpl.class, Boolean.FALSE);
+        }
+
+    }
+
+    public Boolean isBulkInsertable(Class<? extends Entity> entityClass) {
+        return bulkInsertableMap != null && bulkInsertableMap.containsKey(entityClass) && (Boolean)bulkInsertableMap.get(entityClass);
+    }
+
+    public SqlSessionFactory getSqlSessionFactory() {
+        return this.sqlSessionFactory;
+    }
+
+    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
+        this.sqlSessionFactory = sqlSessionFactory;
+    }
+
+    public IdGenerator getIdGenerator() {
+        return this.idGenerator;
+    }
+
+    public void setIdGenerator(IdGenerator idGenerator) {
+        this.idGenerator = idGenerator;
+    }
+
+    public String getDatabaseType() {
+        return this.databaseType;
+    }
+
+    public Map<String, String> getStatementMappings() {
+        return this.statementMappings;
+    }
+
+    public void setStatementMappings(Map<String, String> statementMappings) {
+        this.statementMappings = statementMappings;
+    }
+
+    public Map<Class<?>, String> getInsertStatements() {
+        return this.insertStatements;
+    }
+
+    public void setInsertStatements(Map<Class<?>, String> insertStatements) {
+        this.insertStatements = insertStatements;
+    }
+
+    public Map<Class<?>, String> getBulkInsertStatements() {
+        return this.bulkInsertStatements;
+    }
+
+    public void setBulkInsertStatements(Map<Class<?>, String> bulkInsertStatements) {
+        this.bulkInsertStatements = bulkInsertStatements;
+    }
+
+    public Map<Class<?>, String> getUpdateStatements() {
+        return this.updateStatements;
+    }
+
+    public void setUpdateStatements(Map<Class<?>, String> updateStatements) {
+        this.updateStatements = updateStatements;
+    }
+
+    public Map<Class<?>, String> getDeleteStatements() {
+        return this.deleteStatements;
+    }
+
+    public void setDeleteStatements(Map<Class<?>, String> deleteStatements) {
+        this.deleteStatements = deleteStatements;
+    }
+
+    public Map<Class<?>, String> getBulkDeleteStatements() {
+        return this.bulkDeleteStatements;
+    }
+
+    public void setBulkDeleteStatements(Map<Class<?>, String> bulkDeleteStatements) {
+        this.bulkDeleteStatements = bulkDeleteStatements;
+    }
+
+    public Map<Class<?>, String> getSelectStatements() {
+        return this.selectStatements;
+    }
+
+    public void setSelectStatements(Map<Class<?>, String> selectStatements) {
+        this.selectStatements = selectStatements;
+    }
+
+    public boolean isDbIdentityUsed() {
+        return this.isDbIdentityUsed;
+    }
+
+    public void setDbIdentityUsed(boolean isDbIdentityUsed) {
+        this.isDbIdentityUsed = isDbIdentityUsed;
+    }
+
+    public boolean isDbHistoryUsed() {
+        return this.isDbHistoryUsed;
+    }
+
+    public void setDbHistoryUsed(boolean isDbHistoryUsed) {
+        this.isDbHistoryUsed = isDbHistoryUsed;
+    }
+
+    public void setDatabaseTablePrefix(String databaseTablePrefix) {
+        this.databaseTablePrefix = databaseTablePrefix;
+    }
+
+    public String getDatabaseTablePrefix() {
+        return this.databaseTablePrefix;
+    }
+
+    public String getDatabaseCatalog() {
+        return this.databaseCatalog;
+    }
+
+    public void setDatabaseCatalog(String databaseCatalog) {
+        this.databaseCatalog = databaseCatalog;
+    }
+
+    public String getDatabaseSchema() {
+        return this.databaseSchema;
+    }
+
+    public void setDatabaseSchema(String databaseSchema) {
+        this.databaseSchema = databaseSchema;
+    }
+
+    public void setTablePrefixIsSchema(boolean tablePrefixIsSchema) {
+        this.tablePrefixIsSchema = tablePrefixIsSchema;
+    }
+
+    public boolean isTablePrefixIsSchema() {
+        return this.tablePrefixIsSchema;
+    }
+
+    public int getMaxNrOfStatementsInBulkInsert() {
+        return this.maxNrOfStatementsInBulkInsert;
+    }
+
+    public void setMaxNrOfStatementsInBulkInsert(int maxNrOfStatementsInBulkInsert) {
+        this.maxNrOfStatementsInBulkInsert = maxNrOfStatementsInBulkInsert;
+    }
+}

--
Gitblit v1.9.3