jive论坛消息的threaded显示模式解析
jive主题的消息有两种显示方式:flat和threaded,具体可以在jive_config.xml中配置,配置的选项是skin.default.threadmode。
ForumMessage rootMessage = thread.getRootMessage();
Iterator messages = treeWalker.recursiveChildren(rootMessage);
return new IteratorProxy(JiveGlobals.MESSAGE,
treeWalker.recursiveChildren(parent), authorization, permissions);
}
long [] messages = tree.getRecursiveChildren(parent.getID());
return new DatabaseObjectIterator(JiveGlobals.MESSAGE, messages,
parent.getForumThread());
}
* |-- 3
* |-- |--4
* |-- |--6
* |-- 5
*
* array index: 0 | 1 | 2 | 3 | 4
*
* key: 1 | 3 | 4 | 5 | 6
* leftChild: 1 | 2 |-1 |-1 |-1
* rightSiblings -1 | 3 | 4 |-1 |-1
......
int numMessages = thread.getMessageCount(IGNORE_MODERATION_FILTER);
tree = new LongTree(root.getID(), numMessages);
PreparedStatement pstmt = null;
try {
con = ConnectionManager.getConnection();
pstmt = con.prepareStatement(GET_MESSAGES);
pstmt.setLong(1, thread.getID());
ResultSet rs = pstmt.executeQuery();
while(rs.next()) {
long messageID = rs.getLong(1);
long parentMessageID = rs.getLong(2);
tree.addChild(parentMessageID, messageID);
}
}
......
char startIndex = findKey(parentKey, (char)1);
long [] depthKeys = new long[nextIndex-1];
int cursor = 0;
char siblingIndex = leftChildren[startIndex];
while (siblingIndex != 0) {
cursor = fillDepthKeys(siblingIndex, depthKeys, cursor);
siblingIndex = rightSiblings[siblingIndex];
}
long [] dKeys = new long[cursor];
for (int i=0; i<cursor; i++) {
dKeys[i] = depthKeys[i];
}
return dKeys;
}
jive论坛消息的threaded显示模式解析相关推荐
- 跟我学RocketMQ之批量消息发送源码解析
上篇文章 跟我学RocketMQ之消息发送源码解析 中,我们已经对普通消息的发送流程进行了详细的解释,但是由于篇幅问题没有展开讲解批量消息的发送.本文中,我们就一起来集中分析一下批量消息的发送是怎样的 ...
- Android Handler消息机制不完全解析
1.Handler的作用 Android开发中,我们经常使用Handler进行页面的更新.例如我们需要在一个下载任务完成后,去更新我们的UI效果,因为AndroidUI操作不是线程安全的,也就意味着我 ...
- Android Framework学习(八)之Handler消息机制(Native层)解析
在深入解析Android中Handler消息机制一文中,我们学习了Handler消息机制的java层代码,这次我们来学习Handler消息机制的native层代码. 在Java层的消息处理机制中,Me ...
- android message的作用,Android消息机制之Message解析(面试)
在android的消息机制中,Message其充当着信息载体的一个角色,通俗的来说,我们看作消息机制就是个工厂的流水线,message就是流水线上的产品,messageQueue就是流水线的传送带.之 ...
- 消息系统kafka原理解析
Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Clouder ...
- 消息队列 应用场景 解析
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 另外腾讯云-云社区还有一文不允许转载,但内容挺好的:https://cloud.tencent.co ...
- 消息队列应用场景解析
分布式消息服务DMS是完全托管的高性能消息队列服务,提供普通队列.有序队列.Kafka.RabbitMQ,兼容HTTP.TCP.AMQP协议,为分布式应用提供灵活可靠的异步通信机制.使用DMS,用户可 ...
- 队列处理高并发_高并发架构消息队列面试题解析
面试题 为什么使用消息队列? 消息队列有什么优点和缺点? Kafka.ActiveMQ.RabbitMQ.RocketMQ 都有什么区别,以及适合哪些场景? 面试官心理分析 其实面试官主要是想看看: ...
- android 手机内存uri_Android消息机制Handler原理解析
关注[搜狐技术产品]公众号,第一时间获取技术干货 导读 在Android中,Handler一直是一个热点,在开发过程中,它的使用频率很高,而且在Android源码中Handler都是常客.那么Hand ...
最新文章
- CMAKE设置INSTALL工程,分别设置头文件、Lib和DLL的输出路径
- oracle 常用命令大汇总
- python变量类型-python 变量类型 number
- 从Config文件中读取节点的配置信息
- tidb mysql5.7_MYSQL5.7实时同步数据到TiDB
- android系统优势 研究,Android系统关注度持续保持优势
- 极化SAR图像四成分分解
- 服务器esn和文件esn不匹配,如何获取服务器ESN
- 【团队管理】如何做好技术团队年终复盘
- ansible的使用
- java未将对象引用设置_未将对象引用设置到对象的实例,怎么解决啊??
- 【JDK7】新特性(1) 概述
- 开机自动启动 Ubuntu iBus 输入法
- Worksoft Certify学习之路
- 这样干前端你早该考虑离职了
- 极智Paper | 单级特征检测网络 YOLOF
- mysql返回第n个值_【单选题】以下MySQL聚合函数,返回n个数值平均值的是( )。
A. MAX B. SUM C...
- 用基础jQuery制作个性化留言板
- python 超大json文件读取
- .net core集成cas统一身份认证