plugins {
    id "java"
    id "io.quarkus" version "${quarkusPluginVersion}"
    id "org.kordamp.gradle.jandex" version "2.2.0"
}

group = "dmo.fs"
version = "3.20.0"

repositories {
    mavenCentral()
}

ext {
    vertxVersion = "4.5.26"
    hibernateVersion = "7.2.5.Final"
}

java {
    sourceCompatibility = JavaVersion.VERSION_24
    targetCompatibility = JavaVersion.VERSION_24
}

dependencies {
    implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")

    implementation 'jakarta.persistence:jakarta.persistence-api:3.2.0'
    implementation "io.quarkus:quarkus-jdbc-h2:${quarkusPlatformVersion}"
    implementation "io.quarkus:quarkus-jdbc-mssql:${quarkusPlatformVersion}"
    implementation "io.quarkus:quarkus-jdbc-oracle:${quarkusPlatformVersion}"
    implementation "io.quarkus:quarkus-hibernate-orm:${quarkusPlatformVersion}"

    testImplementation platform("org.junit:junit-bom:5.10.0")
    testImplementation "org.junit.jupiter:junit-jupiter"
    testRuntimeOnly "org.junit.platform:junit-platform-launcher"
}

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(25))
    }
}

if ("mssql" == System.getenv("DEFAULT_DB")) {
    System.setProperty('quarkus.hibernate-orm.sqlserver.active', "true")
    System.setProperty('quarkus.datasource.sqlserver.active', "true")
} else if ("oracle" == System.getenv("DEFAULT_DB")) {
    System.setProperty('quarkus.hibernate-orm.oracle.active', "true")
    System.setProperty('quarkus.datasource.oracle.active', "true")
} else {
    println("")
    println("\033[0;93mPlease set 'DEFAULT_DB' to either 'oracle' or 'mssql'\033[0m")
    println("")
    System.exit(1);
}
println("Java Version*: " + JavaVersion.current() + " -- target: " + java.targetCompatibility)
println("Using database: " + System.getenv("DEFAULT_DB"))
compileJava {
    options.encoding = "UTF-8"
    options.compilerArgs << "-Xlint:unchecked"
}

//tasks.withType(JavaExec).configureEach {
quarkusDev {
    jvmArgs += ["--enable-native-access=ALL-UNNAMED", "--add-opens", "java.base/java.lang=ALL-UNNAMED"]

    if(JavaVersion.current() >= JavaVersion.VERSION_24) {
        jvmArgs += ["--sun-misc-unsafe-memory-access=allow", "--add-opens", "java.base/java.lang=ALL-UNNAMED"]
    }

//        jvmArgs += "-Dhandicap.enable.handicap=true"
}

jar {
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}

compileTestJava {
    options.encoding = 'UTF-8'
}

test {
    useJUnitPlatform()
    testLogging {
        events = ["PASSED", "FAILED", "SKIPPED"]
    }
}
