#!/bin/bash
# jrxmlcheck — cek & pratinjau report JRXML (JasperReports 6.0.0)
# Pemakaian: jrxmlcheck compile|preview <file.jrxml> [opsi]
# Jalankan "jrxmlcheck help" untuk bantuan lengkap.

set -e
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LIB="$DIR/lib"
CLS="$DIR/classes"
SRC="$DIR/JrxmlCheck.java"
MAVEN="https://repo1.maven.org/maven2"

JARS="
net/sf/jasperreports/jasperreports/6.0.0/jasperreports-6.0.0.jar
net/sf/jasperreports/jasperreports-fonts/6.0.0/jasperreports-fonts-6.0.0.jar
commons-digester/commons-digester/2.1/commons-digester-2.1.jar
commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar
commons-beanutils/commons-beanutils/1.9.4/commons-beanutils-1.9.4.jar
commons-logging/commons-logging/1.2/commons-logging-1.2.jar
org/eclipse/jdt/core/compiler/ecj/4.4.2/ecj-4.4.2.jar
com/itextpdf/itextpdf/5.5.13.3/itextpdf-5.5.13.3.jar
com/itextpdf/itext-pdfa/5.5.13.3/itext-pdfa-5.5.13.3.jar
org/postgresql/postgresql/42.7.3/postgresql-42.7.3.jar
"

# 0) butuh java
if ! command -v java >/dev/null 2>&1; then
  echo "[GAGAL] Java tidak ditemukan. Pasang JDK dulu (misal: brew install temurin)."
  exit 2
fi

# 1) unduh library sekali saja
mkdir -p "$LIB" "$CLS"
for a in $JARS; do
  f="$LIB/$(basename "$a")"
  if [ ! -f "$f" ]; then
    echo "[..] Mengunduh $(basename "$a") (hanya sekali)..."
    curl -sfL -o "$f" "$MAVEN/$a" || { echo "[GAGAL] Unduh gagal: $a"; exit 2; }
  fi
done

# 2) kompilasi helper sekali saja (atau jika sumber lebih baru)
if [ ! -f "$CLS/JrxmlCheck.class" ] || [ "$SRC" -nt "$CLS/JrxmlCheck.class" ]; then
  javac -cp "$LIB/*" -d "$CLS" "$SRC" 2>/dev/null || {
    echo "[GAGAL] Kompilasi helper gagal (butuh JDK, bukan JRE saja)."; exit 2; }
fi

# 3) jalankan
java -cp "$CLS:$LIB/*" JrxmlCheck "$@"
