<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.operaton.bpm</groupId>
    <artifactId>operaton-parent</artifactId>
    <relativePath>../parent</relativePath>
    <version>2.1.0</version>
  </parent>

  <artifactId>operaton-database-settings</artifactId>
  <packaging>pom</packaging>
  <name>Operaton - Database Settings</name>
  <description>Provides general dependencies and profiles for database testing</description>

  <properties>

    <!-- database driver versions -->
    <version.h2>2.4.240</version.h2>
    <version.h2-v1>1.4.200</version.h2-v1><!-- used for instance migration qa -->
    <version.oracle>23.26.1.0.0</version.oracle>
    <version.mariadb>3.5.8</version.mariadb>
    <version.mariadb-v1>1.1.8</version.mariadb-v1>
    <version.sqlserver>13.4.0.jre11</version.sqlserver>
    <version.mysql>9.6.0</version.mysql>
    <version.db2-11.5>11.5.9.0</version.db2-11.5>
    <version.db2>12.1.4.0</version.db2>
    <version.postgresql>42.7.10</version.postgresql>
    <operaton.dbscheme.current.version>7.24.0</operaton.dbscheme.current.version>

    <!-- needed for sql script and backward compatibility checks -->
    <operaton.dbscheme.previous.artifactVersion>1.0.0-beta-5</operaton.dbscheme.previous.artifactVersion>
    <operaton.dbscheme.previous.version>7.23.1</operaton.dbscheme.previous.version>

    <!-- Testcontainers JDBC URL parameters. By default, an empty string -->
    <database.tc.params>TC_DAEMON=true</database.tc.params>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>${version.h2}</version>
      </dependency>
      <dependency>
        <groupId>com.oracle.database.jdbc</groupId>
        <artifactId>ojdbc11</artifactId>
        <version>${version.oracle}</version>
      </dependency>
      <dependency>
        <groupId>org.mariadb.jdbc</groupId>
        <artifactId>mariadb-java-client</artifactId>
        <version>${version.mariadb}</version>
      </dependency>
      <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>${version.mysql}</version>
      </dependency>
      <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>${version.sqlserver}</version>
      </dependency>
      <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>${version.postgresql}</version>
      </dependency>
      <dependency>
        <groupId>com.ibm.db2</groupId>
        <artifactId>jcc</artifactId>
        <version>${version.db2}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>sql-maven-plugin</artifactId>
          <configuration>
            <driver>${database.driver}</driver>
            <url>${database.url}</url>
            <username>${database.username}</username>
            <password>${database.password}</password>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.liquibase</groupId>
          <artifactId>liquibase-maven-plugin</artifactId>
          <configuration>
            <driver>${database.driver}</driver>
            <url>${database.url}</url>
            <username>${database.username}</username>
            <password>${database.password}</password>
            <hubMode>off</hubMode>
            <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <profiles>
    <profile>
      <id>db2</id>
      <properties>
        <database.type>db2</database.type>
        <database.driver>com.ibm.db2.jcc.DB2Driver</database.driver>
        <database.datasource.class>com.ibm.db2.jcc.DB2SimpleDataSource</database.datasource.class>
        <jboss.datasource.filename>db2-ds.xml</jboss.datasource.filename>
        <database.tc.url>operatondb2:12.1.2.0</database.tc.url>
        <database.tc.params>/${database.name}</database.tc.params>
        <database.url>jdbc:tc:${database.tc.url}://localhost:${database.port}${database.tc.params}</database.url>
      </properties>
      <dependencies>
        <dependency>
          <groupId>com.ibm.db2</groupId>
          <artifactId>jcc</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>sql-maven-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>com.ibm.db2</groupId>
                  <artifactId>jcc</artifactId>
                  <version>${version.db2}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>db2-115</id>
      <properties>
        <version.db2>${version.db2-11.5}</version.db2>
      </properties>
      <dependencies>
        <dependency>
          <groupId>com.ibm.db2</groupId>
          <artifactId>jcc</artifactId>
        </dependency>
      </dependencies>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>sql-maven-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>com.ibm.db2</groupId>
                  <artifactId>jcc</artifactId>
                  <version>${version.db2}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>h2-in-memory</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <database.url>jdbc:h2:mem:operaton;DB_CLOSE_DELAY=1000;LOCK_TIMEOUT=10000</database.url>
        <database.type>h2</database.type>
        <database.driver>org.h2.Driver</database.driver>
        <database.username>sa</database.username>
        <database.password />
        <hibernate.dialect>org.hibernate.dialect.H2Dialect</hibernate.dialect>
      </properties>
      <dependencies>
        <dependency>
          <groupId>com.h2database</groupId>
          <artifactId>h2</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>sql-maven-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>com.h2database</groupId>
                  <artifactId>h2</artifactId>
                  <version>${version.h2}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>h2</id>
      <properties>
        <database.host>${project.parent.basedir}/target/h2/</database.host>
        <database.name>process-engine</database.name>
        <database.username>sa</database.username>
        <database.password>sa</database.password>
        <database.port>18080</database.port>
        <!-- This url has to be consistent for the subprojects: {server}-runtime and webapp-integration-tests -->
        <database.url>jdbc:h2:${database.host}${database.name};AUTO_SERVER=TRUE;AUTO_SERVER_PORT=${database.port};LOCK_TIMEOUT=10000</database.url>

        <database.type>h2</database.type>
        <database.driver>org.h2.Driver</database.driver>
        <database.datasource.class>org.h2.jdbcx.JdbcDataSource</database.datasource.class>
        <jboss.datasource.filename>h2-ds.xml</jboss.datasource.filename>
        <hibernate.dialect>org.hibernate.dialect.H2Dialect</hibernate.dialect>
      </properties>
      <dependencies>
        <dependency>
          <groupId>com.h2database</groupId>
          <artifactId>h2</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>sql-maven-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>com.h2database</groupId>
                  <artifactId>h2</artifactId>
                  <version>${version.h2}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>mariadb</id>
      <properties>
        <database.type>mariadb</database.type>
        <database.driver>org.mariadb.jdbc.Driver</database.driver>
        <hibernate.dialect>org.hibernate.dialect.MariaDBDialect</hibernate.dialect>
        <database.datasource.class>org.mariadb.jdbc.MariaDbDataSource</database.datasource.class>
        <database.tc.url>operatonmariadb:10.11</database.tc.url>
        <jboss.datasource.filename>mariadb-ds.xml</jboss.datasource.filename>
        <database.tc.params>/${database.name}</database.tc.params>
        <database.url>jdbc:tc:${database.tc.url}://localhost:${database.port}${database.tc.params}</database.url>
      </properties>

      <dependencies>
        <dependency>
          <groupId>org.mariadb.jdbc</groupId>
          <artifactId>mariadb-java-client</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>sql-maven-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>org.mariadb.jdbc</groupId>
                  <artifactId>mariadb-java-client</artifactId>
                  <version>${version.mariadb}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>mysql</id>
      <properties>
        <database.type>mysql</database.type>
        <database.driver>com.mysql.cj.jdbc.Driver</database.driver>
        <database.datasource.class>com.mysql.cj.jdbc.MysqlDataSource</database.datasource.class>
        <database.tc.url>operatonmysql:8.4</database.tc.url>
        <jboss.datasource.filename>mysql-ds.xml</jboss.datasource.filename>
        <database.tc.params>/${database.name}?sendFractionalSeconds=false&amp;amp;user=${database.username}&amp;amp;password=${database.password}</database.tc.params>
        <database.url>jdbc:tc:${database.tc.url}://localhost:${database.port}${database.tc.params}</database.url>
      </properties>

      <dependencies>
        <dependency>
          <groupId>com.mysql</groupId>
          <artifactId>mysql-connector-j</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>sql-maven-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>com.mysql</groupId>
                  <artifactId>mysql-connector-j</artifactId>
                  <version>${version.mysql}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>mt-mysql</id>
      <properties>
        <database.type>mysql</database.type>
        <database.driver>com.mysql.cj.jdbc.Driver</database.driver>
        <database.datasource.class>com.mysql.cj.jdbc.MysqlDataSource</database.datasource.class>
        <jboss.datasource.filename>mysql-ds.xml</jboss.datasource.filename>
        <database.port>${env.MT_MYSQL_HOST_PORT}</database.port>
        <database.name>${env.MT_MYSQL_DATABASE}</database.name>
        <database.username>${env.MT_MYSQL_USERNAME}</database.username>
        <database.password>${env.MT_MYSQL_PASSWORD}</database.password>
        <database.params>${database.name}?allowPublicKeyRetrieval=true</database.params>
        <database.url>jdbc:mysql://${database.username}:${database.password}@localhost:${database.port}/${database.params}</database.url>
      </properties>

      <dependencies>
        <dependency>
          <groupId>com.mysql</groupId>
          <artifactId>mysql-connector-j</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>sql-maven-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>com.mysql</groupId>
                  <artifactId>mysql-connector-j</artifactId>
                  <version>${version.mysql}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>mt-mariadb</id>
      <properties>
        <database.type>mariadb</database.type>
        <database.driver>org.mariadb.jdbc.Driver</database.driver>
        <hibernate.dialect>org.hibernate.dialect.MariaDBDialect</hibernate.dialect>
        <database.datasource.class>org.mariadb.jdbc.MariaDbDataSource</database.datasource.class>
        <database.port>${env.MT_MARIADB_HOST_PORT}</database.port>
        <database.name>${env.MT_MARIADB_DATABASE}</database.name>
        <database.username>${env.MT_MARIADB_USERNAME}</database.username>
        <database.password>${env.MT_MARIADB_PASSWORD}</database.password>
        <database.params>${database.name}?user=${database.username}&amp;amp;password=${database.password}</database.params>
        <database.url>jdbc:mariadb://localhost:${database.port}/${database.params}</database.url>
      </properties>

      <dependencies>
        <dependency>
          <groupId>org.mariadb.jdbc</groupId>
          <artifactId>mariadb-java-client</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>sql-maven-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>org.mariadb.jdbc</groupId>
                  <artifactId>mariadb-java-client</artifactId>
                  <version>${version.mariadb}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>mt-postgres</id>
      <properties>
        <database.type>postgres</database.type>
        <database.driver>org.postgresql.Driver</database.driver>
        <hibernate.dialect>org.hibernate.dialect.PostgreSQLDialect</hibernate.dialect>
        <database.datasource.class>org.postgresql.ds.PGSimpleDataSource</database.datasource.class>
        <jboss.datasource.filename>postgresql-ds.xml</jboss.datasource.filename>
        <database.port>${env.MT_POSTGRES_HOST_PORT}</database.port>
        <database.name>${env.MT_POSTGRES_DATABASE}</database.name>
        <database.username>${env.MT_POSTGRES_USERNAME}</database.username>
        <database.password>${env.MT_POSTGRES_PASSWORD}</database.password>
        <database.params>${database.name}?user=${database.username}&amp;amp;password=${database.password}</database.params>
        <database.url>jdbc:postgresql://localhost:${database.port}/${database.params}</database.url>
      </properties>

      <dependencies>
        <dependency>
          <groupId>org.postgresql</groupId>
          <artifactId>postgresql</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>sql-maven-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>org.postgresql</groupId>
                  <artifactId>postgresql</artifactId>
                  <version>${version.postgresql}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>mt-sqlserver</id>
      <properties>
        <database.type>mssql</database.type>
        <database.driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</database.driver>
        <database.datasource.class>com.microsoft.sqlserver.jdbc.SQLServerDataSource</database.datasource.class>
        <jboss.datasource.filename>sqlserver-ds.xml</jboss.datasource.filename>
        <database.port>${env.MT_MSSQL_HOST_PORT}</database.port>
        <database.name>${env.MT_MSSQL_DATABASE}</database.name>
        <database.username>${env.MT_MSSQL_USERNAME}</database.username>
        <database.password>${env.MT_MSSQL_PASSWORD}</database.password>
        <database.params>;databaseName=${database.name};user=${database.username};password=${database.password};encrypt=false;</database.params>
        <database.url>jdbc:sqlserver://localhost:${database.port}${database.params}</database.url>
      </properties>

      <dependencies>
        <dependency>
          <groupId>com.microsoft.sqlserver</groupId>
          <artifactId>mssql-jdbc</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>sql-maven-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>com.microsoft.sqlserver</groupId>
                  <artifactId>mssql-jdbc</artifactId>
                  <version>${version.sqlserver}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>mt-oracle</id>
      <properties>
        <database.type>oracle</database.type>
        <database.driver>oracle.jdbc.OracleDriver</database.driver>
        <database.datasource.class>oracle.jdbc.pool.OracleDataSource</database.datasource.class>
        <jboss.datasource.filename>oracle-ds.xml</jboss.datasource.filename>
        <database.port>${env.MT_ORACLE_HOST_PORT}</database.port>
        <database.name>${env.MT_ORACLE_DATABASE}</database.name>
        <database.username>${env.MT_ORACLE_USERNAME}</database.username>
        <database.password>${env.MT_ORACLE_PASSWORD}</database.password>
        <database.params>${database.name}</database.params>
        <database.url>jdbc:oracle:thin:${database.username}/${database.password}@//localhost:${database.port}/${database.params}</database.url>
      </properties>
      <dependencies>
        <dependency>
          <groupId>com.oracle.database.jdbc</groupId>
          <artifactId>ojdbc11</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>

      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>sql-maven-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>com.oracle.database.jdbc</groupId>
                  <artifactId>ojdbc11</artifactId>
                  <version>${version.oracle}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>oracle</id>
      <properties>
        <database.type>oracle</database.type>
        <database.driver>oracle.jdbc.OracleDriver</database.driver>
        <database.datasource.class>oracle.jdbc.pool.OracleDataSource</database.datasource.class>
        <jboss.datasource.filename>oracle-ds.xml</jboss.datasource.filename>
        <database.tc.url>operatonoracle:21-faststart</database.tc.url>
        <database.url>jdbc:tc:${database.tc.url}://localhost:${database.port}${database.tc.params}</database.url>
      </properties>
      <dependencies>
        <dependency>
          <groupId>com.oracle.database.jdbc</groupId>
          <artifactId>ojdbc11</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>

      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>sql-maven-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>com.oracle.database.jdbc</groupId>
                  <artifactId>ojdbc11</artifactId>
                  <version>${version.oracle}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>postgresql</id>
      <properties>
        <database.type>postgres</database.type>
        <database.username>test</database.username>
        <database.password>test</database.password>
        <database.driver>org.postgresql.Driver</database.driver>
        <database.datasource.class>org.postgresql.ds.PGSimpleDataSource</database.datasource.class>
        <jboss.datasource.filename>postgresql-ds.xml</jboss.datasource.filename>
        <hibernate.dialect>org.hibernate.dialect.PostgreSQLDialect</hibernate.dialect>
        <database.tc.url>operatonpostgresql:14</database.tc.url>
        <database.url>jdbc:tc:${database.tc.url}:///${database.name}/${database.tc.params}</database.url>
      </properties>

      <dependencies>
        <dependency>
          <groupId>org.postgresql</groupId>
          <artifactId>postgresql</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>sql-maven-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>org.postgresql</groupId>
                  <artifactId>postgresql</artifactId>
                  <version>${version.postgresql}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>postgresql-xa</id>
      <properties>
        <database.datasource.class>org.postgresql.xa.PGXADataSource</database.datasource.class>
        <jboss.datasource.filename>postgresql-xa-ds.xml</jboss.datasource.filename>
      </properties>
    </profile>
    <profile>
      <id>sqlserver</id>
      <properties>
        <database.type>sqlserver</database.type>
        <database.driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</database.driver>
        <database.datasource.class>com.microsoft.sqlserver.jdbc.SQLServerDataSource</database.datasource.class>
        <jboss.datasource.filename>sqlserver-ds.xml</jboss.datasource.filename>
        <database.tc.url>operatonsqlserver:2022-latest</database.tc.url>
        <database.name>operaton_test</database.name>
        <database.username>sa</database.username>
        <database.password>A_Str0ng_Required_Password</database.password>
        <database.tc.params>;DatabaseName=${database.name}</database.tc.params>
        <database.url>jdbc:tc:${database.tc.url}://localhost:${database.port}${database.tc.params}</database.url>
      </properties>

      <dependencies>
        <dependency>
          <groupId>com.microsoft.sqlserver</groupId>
          <artifactId>mssql-jdbc</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>sql-maven-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>com.microsoft.sqlserver</groupId>
                  <artifactId>mssql-jdbc</artifactId>
                  <version>${version.sqlserver}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>sqlserver-2017</id>
      <properties>
        <database.tc.url>operatonsqlserver:2017</database.tc.url>
      </properties>
    </profile>

  </profiles>

</project>
