package org.texttechnologylab.project.gruppe_05_1.rest;

import org.texttechnologylab.project.gruppe_05_1.util.GeneralUtils;
import org.texttechnologylab.project.gruppe_05_1.util.Logger;
import org.texttechnologylab.project.gruppe_05_1.util.PropertiesUtils;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * Diese Klasse dient der Konfiguruerung von Javalin
 */
public class JavalinConfig extends Properties {

    private static final String propertiesFileName = "config/javalin.properties";

    /**
     * Default Constructor
     */
    public JavalinConfig() {
        this(propertiesFileName);
    }

    /**
     * Constructor mit Pfad zur Properties-Datei
     * @param sPath Pfad zur Properties-Datei
     */
    public JavalinConfig(String sPath) {

        try (InputStream input =  PropertiesUtils.class.getClassLoader().getResourceAsStream(propertiesFileName)) {
            if (null == input) {
                Logger.error("Properties-Datei '" + propertiesFileName + "' konnte nicht gelesen werden");
            }

            this.load(input);
        } catch (IOException ioex) {
            Logger.error("Exception beim Lesen der properties-Datei '" + propertiesFileName + "': " + ioex.getLocalizedMessage());
        }
    }


    /**
     * Liefert alle Properties zurück
     * @return Properties
     */
    public Properties getJavalinProperties() {
        return this;
    }

    /**
     * Liefert den Port zurück, auf dem Javalin läuft
     * @return Port
     */
    public Integer getPort() {
        return GeneralUtils.parseInt(getProperty("port"));
    }
}
