integrated logic for existing schema
This commit is contained in:
parent
9755ff98ca
commit
51ae3c97e3
|
@ -16,27 +16,28 @@ public class DbScriptRunner {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(DbScriptRunner.class);
|
private static final Logger logger = LoggerFactory.getLogger(DbScriptRunner.class);
|
||||||
|
|
||||||
private static final String SQL = "/sql";
|
private static final String SQL = "/sql";
|
||||||
private static final String DB_STRUCTURE = SQL + "/db-structure.sql";
|
private static final String DB_SCHEMA = SQL + "/taskana-schema.sql";
|
||||||
|
private static final String DB_SCHEMA_DETECTION = SQL + "/schema-detection.sql";
|
||||||
|
|
||||||
private DataSource dataSource;
|
private DataSource dataSource;
|
||||||
|
|
||||||
|
private StringWriter outWriter = new StringWriter();
|
||||||
|
private PrintWriter logWriter = new PrintWriter(outWriter);
|
||||||
|
private StringWriter errorWriter = new StringWriter();
|
||||||
|
private PrintWriter errorLogWriter = new PrintWriter(errorWriter);
|
||||||
|
|
||||||
public DbScriptRunner(DataSource dataSource) {
|
public DbScriptRunner(DataSource dataSource) {
|
||||||
super();
|
super();
|
||||||
this.dataSource = dataSource;
|
this.dataSource = dataSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Run all db scripts
|
* Run all db scripts
|
||||||
*
|
*
|
||||||
* @throws SQLException
|
* @throws SQLException
|
||||||
*/
|
*/
|
||||||
public void run() throws SQLException {
|
public void run() throws SQLException {
|
||||||
StringWriter outWriter = new StringWriter();
|
|
||||||
PrintWriter logWriter = new PrintWriter(outWriter);
|
|
||||||
|
|
||||||
StringWriter errorWriter = new StringWriter();
|
|
||||||
PrintWriter errorLogWriter = new PrintWriter(errorWriter);
|
|
||||||
|
|
||||||
ScriptRunner runner = new ScriptRunner(dataSource.getConnection());
|
ScriptRunner runner = new ScriptRunner(dataSource.getConnection());
|
||||||
logger.debug(dataSource.getConnection().getMetaData().toString());
|
logger.debug(dataSource.getConnection().getMetaData().toString());
|
||||||
|
|
||||||
|
@ -44,7 +45,9 @@ public class DbScriptRunner {
|
||||||
runner.setLogWriter(logWriter);
|
runner.setLogWriter(logWriter);
|
||||||
runner.setErrorLogWriter(errorLogWriter);
|
runner.setErrorLogWriter(errorLogWriter);
|
||||||
|
|
||||||
runner.runScript(new InputStreamReader(this.getClass().getResourceAsStream(DB_STRUCTURE)));
|
if (!isSchemaPreexisting(runner)) {
|
||||||
|
runner.runScript(new InputStreamReader(this.getClass().getResourceAsStream(DB_SCHEMA)));
|
||||||
|
}
|
||||||
runner.closeConnection();
|
runner.closeConnection();
|
||||||
|
|
||||||
logger.debug(outWriter.toString());
|
logger.debug(outWriter.toString());
|
||||||
|
@ -53,6 +56,17 @@ public class DbScriptRunner {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isSchemaPreexisting(ScriptRunner runner) {
|
||||||
|
try {
|
||||||
|
runner.runScript(new InputStreamReader(this.getClass().getResourceAsStream(DB_SCHEMA_DETECTION)));
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.debug("Schema does not exist.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
logger.debug("Schema does exist.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public DataSource getDataSource() {
|
public DataSource getDataSource() {
|
||||||
return dataSource;
|
return dataSource;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,77 +0,0 @@
|
||||||
CREATE TABLE IF NOT EXISTS TASK(
|
|
||||||
ID varchar(36) NOT NULL,
|
|
||||||
TENANT_ID varchar(36) NULL,
|
|
||||||
CREATED TIMESTAMP NULL,
|
|
||||||
CLAIMED TIMESTAMP NULL,
|
|
||||||
COMPLETED TIMESTAMP NULL,
|
|
||||||
MODIFIED TIMESTAMP NULL,
|
|
||||||
PLANNED TIMESTAMP NULL,
|
|
||||||
DUE TIMESTAMP NULL,
|
|
||||||
NAME varchar(1024) NULL,
|
|
||||||
DESCRIPTION varchar(4096) NULL,
|
|
||||||
PRIORITY INT NULL,
|
|
||||||
STATE varchar(20) NULL,
|
|
||||||
TYPE varchar(255) NULL,
|
|
||||||
WORKBASKETID varchar(36) NULL,
|
|
||||||
OWNER varchar(255) NULL,
|
|
||||||
PRIMARY_OBJ_REF_ID varchar(36) NULL,
|
|
||||||
IS_READ bit NOT NULL,
|
|
||||||
IS_TRANSFERRED bit NOT NULL,
|
|
||||||
PRIMARY KEY (ID)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS WORKBASKET(
|
|
||||||
ID varchar(36) NOT NULL,
|
|
||||||
TENANT_ID varchar(36) NULL,
|
|
||||||
CREATED TIMESTAMP NULL,
|
|
||||||
MODIFIED TIMESTAMP NULL,
|
|
||||||
NAME varchar(255) NULL,
|
|
||||||
DESCRIPTION varchar(255) NULL,
|
|
||||||
OWNER varchar(255) NULL,
|
|
||||||
PRIMARY KEY (ID),
|
|
||||||
CONSTRAINT UC_NAME UNIQUE (NAME)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS DISTRIBUTION_TARGETS(
|
|
||||||
SOURCE_ID varchar(36) NOT NULL,
|
|
||||||
TARGET_ID varchar(36) NOT NULL,
|
|
||||||
PRIMARY KEY (SOURCE_ID, TARGET_ID)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS CLASSIFICATION(
|
|
||||||
ID varchar(36) NOT NULL,
|
|
||||||
TENANT_ID varchar(36) NULL,
|
|
||||||
PARENT_CLASSIFICATION_ID varchar(255),
|
|
||||||
CATEGORY varchar(255),
|
|
||||||
TYPE varchar(255),
|
|
||||||
CREATED DATE NULL,
|
|
||||||
MODIFIED DATE NULL,
|
|
||||||
NAME varchar(255) NULL,
|
|
||||||
DESCRIPTION varchar(255) NULL,
|
|
||||||
PRIORITY INT NULL,
|
|
||||||
SERVICE_LEVEL varchar(255) NULL,
|
|
||||||
PRIMARY KEY (ID)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS WORKBASKET_ACCESS_LIST(
|
|
||||||
ID varchar(36) NOT NULL,
|
|
||||||
WORKBASKET_ID varchar(36) NOT NULL,
|
|
||||||
USER_ID varchar(255) NULL,
|
|
||||||
GROUP_ID varchar(255) NULL,
|
|
||||||
READ bit NOT NULL,
|
|
||||||
OPEN bit NOT NULL,
|
|
||||||
APPEND bit NOT NULL,
|
|
||||||
TRANSFER bit NOT NULL,
|
|
||||||
DISTRIBUTE bit NOT NULL,
|
|
||||||
PRIMARY KEY (ID)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS OBJECT_REFERENCE(
|
|
||||||
ID varchar(36) NOT NULL,
|
|
||||||
TENANT_ID varchar(36) NULL,
|
|
||||||
COMPANY varchar(32) NOT NULL,
|
|
||||||
SYSTEM varchar(32) NOT NULL,
|
|
||||||
SYSTEM_INSTANCE varchar(32) NOT NULL,
|
|
||||||
TYPE varchar(32) NOT NULL,
|
|
||||||
VALUE varchar(128) NOT NULL
|
|
||||||
);
|
|
|
@ -0,0 +1 @@
|
||||||
|
SELECT COUNT(*) FROM TASKANA_SCHEMA_VERSION;
|
|
@ -0,0 +1,74 @@
|
||||||
|
CREATE TABLE TASKANA_SCHEMA_VERSION(
|
||||||
|
ID VARCHAR(36) NOT NULL,
|
||||||
|
VERSION VARCHAR(255) NOT NULL,
|
||||||
|
PRIMARY KEY (ID)
|
||||||
|
);
|
||||||
|
INSERT INTO TASKANA_SCHEMA_VERSION VALUES ('1', '0.0.1');
|
||||||
|
|
||||||
|
CREATE TABLE TASK(
|
||||||
|
ID VARCHAR(36) NOT NULL,
|
||||||
|
TENANT_ID VARCHAR(36) NULL,
|
||||||
|
CREATED TIMESTAMP NULL,
|
||||||
|
CLAIMED TIMESTAMP NULL,
|
||||||
|
COMPLETED TIMESTAMP NULL,
|
||||||
|
MODIFIED TIMESTAMP NULL,
|
||||||
|
PLANNED TIMESTAMP NULL,
|
||||||
|
DUE TIMESTAMP NULL,
|
||||||
|
NAME VARCHAR(1024) NULL,
|
||||||
|
DESCRIPTION VARCHAR(4096) NULL,
|
||||||
|
PRIORITY INT NULL,
|
||||||
|
STATE VARCHAR(20) NULL,
|
||||||
|
TYPE VARCHAR(255) NULL,
|
||||||
|
WORKBASKETID VARCHAR(36) NULL,
|
||||||
|
OWNER VARCHAR(255) NULL,
|
||||||
|
PRIMARY_OBJ_REF_ID varchar(36) NULL,
|
||||||
|
IS_READ BOOLEAN NOT NULL,
|
||||||
|
IS_TRANSFERRED BOOLEAN NOT NULL,
|
||||||
|
PRIMARY KEY (ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE WORKBASKET(
|
||||||
|
ID VARCHAR(36) NOT NULL,
|
||||||
|
TENANT_ID VARCHAR(36) NULL,
|
||||||
|
CREATED TIMESTAMP NULL,
|
||||||
|
MODIFIED TIMESTAMP NULL,
|
||||||
|
NAME VARCHAR(255) NOT NULL,
|
||||||
|
DESCRIPTION VARCHAR(255) NULL,
|
||||||
|
OWNER VARCHAR(255) NULL,
|
||||||
|
PRIMARY KEY (ID),
|
||||||
|
CONSTRAINT UC_NAME UNIQUE (NAME)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE DISTRIBUTION_TARGETS(
|
||||||
|
SOURCE_ID VARCHAR(36) NOT NULL,
|
||||||
|
TARGET_ID VARCHAR(36) NOT NULL,
|
||||||
|
PRIMARY KEY (SOURCE_ID, TARGET_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE CLASSIFICATION(
|
||||||
|
ID VARCHAR(36) NOT NULL,
|
||||||
|
TENANT_ID VARCHAR(36) NULL,
|
||||||
|
PARENT_CLASSIFICATION_ID VARCHAR(255),
|
||||||
|
CATEGORY VARCHAR(255),
|
||||||
|
TYPE VARCHAR(255),
|
||||||
|
CREATED DATE NULL,
|
||||||
|
MODIFIED DATE NULL,
|
||||||
|
NAME VARCHAR(255) NULL,
|
||||||
|
DESCRIPTION VARCHAR(255) NULL,
|
||||||
|
PRIORITY INT NULL,
|
||||||
|
SERVICE_LEVEL VARCHAR(255) NULL,
|
||||||
|
PRIMARY KEY (ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE WORKBASKET_ACCESS_LIST(
|
||||||
|
ID VARCHAR(36) NOT NULL,
|
||||||
|
WORKBASKET_ID VARCHAR(36) NOT NULL,
|
||||||
|
USER_ID VARCHAR(255) NULL,
|
||||||
|
GROUP_ID VARCHAR(255) NULL,
|
||||||
|
READ BOOLEAN NOT NULL,
|
||||||
|
OPEN BOOLEAN NOT NULL,
|
||||||
|
APPEND BOOLEAN NOT NULL,
|
||||||
|
TRANSFER BOOLEAN NOT NULL,
|
||||||
|
DISTRIBUTE BOOLEAN NOT NULL,
|
||||||
|
PRIMARY KEY (ID)
|
||||||
|
);
|
|
@ -41,6 +41,7 @@ public class WorkbasketServiceImplIntTest {
|
||||||
int before = workbasketServiceImpl.getWorkbaskets().size();
|
int before = workbasketServiceImpl.getWorkbaskets().size();
|
||||||
Workbasket workbasket = new Workbasket();
|
Workbasket workbasket = new Workbasket();
|
||||||
workbasket.setId("1");
|
workbasket.setId("1");
|
||||||
|
workbasket.setName("Megabasket");
|
||||||
workbasketServiceImpl.createWorkbasket(workbasket);
|
workbasketServiceImpl.createWorkbasket(workbasket);
|
||||||
Assert.assertEquals(before + 1, workbasketServiceImpl.getWorkbaskets().size());
|
Assert.assertEquals(before + 1, workbasketServiceImpl.getWorkbaskets().size());
|
||||||
}
|
}
|
||||||
|
@ -50,12 +51,15 @@ public class WorkbasketServiceImplIntTest {
|
||||||
int before = workbasketServiceImpl.getWorkbaskets().size();
|
int before = workbasketServiceImpl.getWorkbaskets().size();
|
||||||
Workbasket workbasket0 = new Workbasket();
|
Workbasket workbasket0 = new Workbasket();
|
||||||
workbasket0.setId("0");
|
workbasket0.setId("0");
|
||||||
|
workbasket0.setName("Superbasket");
|
||||||
workbasketServiceImpl.createWorkbasket(workbasket0);
|
workbasketServiceImpl.createWorkbasket(workbasket0);
|
||||||
Workbasket workbasket1 = new Workbasket();
|
Workbasket workbasket1 = new Workbasket();
|
||||||
workbasket1.setId("1");
|
workbasket1.setId("1");
|
||||||
|
workbasket1.setName("Megabasket");
|
||||||
workbasketServiceImpl.createWorkbasket(workbasket1);
|
workbasketServiceImpl.createWorkbasket(workbasket1);
|
||||||
Workbasket workbasket2 = new Workbasket();
|
Workbasket workbasket2 = new Workbasket();
|
||||||
workbasket2.setId("2");
|
workbasket2.setId("2");
|
||||||
|
workbasket2.setName("Hyperbasket");
|
||||||
workbasketServiceImpl.createWorkbasket(workbasket2);
|
workbasketServiceImpl.createWorkbasket(workbasket2);
|
||||||
Assert.assertEquals(before + 3, workbasketServiceImpl.getWorkbaskets().size());
|
Assert.assertEquals(before + 3, workbasketServiceImpl.getWorkbaskets().size());
|
||||||
}
|
}
|
||||||
|
@ -64,12 +68,15 @@ public class WorkbasketServiceImplIntTest {
|
||||||
public void testSelectWorkbasket() throws WorkbasketNotFoundException, NotAuthorizedException {
|
public void testSelectWorkbasket() throws WorkbasketNotFoundException, NotAuthorizedException {
|
||||||
Workbasket workbasket0 = new Workbasket();
|
Workbasket workbasket0 = new Workbasket();
|
||||||
workbasket0.setId("0");
|
workbasket0.setId("0");
|
||||||
|
workbasket0.setName("Superbasket");
|
||||||
workbasketServiceImpl.createWorkbasket(workbasket0);
|
workbasketServiceImpl.createWorkbasket(workbasket0);
|
||||||
Workbasket workbasket1 = new Workbasket();
|
Workbasket workbasket1 = new Workbasket();
|
||||||
workbasket1.setId("1");
|
workbasket1.setId("1");
|
||||||
|
workbasket1.setName("Megabasket");
|
||||||
workbasketServiceImpl.createWorkbasket(workbasket1);
|
workbasketServiceImpl.createWorkbasket(workbasket1);
|
||||||
Workbasket workbasket2 = new Workbasket();
|
Workbasket workbasket2 = new Workbasket();
|
||||||
workbasket2.setId("2");
|
workbasket2.setId("2");
|
||||||
|
workbasket2.setName("Hyperbasket");
|
||||||
workbasketServiceImpl.createWorkbasket(workbasket2);
|
workbasketServiceImpl.createWorkbasket(workbasket2);
|
||||||
Workbasket foundWorkbasket = workbasketServiceImpl.getWorkbasket("2");
|
Workbasket foundWorkbasket = workbasketServiceImpl.getWorkbasket("2");
|
||||||
Assert.assertEquals("2", foundWorkbasket.getId());
|
Assert.assertEquals("2", foundWorkbasket.getId());
|
||||||
|
@ -84,10 +91,13 @@ public class WorkbasketServiceImplIntTest {
|
||||||
public void testSelectWorkbasketWithDistribution() throws WorkbasketNotFoundException, NotAuthorizedException {
|
public void testSelectWorkbasketWithDistribution() throws WorkbasketNotFoundException, NotAuthorizedException {
|
||||||
Workbasket workbasket0 = new Workbasket();
|
Workbasket workbasket0 = new Workbasket();
|
||||||
workbasket0.setId("0");
|
workbasket0.setId("0");
|
||||||
|
workbasket0.setName("Superbasket");
|
||||||
Workbasket workbasket1 = new Workbasket();
|
Workbasket workbasket1 = new Workbasket();
|
||||||
workbasket1.setId("1");
|
workbasket1.setId("1");
|
||||||
|
workbasket1.setName("Megabasket");
|
||||||
Workbasket workbasket2 = new Workbasket();
|
Workbasket workbasket2 = new Workbasket();
|
||||||
workbasket2.setId("2");
|
workbasket2.setId("2");
|
||||||
|
workbasket2.setName("Hyperbasket");
|
||||||
workbasket2.setDistributionTargets(new ArrayList<>());
|
workbasket2.setDistributionTargets(new ArrayList<>());
|
||||||
workbasket2.getDistributionTargets().add(workbasket0);
|
workbasket2.getDistributionTargets().add(workbasket0);
|
||||||
workbasket2.getDistributionTargets().add(workbasket1);
|
workbasket2.getDistributionTargets().add(workbasket1);
|
||||||
|
@ -101,16 +111,20 @@ public class WorkbasketServiceImplIntTest {
|
||||||
public void testUpdateWorkbasket() throws Exception {
|
public void testUpdateWorkbasket() throws Exception {
|
||||||
Workbasket workbasket0 = new Workbasket();
|
Workbasket workbasket0 = new Workbasket();
|
||||||
workbasket0.setId("0");
|
workbasket0.setId("0");
|
||||||
|
workbasket0.setName("Superbasket");
|
||||||
Workbasket workbasket1 = new Workbasket();
|
Workbasket workbasket1 = new Workbasket();
|
||||||
workbasket1.setId("1");
|
workbasket1.setId("1");
|
||||||
|
workbasket1.setName("Megabasket");
|
||||||
Workbasket workbasket2 = new Workbasket();
|
Workbasket workbasket2 = new Workbasket();
|
||||||
workbasket2.setId("2");
|
workbasket2.setId("2");
|
||||||
|
workbasket2.setName("Hyperbasket");
|
||||||
workbasket2.getDistributionTargets().add(workbasket0);
|
workbasket2.getDistributionTargets().add(workbasket0);
|
||||||
workbasket2.getDistributionTargets().add(workbasket1);
|
workbasket2.getDistributionTargets().add(workbasket1);
|
||||||
workbasketServiceImpl.createWorkbasket(workbasket2);
|
workbasketServiceImpl.createWorkbasket(workbasket2);
|
||||||
|
|
||||||
Workbasket workbasket3 = new Workbasket();
|
Workbasket workbasket3 = new Workbasket();
|
||||||
workbasket3.setId("3");
|
workbasket3.setId("3");
|
||||||
|
workbasket3.setName("hm ... irgend ein basket");
|
||||||
workbasket2.getDistributionTargets().clear();
|
workbasket2.getDistributionTargets().clear();
|
||||||
workbasket2.getDistributionTargets().add(workbasket3);
|
workbasket2.getDistributionTargets().add(workbasket3);
|
||||||
Thread.sleep(100);
|
Thread.sleep(100);
|
||||||
|
|
|
@ -34,7 +34,11 @@
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-tx</artifactId>
|
<artifactId>spring-tx</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.h2database</groupId>
|
||||||
|
<artifactId>h2</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.taskana</groupId>
|
<groupId>org.taskana</groupId>
|
||||||
<artifactId>taskana-core</artifactId>
|
<artifactId>taskana-core</artifactId>
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
logging.level.org.taskana=DEBUG
|
|
@ -5,8 +5,7 @@
|
||||||
|
|
||||||
<tx:annotation-driven transaction-manager="transactionManager" />
|
<tx:annotation-driven transaction-manager="transactionManager" />
|
||||||
|
|
||||||
<bean id="dataSource"
|
<bean id="dataSource" class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
|
||||||
class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
|
|
||||||
<property name="targetDataSource">
|
<property name="targetDataSource">
|
||||||
<bean class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
|
<bean class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
|
||||||
<property name="driverClass" value="org.h2.Driver" />
|
<property name="driverClass" value="org.h2.Driver" />
|
||||||
|
@ -18,31 +17,14 @@
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<!-- <bean id="dataSource" class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy">
|
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
|
||||||
<property name="targetDataSource"> <bean class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
|
|
||||||
<property name="driverClass" value="com.ibm.db2.jcc.DB2Driver" /> <property
|
|
||||||
name="url" value="jdbc:db2://localhost:50000/SAMPLE:retrieveMessagesFromServerOnGetMessage=true;"
|
|
||||||
/> <property name="username" value="eh" /> <property name="password" value=""
|
|
||||||
/> </bean> </property> </bean> -->
|
|
||||||
|
|
||||||
<bean id="transactionManager"
|
|
||||||
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
|
|
||||||
<property name="dataSource" ref="dataSource" />
|
<property name="dataSource" ref="dataSource" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="taskEngineConfiguration" class="SpringTaskanaEngineConfiguration">
|
<bean id="taskanaEngineConfiguration" class="org.taskana.configuration.SpringTaskanaEngineConfiguration">
|
||||||
<property name="dataSource" ref="dataSource" />
|
|
||||||
<property name="transactionManager" ref="transactionManager" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="taskEngineConfiguration" class="SpringTaskanaEngineConfiguration">
|
|
||||||
<property name="dataSource" ref="dataSource" />
|
<property name="dataSource" ref="dataSource" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="taskEngine" factory-bean="taskEngineConfiguration"
|
<bean id="taskanaEngine" factory-bean="taskanaEngineConfiguration" factory-method="buildTaskanaEngine" />
|
||||||
factory-method="createTaskEngineConfiguration">
|
<bean id="taskService" factory-bean="taskanaEngine" factory-method="getTaskService" />
|
||||||
<property name="transactionManager" ref="transactionManager" />
|
|
||||||
</bean>
|
|
||||||
<bean id="taskService" factory-bean="taskEngine" factory-method="getTaskService" />
|
|
||||||
|
|
||||||
</beans>
|
</beans>
|
|
@ -5,29 +5,21 @@ import java.sql.SQLException;
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
|
|
||||||
import org.apache.ibatis.transaction.managed.ManagedTransactionFactory;
|
import org.apache.ibatis.transaction.managed.ManagedTransactionFactory;
|
||||||
import org.springframework.transaction.PlatformTransactionManager;
|
|
||||||
import org.taskana.configuration.SpringTaskanaEngineConfiguration;
|
import org.taskana.configuration.SpringTaskanaEngineConfiguration;
|
||||||
import org.taskana.impl.TaskanaEngineImpl;
|
import org.taskana.impl.TaskanaEngineImpl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class configures the TaskanaEngine for spring
|
||||||
|
*/
|
||||||
public class SpringTaskanaEngineImpl extends TaskanaEngineImpl {
|
public class SpringTaskanaEngineImpl extends TaskanaEngineImpl {
|
||||||
|
|
||||||
public SpringTaskanaEngineImpl(SpringTaskanaEngineConfiguration taskanaEngineConfiguration) {
|
public SpringTaskanaEngineImpl(SpringTaskanaEngineConfiguration taskanaEngineConfiguration) {
|
||||||
super(taskanaEngineConfiguration);
|
super(taskanaEngineConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
private PlatformTransactionManager transactionManager;
|
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void init() throws SQLException {
|
public void init() throws SQLException {
|
||||||
this.transactionFactory = new ManagedTransactionFactory();
|
this.transactionFactory = new ManagedTransactionFactory();
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlatformTransactionManager getTransactionManager() {
|
|
||||||
return transactionManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTransactionManager(PlatformTransactionManager transactionManager) {
|
|
||||||
this.transactionManager = transactionManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,19 +2,19 @@ package org.taskana.configuration;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
import org.taskana.SpringTaskanaEngineImpl;
|
import org.taskana.SpringTaskanaEngineImpl;
|
||||||
import org.taskana.TaskanaEngine;
|
import org.taskana.TaskanaEngine;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class configures the TaskanaEngineConfiguration for spring
|
||||||
|
*/
|
||||||
public class SpringTaskanaEngineConfiguration extends TaskanaEngineConfiguration {
|
public class SpringTaskanaEngineConfiguration extends TaskanaEngineConfiguration {
|
||||||
|
|
||||||
@PostConstruct
|
private static final Logger logger = LoggerFactory.getLogger(SpringTaskanaEngineConfiguration.class);
|
||||||
public void init() throws SQLException {
|
|
||||||
dbScriptRunner = new DbScriptRunner(this.dataSource);
|
|
||||||
dbScriptRunner.run();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method creates the Spring-based TaskanaEngine without an
|
* This method creates the Spring-based TaskanaEngine without an
|
||||||
|
@ -23,10 +23,19 @@ public class SpringTaskanaEngineConfiguration extends TaskanaEngineConfiguration
|
||||||
* @return the TaskanaEngine
|
* @return the TaskanaEngine
|
||||||
* @throws SQLException
|
* @throws SQLException
|
||||||
*/
|
*/
|
||||||
public TaskanaEngine buildTaskanaEngine() throws SQLException {
|
public TaskanaEngine buildTaskanaEngine() {
|
||||||
|
this.useContainerManagedTransactions = true;
|
||||||
|
|
||||||
|
dbScriptRunner = new DbScriptRunner(this.dataSource);
|
||||||
|
try {
|
||||||
|
dbScriptRunner.run();
|
||||||
|
} catch (SQLException e) {
|
||||||
|
logger.error("The taskana schema could not be created: ", e);
|
||||||
|
}
|
||||||
|
|
||||||
return new SpringTaskanaEngineImpl(this);
|
return new SpringTaskanaEngineImpl(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDataSource(DataSource dataSource) {
|
public void setDataSource(DataSource dataSource) {
|
||||||
this.dataSource = dataSource;
|
this.dataSource = dataSource;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue