package edu.sjtu.infosec.ismp.manager.AM.dao.impl; import java.io.Serializable; import java.sql.SQLException; import java.util.List; import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import edu.sjtu.infosec.ismp.manager.AM.dao.AssetHardwareDao; import edu.sjtu.infosec.ismp.manager.AM.model.AssetHardwareBO; import edu.sjtu.infosec.ismp.manager.comm.model.page.Page; /** * AssetHardwareDao接口的实现类 * * @author Breggor * */ @SuppressWarnings("unchecked") public class AssetHardwareDaoImpl extends HibernateDaoSupport implements AssetHardwareDao { /** * 实现接口方法 */ public void saveAssetHardware(AssetHardwareBO entity) { getHibernateTemplate().save(entity); } public void updateAssetHardware(AssetHardwareBO entity) { getHibernateTemplate().update(entity); } public void deleteAssetHardware(AssetHardwareBO entity) { getHibernateTemplate().delete(entity); } public AssetHardwareBO getAssetHardware(Serializable entityId) { return (AssetHardwareBO) getHibernateTemplate().get( AssetHardwareBO.class, entityId); } public List<AssetHardwareBO> getListByAssetHardware(final AssetHardwareBO assetHardware) { return (List<AssetHardwareBO>) spliceCriteria(assetHardware).list(); // return (List<AssetHardwareBO>) getHibernateTemplate().execute(new HibernateCallback(){ // public Object doInHibernate(Session session) // throws HibernateException, SQLException { // Criteria criteria = session.createCriteria(AssetHardwareBO.class); // return criteria.list(); // } // }); } public int getCountByAssetHardware(AssetHardwareBO entity) { int count = 0; Criteria criteria = spliceCriteria(entity); count = ((Integer)criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue(); return count; } public List<AssetHardwareBO> getPageListByAssetHardware( AssetHardwareBO entity, Page page) { Criteria criteria = spliceCriteria(entity); criteria.setFirstResult(page.getBeginIndex()); criteria.setMaxResults(page.getEveryPage()); return criteria.list(); } /** * 生成查询条件 */ private Criteria spliceCriteria(AssetHardwareBO assetHardware) { Criteria criteria = getSession().createCriteria(AssetHardwareBO.class); if (null == assetHardware) { return criteria; } if (null != assetHardware.getId()) { criteria.add(Restrictions.eq("id", assetHardware.getId())); } if (null != assetHardware.getHardwareType() && assetHardware.getHardwareType().trim().length() > 0) { criteria.add(Restrictions.like("hardwareType", "%" + assetHardware.getHardwareType().trim() + "%")); } if (null != assetHardware.getName() && assetHardware.getName().trim().length() > 0) { criteria.add(Restrictions.like("name", "%" + assetHardware.getName().trim() + "%")); } if (null != assetHardware.getManufacturer() && assetHardware.getManufacturer().trim().length() > 0) { criteria.add(Restrictions.like("manufacturer", "%" + assetHardware.getManufacturer().trim() + "%")); } if (null != assetHardware.getVersion() && assetHardware.getVersion().trim().length() > 0) { criteria.add(Restrictions.like("version", "%" + assetHardware.getVersion().trim() + "%")); } if (null != assetHardware.getCapacity()) { criteria.add(Restrictions.eq("capacity", assetHardware .getCapacity())); } if (null != assetHardware.getDescription() && assetHardware.getDescription().trim().length() > 0) { criteria.add(Restrictions.like("description", "%" + assetHardware.getDescription().trim() + "%")); } if (null != assetHardware.getStatus()) { criteria.add(Restrictions.eq("status", assetHardware.getStatus())); } if (null != assetHardware.getStockTime()) { criteria.add(Restrictions.eq("stockTime", assetHardware .getStockTime())); } if (null != assetHardware.getValidityPeriod()) { criteria.add(Restrictions.eq("validityPeriod", assetHardware .getValidityPeriod())); } if (null != assetHardware.getRegistrationTime()) { criteria.add(Restrictions.eq("registrationTime", assetHardware .getRegistrationTime())); } if (null != assetHardware.getLocationId()) { criteria.add(Restrictions.eq("locationId", assetHardware .getLocationId())); } return criteria; } }