<?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.camunda.bpm</groupId>
    <artifactId>camunda-parent</artifactId>
    <relativePath>../parent</relativePath>
    <version>7.18.0</version>
  </parent>

  <artifactId>camunda-database-settings</artifactId>
  <packaging>pom</packaging>
  <name>Camunda Platform - database settings</name>
  <description>Provides general dependencies and profiles for database testing</description>

  <properties>

    <!-- database driver versions -->
    <version.h2>2.1.214</version.h2>
    <version.h2-v1>1.4.190</version.h2-v1><!-- used for instance migration qa -->
    <version.oracle-12>12.1.0.2</version.oracle-12>
    <version.oracle-19>19.3.0.0</version.oracle-19>
    <version.oracle>${version.oracle-12}</version.oracle>
    <version.mariadb>1.1.8</version.mariadb>
    <version.mysql>8.0.28</version.mysql>
    <version.sqlserver>8.2.2.jre8</version.sqlserver>
    <version.db2-11.5>11.5.0.0</version.db2-11.5>
    <version.db2>${version.db2-11.5}</version.db2>
    <version.postgresql>42.3.3</version.postgresql>
    <version.liquibase>4.8.0</version.liquibase>

    <!-- CockroachDB is compatible with PostgreSQL 9.5,
    so a different version of the JDBC driver needs to be used -->
    <version.cockroachdb>42.2.9</version.cockroachdb>

    <!-- needed for sql script and backward compatibility checks -->
    <camunda.version.old>7.17.0</camunda.version.old>

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

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>${version.h2}</version>
      </dependency>
      <dependency>
        <groupId>com.oracle.jdbc</groupId>
        <artifactId>ojdbc7</artifactId>
        <version>${version.oracle}</version>
      </dependency>
      <dependency>
        <groupId>com.oracle.ojdbc</groupId>
        <artifactId>ojdbc8</artifactId>
        <version>${version.oracle}</version>
      </dependency>
      <dependency>
        <groupId>org.mariadb.jdbc</groupId>
        <artifactId>mariadb-java-client</artifactId>
        <version>${version.mariadb}</version>
      </dependency>
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</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>
          <version>${version.liquibase}</version>
          <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>
      </properties>
    </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:camunda;DB_CLOSE_DELAY=1000;LOCK_TIMEOUT=10000</database.url>
        <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 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>
        <was.liberty.datasource.filename>h2-config.xml</was.liberty.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>
        <database.datasource.class>org.mariadb.jdbc.MySQLDataSource</database.datasource.class>
        <database.tc.url>cammariadb:10.3</database.tc.url>
        <database.tc.params>/${database.name}?user=${database.username}&amp;amp;password=${database.password}</database.tc.params>
      </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>cammysql:8.0</database.tc.url>
        <database.tc.params>/${database.name}?sendFractionalSeconds=false&amp;amp;user=${database.username}&amp;amp;password=${database.password}</database.tc.params>
      </properties>

      <dependencies>
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>sql-maven-plugin</artifactId>
              <dependencies>
                <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <version>${version.mysql}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>mysql-5.7</id>
      <properties>
        <database.tc.url>cammysql:5.7</database.tc.url>
      </properties>
    </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>
      </properties>
    </profile>
    <profile>
      <id>oracle-12</id>
      <properties>
        <version.oracle>${version.oracle-12}</version.oracle>
      </properties>
      <dependencies>
        <dependency>
          <groupId>com.oracle.jdbc</groupId>
          <artifactId>ojdbc7</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.jdbc</groupId>
                  <artifactId>ojdbc7</artifactId>
                  <version>${version.oracle}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>oracle-19</id>
      <properties>
        <version.oracle>${version.oracle-19}</version.oracle>
      </properties>
      <dependencies>
        <dependency>
          <groupId>com.oracle.ojdbc</groupId>
          <artifactId>ojdbc8</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.ojdbc</groupId>
                  <artifactId>ojdbc8</artifactId>
                  <version>${version.oracle}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>postgresql</id>
      <properties>
        <database.type>postgres</database.type>
        <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>
        <was.liberty.datasource.filename>postgresql-config.xml</was.liberty.datasource.filename>
        <hibernate.dialect>org.hibernate.dialect.PostgreSQLDialect</hibernate.dialect>
        <database.tc.url>campostgresql:13.2</database.tc.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>
        <was.liberty.datasource.filename>postgresql-xa-config.xml</was.liberty.datasource.filename>
      </properties>
    </profile>
    <profile>
      <id>cockroachdb</id>
      <properties>
        <database.type>cockroachdb</database.type>
        <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>camcockroachdb:20.1.3</database.tc.url>
      </properties>

      <dependencies>
        <dependency>
          <groupId>org.postgresql</groupId>
          <artifactId>postgresql</artifactId>
          <version>${version.cockroachdb}</version>
          <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.cockroachdb}</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>

    <profile>
      <id>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>
        <database.tc.url>camsqlserver:2019</database.tc.url>
        <database.tc.params>;DatabaseName=${database.name};user=${database.username};password=${database.password};</database.tc.params>
      </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>camsqlserver:2017</database.tc.url>
      </properties>
    </profile>

    <profile>
      <id>testcontainers</id>
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>com.fasterxml.jackson</groupId>
            <artifactId>jackson-bom</artifactId>
            <version>${version.jackson}</version>
            <scope>import</scope>
            <type>pom</type>
          </dependency>
        </dependencies>
      </dependencyManagement>
      <dependencies>
        <!-- Testcontainers depends on docker-java which depends on jackson-annotations -->
        <dependency>
          <artifactId>jackson-annotations</artifactId>
          <groupId>com.fasterxml.jackson.core</groupId>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </profile>

  </profiles>

</project>
