Package cz.mp.k3bg

Source Code of cz.mp.k3bg.Application

/*
* Application.java
*
*  created: 19.8.2011
*  charset: UTF-8
*  license: MIT (X11) (See LICENSE file for full license)
*/
package cz.mp.k3bg;

import cz.mp.k3bg.log.DetailFormatter;
import cz.mp.k3bg.log.LoggerManager;
import cz.mp.util.app.Version;
import cz.mp.util.console.ConsoleCharset;
import java.io.File;
import java.nio.charset.Charset;
import java.nio.charset.IllegalCharsetNameException;
import java.nio.charset.UnsupportedCharsetException;
import java.util.Locale;
import java.util.logging.Logger;


/**
* Konstanty a základní informace o programu a jeho prostředí.
*
* @author Martin Pokorný
* @version 0.1
*/
public class Application {
   
    /** Jméno tohoto programu. */
    public static final String NAME = "k3bookgen";
    /** Zkrácené jméno tohoto programu.
     * Používá se ve jménech souborů a stylů. */
    public static final String NAME_SHORT = "k3bg";

    /**
     * URL, domovské stránky programu.
     */
    public static final String HOMEPAGE_URL =
            "http://code.google.com/p/k3bookgen";

    /** Jméno licence programu */
    public static final String LICENCE_NAME = "MIT (X11)";
           
    /** */
    public static final boolean OS_IS_LINUX =
            System.getProperty("os.name").toLowerCase().contains("linux");

    /** */
    public static final boolean OS_IS_WINDOWS =
            System.getProperty("os.name").toLowerCase().contains("windows");
   
    /** Výchozí kódování konce řádku. */
    public static final String EOL =
            System.getProperty("line.separator");           
   
    /** Výchozí kódování znaků textových souborů. */
    public static final String DEFAULT_CHARSET =
            System.getProperty("file.encoding");
   
    /** Preferované kódování znaků; je <tt>{@value }</tt>. */
    public static final String PREFERRED_CHARSET = "UTF-8";

    /** Kódování znaků na konzoli. (Ve Windows je jiné než výchozí kódování) */
    public static final String CONSOLE_DEFAULT_CHARSET =
            ConsoleCharset.getName();
   
    /** */
    public static final String HOME_DIR =
            System.getProperty("user.home");
         
    /** */
    public static final String USER_NAME =
            System.getProperty("user.name");
   
    /** */
    public static final String JRE_VERSION =
            System.getProperty("java.version");
   
    /** */
    public static final String JVM_VENDOR =
            System.getProperty("java.vm.vendor");
   
    /**
     * Označení verze tohoto programu.
     * (Např. 0.1 (2011-12-31))
     */
    public static final String VERSION_FULL_NAME;
    static {
        Version v = new Version(Application.class.getPackage());
        VERSION_FULL_NAME = v.toString();
    }
   
    /**
     * Číslo verze programu. Klasické značení.
     * Nemělo by obsahovat jiné znaky než '.' a číslice
     * (Např. 0.1)
     */
    public static final String VERSION_NUMBER;
    static {
        Version v = new Version(Application.class.getPackage());
        VERSION_NUMBER = v.getSpecificationVersion();
    }
   
    /**
     * Adresář pro konfiguraci a pod.
     *
     * <tt>{@value }</tt>
     */
    public static final String CFG_DIR =
//            ".";
            HOME_DIR + File.separator + "." + NAME_SHORT;
    static {
        new File(CFG_DIR).mkdirs();
    }

    /**
     * Výchozí cesta k souboru se záznamem činnosti.
     *
     * <tt>{@value }</tt>
     */
    public static final String DEFAULT_LOG_FILE_NAME =
            CFG_DIR + File.separator + NAME_SHORT + ".log";
   
   
    // -----

   
    /** */
    private Application() {       
    }
   
    // -----

    private static final boolean DEBUG = false;
    @SuppressWarnings("NonConstantLogger")
    private static Logger logger;
//          LoggerManager.getLogger(Application.class, DEBUG);

    private static final boolean DEFAULT_DEBUG_ALL = false;
    /** */
    private static boolean globalDebug = DEFAULT_DEBUG_ALL;
   
    /**
     * Odložená inicializace loggeru, kvůli tomu, že
     * LoggerManager používá konstatnty z této třídy...
     * Hack.
     * Volat před použitím loggeru(!).
     */
    private static void initLogger() {
        if (logger == null) {
            logger = LoggerManager.getLogger(Application.class, DEBUG);
        }
    }
   
    /**
     *
     */
    public static boolean isDebug() {
        return globalDebug;
    }
   
    /**
     *
     */
    public static void setDebug(boolean debug) {       
        Application.globalDebug = debug;
       
        initLogger();   // (! nutné před zalogováním)
        logger.config(" debug mode = " + debug);
    }   

   
    /**
     *
     */
    public static void logConfigInfo() {
       
        initLogger();   // (! nutné před zalogováním)
        logger.info(" version: " +
                new Version(Application.class.getPackage()).toString());
        logger.config(" log levels : " + DetailFormatter.getLegend());
        logger.config(" log filename = " + LoggerManager.getLogFileName());
        logger.config(" debug mode = " + isDebug());
        logger.config(" default file encoding = " + DEFAULT_CHARSET);
       
        try {
            if (! Charset.forName(CONSOLE_DEFAULT_CHARSET)
                    .equals(Charset.forName(DEFAULT_CHARSET))) {
                logger.config(" default console encoding = "
                        + CONSOLE_DEFAULT_CHARSET);
            }
        } catch (IllegalCharsetNameException ex) {
            logger.warning(ex.getMessage());
        } catch (UnsupportedCharsetException ex) {
            logger.warning(ex.getMessage());
        }
       
        logger.config(" default locale = " + Locale.getDefault());     
    }   
   
}   // Application
TOP

Related Classes of cz.mp.k3bg.Application

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.