All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.docbook.xsltng.extensions.DebuggingLogger Maven / Gradle / Ivy

package org.docbook.xsltng.extensions;

import net.sf.saxon.lib.Logger;
import net.sf.saxon.lib.StandardLogger;

import java.util.HashSet;

public class DebuggingLogger extends StandardLogger {
    public static final String REGISTRATION = "registration";
    public static final String IMAGE_PROPERTIES = "image-properties";
    public static final String IMAGE_ERRORS = "image-errors";
    public static final String PYGMENTIZE_SHOW_COMMAND = "pygmentize-show-command";
    public static final String PYGMENTIZE_SHOW_RESULTS = "pygmentize-show-results";
    public static final String PYGMENTIZE_ERRORS = "pygmentize-errors";

    private static final String propertyName = "org.docbook.xsltng.verbose";
    private Logger logger = null;
    private boolean noisy = false;
    private HashSet flags = new HashSet<> ();

    public DebuggingLogger(Logger logger) {
        this.logger = logger;
        if (System.getProperty(propertyName) != null) {
            String val = System.getProperty(propertyName);
            if ("1".equals(val) || "yes".equals(val) || "true".equals(val)) {
                noisy = true;
            } else if (!("0".equals(val) || "no".equals(val) || "false".equals(val))) {
                noisy = false;
            } else {
                String[] tokens = System.getProperty(propertyName).split("[,\\s]+");
                for (String token : tokens) {
                    String flag = token.trim().toLowerCase();
                    if (!"".equals(flag)) {
                        flags.add(flag);
                    }
                }
            }
        }
    }

    public boolean getFlag(String flag) {
        return noisy || flags.contains(flag);
    }

    public void setFlag(String flag) {
        if ("1".equals(flag) || "yes".equals(flag) || "true".equals(flag)) {
            noisy = true;
        } else {
            flags.add(flag);
        }
    }

    public boolean unsetFlag(String flag) {
        if ("1".equals(flag) || "yes".equals(flag) || "true".equals(flag)) {
            boolean wasNoisy = noisy;
            noisy = false;
            return wasNoisy;
        } else {
            return flags.remove(flag);
        }
    }

    public void debug(String flag, String message) {
        if ((flags.contains(flag) || noisy) && logger != null) {
            logger.info(message);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy