package org.springside.bookstore.admin.manager; import org.apache.commons.lang.StringUtils; import org.hibernate.Criteria; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Restrictions; import org.springside.bookstore.commons.FileUtils; import org.springside.bookstore.commons.domain.Book; import org.springside.bookstore.commons.domain.Category; import org.springside.bookstore.plugins.xfire.service.BookService; import org.springside.core.commons.BaseHibernateDao; import org.springside.core.commons.support.CriteriaSetup; import org.springside.core.commons.support.page.Page; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author Water Ye * @author cac * @author calvin * @author wuyu * @see BaseHibernateDao */ public class BookManager extends BaseHibernateDao implements BookService { private CategoryManager categoryManager; public void setCategoryManager(CategoryManager categoryManager) { this.categoryManager = categoryManager; } public List getAllCategorys() { return categoryManager.getAll(); } public Category getCategory(Integer id) { return categoryManager.get(id); } /** * 按目录查询图书 */ public List findBooksByCategory(String categoryId) { Map filter = new HashMap(); filter.put("category", categoryId); return findBy(filter); } /** * 按书名模糊查询图书 */ public List findBooksByName(String name) { return findByLike("name", name); } /** * 根据查询条件,返回自动填充值 */ public String findAutocompleteValues(String queryValue) { List list = this.findBooksByName(queryValue); StringBuffer sb = new StringBuffer(); sb.append(""); return sb.toString(); } /** * 按加入顺序查询所有图书列表 */ public Page getNewBooks(String pageNoStr) { int pageNo = 1; if (StringUtils.isNotEmpty(pageNoStr)) pageNo = Integer.parseInt(pageNoStr); return pagedQuery("from Book order by id ", pageNo, 5); } /** * 查找所有库存不足的图书 * * @param minStock 最低库存 */ public List findAllLowStock(Integer minStock) { return find("from Book where inventory<=? order by id", minStock); } /** * 回调函数:根据过滤条件构造Criteria,被父类的{@link BaseHibernateDao#findBy(Map)}函数使用 */ public CriteriaSetup getDefaultCriteriaSetup() { return new CriteriaSetup() { public void setup(Criteria criteria, Map filter) { if (filter != null && !filter.isEmpty()) { String id = (String) filter.get("id"); if (StringUtils.isNotBlank(id)) criteria.add(Restrictions.eq("id", new Integer(id))); String name = (String) filter.get("name"); if (StringUtils.isNotBlank(name)) criteria.add(Restrictions.like("name", name, MatchMode.ANYWHERE)); String category = (String) filter.get("category"); if (StringUtils.isNotBlank(category) && !StringUtils.equals("all", category)) criteria.createAlias("category", "c").add(Restrictions.eq("c.id", new Integer(category))); } } }; } /** * XFire压力测试(1) */ static File test_file=new File("c:/springside_all_book.xml"); public String getAllBook() { //这个测试文件可以自己控制大小,1-2M byte[] result=null; try { result=FileUtils.getBytesFromFile(test_file); } catch (IOException e) { e.printStackTrace(); } return new String(result); } /** * XFire压力测试(2) */ public String getMyBook() { return "Thinking in Java 2"; } }