package com.opentravelsoft.providers.hibernate.product;
import java.util.List;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Repository;
import com.opentravelsoft.entity.ProductItem;
import com.opentravelsoft.entity.product.ProductType;
import com.opentravelsoft.providers.hibernate.GenericDaoHibernate;
import com.opentravelsoft.providers.product.ProductItemDao;
@Repository("ProductItemDao")
public class ProductItemDaoImpl extends
GenericDaoHibernate<ProductItem, Integer> implements ProductItemDao {
public ProductItemDaoImpl() {
super(ProductItem.class);
}
@SuppressWarnings("unchecked")
public List<ProductItem> getProductItems(boolean tmpl) {
if (!tmpl)
return getHibernateTemplate().loadAll(ProductItem.class);
DetachedCriteria criteria = DetachedCriteria.forClass(ProductItem.class);
criteria.add(Restrictions.eq("isTmpl", (byte) 1));
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
return getHibernateTemplate().findByCriteria(criteria);
}
@SuppressWarnings("unchecked")
public List<ProductItem> getProductItems(ProductType type) {
DetachedCriteria criteria = DetachedCriteria.forClass(ProductItem.class,
"p");
criteria.createAlias("p.category", "c");
criteria.add(Restrictions.eq("c.code", type.toString()));
criteria.add(Restrictions.eq("p.isActive", (byte) 1));
criteria.addOrder(Order.asc("p.sortOrder"));
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
return getHibernateTemplate().findByCriteria(criteria);
}
@SuppressWarnings("unchecked")
public ProductItem getProdutItem(String itemCode) {
DetachedCriteria criteria = DetachedCriteria.forClass(ProductItem.class);
criteria.add(Restrictions.eq("itemCode", itemCode));
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
List<ProductItem> list = getHibernateTemplate().findByCriteria(criteria);
ProductItem item = null;
if (list.size() > 0)
item = list.get(0);
return item;
}
}