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> databaseSpecificStatements = new HashMap(); protected static Map, 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 statementMappings; protected Map, String> insertStatements = new ConcurrentHashMap(); protected Map, String> bulkInsertStatements = new ConcurrentHashMap(); protected Map, String> updateStatements = new ConcurrentHashMap(); protected Map, String> deleteStatements = new ConcurrentHashMap(); protected Map, String> bulkDeleteStatements = new ConcurrentHashMap(); protected Map, 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 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, 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 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 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 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 getStatementMappings() { return this.statementMappings; } public void setStatementMappings(Map statementMappings) { this.statementMappings = statementMappings; } public Map, String> getInsertStatements() { return this.insertStatements; } public void setInsertStatements(Map, String> insertStatements) { this.insertStatements = insertStatements; } public Map, String> getBulkInsertStatements() { return this.bulkInsertStatements; } public void setBulkInsertStatements(Map, String> bulkInsertStatements) { this.bulkInsertStatements = bulkInsertStatements; } public Map, String> getUpdateStatements() { return this.updateStatements; } public void setUpdateStatements(Map, String> updateStatements) { this.updateStatements = updateStatements; } public Map, String> getDeleteStatements() { return this.deleteStatements; } public void setDeleteStatements(Map, String> deleteStatements) { this.deleteStatements = deleteStatements; } public Map, String> getBulkDeleteStatements() { return this.bulkDeleteStatements; } public void setBulkDeleteStatements(Map, String> bulkDeleteStatements) { this.bulkDeleteStatements = bulkDeleteStatements; } public Map, String> getSelectStatements() { return this.selectStatements; } public void setSelectStatements(Map, 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; } }