package de.roko.genalogy.downloader;

import de.roko.genalogy.downloader.archion.ArchionLoginHelper;
import de.roko.genalogy.downloader.database.*;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.io.File;



public class Main {

    public static ChromeDriver driver;

    public static void main(String[] args) throws Exception {

        String username = "robatkoch";
        String password = "PaLiNa2016$$";

        String userHome = System.getProperty("user.home");
        String downloadFolder = userHome + "/Pictures/archion";
        new File(downloadFolder).mkdirs();

        // ChromeDriver automatisch verwalten
        WebDriverManager.chromedriver().setup();


        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");

        // WebDriver starten
        driver = new ChromeDriver(options);

        ArchionLoginHelper archionLoginHelper = new ArchionLoginHelper(driver);

        archionLoginHelper.login(username, password);

        if(archionLoginHelper.isLoggedIn()) {


            DatenbankReset.reset();
            DatenbankDebugger datenbankDebuggerdebugger = new DatenbankDebugger();

            //Abgleich
            archiveAuslesen();
            datenbankDebuggerdebugger.printTable("archive");

            kirchenkreiseAuslesen();
            datenbankDebuggerdebugger.printTable("kreis");

            orteAuslesen();




            System.out.println("break");
        }
    }

    public static void archiveAuslesen() {
        //Lese Archive
        ArchiveInserter archiveInserter = new ArchiveInserter();
        try {
            archiveInserter.run(driver);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static void kirchenkreiseAuslesen() throws Exception {
        KirchenkreisExtractor kirchenkreisExtractor = new KirchenkreisExtractor();
        kirchenkreisExtractor.readNwrite();
    }

    public static void orteAuslesen() throws Exception {
        KreisOrtExtractor kreisOrtExtractor = new KreisOrtExtractor();
        kreisOrtExtractor.readNwrite();
    }
}