📄 timeconfig.java
字号:
package com.redmoon.forum.security;import org.jdom.*;import org.jdom.output.*;import org.jdom.input.*;import java.io.*;import java.net.URL;import org.apache.log4j.Logger;import java.net.URLDecoder;import java.util.*;import cn.js.fan.util.StrUtil;import cn.js.fan.cache.jcs.RMCache;import javax.servlet.http.HttpServletRequest;import cn.js.fan.web.SkinUtil;import com.redmoon.forum.Privilege;public class TimeConfig { private final String CONFIG_FILENAME = "config_forum_time.xml"; private final String rootChild = "forum"; Logger logger; private String cfgpath; Document doc = null; Element root = null; final String cacheGroup = "forum_reg_time"; public TimeConfig() { logger = Logger.getLogger(TimeConfig.class.getName()); } public void init() { URL cfgURL = getClass().getClassLoader().getResource( "/" + CONFIG_FILENAME); cfgpath = cfgURL.getFile(); cfgpath = URLDecoder.decode(cfgpath); SAXBuilder sb = new SAXBuilder(); try { FileInputStream fin = new FileInputStream(cfgpath); doc = sb.build(fin); root = doc.getRootElement(); fin.close(); } catch (org.jdom.JDOMException e) { logger.error("RegConfig:" + e.getMessage()); } catch (java.io.IOException e) { logger.error("RegConfig:" + e.getMessage()); } } public String getDescription(HttpServletRequest request, String name) { return SkinUtil.LoadString(request, "res.config.config_forum_time", name); } public Element getRootElement() { if (root == null) { init(); } return root; } public void refresh() { try { RMCache.getInstance().invalidateGroup(cacheGroup); } catch (Exception e) { logger.error("refresh:" + e.getMessage()); } } public String getProperty(String name) { String v; if (root == null) init(); Element element = root.getChild("forum").getChild(name); v = element.getValue(); return v; } public int[][] getTimeSectArray(String name) { int[][] r = null; try { r = (int[][]) RMCache.getInstance().getFromGroup(name, cacheGroup); } catch (Exception e) { logger.error("getTimeSect:" + e.getMessage()); } if (r == null) { String timeSectProp = getProperty(name); if (timeSectProp.equals("")) return null; r = parseTimeSect(timeSectProp); if (r!=null) { try { RMCache.getInstance().putInGroup(name, cacheGroup, r); } catch (Exception e) { logger.error("getTimeSect2:" + e.getMessage()); } } } return r; } public int getIntProperty(String name) { String p = getProperty(name); if (StrUtil.isNumeric(p)) { return Integer.parseInt(p); } else return 0; } public boolean getBooleanProperty(String name) { String p = getProperty(name); return p.equals("true"); } public String[] getStringArrProperty(String name) { String[] p = null; p = StrUtil.split(getProperty(name), "\n"); return p; } public void set(String code, String property, String textValue) { List list = root.getChildren(); if (list != null) { Iterator ir = list.listIterator(); while (ir.hasNext()) { Element child = (Element) ir.next(); String ecode = child.getAttributeValue("code"); if (ecode.equals(code)) { List list1 = child.getChildren(); if (list1 != null) { Iterator ir1 = list1.listIterator(); while (ir1.hasNext()) { Element childContent = (Element) ir1.next(); if (childContent.getName().equals(property)) { childContent.setText(textValue); } } } } } } } public boolean put(String name, String value) { if (root == null) init(); Element which = root.getChild(rootChild).getChild(name); if (which == null) return false; which.setText(value); writemodify(); return true; } public void writemodify() { String indent = " "; Format format = Format.getPrettyFormat(); format.setIndent(indent); format.setEncoding("utf-8"); XMLOutputter outp = new XMLOutputter(format); try { FileOutputStream fout = new FileOutputStream(cfgpath); outp.output(doc, fout); fout.close(); } catch (java.io.IOException e) {} refresh(); } public int[][] parseTimeSect(String timeSect) { if (timeSect.equals("-")) return null; int[][] ary = new int[2][3]; ary[1][0] = -1; int p = timeSect.indexOf("-"); String value1 = ""; String value2 = ""; if (p != -1) { value1 = timeSect.substring(0, p); value2 = timeSect.substring(p + 1); } else value1 = timeSect; String[] ary1 = StrUtil.split(value1, ":"); if (ary1==null) return null; int len1 = ary1.length; String sh1 = ary1[0]; String sm1 = "0"; String ss1 = "0"; if (len1>1) sm1 = ary1[1]; if (len1>2) ss1 = ary1[2]; if (StrUtil.isNumeric(sh1) && StrUtil.isNumeric(sm1) && StrUtil.isNumeric(ss1)) ; else return null; int h1 = Integer.parseInt(sh1); int m1 = Integer.parseInt(sm1); int s1 = Integer.parseInt(ss1); ary[0][0] = h1; ary[0][1] = m1; ary[0][2] = s1; if (!value2.equals("")) { String[] ary2 = StrUtil.split(value2, ":"); int len2 = ary2.length; String sh2 = ary2[0]; String sm2 = "0"; String ss2 = "0"; if (len2>1) sm2 = ary2[1]; if (len2>2) ss2 = ary2[2]; if (StrUtil.isNumeric(sh2) && StrUtil.isNumeric(sm2) && StrUtil.isNumeric(ss2)) ; else return null; int h2 = Integer.parseInt(sh2); int m2 = Integer.parseInt(sm2); int s2 = Integer.parseInt(ss2); ary[1][0] = h2; ary[1][1] = m2; ary[1][2] = s2; } return ary; } public boolean isBetweenTimeSect(String timeSect) { int[][] ary = getTimeSectArray(timeSect); if (ary==null) return false; Calendar cal = Calendar.getInstance(); int h = cal.get(cal.HOUR_OF_DAY); int m = cal.get(cal.MINUTE); int s = cal.get(cal.SECOND); boolean isAfterBegin = false; if (h>ary[0][0]) isAfterBegin = true; else if (h==ary[0][0]) { if (m>ary[0][1]) isAfterBegin = true; else if (m==ary[0][1]) { if (s>=ary[0][2]) isAfterBegin = true; else isAfterBegin = false; } else isAfterBegin = false; } else isAfterBegin = false; if (!isAfterBegin) return false; if (ary[1][0]==-1) { return isAfterBegin; } else { boolean isAfterEnd = false; if (h>ary[1][0]) isAfterEnd = true; else if (h==ary[1][0]) { if (m>ary[1][1]) isAfterEnd = true; else if (m==ary[1][1]) { if (s>=ary[1][2]) isAfterEnd = true; else isAfterEnd = false; } else isAfterEnd = false; } else isAfterEnd = false; return !isAfterEnd; } } public boolean isVisitForbidden(HttpServletRequest request) { Privilege privilege = new Privilege(); if (privilege.isMasterLogin(request)) return false; if (isBetweenTimeSect("forbidVisitTime1") || isBetweenTimeSect("forbidVisitTime2")) { return true; } return false; } public boolean isPostForbidden(HttpServletRequest request) { if (isBetweenTimeSect("forbidPostTime1") || isBetweenTimeSect("forbidPostTime2")) { return true; } return false; } public boolean isPostNeedCheck(HttpServletRequest request) { if (Privilege.isMasterLogin(request)) return false; if (isBetweenTimeSect("topicCheckTime1") || isBetweenTimeSect("topicCheckTime2")) { return true; } return false; } public boolean isSearchForbidden(HttpServletRequest request) { Privilege privilege = new Privilege(); if (privilege.isMasterLogin(request)) return false; if (isBetweenTimeSect("forbidSearchTime")) { return true; } return false; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -