<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>eu.solven.adhoc</groupId>
		<artifactId>aggregator-adhoc</artifactId>
		<version>0.1.0</version>
	</parent>

	<artifactId>adhoc-experimental</artifactId>
	<!-- `name` is required by Sonatype-->
	<name>${project.groupId}:${project.artifactId}</name>

	<properties>
		<jacoco.branch.ratio>0.72</jacoco.branch.ratio>
		<jacoco.instruction.ratio>0.72</jacoco.instruction.ratio>
		<automatic.module.name>eu.solven.adhoc.experimental</automatic.module.name>

		<!--
		\-\-add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED
		is for arrow -->
		<!-- https://arrow.apache.org/java/current/install.html -->
		<!-- -Dio.netty.noUnsafe=false is from -->
		<!-- https://github.com/apache/arrow-java/issues/728-->
		<customArgLine>--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED
			-Dio.netty.noUnsafe=false</customArgLine>
	</properties>

	<dependencyManagement>
		<dependencies>
			<!-- arrow first to have priority over google, typically around some
			netty versions-->
			<dependency>
				<groupId>org.apache.arrow</groupId>
				<artifactId>arrow-bom</artifactId>
				<version>${arrow.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>

			<dependency>
				<groupId>com.google.cloud</groupId>
				<artifactId>libraries-bom</artifactId>
				<version>26.82.0</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>

		</dependencies>
	</dependencyManagement>

	<dependencies>
		<dependency>
			<groupId>eu.solven.adhoc</groupId>
			<artifactId>adhoc-cube</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>eu.solven.adhoc</groupId>
			<artifactId>adhoc-recipes</artifactId>
			<version>${project.version}</version>
			<!-- Provide some Example cubes for tests -->
			<scope>test</scope>
		</dependency>

		<!--
		https://cloud.google.com/bigquery/docs/reference/libraries#client-libraries-install-java -->
		<dependency>
			<groupId>com.google.cloud</groupId>
			<artifactId>google-cloud-bigquery</artifactId>
			<!-- One may need to query from Google BigQuery -->
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>com.google.cloud</groupId>
			<artifactId>google-cloud-bigqueryconnection</artifactId>
			<!-- One may need to query from Google BigQuery -->
			<optional>true</optional>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.duckdb/duckdb_jdbc -->
		<dependency>
			<groupId>org.duckdb</groupId>
			<artifactId>duckdb_jdbc</artifactId>
			<version>${duckdb.version}</version>
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>software.amazon.awssdk</groupId>
			<!-- TODO Clarify the difference between redshift and redshiftdata -->
			<!--artifactId>redshift</artifactId-->
			<artifactId>redshiftdata</artifactId>
			<version>2.44.12</version>
			<!-- One may need to query from Amazon RedShift -->
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>com.clickhouse</groupId>
			<artifactId>clickhouse-jdbc</artifactId>
			<version>0.9.8</version>
			<!-- One may need to query from ClickHouse -->
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>com.clickhouse</groupId>
			<artifactId>client-v2</artifactId>
			<version>0.9.8</version>
			<!-- One may need to query from ClickHouse -->
			<optional>true</optional>
		</dependency>
		<dependency>
			<!-- `Please add arrow-compression module to use
			CommonsCompressionFactory for LZ4_FRAME` -->
			<!-- https://github.com/apache/arrow/issues/41457 -->
			<groupId>org.apache.arrow</groupId>
			<artifactId>arrow-compression</artifactId>
			<scope>compile</scope>
			<!-- Might be needed by ClickHouse+Arrow or LZ4-->
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>com.yugabyte</groupId>
			<artifactId>jdbc-yugabytedb</artifactId>
			<version>42.7.3-yb-4</version>
			<!-- One may need to query from YugaByte -->
			<optional>true</optional>
		</dependency>

		<dependency>
			<!-- Helps generating .dot files for Graphviz, to understand
			measures -->
			<groupId>guru.nidi</groupId>
			<artifactId>graphviz-java</artifactId>
			<version>0.18.1</version>
			<optional>true</optional>
		</dependency>

		<!--
		https://mvnrepository.com/artifact/com.github.javaparser/javaparser-core -->
		<dependency>
			<!-- Parses Java source files to extract class/field relationships
			for diagram generation -->
			<groupId>com.github.javaparser</groupId>
			<artifactId>javaparser-core</artifactId>
			<version>3.28.1</version>
		</dependency>

		<dependency>
			<!-- Helps doing a CubeQuery given a plain txt syntax-->
			<groupId>cz.jirutka.rsql</groupId>
			<artifactId>rsql-parser</artifactId>
			<version>2.1.0</version>
		</dependency>

		<dependency>
			<groupId>org.apache.arrow</groupId>
			<artifactId>arrow-vector</artifactId>
		</dependency>
		<dependency>
			<groupId>org.apache.arrow</groupId>
			<artifactId>arrow-memory-netty</artifactId>
		</dependency>

		<dependency>
			<!-- Used by DuckDB for arrow -->
			<groupId>org.apache.arrow</groupId>
			<artifactId>arrow-c-data</artifactId>
			<scope>compile</scope>
		</dependency>

		<dependency>
			<!-- Evaluate 3rd-party boolean refactoring library -->
			<groupId>org.logicng</groupId>
			<artifactId>logicng</artifactId>
			<version>2.6.1</version>
			<optional>true</optional>
		</dependency>

		<dependency>
			<!-- Used by TestTableQuery_DuckDb_Arrow -->
			<groupId>com.ezylang</groupId>
			<artifactId>EvalEx</artifactId>
			<version>${evalex.ezylang.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.mongodb</groupId>
			<artifactId>mongodb-driver-core</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.mongodb</groupId>
			<artifactId>mongodb-driver-sync</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>de.flapdoodle.embed</groupId>
			<artifactId>de.flapdoodle.embed.mongo</artifactId>
			<version>4.24.0</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<!-- Enable shared code between benchmarks and profilable tests -->
			<groupId>eu.solven.adhoc</groupId>
			<artifactId>adhoc-cube</artifactId>
			<version>${project.version}</version>
			<classifier>tests</classifier>
			<scope>test</scope>
		</dependency>
		<dependency>
			<!-- StandaloneTableQueryPod -->
			<groupId>eu.solven.adhoc</groupId>
			<artifactId>adhoc-table</artifactId>
			<version>${project.version}</version>
			<classifier>tests</classifier>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>testcontainers-junit-jupiter</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>testcontainers-clickhouse</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>testcontainers-postgresql</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>testcontainers-mysql</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>testcontainers-mariadb</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>testcontainers-yugabytedb</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.testcontainers</groupId>
			<artifactId>testcontainers-jdbc</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.zaxxer</groupId>
			<artifactId>HikariCP</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.xerial</groupId>
			<artifactId>sqlite-jdbc</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mariadb.jdbc</groupId>
			<artifactId>mariadb-java-client</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.junit.platform</groupId>
			<artifactId>junit-platform-suite</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>eu.solven.adhoc</groupId>
			<artifactId>adhoc-measures</artifactId>
			<version>${project.version}</version>
			<classifier>tests</classifier>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>io.github.solven-eu.pepper</groupId>
			<artifactId>pepper-unittest</artifactId>
			<version>${pepper.version}</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<!-- Coverage-guided in-process fuzzing for the JVM, JUnit 5
			integration.
			See https://github.com/CodeIntelligenceTesting/jazzer -->
			<groupId>com.code-intelligence</groupId>
			<artifactId>jazzer-junit</artifactId>
			<version>0.30.0</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>
