有bug的程序




private int mStdId;

//leaf 0 是根 1是叶子
private boolean[] aryNodeStatus = new boolean[100];
private List<CourseIsBuy> ListBuyTree = new ArrayList<CourseIsBuy>();

public void CreateCourseBuyRec(Course cs, boolean isBuy, boolean isRoot) {
CourseIsBuy ss = new CourseIsBuy();


ss.setCs(cs);
ss.setIsBuyed(isBuy);
ss.setIsRootCourse(isRoot);
System.out.println(ss.getCs().getCname()+" isbuy:"+ss.isIsBuyed());
ListBuyTree.add(ss);

}

public List<CourseIsBuy> findTreeForBuy(int stdId) {
mStdId = stdId;
ListBuyTree.clear();

List<Course> list = (List<Course>) stdCourseDao.findStdCourseByPid(0);
if(list==null) return ListBuyTree;
for (Course course : list) {
//不是叶子
//0是叶子 1非叶子
if (course.getLeaf().equals("1")) {



boolean bIsBuy = stdCourseDao.findStdCourseByScId(stdId,
course.getCid());


CreateCourseBuyRec(course, bIsBuy, bIsBuy);

aryNodeStatus[0] = true;

this.treeBuy(course.getCid(), 0, aryNodeStatus, bIsBuy);
} else {


boolean bIsBuy = stdCourseDao.findStdCourseByScId(stdId,
course.getCid());



CreateCourseBuyRec(course, bIsBuy, false);
}
}


return ListBuyTree;
}

/**
* function :找到整个树并找到已购的课程
*
* @param:
*/
private void treeBuy(Integer cid, Integer level, boolean[] aryIsLastNode,
boolean isBuyFlag) {
int index = 0;

List<Course> list = (List<Course>) stdCourseDao.findStdCourseByPid(cid);
if (list==null) return;

for (Course course : list) {

String symbol = "";
String symbolf = " ";
index++;

// 先画上级节点延续下来的"|"+空格,空格具体数目由层数决定

for (int lev = 0; lev < level; lev++) {
if (aryIsLastNode[lev] == false)
symbolf += "│ ";
else
symbolf += "  ";
}
// 是否为最后一个节点
if (index == list.size()) {
symbol = "└";

} else {
symbol = "├";

}
String cname = symbolf + symbol + course.getCname();


course.setCname(cname);

boolean bIsBuy = false;
if (course.getLeaf().equals("0")) {

// 判断一下他的上级是否已经是被购买了
//Course cs, boolean isBuy, boolean isRoot
//isBuyFlag false
if (!isBuyFlag) {
bIsBuy = stdCourseDao.findStdCourseByScId(mStdId,
course.getCid());
CreateCourseBuyRec(course, bIsBuy, bIsBuy);

isBuyFlag = bIsBuy;
}else{
CreateCourseBuyRec(course, true, false);
}
} else {

// 判断一下他的上级是否已经是被购买了
//!isBuyFlag==true 上级没被购买 isBuyFlag==false上级被购买
if (!isBuyFlag) {
//不显示横线
//这里上级没被购买
bIsBuy = stdCourseDao.findStdCourseByScId(mStdId,
course.getCid());

CreateCourseBuyRec(course, bIsBuy, bIsBuy);
isBuyFlag = bIsBuy;

} else {
//显示横线
CreateCourseBuyRec(course, true, false);
}
course.setLevel(level + 1);
if (index == list.size()) {
aryIsLastNode[level] = true;
} else {
aryIsLastNode[level] = false;
}
treeBuy(course.getCid(), course.getLevel(), aryIsLastNode,
isBuyFlag);
}
}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值