#!/usr/bin/env java --source 17

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.lang.ProcessBuilder.Redirect;
import java.net.URL;
import java.net.URLConnection;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

/**
 * Launcher for local running of the cfd
 */
public class VidarrGui {

    public static final String VIDARR_GUI_JAR = "asgard-gui-uat.jar";
    public static final String DOWNLOAD_URL = "https://asgard.vidarrcap.com/gui/uat/asgard-gui.jar";

    public static void main(String[] args) throws IOException {
        File localFile = new File(VIDARR_GUI_JAR);
        long lastModified = localFile.lastModified();
        URL url = new URL(args.length == 0 ? DOWNLOAD_URL : args[0]);
        URLConnection connection = url.openConnection();
        try {
            connection.connect();
            if (lastModified == 0 || connection.getLastModified() > lastModified) {
                System.out.println("downloading file - " + DOWNLOAD_URL);
                InputStream in = url.openStream();
                Files.copy(in, Paths.get(VIDARR_GUI_JAR), StandardCopyOption.REPLACE_EXISTING);
                System.out.println("using downloaded version - " + localFile.getAbsolutePath());
            } else {
                System.out.println("using local copy - " + localFile.getAbsolutePath());
            }
        } catch (Exception e) {
            if(lastModified == 0){
                System.out.println("could not connect to:" + DOWNLOAD_URL + ", error: " + e.getMessage());
                System.exit(-1);
            }
        }
        ProcessBuilder processBuilder;
        if(System.getProperty("os.name").toLowerCase().contains("mac")){
            System.out.println("running on mac");
            processBuilder = new ProcessBuilder(
                    "java",
                    "-Dvidarr.gui.env=uat",
                    "-Xdock:name=Asgard UAT",
                    "--add-opens", "java.desktop/javax.swing.table=ALL-UNNAMED",
                    "-jar", VIDARR_GUI_JAR
            );
        }else{
            System.out.println("running on non-mac");
            processBuilder = new ProcessBuilder(
                    "java",
                    "-Dvidarr.gui.env=uat",
                    "--add-opens", "java.desktop/javax.swing.table=ALL-UNNAMED",
                    "-jar", VIDARR_GUI_JAR
            );
        }
        File log = new File("asgard-uat-process.log");
        processBuilder.redirectErrorStream(true);
        processBuilder.redirectOutput(Redirect.appendTo(log));
        processBuilder.start();
    }
}