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
afe618eba4
commit
6f7b5b7e8c
|
@ -61,13 +61,10 @@ public class DbSchemaCreator {
|
|||
*/
|
||||
public void run() throws SQLException {
|
||||
Connection connection = dataSource.getConnection();
|
||||
ScriptRunner runner = new ScriptRunner(connection);
|
||||
LOGGER.debug(connection.getMetaData().toString());
|
||||
runner.setStopOnError(true);
|
||||
runner.setLogWriter(logWriter);
|
||||
runner.setErrorLogWriter(errorLogWriter);
|
||||
LOGGER.debug("Using database of type {} with url '{}'", connection.getMetaData().getDatabaseProductName(), connection.getMetaData().getURL());
|
||||
ScriptRunner runner = getScriptRunnerInstance(connection);
|
||||
try {
|
||||
if (!isSchemaPreexisting(runner, connection.getMetaData().getDatabaseProductName())) {
|
||||
if (!isSchemaPreexisting(connection)) {
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(this.getClass()
|
||||
.getResourceAsStream(selectDbScriptFileName(connection.getMetaData().getDatabaseProductName()))));
|
||||
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 {
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(this.getClass()
|
||||
.getResourceAsStream(selectDbSchemaDetectionScript(productName))));
|
||||
.getResourceAsStream(selectDbSchemaDetectionScript(connection.getMetaData().getDatabaseProductName()))));
|
||||
runner.runScript(getSqlSchemaNameParsed(reader));
|
||||
} catch (Exception e) {
|
||||
LOGGER.debug("Schema does not exist.");
|
||||
|
|
|
@ -26,7 +26,31 @@ CREATE TABLE SCHEDULED_JOB(
|
|||
LOCK_EXPIRES TIMESTAMP NULL,
|
||||
TYPE VARCHAR(32) NULL,
|
||||
RETRY_COUNT INTEGER NOT NULL,
|
||||
ARGUMENTS TEXT 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 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>
|
||||
<version>1.4.197</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.ibm.db2.jcc</groupId>
|
||||
<artifactId>db2jcc4</artifactId>
|
||||
<version>11.1.1.1</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/postgresql/postgresql -->
|
||||
<!-- Postgresql driver dependency
|
||||
<dependency>
|
||||
|
@ -193,4 +199,14 @@
|
|||
</plugins>
|
||||
</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>
|
||||
|
|
|
@ -38,6 +38,12 @@ public class ExampleRestApplication {
|
|||
@Value("${taskana.schemaName:TASKANA}")
|
||||
public String schemaName;
|
||||
|
||||
@Value("${generateSampleData:true}")
|
||||
public boolean generateSampleData;
|
||||
|
||||
@Autowired
|
||||
private SampleDataGenerator sampleDataGenerator;
|
||||
|
||||
@Autowired
|
||||
private LdapClient ldapClient;
|
||||
|
||||
|
@ -69,8 +75,7 @@ public class ExampleRestApplication {
|
|||
@Bean
|
||||
@DependsOn("taskanaEngineConfiguration") // generate sample data after schema was inserted
|
||||
public SampleDataGenerator generateSampleData(DataSource dataSource) throws SQLException {
|
||||
SampleDataGenerator sampleDataGenerator = new SampleDataGenerator(dataSource);
|
||||
sampleDataGenerator.generateSampleData(schemaName);
|
||||
SampleDataGenerator sampleDataGenerator = new SampleDataGenerator(dataSource);
|
||||
return sampleDataGenerator;
|
||||
}
|
||||
|
||||
|
@ -79,5 +84,8 @@ public class ExampleRestApplication {
|
|||
if (!ldapClient.useLdap()) {
|
||||
AccessIdController.setLdapCache(ldapCacheTest);
|
||||
}
|
||||
if (generateSampleData) {
|
||||
sampleDataGenerator.generateSampleData(schemaName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue