java对论坛排序操作
来源:互联网 发布:java cors 跨域 编辑:程序博客网 时间:2024/06/15 23:33
/** * 设置新闻置顶,如果该新闻占用了其它新闻的置顶位,则将其它新闻置顶位顺位后移 <br> * 如果是取消置顶,则把其它位置的新闻顺位前移 * * @param publishNews * @param topPublishNewsList * @author liangda * @create 2010-10-15 下午03:01:21 */private void sortTopList(PublishNews publishNews, List<PublishNews> topPublishNewsList) {boolean isPublishNewsTop = false;for (PublishNews pn : topPublishNewsList) {if (pn.getId() == publishNews.getId()) {isPublishNewsTop = true;break;}}// 如果之前是置顶的,缓存它旧的置顶位int oldPublishNewsIndex = 0;if (isPublishNewsTop)oldPublishNewsIndex = ((PublishNews) getPublishNewsDao().getEntryObject(publishNews.getId())).getListIndex();boolean overMaxIndex = false;// 如果设置的排位大于数据库里的最大排位,强制处理为最大排位加1if (publishNews.isTopFlag() && publishNews.getListIndex() > topPublishNewsList.size()) {int maxIndex = topPublishNewsList.size() + 1;publishNews.setListIndex(maxIndex);overMaxIndex = true;}int index = publishNews.getListIndex();if (!overMaxIndex && (publishNews.isTopFlag() && isPublishNewsTop)) {// 如果之前已经是置顶,现在还是置顶,并且没超出最大排位,则代表换位操作for (PublishNews pn : topPublishNewsList) {if (oldPublishNewsIndex < index) {if (pn.getListIndex() <= oldPublishNewsIndex || index < pn.getListIndex())continue;pn.setListIndex(pn.getListIndex() - 1); // 如果之前的位置比现在的位置小,其它的就顺位前移} else if (oldPublishNewsIndex > index) {if (pn.getListIndex() < index || oldPublishNewsIndex <= pn.getListIndex())continue;pn.setListIndex(pn.getListIndex() + 1); // 如果之前的位置比现在的位置大,其它的就顺位后移}getPublishNewsDao().update(pn);}} else if (overMaxIndex && (publishNews.isTopFlag() && isPublishNewsTop)) {// 如果之前已经是置顶,现在还是置顶,并且超出最大排位,则代表置为末位for (PublishNews pn : topPublishNewsList) {int pnIndex = pn.getListIndex();if (oldPublishNewsIndex >= pnIndex || publishNews.getId() == pn.getId())continue;pn.setListIndex(pn.getListIndex() - 1);getPublishNewsDao().update(pn);}// 把新闻的置顶位设置为最大排位publishNews.setListIndex(topPublishNewsList.size());} else if (publishNews.isTopFlag() && !isPublishNewsTop) {// 如果以前不是置顶,现在是置顶,代表是新添加置顶,其它的就顺位后移for (PublishNews pn : topPublishNewsList) {if (index > pn.getListIndex())continue;pn.setListIndex(pn.getListIndex() + 1);getPublishNewsDao().update(pn);}} else if (!publishNews.isTopFlag() && isPublishNewsTop) {// 如果该新闻之前是设置着置顶的,现在不是置顶的,代表取消置顶,把其它顺位前移for (PublishNews pn : topPublishNewsList) {if (oldPublishNewsIndex > pn.getListIndex() || publishNews.getId() == pn.getId())continue;pn.setListIndex(pn.getListIndex() - 1);getPublishNewsDao().update(pn);}}}
阅读全文
0 0
- java对论坛排序操作
- JAVA中对LIST进行排序操作
- java 比较器 对多个对象进行排序操作
- Java 实现对Discuz 论坛登录 ()
- 论坛系统遇到的问题3(java.sql.SQLException: 对只转发结果集的无效操作: last)
- Java对汉字排序
- java对中文排序
- JAVA对ArrayList排序
- JAVA对ArrayList排序
- java 对 Map 排序
- Java对Map排序
- Java 对Map排序
- JAVA对ArrayList排序
- Java对Map排序
- JAVA对ArrayList排序
- JAVA对ArrayList排序
- Java对Map排序
- Java对Map排序
- [剑指offer]调整数组顺序使奇数位于偶数前面
- MySQL:有关联的两张表重新生成主键如何关联
- Nvigitiontion Drawer Activity的使用
- 使用Mousetrap处理键盘快捷键(keypress.js和jQuery.hotkeys.js的使用)
- 写日志的一点想法
- java对论坛排序操作
- 微信服务器配置(nginx+python+supervisord, etc:java)
- PHP实现多服务器SESSION共享
- 【动画】上下滑动
- HTML中的行级标签和块级标签
- Spring SSH
- MySQL中文取首字母实现
- MySQL存储过程实现更新UUID
- VirtualPlanetBuilder入门简介