package com.infrastructure.project.base.dao.daos;
import java.text.DecimalFormat;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import com.infrastructure.project.base.dao.interfaces.IChainEntityDao;
import com.infrastructure.project.base.model.models.ChainEntity;
import com.infrastructure.project.common.exception.EntityOperateException;
import com.infrastructure.project.common.exception.ValidatException;
public abstract class ChainEntityDao<PKType extends Number, EntityType extends ChainEntity<PKType, EntityType>>
extends EnableEntityDao<PKType, EntityType> implements IChainEntityDao<PKType, EntityType> {
protected void setLevelCode(EntityType entity) throws ValidatException {
/*PKType id=(PKType)super.getSession().save(entity);
if(entity.getParent()==null){
entity.setLevelCode(id.toString());
super.getSession().update(entity);
}
else{
EntityType parentEntity=super.get(entity.getParent().getId());
if(parentEntity==null)
throw new ValidatException("The parent does not exist!");
else{
entity.setLevelCode(parentEntity.getLevelCode()+","+id.toString());
super.getSession().update(entity);
}
}*/
DecimalFormat df = new DecimalFormat( "000" );
EntityType maxLevelCodeEntity;
if(entity.getParent()==null)
maxLevelCodeEntity=getMaxLevelCodeExceCurrentEntity(null, entity.getId());
else
maxLevelCodeEntity=getMaxLevelCodeExceCurrentEntity(entity.getParent().getId(), entity.getId());
if(maxLevelCodeEntity==null){
if(entity.getParent()==null)
entity.setLevelCode(df.format(1));
else
entity.setLevelCode(entity.getParent().getLevelCode()+df.format(1));
}
else{
String maxLevelCodeStr=maxLevelCodeEntity.getLevelCode();
int maxLevelCode=Integer.parseInt(maxLevelCodeStr.substring(maxLevelCodeStr.length()-3, maxLevelCodeStr.length()));
if(maxLevelCode+1>999)
throw new ValidatException("The levelcode exceeds the maximum of 999!");
else{
if(entity.getParent()==null)
entity.setLevelCode(df.format(maxLevelCode+1));
else
entity.setLevelCode(entity.getParent().getLevelCode()+df.format(maxLevelCode+1));
}
}
}
/*protected int getChildrenCount(EntityType entity){
Criteria criteria = getCriteria();
//criteria.add(Restrictions.eq("parentId", entity.getId()));
//criteria.createAlias("parent", "p").add(Restrictions.eq("p.id", entity.getId()));
criteria.createCriteria("parent").add(Restrictions.eq("id", entity.getId()));
criteria.setProjection(Projections.rowCount());
return Integer.parseInt(criteria.uniqueResult().toString());
}*/
@SuppressWarnings("unchecked")
public EntityType getMaxLevelCodeExceCurrentEntity(PKType parentId, PKType currentId) {
List<EntityType> ret;
Criteria criteria=super.getCriteria().add(Restrictions.ne("id", currentId));
if(parentId==null)
criteria.add(Restrictions.isNull("parent"));
else
criteria.createCriteria("parent").add(Restrictions.eq("id", parentId));
criteria.setMaxResults(1);
ret=criteria.list();
if(ret!=null && ret.size()>0)
return ret.get(0);
return null;
}
private void updateLevelCode(EntityType entity){
if(entity.getParent()==null)
entity.setLevelCode(entity.getId().toString());
else
entity.setLevelCode(entity.getParent().getLevelCode()+","+entity.getId().toString());
super.getSession().update(entity);
}
@SuppressWarnings("unchecked")
public List<EntityType> listByParentId(PKType parentId) {
if(parentId==null)
return super.getCriteria().add(Restrictions.isNull("parent")).list();
else
return super.getCriteria().createCriteria("parent").add(Restrictions.eq("id", parentId)).list();
//return super.getCriteria().createAlias("parent", "p").add(Restrictions.eq("p.id", parentId)).list();
//return super.getCriteria().add(Restrictions.sqlRestriction(" {alias}.parentId = ? ", parentId, Hibernate.STRING)).list();
//.add(Restrictions.eq("parentId", parentId)).list();
}
@SuppressWarnings("unchecked")
public List<EntityType> listByParentIdExceCurrent(PKType parentId, PKType currentId) {
if(parentId==null)
return super.getCriteria().add(Restrictions.ne("id", currentId)).add(Restrictions.isNull("parent")).list();
else
return super.getCriteria().add(Restrictions.ne("id", currentId)).createCriteria("parent").add(Restrictions.eq("id", parentId)).list();
//return super.getCriteria().createAlias("parent", "p").add(Restrictions.eq("p.id", parentId)).list();
//return super.getCriteria().add(Restrictions.sqlRestriction(" {alias}.parentId = ? ", parentId, Hibernate.STRING)).list();
//.add(Restrictions.eq("parentId", parentId)).list();
}
@Override
public void save(EntityType entity) throws EntityOperateException, ValidatException{
super.checkNull(entity);
super.checkCreatable(entity);
if(entity.getParent()!=null)
entity.setParent(get(entity.getParent().getId()));
//setLevelCode(entity);
entity.setLevelCode("");
super.getSession().save(entity);
updateLevelCode(entity);
}
@Override
public void update(EntityType entity) throws EntityOperateException, ValidatException{
super.checkNull(entity);
super.checkUpdatable(entity);
if(entity.getParent()!=null)
entity.setParent(get(entity.getParent().getId()));
//setLevelCode(entity);
super.getSession().update(entity);
updateLevelCode(entity);
}
@Override
public void delete(EntityType entity) throws EntityOperateException, ValidatException{
super.checkNull(entity);
super.checkUpdatable(entity);
if(entity.getChildren()!=null || !entity.getChildren().isEmpty())
throw new ValidatException("The entity has children can't be delete!");
else
super.getSession().delete(entity);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现(2)
共80个文件
class:36个
java:36个
mf:2个
1星 需积分: 9 61 下载量 59 浏览量
2015-07-16
17:03:51
上传
评论 1
收藏 55KB RAR 举报
温馨提示
基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现
资源推荐
资源详情
资源评论
收起资源包目录
InfrastructureProjects.rar (80个子文件)
InfrastructureProjects
.project 837B
common
com
infrastructure
project
common
utilities
PageListUtil.java 1KB
IPageList.java 862B
PageList.java 2KB
extension
StringHelper.java 2KB
UrlHelper.java 3KB
ArrayHelper.java 1022B
exception
ValidatException.java 319B
PermissionException.java 325B
EntityOperateException.java 338B
base
com
infrastructure
project
base
service
services
ChainEntityService.java 850B
EnableEntityService.java 2KB
EntityService.java 4KB
SimpleEntityService.java 962B
interfaces
ISimpleEntityService.java 486B
IChainEntityService.java 492B
IEnableEntityService.java 920B
IEntityService.java 2KB
model
models
Entity.java 586B
EnableEntity.java 390B
SimpleEntity.java 269B
ChainEntity.java 1KB
interfaces
IChainEntity.java 190B
IDeletable.java 172B
IEnableable.java 173B
IEnableEntity.java 266B
ICUDEable.java 247B
ICreatable.java 171B
IUpdatable.java 172B
dao
daos
ChainEntityDao.java 6KB
EnableEntityDao.java 2KB
EntityDao.java 6KB
SimpleEntityDao.java 385B
interfaces
IEntityDao.java 3KB
IEnableEntityDao.java 698B
IChainEntityDao.java 282B
ISimpleEntityDao.java 267B
META-INF
MANIFEST.MF 39B
.settings
org.eclipse.wst.common.project.facet.core.xml 261B
org.eclipse.jdt.core.prefs 587B
org.eclipse.core.resources.prefs 109B
org.eclipse.wst.common.component 307B
.classpath 2KB
bin
com
infrastructure
project
common
utilities
PageList.class 3KB
IPageList.class 473B
PageListUtil.class 1KB
extension
ArrayHelper.class 2KB
StringHelper.class 3KB
UrlHelper.class 4KB
exception
PermissionException.class 497B
EntityOperateException.class 506B
ValidatException.class 488B
base
service
services
EnableEntityService.class 3KB
EntityService.class 5KB
SimpleEntityService.class 2KB
ChainEntityService.class 2KB
interfaces
IEnableEntityService.class 1KB
IChainEntityService.class 693B
ISimpleEntityService.class 691B
IEntityService.class 1KB
model
models
ChainEntity.class 3KB
SimpleEntity.class 900B
EnableEntity.class 1001B
Entity.class 1KB
interfaces
IChainEntity.class 154B
IEnableEntity.class 156B
ICUDEable.class 417B
IUpdatable.class 150B
ICreatable.class 150B
IEnableable.class 152B
IDeletable.class 150B
dao
daos
SimpleEntityDao.class 874B
ChainEntityDao.class 6KB
EntityDao.class 7KB
EnableEntityDao.class 3KB
interfaces
IEnableEntityDao.class 890B
IEntityDao.class 1KB
ISimpleEntityDao.class 454B
IChainEntityDao.class 475B
META-INF
MANIFEST.MF 39B
共 80 条
- 1
资源评论
- wwweker12017-03-03据说要三个文件都下载才能用,结果也没那么顺利积分还呢么多。。。
笨驴鱼
- 粉丝: 29
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功