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