以前按照要求写过一个树型的分支移动的代码,具体的要求呢是当选中某一个节点时,这个节点的分支,通过修改树型结构中的节点的依次的顺序, 做上或者下的移动。主要是代码的结构,觉得有总结的必要
/**
* @pro_code 项目编码
* @selectId 选中的节点的ID
* @isUp 移动的方向
*
**/
public void moveUpDown(String pro_code, Long selectId, Long isUp) {
try {
ProjectOrder selectOrder = dataOrderDao.getProjectOrder(pro_code, selectId);
List selectList = dataOrderDao.findBranch(selectOrder);
ProjectOrder targetOrder =
dataOrderDao.findTargetProjectOrder (selectOrder, isUp);
if (targetOrder == null)
throw new BusinessException("不能再移动");
List targetList = dataOrderDao.findBranch(targetOrder);
long selectLen = selectList.size();
long targetLen = targetList.size();
updateOrder(targetList, isUp == 2 ? -selectLen:selectLen);
updateOrder(selectList, isUp == 1 ? -targetLen:targetLen);
dataOrderDao.updateOrder(selectList);
dataOrderDao.updateOrder(targetList);
} catch (Exception e) {
if (e instanceof BusinessException) throw (BusinessException) e;
LOG.error("移动出现错误", e);
throw new BusinessException("移动出现错误");
}
}
这只是当时写的,现在觉得有一点启发的代码,肯定有不足,希望给予指点。
经过修改和补充之后的代码:
/**
* @projectCode 项目编码
* @selectId 选中的节点的ID
* @upDown 移动的方向 0:down 1:up
**/
public void moveBranch(String projectCode, Long selectId, Integer upDown) {
try {
ProjectOrder startOrder = dataOrderDao.getProjectOrder(projectCode, selectId);
List nowBranch = getBranch(startOrder);
ProjectOrder targetOrder = findTargetOrder(startOrder, upDown);
List targetBranch = getBranch(targetOrder);
updateNowBranch(nowBranch, upDown, targetBranch.size());
updateTargetBranch(targetBranch,upDown, nowBranch.size());
} catch (Exception e) {
if (e instanceof BusinessException) throw (BusinessException) e;
LOG.error("移动出现错误", e);
throw new BusinessException("移动出现错误");
}
}
private void updateNowBranch(List nowBranch, Integer upDown, Long size) {
updateBranchOrder(nowBranch, upDown == 1 ? -size : size);
}
private void updateTargetBranch(List targetBranch, Integer upDown, Long size) {
updateBranchOrder(targetBranch, upDown == 1 ? size : -size);
}
private ProjectOrder findTargetOrder(ProjectOrder startOrder, Integer upDown) {
ProjectOrder targetOrder =
dataOrderDao.findTargetProjectOrder (startOrder, upDown);
return targetOrder;
}
private List getBranch(ProjectOrder startOrder) {
if (startOrder == null)
throw new BusinessException("不能再移动");
List branch = dataOrderDao.findBranch(startOrder);
return branch
}
private void updateBranchOrder(List branch, long size){
updateOrder(branch, size);
dataOrderDao.updateOrder(branch);
}
private void updateOrder(List<ProjectOrder> branch, long size) {
for (ProjectOrder each : branch) {
order.setOrder_num(each.getOrder_num() + size);
}
}
分享到:
相关推荐
本资源“易语言源码取树型框当前选中项的全路径.rar”正是针对如何获取树型框中当前被选中的项的完整路径提供的一段源代码。 在易语言中,树型框的交互通常涉及以下几个核心概念: 1. **树型框控件**:这是一个...
在Java中,可以使用诸如Weka这样的数据挖掘工具库,或者自定义代码来实现树型朴素贝叶斯算法。Weka提供了丰富的机器学习算法接口,包括NaiveBayesTree类,可以直接调用。如果选择自定义实现,可以参考以下步骤: 1....
通过阅读和理解这段源码,开发者可以了解到如何在易语言中创建和管理树型框,包括添加节点、设置节点属性、响应用户交互等操作。 在实际应用中,填充树型框模块可能会涉及以下几个关键知识点: 1. **树型框控件的...
这种树型插件在网页中常用于展示层级数据,如目录结构、组织架构或者导航菜单等。接下来,我们将深入探讨eXtree与jQuery结合使用的核心概念、功能和实现方法。 一、eXtree核心特性 1. 动态加载:eXtree支持动态加载...
总的来说,这个项目提供了一个学习和研究AI在棋类游戏应用的实例,尤其是对于那些想了解如何在Java中实现简单AI的开发者来说,这是一个不错的实践案例。通过分析和改进这个项目,可以进一步提升对游戏AI设计和Java...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
13. **顺序表的元素移动**:在顺序表中,插入一个元素时,需要将第 i 个元素之后的所有元素都向后移动一位,共需移动 n-i+1 个元素。 14. **顺序表的删除操作**:删除第 i 个元素时,需要将后面的元素都向前移动一...
10. 临界区:临界区是指进程中访问临界资源的代码段,必须保证在同一时刻只有一个进程在临界区内执行。 11. 死锁预防:预防死锁的一种有效方法是破坏四个必要条件之一,如避免循环等待资源。 12. 进程状态:新创建...
PreFixSpan算法是另一个序列模式挖掘算法,在算法的过程中不会产生候选集,给定初始前缀模式,不断的通过后缀模式中的元素转到前缀模式中,而不断的递归挖掘下去。详细介绍链接 CBA 基于关联规则分类算法。CBA算法...
4. **计算机病毒**:计算机病毒通常是一段程序代码,能够自我复制并在计算机系统中传播,可能破坏数据或系统功能。 5. **8位二进制数的范围**:8位二进制数所能表示的最大十进制数是255(11111111),最小是0...
循环结构是编程中常用的一种控制结构,用于重复执行一段代码直到满足某个条件为止。常见的循环结构包括For循环、While循环等。 **案例分析:** 题目中的VB程序段使用了For循环来累加1到5之间的所有整数。最终,变量...
2. **计算机病毒**:计算机病毒通常是一段程序代码,能够自我复制并可能对系统造成破坏。 3. **二进制与十进制转换**:8位二进制数所能表示的十进制数范围是0~255,因为2^8=256,但最左边的一位是符号位,因此有效...
修改BUG:超级列表框在属性“整行选择”为真时,鼠标单击第一列右面也会导致第一列中的选择框被选中或取消选中。 21. 修改BUG:Sqlite3数据库支持库中“Sqlite数据库.取错误文本()”返回的文本是UTF-8编码(应是GB...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
22. 动态重定位的实现时机是在作业的执行过程中,使得程序可以根据需要在内存中移动。 23. 虚拟存储器允许作业运行前不必全部装入内存,在运行时也不必常驻内存,通过页面替换策略实现。 24. 数据传送方式中的DMA...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个...
7. 代码段执行后count的值是D.16。这是一个简单的for循环,最后count会被设置为16。 8. 存放图像数据应设为OLE对象或二进制数据类型。这允许数据库存储非文本或非数值的数据,如图片、文档等。 9. 修改选定文本的...