📄 btreedao.java
字号:
package com.je.ims.dao;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.je.ims.hibernate.*;
public class BTreeDAO extends HibernateDaoSupport {
// 删除所有记录,做实验用
public void Delete(){
getHibernateTemplate().deleteAll(getHibernateTemplate().loadAll(Btree.class));
getHibernateTemplate().deleteAll(getHibernateTemplate().loadAll(ShowBtree.class));
}
public BTreeDAO() {
super();
}
// 新增
public void AddBtree(final Btree btree)
{
getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException {
session.save(btree);
if(btree.getParentId().equals("root"))
{
ShowBtree sbtree = new ShowBtree();
BtreeId bid = btree.getId();
ShowBtreeId sbid = new ShowBtreeId(bid.getNodeId(),bid.getYear());
sbtree.setId(sbid);
sbtree.setShowId(new Long(0));
session.save(sbtree);
}
return null;
}
});
}
// 更新
public void UpdateBtree(Btree btree)
{
getHibernateTemplate().update(btree);
}
// 根据节点id,year寻找它同层所有子节点
public List GetNodeByParentSameLvl(String parentId,Long year){
if (!parentId.equals("root")){
Btree btree = this.GetByNodeId(parentId,year);
Long lvl = btree.getLvl();
List l = getHibernateTemplate().find("from Btree where parentId='"+parentId+"' and id.year="+year+" and lvl="+lvl);
return l;
}
return null;
}
// 根据节点id,year寻找它下一层所有子节点
public List GetNodeByParentNextLvl(String parentId,Long year){
Long lvl;
if(!parentId.equals("root"))
{
Btree btree = this.GetByNodeId(parentId,year);
lvl = btree.getLvl();
lvl = new Long(lvl.longValue()+1);
}
else
lvl = new Long(1);
List l = getHibernateTemplate().find("from Btree where parentId='"+parentId+"' and id.year="+year+" and lvl="+lvl);
return l;
}
// 根据node,year寻找下一层子节点
public List GetNodeByParent(String parentId,Long year){
List l;
if (!parentId.equals("root")){
l = getHibernateTemplate().find("from Btree where parentId='"+parentId+"' and id.year="+year);
return l;
}
else{
String condition = "where btree.id.nodeId = sbtree.id.nodeId and btree.id.year = sbtree.id.year and btree.parentId='"+parentId+"' and btree.id.year="+year+" order by sbtree.showId";
l = getHibernateTemplate().find("select new Btree(btree.id,btree.nodeName,btree.lvl,btree.parentId,btree.privilegeId) from Btree btree,ShowBtree sbtree "+condition);
return l;
}
}
// 根据父节点Id来选出所有子节点信息
public List GetAllByParent(String parentId,Long year){
Btree btree = new Btree();
List l = this.GetNodeByParent(parentId,year);
int n = l.size();
List ltemp;
if (l.size()>0){
for (int i=0;i<n;i++){
btree = (Btree)l.get(i);
ltemp = this.GetAllByParent(btree.getId().getNodeId(),btree.getId().getYear());
l.addAll(ltemp);
}
}
return l;
}
// 根据父节点Id来选出所有子节点信息
public List GetAllByParent(String[] parentId,Long year){
List l = new ArrayList();
List ltemp;
for (int i=0;i<parentId.length;i++){
l.add(this.GetByNodeId(parentId[i],year));
ltemp = this.GetAllByParent(parentId[i],year);
l.addAll(ltemp);
}
return l;
}
// 根据id,year返回Btree对象
public Btree GetByNodeId(String id,Long year){
List l = getHibernateTemplate().find("from Btree where id.nodeId='"+id+"' and id.year="+year);
if(l.size()!=1)
return null;
return (Btree)l.get(0);
}
// 删除节点,同时要删除其所有子节点
public void DeleteNode(final String id,final Long year){
final List l = GetNodeByParent(id,year);
getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException {
for (int i =0;i<l.size();i++){
DeleteNode(((Btree)l.get(i)).getId().getNodeId(),year);
}
if (GetByNodeId(id,year).getParentId().equals("root")){
session.delete(GetShowBtree(id,year));
}
session.delete(GetByNodeId(id,year));
return null;
}
});
}
// 判断一个节点时候有子节点,如果有返回true,否则返回false
public boolean IsNode(Btree btree){
List l = getHibernateTemplate().find("from Btree where parentId='"+btree.getId().getNodeId()+"' and id.year="+btree.getId().getYear());
if (l.size()>0)
return true;
return false;
}
// 返回子节点中层别最大值
public int GetTheLargeLvl(String parentId,Long year){
List l = this.GetAllByParent(parentId,year);
int lvl = 0;
Btree btree;
for (int i=0;i<l.size();i++){
btree = (Btree)l.get(i);
if (btree.getLvl().intValue()>lvl){
lvl = btree.getLvl().intValue();
}
}
return lvl;
}
// 设置字节点的层数
public void SetChildLvl(String parentId,Long year,int sublvl){
List l = this.GetAllByParent(parentId,year);
//int lvl = 0;
Long lvl;
Btree btree;
for (int i=0;i<l.size();i++){
btree = (Btree)l.get(i);
lvl = new Long(btree.getLvl().intValue()+sublvl);
btree.setLvl(lvl);
this.getHibernateTemplate().update(btree);
}
}
// 设置字节点的privilegeId
public void SetChildPrivilegeId(String parentId,Long year,String pid){
List l = this.GetAllByParent(parentId,year);
Btree btree;
for (int i=0;i<l.size();i++){
btree = (Btree)l.get(i);
btree.setPrivilegeId(pid);
this.getHibernateTemplate().update(btree);
}
}
public List GetAllParent(Long year,String nodeId){
List l = getHibernateTemplate().find("from Btree where lvl < 4 and id.year="+year);
for (int i=0;i<l.size();i++){
if (((Btree)l.get(i)).getId().getNodeId().equals(nodeId)){
l.remove(i);
}
}
return l;
}
//////////////////about showbtree/////////////////////////
// 获取showbtree对象
public ShowBtree GetShowBtree(String id,Long year){
List l = getHibernateTemplate().find("from ShowBtree where id.nodeId='"+id+"' and id.year="+year);
if(l.size()!=1)
return null;
return (ShowBtree)l.get(0);
}
// 更新showbtree
public void UpdateShowBtree(ShowBtree sbtree){
getHibernateTemplate().update(sbtree);
}
// 得到所有showbtree
public List GetAllShowBtree(int year){
List l = getHibernateTemplate().find("from ShowBtree where id.year =" +year);
return l;
}
///////////////////////////////////////////////////////////
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -