`

chx 学习jForum笔记一

阅读更多

目标:jForum二次开发,读懂源程序。
修改权限管理模块,使之适应原有系统的权限功能。

修改用户管理模块,去除无用的信息,改造用户信息数据表格式。

增加数据导入功能,自动从原论坛读出数据内容写入jForum数据表。


jForum源程序阅读笔记一

2010.12.3 从日期格式开始,发现/jforum/forums/list.page中显示的日期格式为dd/MM/yyyy,修改SystemGlobals.properties文件中的

dateTime.format = yyyy-MM-dd HH\:mm\:ss
 


刷新页面后,发现仅有一处被改变。于是读源代码:\templates\default\forum_list.htm,发现

${I18n.getMessage("ForumListing.mostUsersEverOnline", [ mostUsersEverOnline.getTotal(), mostUsersEverOnline.getDate()?string ])}   
 


为显示最高线人数及时间的语句。其中mostUsersEverOnline.getTotal() 为获取人数,mostUsersEverOnline.getDate()?string为获取时间。


搜索mostUsersEverOnline得到net.jforum.entities/mostUsersEverOnline.java

以下是三个值:

private int total; //同时在线人数
private String date;  //达到峰时的时间 格式显示
private long timeInMillis;  //达到峰时的时间 毫秒

 以下是设置子程序:

 

public void setTimeInMillis(final long time) {
        this.timeInMillis = time;  //设置毫秒时间
     
        final SimpleDateFormat sdf = new SimpleDateFormat(SystemGlobals.getValue(ConfigKeys.DATE_TIME_FORMAT), Locale.getDefault());
        final GregorianCalendar gcal = new GregorianCalendar();
        gcal.setTimeInMillis(time);

        this.setDate(sdf.format(gcal.getTime()));  //设置显示时间
    }


sdf从配置文件读取格式,setDate那句将当前时间转成字符串赋值给

private String date;  //达到峰时的时间 格式显示

mostUsersEverOnline.java分析结束。继续看哪里调用了mostUsersEverOnline。

在net.jforum.repository/ForumRepository.java中有调用。分析此文件:

 

	public synchronized static void start(final ForumDAO forumDAO, final CategoryDAO categoryDAO, final ConfigDAO configModel)
	{
		instance = new ForumRepository();
		
		if (cache.get(FQN, LOADED) == null) {  //未读入缓存
			instance.loadCategories(categoryDAO); //取分类
			instance.loadForums(forumDAO);       //取板块
			instance.loadMostUsersEverOnline(configModel); //取最高在线人数
			instance.loadUsersInfo();  //取用户信息
			
			final Integer totalMessages = (Integer)cache.get(FQN, TOTAL_MESSAGES); //取缓存信息数
			
			if (totalMessages == null) {
				cache.add(FQN, TOTAL_MESSAGES, Integer.valueOf(0)); //设置缓存信息数为零
			}
			
			cache.add(FQN, LOADED, "1"); //已读入缓存标记
		}
	}
	

 

此start过程先判断是否读入过缓存。如未读入则进行读入工作,并置读入标记。

读入工作如下:

			instance.loadCategories(categoryDAO); //取分类
			instance.loadForums(forumDAO);       //取板块
			instance.loadMostUsersEverOnline(configModel); //取最高在线人数
			instance.loadUsersInfo();  //取用户信息

 

	private void loadCategories(CategoryDAO cm) //取分类
	{
		List<Category> categories = cm.selectAll();  //全部分类
		Set<Category> categoriesSet = new TreeSet<Category>(new CategoryOrderComparator());  //根据比较器比较结果构造空树
		
		for (Iterator<Category> iter = categories.iterator(); iter.hasNext(); ) {
			Category category = iter.next();
			
			cache.add(FQN, Integer.toString(category.getId()), category);  //将分类写入缓存
			categoriesSet.add(category);
		}
		
		cache.add(FQN, CATEGORIES_SET, categoriesSet); //将分类树集合写入缓存
	}

 取分类loadCategories似乎是先从数据表中取出全部分类,然后写入缓存,同时构建一个树形集合并写入缓存。

 

 

分享到:
评论

相关推荐

    chx 学习jForum笔记十八 jForum与ms sqlserver

    《jForum与MS SQLServer整合学习笔记》 jForum是一款基于Java的开源论坛系统,它以其高度可定制性、灵活性和强大的功能深受开发者喜爱。在本文中,我们将深入探讨如何将jForum与Microsoft SQL Server(简称MS SQL...

    chx99个人主页源码_chx99.zip

    【标题】"chx99个人主页源码_chx99.zip" 提供的是一个名为 chx99 的个人主页的源代码。源码通常包含了网站设计、布局、功能实现等核心部分,对于开发者而言是了解网站工作原理、学习前端技术或者进行二次开发的重要...

    CHX TNF JNK之间的关系

    这一研究聚焦于理解CHX(环己亚胺)、TNFα以及JNK(c-Jun N端激酶)三者之间的复杂关系,以及它们如何共同作用于人类肝癌细胞的凋亡过程。 ### CHX(环己亚胺) 环己亚胺(Cycloheximide,CHX)是一种蛋白质合成...

    chx2095中文 英文资料

    **CHX2095**是一款由United Monolithic Semiconductors S.A.S.制造的频率倍增器集成电路(IC),其工作频率范围在7.5至30GHz之间。这款电路设计采用pHEMT工艺,具有0.25微米的栅极长度,通过基板孔、空气桥和电子束...

    CHX-I防火墙官方教程-附带翻译终稿.pdf

    CHX-I防火墙官方教程-附带翻译终稿.pdf

    [CMS程序]chx99个人主页源码_chx99(ASP.NET源码).rar

    【CMS程序】Chx99个人主页源码是基于ASP.NET技术开发的一款网站内容管理系统,主要面向个人用户,用于快速构建个性化主页。ASP.NET是由微软公司推出的服务器端Web应用程序框架,它提供了丰富的功能和高性能,使得...

    CHX

    此外,对于初学者来说,阅读和理解CHX的源代码也是一个很好的学习C语言和理解十六进制编辑器工作原理的机会。 总的来说,CHX 是一款实用的终端工具,它的轻量级设计和高度可定制性使其成为开发人员和系统管理员的...

    HA-SoftEther-CHX虚拟专网

    HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网

    CHX612.zip

    这篇文章将详细讲解与"CHX612.zip"压缩包相关的知识点,主要涉及HX612触摸IC、STC15W408AS微控制器以及相关编程与接口技术。 首先,我们关注的是HX612,这是一款触摸传感器集成电路。不同于常见的I2C接口,HX612...

    北大计算机系高级计算机系统结构课件chx14-arch03-ilp1

    1. **真数据相关(Data Dependences)**:这种相关指的是指令i的结果可能被指令j使用,或者指令j依赖于指令k,而指令k又依赖于指令i。这种关系形成了数据流的链条,例如在计算中,一个指令的输出是另一个指令的输入...

    Chx.rar_最优化_最优化方法_梯度优化_梯度法

    最优化方法是计算机科学、数学和工程领域中的一个重要分支,其目标是找到一个函数的全局或局部极小值。在给定的“Chx.rar”压缩包中,包含的主题是“最优化方法”和“梯度优化”,特别是“梯度法”。这表明压缩包里...

    chx99个人主页源码

    【标题】"chx99个人主页源码"是一个针对个人使用的网站源代码,它提供了构建个人在线展示空间的基础框架。个人主页源码通常包含了HTML、CSS、JavaScript等前端技术,有时也会涉及到PHP、Node.js等后端语言,用于实现...

    [CMS程序]chx99个人主页源码_chx99.zip源码ASP.NET网站源码打包下载

    [CMS程序]chx99个人主页源码_chx99....1.合个人学习技术做项目参考合个人学习技术做项目参考 2.适合学生做毕业设计项目参考适合学生做毕业设计项目技术参考 3.适合小团队开发项目技术参考适合小团队开发项目技术参考

    ASP.NET源码——[CMS程序]chx99个人主页源码.zip

    总的来说,"ASP.NET源码——[CMS程序]chx99个人主页源码.zip"是一个宝贵的学习资源,不仅展示了ASP.NET在实际项目中的应用,也提供了实践和理解Web开发最佳实践的机会。无论是初学者还是经验丰富的开发者,都能从中...

    \HA-SoftEther-CHX虚拟网卡及教程

    本软件是一个模似网卡和集线器的工具,可以模似集线器功能,实现VPN的功能。使得系统把此软件识别成一块网卡,有了这个东西,只要可以访问外网,都可以连接到虚拟HUB上与其他电脑组成局域网,在此虚拟的局域...

    CHX-3大手臂大法兰.SLDDRW

    CHX-3大手臂大法兰.SLDDRW

    北大计算机系高级计算机系统结构课件chx14-arch08-mm1

    【北京大学计算机科学高级计算机系统结构课件chx14-arch08-mm1】主要探讨了计算机系统中的主存,特别是动态随机存取内存(DRAM)的延迟问题以及解决策略。这一讲义由北京大学计算机科学技术系和微处理器研究开发中心...

    程序源码 chx99个人主页源码_chx99(ASP.NET源码).rar

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    ASP.NET-[CMS程序]chx99个人主页源码.zip

    本资源"ASP.NET-[CMS程序]chx99个人主页源码.zip"是一个基于ASP.NET技术的CMS(Content Management System)系统,适用于个人主页的建设和管理。 CMS系统是用于创建、管理和发布数字内容的软件平台,通常包括内容...

Global site tag (gtag.js) - Google Analytics