TSK-721: Enable connection to db2-instance
Enables Taskana-rest-spring-exxample to run against an DB2-Database. Introduced Flag to define if sample data should be inserted
This commit is contained in:
parent
5ed3b02f2c
commit
0ce2c141c0
|
|
@ -61,13 +61,10 @@ public class DbSchemaCreator {
|
||||||
*/
|
*/
|
||||||
public void run() throws SQLException {
|
public void run() throws SQLException {
|
||||||
Connection connection = dataSource.getConnection();
|
Connection connection = dataSource.getConnection();
|
||||||
ScriptRunner runner = new ScriptRunner(connection);
|
LOGGER.debug("Using database of type {} with url '{}'", connection.getMetaData().getDatabaseProductName(), connection.getMetaData().getURL());
|
||||||
LOGGER.debug(connection.getMetaData().toString());
|
ScriptRunner runner = getScriptRunnerInstance(connection);
|
||||||
runner.setStopOnError(true);
|
|
||||||
runner.setLogWriter(logWriter);
|
|
||||||
runner.setErrorLogWriter(errorLogWriter);
|
|
||||||
try {
|
try {
|
||||||
if (!isSchemaPreexisting(runner, connection.getMetaData().getDatabaseProductName())) {
|
if (!isSchemaPreexisting(connection)) {
|
||||||
BufferedReader reader = new BufferedReader(new InputStreamReader(this.getClass()
|
BufferedReader reader = new BufferedReader(new InputStreamReader(this.getClass()
|
||||||
.getResourceAsStream(selectDbScriptFileName(connection.getMetaData().getDatabaseProductName()))));
|
.getResourceAsStream(selectDbScriptFileName(connection.getMetaData().getDatabaseProductName()))));
|
||||||
runner.runScript(getSqlSchemaNameParsed(reader));
|
runner.runScript(getSqlSchemaNameParsed(reader));
|
||||||
|
|
@ -81,10 +78,19 @@ public class DbSchemaCreator {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isSchemaPreexisting(ScriptRunner runner, String productName) {
|
private ScriptRunner getScriptRunnerInstance(Connection connection) {
|
||||||
|
ScriptRunner runner = new ScriptRunner(connection);
|
||||||
|
runner.setStopOnError(true);
|
||||||
|
runner.setLogWriter(logWriter);
|
||||||
|
runner.setErrorLogWriter(errorLogWriter);
|
||||||
|
return runner;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isSchemaPreexisting(Connection connection) {
|
||||||
|
ScriptRunner runner = getScriptRunnerInstance(connection);
|
||||||
try {
|
try {
|
||||||
BufferedReader reader = new BufferedReader(new InputStreamReader(this.getClass()
|
BufferedReader reader = new BufferedReader(new InputStreamReader(this.getClass()
|
||||||
.getResourceAsStream(selectDbSchemaDetectionScript(productName))));
|
.getResourceAsStream(selectDbSchemaDetectionScript(connection.getMetaData().getDatabaseProductName()))));
|
||||||
runner.runScript(getSqlSchemaNameParsed(reader));
|
runner.runScript(getSqlSchemaNameParsed(reader));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOGGER.debug("Schema does not exist.");
|
LOGGER.debug("Schema does not exist.");
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,31 @@ CREATE TABLE SCHEDULED_JOB(
|
||||||
LOCK_EXPIRES TIMESTAMP NULL,
|
LOCK_EXPIRES TIMESTAMP NULL,
|
||||||
TYPE VARCHAR(32) NULL,
|
TYPE VARCHAR(32) NULL,
|
||||||
RETRY_COUNT INTEGER NOT NULL,
|
RETRY_COUNT INTEGER NOT NULL,
|
||||||
ARGUMENTS TEXT NULL,
|
ARGUMENTS CLOB NULL,
|
||||||
PRIMARY KEY (JOB_ID)
|
PRIMARY KEY (JOB_ID)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
DROP SEQUENCE JOB_SEQ;
|
||||||
|
|
||||||
|
CREATE SEQUENCE SCHEDULED_JOB_SEQ
|
||||||
|
MINVALUE 1
|
||||||
|
START WITH 1
|
||||||
|
INCREMENT BY 1
|
||||||
|
CACHE 10;
|
||||||
|
|
||||||
|
ALTER TABLE CLASSIFICATION
|
||||||
|
ADD COLUMN PARENT_KEY
|
||||||
|
VARCHAR(32) NOT NULL DEFAULT '';
|
||||||
|
|
||||||
|
UPDATE CLASSIFICATION C
|
||||||
|
SET C.PARENT_KEY =
|
||||||
|
(SELECT KEY FROM CLASSIFICATION WHERE ID = C.PARENT_ID)
|
||||||
|
WHERE C.PARENT_ID != '';
|
||||||
|
|
||||||
|
ALTER TABLE TASK
|
||||||
|
ADD COLUMN CALLBACK_INFO
|
||||||
|
CLOB NULL DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE WORKBASKET_ACCESS_LIST
|
||||||
|
ADD COLUMN ACCESS_NAME
|
||||||
|
VARCHAR(255) NULL DEFAULT NULL;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
-- this script migrates the schema only.
|
||||||
|
-- data is not migrated, as this is currently not necessary.
|
||||||
|
|
||||||
|
SET SCHEMA %schemaName%;
|
||||||
|
|
||||||
|
DROP TABLE TASKANA_SCHEMA_VERSION;
|
||||||
|
|
||||||
|
CREATE TABLE TASKANA_SCHEMA_VERSION(
|
||||||
|
ID INT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
|
||||||
|
VERSION VARCHAR(255) NOT NULL,
|
||||||
|
CREATED TIMESTAMP NOT NULL,
|
||||||
|
PRIMARY KEY (ID)
|
||||||
|
);
|
||||||
|
INSERT INTO TASKANA_SCHEMA_VERSION (VERSION, CREATED) VALUES ('0.9.2', CURRENT_TIMESTAMP);
|
||||||
|
INSERT INTO TASKANA_SCHEMA_VERSION (VERSION, CREATED) VALUES ('1.0.2', CURRENT_TIMESTAMP);
|
||||||
|
|
||||||
|
DROP TABLE JOB;
|
||||||
|
|
||||||
|
CREATE TABLE SCHEDULED_JOB(
|
||||||
|
JOB_ID INTEGER NOT NULL,
|
||||||
|
PRIORITY INTEGER NULL,
|
||||||
|
CREATED TIMESTAMP NULL,
|
||||||
|
DUE TIMESTAMP NULL,
|
||||||
|
STATE VARCHAR(32) NULL,
|
||||||
|
LOCKED_BY VARCHAR(32) NULL,
|
||||||
|
LOCK_EXPIRES TIMESTAMP NULL,
|
||||||
|
TYPE VARCHAR(32) NULL,
|
||||||
|
RETRY_COUNT INTEGER NOT NULL,
|
||||||
|
ARGUMENTS CLOB NULL,
|
||||||
|
PRIMARY KEY (JOB_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP SEQUENCE JOB_SEQ;
|
||||||
|
|
||||||
|
CREATE SEQUENCE SCHEDULED_JOB_SEQ
|
||||||
|
MINVALUE 1
|
||||||
|
START WITH 1
|
||||||
|
INCREMENT BY 1
|
||||||
|
CACHE 10;
|
||||||
|
|
||||||
|
ALTER TABLE CLASSIFICATION
|
||||||
|
ADD COLUMN PARENT_KEY
|
||||||
|
VARCHAR(32) NOT NULL DEFAULT '';
|
||||||
|
|
||||||
|
UPDATE CLASSIFICATION C
|
||||||
|
SET C.PARENT_KEY =
|
||||||
|
(SELECT KEY FROM CLASSIFICATION WHERE ID = C.PARENT_ID)
|
||||||
|
WHERE C.PARENT_ID != '';
|
||||||
|
|
||||||
|
ALTER TABLE TASK
|
||||||
|
ADD COLUMN CALLBACK_INFO
|
||||||
|
CLOB NULL DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE WORKBASKET_ACCESS_LIST
|
||||||
|
ADD COLUMN ACCESS_NAME
|
||||||
|
VARCHAR(255) NULL DEFAULT NULL;
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
-- this script migrates the schema only.
|
||||||
|
-- data is not migrated, as this is currently not necessary.
|
||||||
|
|
||||||
|
SET SCHEMA %schemaName%;
|
||||||
|
|
||||||
|
DROP TABLE TASKANA_SCHEMA_VERSION;
|
||||||
|
|
||||||
|
CREATE TABLE TASKANA_SCHEMA_VERSION(
|
||||||
|
ID INT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
|
||||||
|
VERSION VARCHAR(255) NOT NULL,
|
||||||
|
CREATED TIMESTAMP NOT NULL,
|
||||||
|
PRIMARY KEY (ID)
|
||||||
|
);
|
||||||
|
INSERT INTO TASKANA_SCHEMA_VERSION (VERSION, CREATED) VALUES ('0.9.2', CURRENT_TIMESTAMP);
|
||||||
|
INSERT INTO TASKANA_SCHEMA_VERSION (VERSION, CREATED) VALUES ('1.0.2', CURRENT_TIMESTAMP);
|
||||||
|
|
||||||
|
DROP TABLE JOB;
|
||||||
|
|
||||||
|
CREATE TABLE SCHEDULED_JOB(
|
||||||
|
JOB_ID INTEGER NOT NULL,
|
||||||
|
PRIORITY INTEGER NULL,
|
||||||
|
CREATED TIMESTAMP NULL,
|
||||||
|
DUE TIMESTAMP NULL,
|
||||||
|
STATE VARCHAR(32) NULL,
|
||||||
|
LOCKED_BY VARCHAR(32) NULL,
|
||||||
|
LOCK_EXPIRES TIMESTAMP NULL,
|
||||||
|
TYPE VARCHAR(32) NULL,
|
||||||
|
RETRY_COUNT INTEGER NOT NULL,
|
||||||
|
ARGUMENTS TEXT NULL,
|
||||||
|
PRIMARY KEY (JOB_ID)
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP SEQUENCE JOB_SEQ;
|
||||||
|
|
||||||
|
CREATE SEQUENCE SCHEDULED_JOB_SEQ
|
||||||
|
MINVALUE 1
|
||||||
|
START WITH 1
|
||||||
|
INCREMENT BY 1
|
||||||
|
CACHE 10;
|
||||||
|
|
||||||
|
ALTER TABLE CLASSIFICATION
|
||||||
|
ADD COLUMN PARENT_KEY
|
||||||
|
VARCHAR(32) NOT NULL DEFAULT '';
|
||||||
|
|
||||||
|
UPDATE CLASSIFICATION C
|
||||||
|
SET C.PARENT_KEY =
|
||||||
|
(SELECT KEY FROM CLASSIFICATION WHERE ID = C.PARENT_ID)
|
||||||
|
WHERE C.PARENT_ID != '';
|
||||||
|
|
||||||
|
ALTER TABLE TASK
|
||||||
|
ADD COLUMN CALLBACK_INFO
|
||||||
|
TEXT NULL DEFAULT NULL;
|
||||||
|
|
||||||
|
ALTER TABLE WORKBASKET_ACCESS_LIST
|
||||||
|
ADD COLUMN ACCESS_NAME
|
||||||
|
VARCHAR(255) NULL DEFAULT NULL;
|
||||||
|
|
@ -67,6 +67,12 @@
|
||||||
<artifactId>h2</artifactId>
|
<artifactId>h2</artifactId>
|
||||||
<version>1.4.197</version>
|
<version>1.4.197</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.ibm.db2.jcc</groupId>
|
||||||
|
<artifactId>db2jcc4</artifactId>
|
||||||
|
<version>11.1.1.1</version>
|
||||||
|
</dependency>
|
||||||
<!-- https://mvnrepository.com/artifact/postgresql/postgresql -->
|
<!-- https://mvnrepository.com/artifact/postgresql/postgresql -->
|
||||||
<!-- Postgresql driver dependency
|
<!-- Postgresql driver dependency
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
@ -193,4 +199,14 @@
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
this repository is needed to fetch com.ibm.db2.jcc
|
||||||
|
-->
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>novatec public</id>
|
||||||
|
<name>novatec-repository</name>
|
||||||
|
<url>https://repository.novatec-gmbh.de/content/repositories/novatec/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,12 @@ public class ExampleRestApplication {
|
||||||
@Value("${taskana.schemaName:TASKANA}")
|
@Value("${taskana.schemaName:TASKANA}")
|
||||||
public String schemaName;
|
public String schemaName;
|
||||||
|
|
||||||
|
@Value("${generateSampleData:true}")
|
||||||
|
public boolean generateSampleData;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SampleDataGenerator sampleDataGenerator;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private LdapClient ldapClient;
|
private LdapClient ldapClient;
|
||||||
|
|
||||||
|
|
@ -69,8 +75,7 @@ public class ExampleRestApplication {
|
||||||
@Bean
|
@Bean
|
||||||
@DependsOn("taskanaEngineConfiguration") // generate sample data after schema was inserted
|
@DependsOn("taskanaEngineConfiguration") // generate sample data after schema was inserted
|
||||||
public SampleDataGenerator generateSampleData(DataSource dataSource) throws SQLException {
|
public SampleDataGenerator generateSampleData(DataSource dataSource) throws SQLException {
|
||||||
SampleDataGenerator sampleDataGenerator = new SampleDataGenerator(dataSource);
|
SampleDataGenerator sampleDataGenerator = new SampleDataGenerator(dataSource);
|
||||||
sampleDataGenerator.generateSampleData(schemaName);
|
|
||||||
return sampleDataGenerator;
|
return sampleDataGenerator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -79,5 +84,8 @@ public class ExampleRestApplication {
|
||||||
if (!ldapClient.useLdap()) {
|
if (!ldapClient.useLdap()) {
|
||||||
AccessIdController.setLdapCache(ldapCacheTest);
|
AccessIdController.setLdapCache(ldapCacheTest);
|
||||||
}
|
}
|
||||||
|
if (generateSampleData) {
|
||||||
|
sampleDataGenerator.generateSampleData(schemaName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue