package com.opentravelsoft.providers.hibernate.product;
import java.util.List;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;
import com.opentravelsoft.entity.ProductTmpl;
import com.opentravelsoft.entity.TblExpenseTmpl;
import com.opentravelsoft.providers.hibernate.GenericDaoHibernate;
import com.opentravelsoft.providers.product.ProductTmplDao;
import com.opentravelsoft.util.StringUtil;
@Repository("LineTmplDao")
public class ProductTmplDaoImpl extends
GenericDaoHibernate<ProductTmpl, Integer> implements ProductTmplDao {
public ProductTmplDaoImpl() {
super(ProductTmpl.class);
}
public ProductTmpl getProductTmpl(int tmplId) {
HibernateTemplate template = getHibernateTemplate();
ProductTmpl tmpl = (ProductTmpl) template.get(ProductTmpl.class, tmplId);
return tmpl;
}
public int deleteTmpl(int tmplId) {
ProductTmpl tmpl = (ProductTmpl) getHibernateTemplate().get(
ProductTmpl.class, tmplId);
if (null == tmpl)
return -1;
getHibernateTemplate().save(tmpl);
return 0;
}
@SuppressWarnings("unchecked")
public List<ProductTmpl> getProductTmplByType(int teamId, int itemId,
String destCode) {
DetachedCriteria criteria = DetachedCriteria.forClass(ProductTmpl.class,
"p");
criteria.createAlias("p.team", "t");
criteria.createAlias("p.item", "m");
if (teamId != 0)
criteria.add(Restrictions.eq("t.teamId", teamId));
if (itemId != 0)
criteria.add(Restrictions.eq("m.itemCode", itemId));
if (StringUtil.hasLength(destCode))
criteria.add(Restrictions.like("p.destCode", destCode, MatchMode.START));
criteria.addOrder(Order.asc("sortOrder"));
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
return getHibernateTemplate().findByCriteria(criteria);
}
public int insertProductTmpl(ProductTmpl tmpl) {
getHibernateTemplate().save(tmpl);
return 0;
}
public int updateProductTmpl(ProductTmpl tipsTmpl) {
if (tipsTmpl.getId() >= 0) {
ProductTmpl tmpl = (ProductTmpl) getHibernateTemplate().get(
ProductTmpl.class, tipsTmpl.getId());
if (null == tmpl)
return -1;
tmpl.setSubject(tipsTmpl.getSubject());
tmpl.setContent(tipsTmpl.getContent());
tmpl.setItem(tipsTmpl.getItem());
tmpl.setTeam(tipsTmpl.getTeam());
getHibernateTemplate().update(tmpl);
} else {
getHibernateTemplate().save(tipsTmpl);
}
return 0;
}
@SuppressWarnings("unchecked")
public List<TblExpenseTmpl> getExpenseTmpl() {
DetachedCriteria criteria = DetachedCriteria.forClass(TblExpenseTmpl.class);
criteria.addOrder(Order.asc("number)"));
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
return getHibernateTemplate().findByCriteria(criteria);
}
@SuppressWarnings("unchecked")
public List<ProductTmpl> getProductTmplByType(int teamId, String itemType) {
DetachedCriteria criteria = DetachedCriteria.forClass(ProductTmpl.class,
"p");
criteria.createAlias("p.team", "t");
criteria.createAlias("p.item", "m");
if (teamId != 0)
criteria.add(Restrictions.eq("t.teamId", teamId));
if (StringUtil.hasLength(itemType))
criteria.add(Restrictions.eq("m.itemCode", itemType));
criteria.addOrder(Order.asc("sortOrder"));
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
return getHibernateTemplate().findByCriteria(criteria);
}
}