01: package com.odal.petstore.persistence.dao;
02:
03: import com.completex.objective.components.persistency.MappingPersistency;
04: import com.completex.objective.components.persistency.OdalPersistencyException;
05: import com.completex.objective.components.persistency.Page;
06: import com.completex.objective.components.persistency.Query;
07: import com.completex.objective.components.persistency.core.impl.BasicLifeCycleController;
08: import com.odal.petstore.OdalPetstoreException;
09: import com.odal.petstore.domain.Product;
10: import com.odal.petstore.persistence.gen.pos.ProductPO;
11: import com.odal.petstore.persistence.iface.ProductDao;
12:
13: import java.util.List;
14:
15: /**
16: * @author Gennady Krizhevsky
17: */
18: public class ProductDaoImpl implements ProductDao {
19: private MappingPersistency persistency;
20:
21: private BasicLifeCycleController controller = new BasicLifeCycleController(
22: "productCache");
23:
24: public ProductDaoImpl(MappingPersistency persistency) {
25: this .persistency = persistency;
26: }
27:
28: public Product getProduct(String productId)
29: throws OdalPetstoreException {
30: try {
31: return (Product) persistency.load(new ProductPO(productId),
32: controller);
33: } catch (OdalPersistencyException e) {
34: throw new OdalPetstoreException(e);
35: }
36: }
37:
38: public List getProductListByCategory(String category, int pageNumber)
39: throws OdalPetstoreException {
40: try {
41: ProductPO product = new ProductPO();
42: product.setCategory(category);
43: Query coreQuery = persistency.getQueryFactory()
44: .newQueryByExample(product);
45: Query query = persistency.getQueryFactory()
46: .newDisconnectedPageQuery(coreQuery,
47: new Page(pageNumber, PAGE_SIZE));
48: return (List) persistency.select(query, controller);
49: } catch (OdalPersistencyException e) {
50: throw new OdalPetstoreException(e);
51: }
52: }
53:
54: public List searchProductList(String keywordsString, int pageNumber)
55: throws OdalPetstoreException {
56: try {
57: String[] keywords = keywordsString.split("\\s+");
58: Query query = persistency.getQueryFactory()
59: .newDisconnectedPageQuery(new ProductPO(),
60: new Page(pageNumber, PAGE_SIZE));
61: for (int i = 0; i < keywords.length; i++) {
62: String keyword = Query.MULTI_WILD + keywords[i]
63: + Query.MULTI_WILD;
64: if (i == 0) {
65: query.addToWhere(query
66: .lower(ProductPO.COL_CATEGORY));
67: } else {
68: query
69: .orToWhere(query
70: .lower(ProductPO.COL_CATEGORY));
71: }
72: query.addToWhere(Query.LIKE).addToWhere(
73: query.singleQuote(keyword));
74: }
75: return (List) persistency.select(query, controller);
76: } catch (OdalPersistencyException e) {
77: throw new OdalPetstoreException(e);
78: }
79: }
80:
81: }
|