package edu.sjtu.infosec.ismp.manager.ERM.dao.impl;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import edu.sjtu.infosec.ismp.manager.ERM.dao.LinkManDao;
import edu.sjtu.infosec.ismp.manager.ERM.model.LinkMan;
import edu.sjtu.infosec.ismp.manager.ERM.model.RespInfoBO;
import edu.sjtu.infosec.ismp.security.Domain;
public class LinkManDaoImpl extends HibernateDaoSupport implements LinkManDao {
public void add(LinkMan linkMan) throws Exception {
getHibernateTemplate().saveOrUpdate(linkMan);
}
public void delete(LinkMan linkMan) throws Exception {
getHibernateTemplate().delete(linkMan);
}
public void update(LinkMan linkMan) throws Exception {
getHibernateTemplate().saveOrUpdate(linkMan);
getHibernateTemplate().flush();
}
public List<LinkMan> findAll() throws Exception {
List<LinkMan> list = getHibernateTemplate().loadAll(LinkMan.class);
return list;
}
@SuppressWarnings("unchecked")
public List<LinkMan> findAllByDomain(List<Domain> domainList)
throws Exception {
String hql = "from LinkMan lm where 1=1 ";
int i = 0;
for(Domain domain : domainList){
if(i == 0){
hql = hql + " and (lm.respInfo.domain.id=" + domain.getId();
}
if(i > 0){
hql = hql + " or lm.respInfo.domain.id=" + domain.getId();
}
i++;
}
if(i > 0){
hql = hql + ") ";
}
List<LinkMan> list = getHibernateTemplate().find(hql);
return list;
}
public LinkMan findById(int id) {
LinkMan linkMan = (LinkMan)getHibernateTemplate().get(LinkMan.class, id);
return linkMan;
}
public List<LinkMan> findByRespInfo(RespInfoBO respInfo) {
return findByRespInfoId(respInfo.getId());
}
@SuppressWarnings("unchecked")
public List<LinkMan> findByRespInfoId(int id) {
String hql = "from LinkMan lm where lm.respInfo.id="+id;
List<LinkMan> list = getHibernateTemplate().find(hql);
return list;
}
public void deleteLinkManByRespInfo(RespInfoBO resp) {
Query query=this.getSession().createQuery("delete from LinkMan c where c.respInfo=:resp");
query.setEntity("resp", resp);
int i=query.executeUpdate();
}
public void saveorupdate(LinkMan linkman) {
getHibernateTemplate().saveOrUpdate(linkman);
}
public boolean checkTeamId(Integer respid, String teamCode) {
boolean exit = false;
String hql = "from LinkMan c where c.respInfo.id=:respid and c.teamCode=:teamCode";
Query query=this.getSession().createQuery(hql);
query.setInteger("respid", respid);
query.setString("teamCode", teamCode);
List list = query.list();
if(list!=null && list.size()>0) {
exit = true;
}
return exit;
}
public Integer getMaxPid(Integer respid) {
Integer maxPid = new Integer(0);
List maxPidList = getHibernateTemplate().find("select max(pid) from LinkMan c where c.respInfo.id = ?", respid);
Integer i=(Integer) maxPidList.get(0);
if(i!=null) {
maxPid = (Integer) maxPidList.get(0);
}
return maxPid;
}
public void deleteByPid(String s,String respid) {
String hql = "delete from LinkMan c where c.respInfo.id =:respid and c.pid in ("+s+")";
Query query = this.getSession().createQuery(hql);
query.setInteger("respid", Integer.parseInt(respid));
query.executeUpdate();
}
public List<LinkMan> queryByPid(Integer pid,String respid) {
String hql = "from LinkMan c where c.fid=:pid and c.respInfo.id=:respid";
Query query = this.getSession().createQuery(hql);
query.setInteger("pid", pid);
query.setInteger("respid", Integer.parseInt(respid));
List<LinkMan> list = (List<LinkMan>)query.list();
return list;
}
public LinkMan findByTeamId(String teamCode,String respid) {
String hql = "from LinkMan c where c.teamCode=:teamCode and c.respInfo.id=:respid";
Query query = this.getSession().createQuery(hql);
query.setString("teamCode", teamCode);
query.setInteger("respid", Integer.parseInt(respid));
return (LinkMan) query.uniqueResult();
}
}