⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jiveglobals.java

📁 基于Jabber协议的即时消息服务器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/** * $RCSfile$ * $Revision: 5075 $ * $Date: 2006-08-26 16:40:20 -0700 (Sat, 26 Aug 2006) $ * * Copyright (C) 2004 Jive Software. All rights reserved. * * This software is published under the terms of the GNU Public License (GPL), * a copy of which is included in this distribution. */package org.jivesoftware.util;import java.io.File;import java.io.IOException;import java.text.DateFormat;import java.util.*;/** * Controls Jive properties. Jive properties are only meant to be set and retrieved * by core Jive classes. Some properties may be stored in XML format while others in the * database.<p> * * When starting up the application this class needs to be configured so that the initial * configuration of the application may be loaded from the configuration file. The configuration * file holds properties stored in XML format, database configuration and user authentication * configuration. Use {@link #setHomeDirectory(String)} and {@link #setConfigName(String)} for * setting the home directory and path to the configuration file.<p> * * XML property names must be in the form <code>prop.name</code> - parts of the name must * be seperated by ".". The value can be any valid String, including strings with line breaks. */public class JiveGlobals {    private static String JIVE_CONFIG_FILENAME = "conf" + File.separator + "wildfire.xml";    /**     * Location of the jiveHome directory. All configuration files should be     * located here.     */    private static String home = null;    public static boolean failedLoading = false;    private static XMLProperties xmlProperties = null;    private static JiveProperties properties = null;    private static Locale locale = null;    private static TimeZone timeZone = null;    private static DateFormat dateFormat = null;    private static DateFormat dateTimeFormat = null;    private static DateFormat timeFormat = null;    /**     * Returns the global Locale used by Jive. A locale specifies language     * and country codes, and is used for internationalization. The default     * locale is system dependant - Locale.getDefault().     *     * @return the global locale used by Jive.     */    public static Locale getLocale() {        if (locale == null) {            if (xmlProperties != null) {                String [] localeArray;                String localeProperty = xmlProperties.getProperty("locale");                if (localeProperty != null) {                    localeArray = localeProperty.split("_");                }                else {                    localeArray = new String[] {"", ""};                }                String language = localeArray[0];                if (language == null) {                    language = "";                }                String country = "";                if (localeArray.length == 2) {                    country = localeArray[1];                }                // If no locale info is specified, return the system default Locale.                if (language.equals("") && country.equals("")) {                    locale = Locale.getDefault();                }                else {                    locale = new Locale(language, country);                }            }            else {                return Locale.getDefault();            }        }        return locale;    }    /**     * Sets the global locale used by Jive. A locale specifies language     * and country codes, and is used for formatting dates and numbers.     * The default locale is Locale.US.     *     * @param newLocale the global Locale for Jive.     */    public static void setLocale(Locale newLocale) {        locale = newLocale;        // Save values to Jive properties.        setXMLProperty("locale", locale.toString());        // Reset the date formatter objects        timeFormat = null;        dateFormat = null;        dateTimeFormat = null;    }    /**     * Returns the global TimeZone used by Jive. The default is the VM's     * default time zone.     *     * @return the global time zone used by Jive.     */    public static TimeZone getTimeZone() {        if (timeZone == null) {            if (properties != null) {                String timeZoneID = properties.get("locale.timeZone");                if (timeZoneID == null) {                    timeZone = TimeZone.getDefault();                }                else {                    timeZone = TimeZone.getTimeZone(timeZoneID);                }            }            else {                return TimeZone.getDefault();            }        }        return timeZone;    }    /**     * Sets the global time zone used by Jive. The default time zone is the VM's     * time zone.     */    public static void setTimeZone(TimeZone newTimeZone) {        timeZone = newTimeZone;        if (timeFormat != null) {            timeFormat.setTimeZone(timeZone);        }        if (dateFormat != null) {            dateFormat.setTimeZone(timeZone);        }        if (dateTimeFormat != null) {            dateTimeFormat.setTimeZone(timeZone);        }        setProperty("locale.timeZone", timeZone.getID());    }    /**     * Formats a Date object to return a time using the global locale.     *     * @param date the Date to format.     * @return a String representing the time.     */    public static String formatTime(Date date) {        if (timeFormat == null) {            if (properties != null) {                timeFormat = DateFormat.getTimeInstance(DateFormat.SHORT, getLocale());                timeFormat.setTimeZone(getTimeZone());            }            else {                DateFormat instance = DateFormat.getTimeInstance(DateFormat.SHORT, getLocale());                instance.setTimeZone(getTimeZone());                return instance.format(date);            }        }        return timeFormat.format(date);    }    /**     * Formats a Date object to return a date using the global locale.     *     * @param date the Date to format.     * @return a String representing the date.     */    public static String formatDate(Date date) {        if (dateFormat == null) {            if (properties != null) {                dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, getLocale());                dateFormat.setTimeZone(getTimeZone());            }            else {                DateFormat instance = DateFormat.getDateInstance(DateFormat.MEDIUM, getLocale());                instance.setTimeZone(getTimeZone());                return instance.format(date);            }        }        return dateFormat.format(date);    }    /**     * Formats a Date object to return a date and time using the global locale.     *     * @param date the Date to format.     * @return a String representing the date and time.     */    public static String formatDateTime(Date date) {        if (dateTimeFormat == null) {            if (properties != null) {                dateTimeFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,                        DateFormat.MEDIUM, getLocale());                dateTimeFormat.setTimeZone(getTimeZone());            }            else {                DateFormat instance = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,                        DateFormat.MEDIUM, getLocale());                instance.setTimeZone(getTimeZone());                return instance.format(date);            }        }        return dateTimeFormat.format(date);    }    /**     * Returns the location of the <code>home</code> directory.     *     * @return the location of the home dir.     */    public static String getHomeDirectory() {        if (xmlProperties == null) {            loadSetupProperties();        }        return home;    }    /**     * Sets the location of the <code>home</code> directory. The directory must exist and the     * user running the application must have read and write permissions over the specified     * directory.     *     * @param pathname the location of the home dir.     */    public static void setHomeDirectory(String pathname) {        File mh = new File(pathname);        // Do a permission check on the new home directory        if (!mh.exists()) {            Log.error("Error - the specified home directory does not exist (" + pathname + ")");        }        else if (!mh.canRead() || !mh.canWrite()) {                Log.error("Error - the user running this application can not read " +                        "and write to the specified home directory (" + pathname + "). " +                        "Please grant the executing user read and write permissions.");        }        else {            home = pathname;        }    }    /**     * Returns a local property. Local properties are stored in the file defined in     * <tt>JIVE_CONFIG_FILENAME</tt> that exists in the <tt>home</tt> directory.     * Properties are always specified as "foo.bar.prop", which would map to     * the following entry in the XML file:     * <pre>     * &lt;foo&gt;     *     &lt;bar&gt;     *         &lt;prop&gt;some value&lt;/prop&gt;     *     &lt;/bar&gt;     * &lt;/foo&gt;     * </pre>     *     * @param name the name of the property to return.     * @return the property value specified by name.     */    public static String getXMLProperty(String name) {        if (xmlProperties == null) {            loadSetupProperties();        }        // home not loaded?        if (xmlProperties == null) {            return null;        }        return xmlProperties.getProperty(name);    }    /**     * Returns a local property. Local properties are stored in the file defined in     * <tt>JIVE_CONFIG_FILENAME</tt> that exists in the <tt>home</tt> directory.     * Properties are always specified as "foo.bar.prop", which would map to     * the following entry in the XML file:     * <pre>     * &lt;foo&gt;     *     &lt;bar&gt;     *         &lt;prop&gt;some value&lt;/prop&gt;     *     &lt;/bar&gt;     * &lt;/foo&gt;     * </pre>     *     * If the specified property can't be found, the <tt>defaultValue</tt> will be returned.     *     * @param name the name of the property to return.     * @param defaultValue the default value for the property.     * @return the property value specified by name.     */    public static String getXMLProperty(String name, String defaultValue) {        if (xmlProperties == null) {            loadSetupProperties();        }        // home not loaded?        if (xmlProperties == null) {            return null;        }        String value = xmlProperties.getProperty(name);        if (value == null) {            value = defaultValue;        }        return value;    }    /**     * Returns an integer value local property. Local properties are stored in the file defined in     * <tt>JIVE_CONFIG_FILENAME</tt> that exists in the <tt>home</tt> directory.     * Properties are always specified as "foo.bar.prop", which would map to     * the following entry in the XML file:     * <pre>     * &lt;foo&gt;     *     &lt;bar&gt;     *         &lt;prop&gt;some value&lt;/prop&gt;     *     &lt;/bar&gt;     * &lt;/foo&gt;     * </pre>     *     * If the specified property can't be found, or if the value is not a number, the     * <tt>defaultValue</tt> will be returned.     *     * @param name the name of the property to return.     * @param defaultValue value returned if the property could not be loaded or was not     *      a number.     * @return the property value specified by name or <tt>defaultValue</tt>.     */    public static int getXMLProperty(String name, int defaultValue) {        String value = getXMLProperty(name);        if (value != null) {            try {                return Integer.parseInt(value);            }            catch (NumberFormatException nfe) {                // Ignore.            }        }        return defaultValue;    }    /**     * Returns a boolean value local property. Local properties are stored in the     * file defined in <tt>JIVE_CONFIG_FILENAME</tt> that exists in the <tt>home</tt>     * directory. Properties are always specified as "foo.bar.prop", which would map to     * the following entry in the XML file:     * <pre>     * &lt;foo&gt;     *     &lt;bar&gt;     *         &lt;prop&gt;some value&lt;/prop&gt;     *     &lt;/bar&gt;     * &lt;/foo&gt;     * </pre>     *     * If the specified property can't be found, the <tt>defaultValue</tt> will be returned.     * If the property is found, it will be parsed using {@link Boolean#valueOf(String)}.       *     * @param name the name of the property to return.     * @param defaultValue value returned if the property could not be loaded or was not     *      a number.     * @return the property value specified by name or <tt>defaultValue</tt>.     */    public static boolean getXMLProperty(String name, boolean defaultValue) {        String value = getXMLProperty(name);        if (value != null) {            return Boolean.valueOf(value);        }        return defaultValue;    }    /**     * Sets a local property. If the property doesn't already exists, a new     * one will be created. Local properties are stored in the file defined in     * <tt>JIVE_CONFIG_FILENAME</tt> that exists in the <tt>home</tt> directory.     * Properties are always specified as "foo.bar.prop", which would map to     * the following entry in the XML file:     * <pre>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -