目标: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似乎是先从数据表中取出全部分类,然后写入缓存,同时构建一个树形集合并写入缓存。
分享到:
相关推荐
NULL 博文链接:https://caihexi.iteye.com/blog/919868
chx99个人主页源码_chx99
中文资料 英文资料 好重要的 很好很强大的哦
这是生物方面的资源,不感兴趣的人不建议下载
CHX-I防火墙官方教程-附带翻译终稿.pdf
HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网HA-SoftEther-CHX虚拟专网
[CMS程序]chx99个人主页源码_chx99(ASP.NET源码).rar
CHX轻巧的终端十六进制编辑器。可以在config.h中更改命令和键绑定
北大计算机系高级计算机系统结构课件chx14-arch07-MT1
1. Data dependences (also called true data dependences) 2. name dependences 3. c
本软件是一个模似网卡和集线器的工具,可以模似集线器功能,实现VPN的功能。使得系统把此软件识别成一块网卡,有了这个东西,只要可以访问外网,都可以连接到虚拟HUB上与其他电脑组成局域网,在此虚拟的局域...
[CMS程序]chx99个人主页源码_chx99....1.合个人学习技术做项目参考合个人学习技术做项目参考 2.适合学生做毕业设计项目参考适合学生做毕业设计项目技术参考 3.适合小团队开发项目技术参考适合小团队开发项目技术参考
CHX-3大手臂大法兰.SLDDRW
chx03_org05_MIPS_4b
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
CHX-I防火墙官方教程-附带翻译借鉴.pdf
ASP.NET-[CMS程序]chx99个人主页源码.zip
HX612和STC15W408AS的测试程序。 触摸后从串口发送按键号。只打开短按键模式。 HX612接在P33、P34上。这个IC并不是I2C接口。
ASP.NET源码——[CMS程序]chx99个人主页源码.zip