package edu.sjtu.infosec.ismp.manager.AM.dao.impl;
import java.io.Serializable;
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.AM.dao.AssetSoftwareDao;
import edu.sjtu.infosec.ismp.manager.AM.model.AssetSoftwareBO;
import edu.sjtu.infosec.ismp.manager.comm.model.page.Page;
/**
* AssetSoftwareDao接口的实现类
*
* @author Breggor
*
*/
@SuppressWarnings("unchecked")
public class AssetSoftwareDaoImpl extends HibernateDaoSupport implements
AssetSoftwareDao {
public void saveAssetSoftware(AssetSoftwareBO entity) {
getHibernateTemplate().save(entity);
}
public void updateAssetSoftware(AssetSoftwareBO entity) {
getHibernateTemplate().update(entity);
}
public void deleteAssetSoftware(AssetSoftwareBO entity) {
getHibernateTemplate().delete(entity);
}
public AssetSoftwareBO getAssetSoftware(Serializable entityId) {
return (AssetSoftwareBO) getHibernateTemplate().get(
AssetSoftwareBO.class, entityId);
}
public List<AssetSoftwareBO> getListByAssetSoftware(AssetSoftwareBO entity) {
return (List<AssetSoftwareBO>) spliceCriteria(entity).list();
}
public int getCountByAssetSoftware(AssetSoftwareBO entity) {
int count = 0;
Criteria criteria = spliceCriteria(entity);
count = ((Integer) criteria.setProjection(Projections.rowCount())
.uniqueResult()).intValue();
return count;
}
public List<AssetSoftwareBO> getPageListByAssetSoftware(
AssetSoftwareBO entity, Page page) {
Criteria criteria = spliceCriteria(entity);
criteria.setFirstResult(page.getBeginIndex());
criteria.setMaxResults(page.getEveryPage());
return criteria.list();
}
/**
* 生成查询条件
*/
private Criteria spliceCriteria(AssetSoftwareBO assetSoftware) {
Criteria criteria = getSession().createCriteria(AssetSoftwareBO.class);
if (null == assetSoftware) {
return criteria;
}
if (null != assetSoftware.getId()) {
criteria.add(Restrictions.eq("id", assetSoftware.getId()));
}
if (null != assetSoftware.getSoftwareType()
&& assetSoftware.getSoftwareType().trim().length() > 0) {
criteria.add(Restrictions.like("softwareType", "%"
+ assetSoftware.getSoftwareType().trim() + "%"));
}
if (null != assetSoftware.getName()
&& assetSoftware.getName().trim().length() > 0) {
criteria.add(Restrictions.like("name", "%"
+ assetSoftware.getName().trim() + "%"));
}
if (null != assetSoftware.getManufacturer()
&& assetSoftware.getManufacturer().trim().length() > 0) {
criteria.add(Restrictions.like("manufacturer", "%"
+ assetSoftware.getManufacturer().trim() + "%"));
}
if (null != assetSoftware.getVersion()
&& assetSoftware.getVersion().trim().length() > 0) {
criteria.add(Restrictions.like("version", "%"
+ assetSoftware.getVersion().trim() + "%"));
}
if (null != assetSoftware.getDescription()
&& assetSoftware.getDescription().trim().length() > 0) {
criteria.add(Restrictions.like("description", "%"
+ assetSoftware.getDescription().trim() + "%"));
}
if (null != assetSoftware.getUser()
&& assetSoftware.getUser().trim().length() > 0) {
criteria.add(Restrictions.like("user", "%"
+ assetSoftware.getUser().trim() + "%"));
}
if (null != assetSoftware.getTelephone()
&& assetSoftware.getTelephone().trim().length() > 0) {
criteria.add(Restrictions.like("telephone", "%"
+ assetSoftware.getTelephone().trim() + "%"));
}
if (null != assetSoftware.getUnit()
&& assetSoftware.getUnit().trim().length() > 0) {
criteria.add(Restrictions.like("unit", "%"
+ assetSoftware.getUnit().trim() + "%"));
}
if (null != assetSoftware.getDepartment()
&& assetSoftware.getDepartment().trim().length() > 0) {
criteria.add(Restrictions.like("department", "%"
+ assetSoftware.getDepartment().trim() + "%"));
}
if (null != assetSoftware.getStatus()) {
criteria.add(Restrictions.eq("status", assetSoftware.getStatus()));
}
if (null != assetSoftware.getStockTime()) {
criteria.add(Restrictions.eq("stockTime", assetSoftware
.getStockTime()));
}
if (null != assetSoftware.getValidityPeriod()) {
criteria.add(Restrictions.eq("validityPeriod", assetSoftware
.getValidityPeriod()));
}
if (null != assetSoftware.getRegistrationTime()) {
criteria.add(Restrictions.eq("registrationTime", assetSoftware
.getRegistrationTime()));
}
if (null != assetSoftware.getLocationId()) {
criteria.add(Restrictions.eq("locationId", assetSoftware
.getLocationId()));
}
return criteria;
}
}