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

📄 skinutil.java~3~

📁 云网论坛CWBBS 源码,内容丰富,学习,参考,教学的好资料,具体见内说明,
💻 JAVA~3~
字号:
package cn.js.fan.web;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import cn.js.fan.base.ISkin;
import cn.js.fan.util.ResBundle;
import org.apache.log4j.Logger;
import cn.js.fan.cache.jcs.RMCache;
import java.util.HashMap;
import cn.js.fan.util.XMLConfig;
import org.jdom.Element;
import java.util.List;
import java.util.Iterator;
import java.util.Date;
import com.redmoon.forum.Privilege;
import cn.js.fan.util.DateUtil;
import java.text.DateFormat;
import java.util.TimeZone;
import com.redmoon.forum.person.UserMgr;
import com.redmoon.forum.person.UserDb;

public class SkinUtil implements ISkin {
    static final String resName = "res.common";
    static Logger logger = Logger.getLogger("SkinUtil");

    public static final String ERR_DB = "err_db";
    public static final String PVG_INVALID = "pvg_invalid";
    public static final String ERR_SQL = "err_sql";
    public static final String ERR_NOT_LOGIN = "err_not_login";
    public static final String ERR_ID = "err_id";

    // transient RMCache rmCache = RMCache.getInstance();

    public SkinUtil() {
    }

    public static Locale getLocale(HttpServletRequest request) {
        if (Global.localeSpecified)
            return Global.getLocale();
        HttpSession session = request.getSession(true);
        Locale locale = (Locale) session.getAttribute("locale");
        if (locale != null) {
            return locale;
        }
        // IE中为zh-cn,firefox中为zh-cn,zh;q=0.5 遨游好象不发送这个Accept-Language
        String str = request.getHeader("Accept-Language"); // zh-cn
        // logger.info("getLocale:str=" + str);

        String lang = null;
        String country = null;
        if (str!=null) {
            try {
                String[] ary = str.split("-");
                lang = ary[0];
                country = ary[1];
                // 如果是firefox浏览器还需进一步处理country,如果是IE,则country即为cn
                int d = country.indexOf(",");
                if (d != -1)
                    country = country.substring(0, d);
                // logger.info("getLocale:lang=" + lang + " country=" + country);
            }
            catch (Exception e) { // 防止数组越界等
                logger.error("getLocale: " + e.getMessage());
            }
        }
        if (lang == null || country == null) {
            locale = Global.locale; // Locale.getDefault();
        }
        else {
            HashMap hm = getSupportLangCountry();
            // 如果不支持则返回CWBBS默认的locale
            if (!hm.containsKey(lang + "_" + country)) {
                locale = Global.locale;
            } else
                locale = new Locale(lang, country);
        }
        // logger.info("getLocale:" + locale);
        session.setAttribute("locale", locale);
        return locale;
    }

    public String LoadStr(HttpServletRequest request, String key) {
        return LoadString(request, resName, key);
    }

    public static String LoadString(HttpServletRequest request, String key) {
        return LoadString(request, resName, key);
    }

    public static String LoadString(HttpServletRequest request, String resource, String key) {
        String str = "";
        try {
            ResBundle rb = new ResBundle(resource, getLocale(request));
            str = rb.get(key);
            // logger.info("LoadString: key=" + key + " str=" + str + " " + getLocale(request));
        }
        catch (Exception e) {
            logger.error("LoadString: resource=" + resource + " key=" + key + " " + e.getMessage());
        }
        return str;
    }

    public static String LoadStr(HttpServletRequest request, String resource, String key) {
        return LoadString(request, resource, key);
    }

    public static String makeErrMsg(HttpServletRequest request, String errMsg) {
        String str = LoadString(request, "err_display_begin") + errMsg + LoadString(request, "err_display_end");
        return str;
    }

    public static String makeInfo(HttpServletRequest request, String errMsg) {
        String str = LoadString(request, "info_display_begin") + errMsg + LoadString(request, "info_display_end");
        return str;
    }

    /**
     * 获取支持的lang_country
     * @return HashMap
     */
    public static HashMap getSupportLangCountry() {
        String key = "cwbbs_locales";
        HashMap hm = null;
        try {
            hm = (HashMap) RMCache.getInstance().get(key);
        }
        catch (Exception e) {
            logger.error("getSupportLocales:" + e.getMessage());
        }
        if (hm==null) {
            hm = new HashMap();
            XMLConfig xc = new XMLConfig("config_i18n.xml", false, "utf-8");
            Element root = xc.getRootElement();
            Element child = root.getChild("support");
            List list = child.getChildren();
            if (list != null) {
                Iterator ir = list.iterator();
                while (ir.hasNext()) {
                    Element e = (Element) ir.next();
                    hm.put(e.getChildText("lang") + "_" + e.getChildText("country"), "");
                }
                try {
                    RMCache.getInstance().put(key, hm);
                }
                catch (Exception e) {
                    logger.error("getSupportLocales2:" + e.getMessage());
                }
            }
        }
        return hm;
    }

    public static String formatDate(HttpServletRequest request, Date d) {
        if (d==null)
            return "";
        Privilege pvg = new Privilege();
        TimeZone tz = Global.timeZone;
        if (pvg.isUserLogin(request)) {
            String userName = pvg.getUser(request);
            UserMgr um = new UserMgr();
            UserDb user = um.getUser(userName);
            if (user.isLoaded())
                tz = user.getTimeZone();
        }
        return DateUtil.formatDate(d, DateFormat.MEDIUM,
                                       SkinUtil.getLocale(request), tz);
    }

    public static String formatDateTime(HttpServletRequest request, Date d) {
        if (d==null)
            return "";
        Privilege pvg = new Privilege();
        TimeZone tz = Global.timeZone;
        if (pvg.isUserLogin(request)) {
            String userName = pvg.getUser(request);
            UserMgr um = new UserMgr();
            UserDb user = um.getUser(userName);
            if (user.isLoaded())
                tz = user.getTimeZone();
        }
        // logger.info("formatDateTime:" + tz);
        return DateUtil.formatDateTime(d, DateFormat.MEDIUM, DateFormat.MEDIUM, SkinUtil.getLocale(request), tz);
    }
}

⌨️ 快捷键说明

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