Utils.java

package pro.verron.officestamper;

import pro.verron.officestamper.api.OfficeStamperException;

import java.io.InputStream;
import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.Logger;

import static java.lang.StackWalker.Option.RETAIN_CLASS_REFERENCE;

/// Utility class for the CLI.
public class Utils {

    /// Logging format property key.
    public static final String LOGGING_FORMAT_KEY = "java.util.logging.SimpleFormatter.format";
    /// Logging format property value.
    public static final String LOGGING_FORMAT_VAL = "[%1$tl:%1$tM:%1$tS] %2$s %4$-7s: %5$s %6$s %n";

    static {
        Locale.setDefault(Locale.ROOT);
        System.setProperty(LOGGING_FORMAT_KEY, LOGGING_FORMAT_VAL);
        Logger.getLogger("org.docx4j")
              .setLevel(Level.SEVERE);
    }

    private Utils() {
        throw new OfficeStamperException("Utility class");
    }

    /// Returns a logger for the caller class.
    ///
    /// @return a logger
    public static Logger getLogger() {
        var callerName = StackWalker
                .getInstance(RETAIN_CLASS_REFERENCE)
                .getCallerClass()
                .getTypeName();
        return Logger.getLogger(callerName);
    }

    static InputStream streamResource(String name) {
        return StackWalker
                .getInstance(RETAIN_CLASS_REFERENCE)
                .getCallerClass()
                .getResourceAsStream(name);
    }

}