package edu.sjtu.infosec.ismp.manager.SYSM.user.other.dao.impl; import java.sql.Timestamp; import java.util.Date; import java.util.List; import org.hibernate.Criteria; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import edu.sjtu.infosec.ismp.manager.SYSM.user.other.dao.RoleAssignRecordsDao; import edu.sjtu.infosec.ismp.manager.SYSM.user.other.model.AppSysInfo; import edu.sjtu.infosec.ismp.manager.SYSM.user.other.model.RoleAssignRecords; import edu.sjtu.infosec.ismp.manager.VPM.pm.comm.PMPage; import edu.sjtu.infosec.ismp.manager.VPM.pm.comm.PMPageUtil; import edu.sjtu.infosec.ismp.security.Domain; public class RoleAssignRecordsDaoImpl extends HibernateDaoSupport implements RoleAssignRecordsDao { public void add(RoleAssignRecords roleAssignRecords) throws Exception { getHibernateTemplate().saveOrUpdate(roleAssignRecords); } public void delete(RoleAssignRecords roleAssignRecords) throws Exception { getHibernateTemplate().delete(roleAssignRecords); } public void update(RoleAssignRecords roleAssignRecords) throws Exception { getHibernateTemplate().saveOrUpdate(roleAssignRecords); getHibernateTemplate().flush(); } public List<RoleAssignRecords> findAll() throws Exception { List<RoleAssignRecords> list = getHibernateTemplate().loadAll(RoleAssignRecords.class); return list; } public RoleAssignRecords findById(int id) throws Exception { RoleAssignRecords roleAssignRecords = (RoleAssignRecords)getHibernateTemplate().get(RoleAssignRecords.class, id); return roleAssignRecords; } public List<RoleAssignRecords> findAll(Timestamp startRecordTime, Timestamp endRecordTime, int startResult, int maxResult) throws Exception { return getConditionsPage(this.getSession().createCriteria(AppSysInfo.class),null); } public List<RoleAssignRecords> findAllByDomain(List<Domain> domainList) throws Exception { return findConditionsInfo(null,domainList, null,null,null); } public List<RoleAssignRecords> findAllByDomain(List<Domain> domainList, Timestamp startRecordTime, Timestamp endRecordTime, int startResult, int maxResult) throws Exception { return findConditionsInfo(null,domainList, null,startRecordTime,endRecordTime); } public long findAllNum(Timestamp startRecordTime, Timestamp endRecordTime) throws Exception { return 0; } public long findAllNumByDomain(List<Domain> domainList, Timestamp startRecordTime, Timestamp endRecordTime) throws Exception { return 0; } public List<RoleAssignRecords> findConditionsInfo(RoleAssignRecords roleAssignRecords,PMPage page, Timestamp startRecordTime, Timestamp endRecordTime) { Criteria criteria = this.getSession().createCriteria(RoleAssignRecords.class); getCommASInfos(criteria,roleAssignRecords); findConditionsDate(criteria,startRecordTime,endRecordTime); int count=findNumConditionsInfo(roleAssignRecords,page, startRecordTime, endRecordTime); page.setPageInfo(PMPageUtil.createPage(page, count)); return getConditionsPage(criteria,page); } public List<RoleAssignRecords> findConditionsInfo(AppSysInfo syInfo, List<Domain> domainList, PMPage page, Timestamp startRecordTime, Timestamp endRecordTime) { Criteria criteria = this.getSession().createCriteria(RoleAssignRecords.class); findConditionsDate(criteria,startRecordTime,endRecordTime); return getConditionsPage(criteria,page); } @SuppressWarnings("unchecked") private List<RoleAssignRecords> getConditionsPage(Criteria criteria,PMPage page){ criteria.setFirstResult(page.getBeginIndex()); criteria.setMaxResults(page.getEveryPage()); List<RoleAssignRecords> list = criteria.list(); return list; } private int getNumConditionsPage(Criteria criteria){ criteria.setProjection(Projections.rowCount()); int listCount = (Integer) criteria.uniqueResult(); return listCount; } private void getCommASInfos(Criteria criteria,RoleAssignRecords roleAssignRecords) { if(!(roleAssignRecords == null)) { if(!(roleAssignRecords.getUser()==null) && !(roleAssignRecords.getUser().trim()=="")) { criteria.add(Restrictions.like("user", "%"+roleAssignRecords.getUser()+"%")); } if(!(roleAssignRecords.getOperator()==null) && !(roleAssignRecords.getOperator().trim()=="")) { criteria.add(Restrictions.like("operator", "%"+roleAssignRecords.getOperator()+"%")); } if(!(roleAssignRecords.getRole() == null) && !(roleAssignRecords.getRole().getName() == null)) { criteria.add(Restrictions.eq("role.name", roleAssignRecords.getRole().getName())); } if(!(roleAssignRecords.getAppSys() == null) && !(roleAssignRecords.getAppSys().getName() == null)) { criteria.add(Restrictions.eq("appSys.name", roleAssignRecords.getAppSys().getName())); } if(!(roleAssignRecords.getAppSys() == null) && roleAssignRecords.getAppSys().getId() > 0) { criteria.add(Restrictions.eq("appSys.id", roleAssignRecords.getAppSys().getId())); } } } private void findConditionsDate(Criteria criteria,Timestamp startDate, Timestamp endDate){ if(!(startDate==null) && !(endDate == null)) { criteria.add(Restrictions.ge("lastChangeTime", startDate)).add(Restrictions.le("lastChangeTime", endDate)); } if(!(startDate == null) && endDate == null) { criteria.add(Restrictions.ge("lastChangeTime", startDate)).add(Restrictions.le("lastChangeTime", new Date())); } if(startDate == null && !(endDate == null)) { criteria.add(Restrictions.le("lastChangeTime", endDate)); } } private int findNumConditionsInfo(RoleAssignRecords roleAssignRecords,PMPage page, Timestamp startRecordTime, Timestamp endRecordTime) { Criteria criteria = this.getSession().createCriteria(RoleAssignRecords.class); getCommASInfos(criteria,roleAssignRecords); findConditionsDate(criteria,startRecordTime,endRecordTime); return getNumConditionsPage(criteria); } }